Repository: duolabmeng6/GoEasyDesigner Branch: main Commit: 956b2c2ee0b3 Files: 187 Total size: 972.8 KB Directory structure: gitextract_we96msoa/ ├── .github/ │ ├── release-drafter.yml │ ├── releasesText.md │ └── workflows/ │ ├── debug.yml │ ├── jekyll-gh-pages.yml │ └── 发布软件.yml ├── .gitignore ├── .gitmodules ├── CNAME ├── GoEasyDesigner/ │ ├── .gitignore │ ├── Dockerfile │ ├── Terminal/ │ │ ├── Terminal_darwin.go │ │ ├── Terminal_darwin_test.go │ │ ├── Terminal_window.go │ │ └── Terminal_window_test.go │ ├── app.go │ ├── build/ │ │ ├── README.md │ │ ├── darwin/ │ │ │ ├── Info.dev.plist │ │ │ └── Info.plist │ │ ├── dmg.sh │ │ └── windows/ │ │ ├── info.json │ │ ├── installer/ │ │ │ ├── project.nsi │ │ │ └── wails_tools.nsh │ │ └── wails.exe.manifest │ ├── docker-compose.yml │ ├── frontend/ │ │ ├── README.md │ │ ├── index.html │ │ ├── jsconfig.json │ │ ├── package.json │ │ ├── postcss.config.js │ │ ├── public/ │ │ │ ├── 1.html │ │ │ ├── cdn.tailwindcss.com_3.4.5.js │ │ │ ├── font-awesome.css │ │ │ ├── releases_latest.json │ │ │ └── 自定义组件/ │ │ │ ├── ColorfulText/ │ │ │ │ ├── ColorfulText.js │ │ │ │ ├── ColorfulText.vue │ │ │ │ └── ColorfulTextAttr.vue │ │ │ ├── TimeProgressBar/ │ │ │ │ ├── TimeProgressBar.js │ │ │ │ ├── TimeProgressBar.vue │ │ │ │ └── TimeProgressBarAttr.vue │ │ │ ├── components.json │ │ │ ├── 流光边框/ │ │ │ │ ├── 流光边框.js │ │ │ │ ├── 流光边框.vue │ │ │ │ └── 流光边框属性.vue │ │ │ └── 登录框/ │ │ │ ├── 登录框.js │ │ │ ├── 登录框.vue │ │ │ └── 登录框属性.vue │ │ ├── src/ │ │ │ ├── Helper.js │ │ │ ├── action/ │ │ │ │ └── app.js │ │ │ ├── app10.vue │ │ │ ├── app11.vue │ │ │ ├── assets/ │ │ │ │ ├── base.css │ │ │ │ └── main.css │ │ │ ├── components/ │ │ │ │ ├── RenderDesignComponent.vue │ │ │ │ ├── RenderDesignComponentPreview.vue │ │ │ │ ├── RenderDesignComponentWin.vue │ │ │ │ ├── Shape.vue │ │ │ │ ├── boxs/ │ │ │ │ │ ├── el/ │ │ │ │ │ │ ├── Button/ │ │ │ │ │ │ │ ├── Button.js │ │ │ │ │ │ │ ├── Button.vue │ │ │ │ │ │ │ └── ButtonAttr.vue │ │ │ │ │ │ ├── CheckBox/ │ │ │ │ │ │ │ ├── CheckBox.js │ │ │ │ │ │ │ ├── CheckBox.vue │ │ │ │ │ │ │ └── CheckBoxAttr.vue │ │ │ │ │ │ ├── CommonLayout/ │ │ │ │ │ │ │ ├── CommonLayout.js │ │ │ │ │ │ │ ├── CommonLayout.vue │ │ │ │ │ │ │ └── CommonLayoutAttr.vue │ │ │ │ │ │ ├── Container/ │ │ │ │ │ │ │ ├── Container.js │ │ │ │ │ │ │ └── ContainerAttr.vue │ │ │ │ │ │ ├── ControlButton/ │ │ │ │ │ │ │ ├── ControlButton.js │ │ │ │ │ │ │ ├── ControlButton.vue │ │ │ │ │ │ │ └── ControlButtonAttr.vue │ │ │ │ │ │ ├── CustomComponent/ │ │ │ │ │ │ │ ├── CustomComponent.js │ │ │ │ │ │ │ ├── CustomComponent.vue │ │ │ │ │ │ │ └── CustomComponentAttr.vue │ │ │ │ │ │ ├── FlexLayout/ │ │ │ │ │ │ │ ├── FlexLayout.js │ │ │ │ │ │ │ ├── FlexLayout.vue │ │ │ │ │ │ │ └── FlexLayoutAttr.vue │ │ │ │ │ │ ├── Label/ │ │ │ │ │ │ │ ├── Label.js │ │ │ │ │ │ │ ├── Label.vue │ │ │ │ │ │ │ └── LabelAttr.vue │ │ │ │ │ │ ├── Menu/ │ │ │ │ │ │ │ ├── Menu.js │ │ │ │ │ │ │ ├── Menu.vue │ │ │ │ │ │ │ └── MenuAttr.vue │ │ │ │ │ │ ├── ProgressBar/ │ │ │ │ │ │ │ ├── ProgressBar.js │ │ │ │ │ │ │ ├── ProgressBar.vue │ │ │ │ │ │ │ └── ProgressBarAttr.vue │ │ │ │ │ │ ├── RadioButton/ │ │ │ │ │ │ │ ├── RadioButton.js │ │ │ │ │ │ │ ├── RadioButton.vue │ │ │ │ │ │ │ └── RadioButtonAttr.vue │ │ │ │ │ │ ├── Switch/ │ │ │ │ │ │ │ ├── Switch.js │ │ │ │ │ │ │ ├── Switch.vue │ │ │ │ │ │ │ └── SwitchAttr.vue │ │ │ │ │ │ ├── Table/ │ │ │ │ │ │ │ ├── Table.js │ │ │ │ │ │ │ ├── Table.vue │ │ │ │ │ │ │ └── TableAttr.vue │ │ │ │ │ │ ├── Tabs/ │ │ │ │ │ │ │ ├── Tabs.js │ │ │ │ │ │ │ ├── Tabs.vue │ │ │ │ │ │ │ └── TabsAttr.vue │ │ │ │ │ │ ├── TabsTW/ │ │ │ │ │ │ │ ├── TabsTW.js │ │ │ │ │ │ │ ├── TabsTW.vue │ │ │ │ │ │ │ ├── TabsTWAttr.vue │ │ │ │ │ │ │ └── fontawesome_free_icon_names.js │ │ │ │ │ │ ├── TextEdit/ │ │ │ │ │ │ │ ├── TextEdit.js │ │ │ │ │ │ │ ├── TextEdit.vue │ │ │ │ │ │ │ └── TextEditAttr.vue │ │ │ │ │ │ ├── Tooltip/ │ │ │ │ │ │ │ ├── Tooltip.js │ │ │ │ │ │ │ ├── Tooltip.vue │ │ │ │ │ │ │ └── TooltipAttr.vue │ │ │ │ │ │ └── Tree/ │ │ │ │ │ │ ├── Tree.js │ │ │ │ │ │ ├── Tree.vue │ │ │ │ │ │ └── TreeAttr.vue │ │ │ │ │ ├── td/ │ │ │ │ │ │ ├── Button/ │ │ │ │ │ │ │ ├── Button.js │ │ │ │ │ │ │ ├── Button.vue │ │ │ │ │ │ │ └── ButtonAttr.vue │ │ │ │ │ │ ├── Link/ │ │ │ │ │ │ │ ├── Link.js │ │ │ │ │ │ │ ├── Link.vue │ │ │ │ │ │ │ └── LinkAttr.vue │ │ │ │ │ │ ├── Progress/ │ │ │ │ │ │ │ ├── Progress.js │ │ │ │ │ │ │ ├── Progress.vue │ │ │ │ │ │ │ └── ProgressAttr.vue │ │ │ │ │ │ ├── Select/ │ │ │ │ │ │ │ ├── Select.js │ │ │ │ │ │ │ ├── Select.vue │ │ │ │ │ │ │ └── SelectAttr.vue │ │ │ │ │ │ └── Switch/ │ │ │ │ │ │ ├── Switch.js │ │ │ │ │ │ ├── Switch.vue │ │ │ │ │ │ └── SwitchAttr.vue │ │ │ │ │ └── tw/ │ │ │ │ │ └── Button/ │ │ │ │ │ ├── Button.js │ │ │ │ │ ├── Button.vue │ │ │ │ │ └── ButtonAttr.vue │ │ │ │ ├── common/ │ │ │ │ │ └── IconSelector.vue │ │ │ │ └── designer/ │ │ │ │ ├── PreviewDialog.vue │ │ │ │ ├── header/ │ │ │ │ │ └── ToolBtn.vue │ │ │ │ ├── left/ │ │ │ │ │ ├── ComponentLeft.vue │ │ │ │ │ ├── PropertyTable.vue │ │ │ │ │ └── TreeSelectBox.vue │ │ │ │ └── public/ │ │ │ │ ├── DraggableDivider.vue │ │ │ │ ├── WindowAttr.vue │ │ │ │ ├── common-event-component.vue │ │ │ │ ├── common-properties.vue │ │ │ │ ├── 代码编辑器.vue │ │ │ │ ├── 支持库.vue │ │ │ │ ├── 新建项目对话框.vue │ │ │ │ ├── 项目管理.vue │ │ │ │ └── 项目配置对话框.vue │ │ │ ├── helpDoc/ │ │ │ │ └── systemFcDoc.json │ │ │ ├── i18n/ │ │ │ │ ├── index.js │ │ │ │ └── locales/ │ │ │ │ ├── en.json │ │ │ │ └── zh-Hans.json │ │ │ ├── main.js │ │ │ ├── public.js │ │ │ ├── stores/ │ │ │ │ ├── HistoryManager.js │ │ │ │ └── appStore.js │ │ │ ├── update_github_latest_releases.sh │ │ │ ├── 提示语法生成器.js │ │ │ ├── 测试代码编辑器.vue │ │ │ ├── 编辑器/ │ │ │ │ ├── 窗口事件代码模板.js │ │ │ │ ├── 编辑器提示数据.js │ │ │ │ └── 编辑器语法文件.js │ │ │ └── 编辑的语法提示.js │ │ ├── tailwind.config.js │ │ ├── vite.config.js │ │ └── wailsjs/ │ │ ├── go/ │ │ │ └── main/ │ │ │ ├── App.d.ts │ │ │ └── App.js │ │ └── runtime/ │ │ ├── package.json │ │ ├── runtime.d.ts │ │ └── runtime.js │ ├── go.mod │ ├── go.sum │ ├── main.go │ ├── myfunc/ │ │ ├── myfunc.go │ │ └── myfunc_test.go │ ├── mymodel/ │ │ ├── Version.go │ │ ├── git项目操作.go │ │ ├── git项目操作_test.go │ │ ├── 文件监视模块.go │ │ ├── 文件监视模块_test.go │ │ ├── 自动更新模块.go │ │ └── 自动更新模块_test.go │ ├── ssh_nginx/ │ │ ├── Caddyfile │ │ ├── default.conf │ │ └── docker-compose.yml │ └── wails.json ├── LICENSE ├── QtEsayDesigner IDE插件.jar ├── README.md ├── README.zh-Hans.md ├── script/ │ └── main.go └── tool/ └── 一键环境配置.e ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/release-drafter.yml ================================================ name-template: 'v$RESOLVED_VERSION' tag-template: 'v$RESOLVED_VERSION' categories: - title: '🚀 新功能' labels: - '新功能' - title: '🐛 Bug 修复' labels: - 'bug' - title: '🧰 日常维护' label: '日常维护' change-template: '- $TITLE @$AUTHOR (#$NUMBER)' change-title-escapes: '\<*_&' version-resolver: major: labels: - 'major' minor: labels: - 'minor' patch: labels: - 'patch' default: patch template: | # GoEasyDesigner 窗口设计师 * 基于 go 语言 使用 wails框架, 支持 window macos linux 等系统. $CHANGES no-changes-template: | 快下载体验~ ================================================ FILE: .github/releasesText.md ================================================ # GoEasyDesigner 窗口设计师 奋斗了{{用了多少时间}},本次更新内容如下: {{最新发布信息}} {{变更内容}} ================================================ FILE: .github/workflows/debug.yml ================================================ name: WailsBuild on: workflow_dispatch: # push: # paths-ignore: # - '**/*.md' # - '**/*.yml' # - .gitignore # - .editorconfig # - appveyor.yml # - 'azure-pipelines*.yml' # - 'ci/azure-pipelines/template*.yml' pull_request: paths-ignore: - '**/*.md' - .gitignore - .editorconfig - appveyor.yml - 'azure-pipelines*.yml' - 'ci/azure-pipelines/template*.yml' jobs: build-windows: timeout-minutes: 20 runs-on: windows-latest steps: - uses: actions/checkout@v3 - uses: actions/cache@v3 with: path: | C:\npm\cache key: ${{ runner.os }}-js-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-js- - name: Set up Go uses: actions/setup-go@v4 with: go-version: '^1.21.0' cache-dependency-path: | **/go.sum **/go.mod go-version-file: 'go.mod' - name: install wails run: go install github.com/wailsapp/wails/v2/cmd/wails@latest #- name: install webview2 # run: | # npm config get cache # choco install webview2-runtime #- name: garble # run: go install mvdan.cc/garble@latest #- name: nsis # run: choco install nsis #- name: upx # run: choco install upx - name: build run: | cd GoEasyDesigner wails build -debug - uses: actions/upload-artifact@v3 with: name: debug-${{ runner.os }} path: GoEasyDesigner/build/bin/GoEasyDesigner.exe build-ubuntu: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/cache@v3 with: path: | /home/runner/.npm key: ${{ runner.os }}-js-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-js- - name: Set up Go uses: actions/setup-go@v4 with: go-version: '^1.21.0' cache-dependency-path: | **/go.sum **/go.mod go-version-file: 'go.mod' - name: Install linux dependencies run: sudo apt-get update -y && sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev build-essential pkg-config - name: install wails run: go install github.com/wailsapp/wails/v2/cmd/wails@latest #- name: garble # run: go install mvdan.cc/garble@latest #- name: nsis # run: apt install nsis #- name: upx # run: apt install upx - name: build run: | npm config get cache cd GoEasyDesigner wails build -debug - uses: actions/upload-artifact@v3 with: name: debug-${{ runner.os }} path: GoEasyDesigner/build/bin/GoEasyDesigner build-MacOS: runs-on: macos-latest steps: - uses: actions/checkout@v3 - uses: actions/cache@v3 with: path: | /Users/runner/.npm key: ${{ runner.os }}-js-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-js- - name: Set up Go uses: actions/setup-go@v4 with: go-version: '^1.21.0' cache-dependency-path: | **/go.sum **/go.mod go-version-file: 'go.mod' - name: install wails run: go install github.com/wailsapp/wails/v2/cmd/wails@latest #- name: garble # run: go install mvdan.cc/garble@latest #- name: nsis # run: apt install nsis #- name: upx # run: apt install upx - name: build run: | npm config get cache cd GoEasyDesigner wails build -debug - uses: actions/upload-artifact@v3 with: name: debug-${{ runner.os }} path: GoEasyDesigner/build/bin/GoEasyDesigner.app ================================================ FILE: .github/workflows/jekyll-gh-pages.yml ================================================ name: 部署 GitHub Pages on: # Runs on pushes targeting the default branch # push: # branches: ["main"] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # push: # paths-ignore: # - '**/*.md' # - '**/*.yml' # - .gitignore # - .editorconfig # workflow_run: # workflows: ["发布软件"] # types: # - completed # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. concurrency: group: "pages" cancel-in-progress: false jobs: # Build job build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Setup Pages uses: actions/configure-pages@v3 - uses: actions/cache@v3 with: path: | /home/runner/.npm key: ${{ runner.os }}-js-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-js- - name: install run: | cd GoEasyDesigner/frontend/src ./update_github_latest_releases.sh cd ../ npm i npm run build - name: Build with Jekyll uses: actions/jekyll-build-pages@v1 with: source: ./GoEasyDesigner/frontend/dist destination: ./_site - name: Upload artifact uses: actions/upload-pages-artifact@v2 - name: Deploy file uses: wlixcc/SFTP-Deploy-Action@v1.2.4 with: server: ${{ secrets.FTP_SERVER }} port: ${{ secrets.FTP_PORT }} username: ${{ secrets.FTP_USERNAME }} password: ${{ secrets.FTP_PASSWORD }} local_path: './GoEasyDesigner/frontend/dist/*' remote_path: '/config/www' sftp_only: true # Deployment job deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v2 ================================================ FILE: .github/workflows/发布软件.yml ================================================ name: 发布软件 on: workflow_dispatch: push: paths-ignore: - '**/*.md' - '**/*.yml' - .gitignore - .editorconfig permissions: write-all # 给所有工作写权限 jobs: jobs_v: name: 构建版本号和变更信息 runs-on: ubuntu-latest outputs: version: ${{ steps.create_version.outputs.NewVersion }} # 版本号 body: ${{ steps.create_body.outputs.Body }} # 版本变更内容 steps: - uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: 检查是否 "发布" run: | latest_commit_message=$(git log -1 --pretty=%B) if [[ $latest_commit_message == *"发布"* ]]; then echo "找到发布关键字继续工作流" else echo "没有找到发布关键字停止工作流" exit 1 # 停止工作流程 fi - name: 递增版本号 id: create_version uses: duolabmeng6/action-autotag-python@master with: token: ${{ secrets.GITHUB_TOKEN }} - name: 获取更新日志 id: create_body uses: duolabmeng6/action-Releases-log@main with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} FILE: .github/releasesText.md KEYS: bug,改进,优化,新增,删除 - name: 查看版本号和更新日志 run: | echo ${{ format('version={0}', steps.create_version.outputs.NewVersion ) }} echo "${{ steps.create_body.outputs.Body }}" jobs_macos: # 暂停 #if: false needs: [ jobs_v ] name: 构建macos软件 runs-on: macos-latest env: version: ${{ needs.jobs_v.outputs.version }} body: ${{ needs.jobs_v.outputs.Body }} steps: - name: Checkout code uses: actions/checkout@v4 - name: 构建缓存 uses: actions/cache@v4 with: path: | /Users/runner/.npm key: ${{ runner.os }}-js-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-js- - name: 查看文件 run: | pwd ls -la echo "New Body: ${{ env.body }}" - name: 安装 go uses: actions/setup-go@v4 with: go-version: '^1.23.8' cache-dependency-path: | **/go.sum **/go.mod go-version-file: 'go.mod' - name: 安装 pnpm uses: pnpm/action-setup@v4 with: version: 10 - run: go version - name: 安装 wails 工具 run: | go install github.com/wailsapp/wails/v2/cmd/wails@latest wails - name: 生成 Version.go 文件 run: | echo -e "package mymodel\n\nvar Version = \"${version}\"" > GoEasyDesigner/mymodel/Version.go cat GoEasyDesigner/mymodel/Version.go - name: 编译 run: | pwd cd GoEasyDesigner wails build ls -la - name: 查看编译的文件保存 run: | ls -la mkdir -p /tmp/artifacts cp -r GoEasyDesigner/build/bin/GoEasyDesigner.app /tmp/artifacts/GoEasyDesigner.app cp -r GoEasyDesigner/build/dmg.sh /tmp/artifacts/dmg.sh chmod +x /tmp/artifacts/GoEasyDesigner.app/Contents/MacOS/GoEasyDesigner - name: 创建压缩包 run: | cd /tmp/artifacts/ ./dmg.sh zip -r ./GoEasyDesigner_MacOS.zip ./GoEasyDesigner.app - name: 上传产物 uses: actions/upload-artifact@v4 with: name: macos path: | /tmp/artifacts/*.zip /tmp/artifacts/*.dmg jobs_window: needs: jobs_v # 等待 jobs_v 任务完成才执行 name: 构建window软件 timeout-minutes: 20 runs-on: windows-latest env: version: ${{ needs.jobs_v.outputs.version }} body: ${{ needs.jobs_v.outputs.Body }} steps: - uses: actions/checkout@v4 with: submodules: recursive - name: 构建缓存 uses: actions/cache@v4 with: path: | C:\npm\cache key: ${{ runner.os }}-js-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-js- - name: 读入环境信息 run: | echo ${{ format('version {0}', env.version ) }} # 版本号 - name: 安装 go uses: actions/setup-go@v4 with: go-version: '^1.23.8' cache-dependency-path: | **/go.sum **/go.mod go-version-file: 'go.mod' - name: 安装 pnpm uses: pnpm/action-setup@v4 with: version: 10 - run: go version - name: 安装 UPX uses: crazy-max/ghaction-upx@v2 with: install-only: true - name: 安装 wails 工具 run: | go install github.com/wailsapp/wails/v2/cmd/wails@latest wails - name: 生成 Version.go 文件 shell: bash run: | echo -e "package mymodel\n\nvar Version = \"${version}\"" > GoEasyDesigner/mymodel/Version.go cat GoEasyDesigner/mymodel/Version.go - name: 编译exe run: | cd GoEasyDesigner wails build -webview2 embed -upx ls - name: 上传产物 uses: actions/upload-artifact@v4 with: name: window path: | GoEasyDesigner/build/bin/*.exe jobs4: needs: [ jobs_v,jobs_macos,jobs_window ] name: 发布版本 runs-on: ubuntu-latest env: version: ${{ needs.jobs_v.outputs.version }} body: ${{ needs.jobs_v.outputs.Body }} steps: - uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: 下载产物 id: download uses: actions/download-artifact@v4 with: path: ./ - name: 读入环境信息 run: | echo ${{ format('version {0}', env.version ) }} echo ${{steps.download.outputs.download-path}} ls -R - name: 发布文件 uses: ncipollo/release-action@v1 with: token: ${{ secrets.GITHUB_TOKEN }} allowUpdates: true # 覆盖文件 #draft: true # 草稿 自己可见 版本号会保持一样 默认是自动发布 latest #prerelease: true # 预发布 别人可以看到 版本号会继续加 tag: ${{ env.version }} # 版本号 v0.1.0 body: ${{ env.body }} artifacts: "macos/*.zip,macos/*.dmg,window/*.exe,window/*.zip" ================================================ FILE: .gitignore ================================================ # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* lerna-debug.log* node_modules .DS_Store dist dist-ssr coverage *.local /cypress/videos/ /cypress/screenshots/ # Editor directories and files .vscode/* !.vscode/extensions.json .idea *.suo *.ntvs* *.njsproj *.sln *.sw? .vscode *.lockb GoEasyDesigner/frontend/package.json.md5 package-lock.json package.json.md5 wails-demo/frontend/package.json.md5 wails-demo/frontend/package-lock.json GoEasyDesigner/ssh_nginx/.env ================================================ FILE: .gitmodules ================================================ [submodule "go-easy-demo"] path = go-easy-demo url = https://github.com/duolabmeng6/wails-template-vue-go-easy ================================================ FILE: CNAME ================================================ ggg.yx24.me ================================================ FILE: GoEasyDesigner/.gitignore ================================================ build/bin node_modules frontend/dist ================================================ FILE: GoEasyDesigner/Dockerfile ================================================ FROM node:18-alpine WORKDIR /app COPY ./frontend . RUN npm install --registry=http://registry.npmmirror.com RUN npm run build # docker build -t my-node-app . # docker run -v ./frontend:/app -p 3000:3000 -it --rm --name my-running-app my-node-app /bin/sh FROM nginx:alpine-slim COPY --from=0 /app/dist /usr/share/nginx/html/ COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 3005 ================================================ FILE: GoEasyDesigner/Terminal/Terminal_darwin.go ================================================ //go:build darwin // +build darwin package Terminal import ( "bufio" "errors" "fmt" "os/exec" "sync" "syscall" ) type Terminal struct { cmd *exec.Cmd stdout *bufio.Scanner isRunning bool isDone bool lock sync.Mutex } func NewTerminal() *Terminal { return &Terminal{} } func (t *Terminal) StartCommand(command string, fn func(string, error)) bool { t.lock.Lock() defer t.lock.Unlock() if t.isRunning { fn("", fmt.Errorf("已有命令在运行")) return false } cmd := exec.Command("bash", "-c", command) cmd.SysProcAttr = &syscall.SysProcAttr{ Setpgid: true, } stdout, err := cmd.StdoutPipe() if err != nil { fn("", err) return false } if err := cmd.Start(); err != nil { fn("", err) return false } t.cmd = cmd t.stdout = bufio.NewScanner(stdout) t.isRunning = true go func() { for t.stdout.Scan() { output := t.stdout.Text() fn(output, nil) } if err := t.stdout.Err(); err != nil { fn("", err) } t.lock.Lock() t.isRunning = false t.isDone = true t.lock.Unlock() }() go func() { cmd.Wait() t.lock.Lock() t.isRunning = false t.lock.Unlock() println("命令已完成") fn("", errors.New("命令已完成")) }() return true } func (t *Terminal) StopCommand() { t.lock.Lock() defer t.lock.Unlock() if t.isRunning { err := syscall.Kill(-t.cmd.Process.Pid, syscall.SIGKILL) if err != nil { return } } } func (t *Terminal) StopCommand2() { t.lock.Lock() defer t.lock.Unlock() //发送 ctrl + c 的信号 让程序平稳的退出 // 向进程发送Ctrl+C信号 process := t.cmd.Process if process != nil { //err := process.Signal(syscall.SIGHUP) err := syscall.Kill(-t.cmd.Process.Pid, syscall.SIGTERM) if err != nil { // 处理错误 } } } func (t *Terminal) IsCommandDone() bool { t.lock.Lock() defer t.lock.Unlock() return t.isDone } ================================================ FILE: GoEasyDesigner/Terminal/Terminal_darwin_test.go ================================================ package Terminal import ( "testing" "time" ) func TestNewTerminalMac(t *testing.T) { terminal := NewTerminal() if terminal == nil { t.Error("NewTerminalWindow() failed") } // 命令 := ` cd /Users/ll/Documents/GitHub/GoEasyDesigner/wails-demo/frontend npm run dev ` terminal.StartCommand(命令, func(output string, err error) { if err != nil { print("err:", output) print("err2:", err.Error()) //t.Error(err.Error()) } println(output) }) time.Sleep(3 * time.Second) terminal.StopCommand2() println("停止命令2") time.Sleep(10 * time.Second) terminal.StopCommand() println("停止命令1") } ================================================ FILE: GoEasyDesigner/Terminal/Terminal_window.go ================================================ //go:build windows // +build windows package Terminal import ( "bufio" "errors" "fmt" "github.com/duolabmeng6/goefun/ecore" "os/exec" "sync" "syscall" ) type Terminal struct { cmd *exec.Cmd stdout *bufio.Scanner isRunning bool isDone bool lock sync.Mutex } func NewTerminal() *Terminal { return &Terminal{} } func (t *Terminal) StartCommand(command string, fn func(string, error)) bool { t.lock.Lock() defer t.lock.Unlock() if t.isRunning { fn("", fmt.Errorf("已有命令在运行")) return false } cmd := exec.Command("cmd", "/C", command) // 隐藏黑色窗口 // For Windows, use Start instead of Run to hide the console window cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true} stdout, err := cmd.StdoutPipe() if err != nil { fn("", err) return false } if err := cmd.Start(); err != nil { fn("", err) return false } t.cmd = cmd t.stdout = bufio.NewScanner(stdout) t.isRunning = true go func() { for t.stdout.Scan() { output := t.stdout.Text() output = ecore.E文本编码转换(output, "", "utf8") fn(output, nil) } if err := t.stdout.Err(); err != nil { fn("", err) } t.lock.Lock() t.isRunning = false t.isDone = true t.lock.Unlock() }() go func() { cmd.Wait() t.lock.Lock() t.isRunning = false t.lock.Unlock() println("命令已完成") fn("", errors.New("命令已完成")) }() return true } func (t *Terminal) StopCommand() { t.lock.Lock() defer t.lock.Unlock() if t.isRunning { if err := t.cmd.Process.Kill(); err != nil { fmt.Println("无法终止命令:", err) } } } func (t *Terminal) IsCommandDone() bool { t.lock.Lock() defer t.lock.Unlock() return t.isDone } ================================================ FILE: GoEasyDesigner/Terminal/Terminal_window_test.go ================================================ package Terminal import ( "testing" "time" ) func TestNewTerminalWindow(t *testing.T) { terminal := NewTerminal() if terminal == nil { t.Error("NewTerminalWindow() failed") } // 命令 := ` set PATH=%PATH%;C:\Users\l\go\bin set PATH=%PATH%;C:\Users\l\go\go1.21.0\bin set PATH=%PATH%;C:\Program Files\nodejs set PATH=%PATH%;C:\Program Files\nodejs\node_modules\npm\bin wails ` terminal.StartCommand(命令, func(output string, err error) { if err != nil { t.Error(err.Error()) } println(output) }) time.Sleep(3 * time.Second) } ================================================ FILE: GoEasyDesigner/app.go ================================================ package main import ( "changeme/Terminal" "changeme/myfunc" "changeme/mymodel" "context" "fmt" "github.com/duolabmeng6/goefun/ecore" "github.com/wailsapp/wails/v2/pkg/runtime" "log" "os" "regexp" ) // App struct type App struct { ctx context.Context //terminal *TerminalWin.TerminalWin terminal *Terminal.Terminal IDE插件端口号 string S设计文件路径 string 文件监视 *mymodel.E文件监视模块 } // NewApp creates a new App application struct func NewApp() *App { a := &App{} a.文件监视, _ = mymodel.New文件监视模块() go func() { a.文件监视.E开始() }() return a } // startup is called when the app starts. The context is saved // so we can call the runtime methods func (a *App) startup(ctx context.Context) { a.ctx = ctx } // Greet returns a greeting for the given name func (a *App) Greet(name string) string { return fmt.Sprintf("Hello %s, It's show time!", name) } func (a *App) E取配置信息() string { data := map[string]string{ "IDE插件端口号": a.IDE插件端口号, "设计文件路径": a.S设计文件路径, "Version": mymodel.Version, } return ecore.E到文本(data) } func (a *App) E保存(设计文件路径 string, 保存内容 string) string { // println("保存", 设计文件路径, 保存内容) // 把文件保存到指定路径 os.WriteFile(设计文件路径, []byte(保存内容), 0644) return "保存成功" } func (a *App) E创建函数(窗口事件文件路径 string, 插入函数 string, 插件URL地址 string) string { println("保存", 窗口事件文件路径, 插入函数) // 把文件保存到指定路径 //os.WriteFile(设计文件路径, []byte(保存内容), 0644) //读入文件 data, err := os.ReadFile(窗口事件文件路径) if err != nil { return "读入文件失败" } 新内容 := myfunc.InsertCode(string(data), 插入函数) os.WriteFile(窗口事件文件路径, []byte(新内容), 0644) if 插件URL地址 == "" { return "保存成功" } //插件URL地址 := "http://127.0.0.1:13403" 跳转位置 := ecore.E寻找文本(新内容, 插入函数, 0, false) println("新内容", 新内容) println("插入函数", 插入函数) println("跳转位置", 跳转位置) myfunc.E发送跳转代码到ide(插件URL地址, 窗口事件文件路径, 跳转位置) return "保存成功" } func (a *App) E发送跳转代码到ide(插件URL地址 string, 窗口事件文件路径 string, 跳转位置 int) bool { return myfunc.E发送跳转代码到ide(插件URL地址, 窗口事件文件路径, 跳转位置) } func (a *App) E发送跳转代码到ide_命令行方式(ide string, 文件路径 string, 跳转字符串 string) bool { return myfunc.E发送跳转代码到ide_命令行方式(ide, 文件路径, 跳转字符串) } func (a *App) E打开文件对话框() string { println("E打开文件对话框") result, err := runtime.OpenFileDialog(a.ctx, runtime.OpenDialogOptions{ Title: "打开文件", }) if err != nil { return "" } return result } func (a *App) E保存件对话框() string { println("E保存件对话框") result, err := runtime.SaveFileDialog(a.ctx, runtime.SaveDialogOptions{ Title: "保存文件", DefaultFilename: "design.json", }) if err != nil { return "" } return result } func (a *App) E读入文件(文件路径 string) string { return ecore.E读入文本(文件路径) } func (a *App) E文件枚举(目录 string) []string { var files []string _ = ecore.E文件枚举(目录, ".js|.json", &files, true, false) return files } func (a *App) E运行命令(项目根目录 string, 执行命令 string) string { //项目根目录 := "/Users/ll/Documents/GitHub/GoEasyDesigner/wails-demo" //执行命令 := "wails dev" // 命令 := "cd " + 项目根目录 + " && " + 执行命令 // runtime.EventsEmit(a.ctx, "运行命令", "开始运行 "+命令) // result := myfunc.E运行命令(项目根目录, 执行命令, func(回显内容 string) { // println("回显内容", 回显内容) // regex := regexp.MustCompile("\x1b\\[[0-9;]*m") // cleaned := regex.ReplaceAllString(回显内容, "") // runtime.EventsEmit(a.ctx, "运行命令", cleaned) // }) //a.terminal = TerminalWin.NewTerminalWin() a.terminal = Terminal.NewTerminal() 命令 := "cd " + 项目根目录 + " && " + 执行命令 runtime.EventsEmit(a.ctx, "运行命令", "开始运行 "+命令) a.terminal.StartCommand(命令, func(output string, err error) { if err != nil { log.Println("命令执行错误:", err) if err.Error() == "命令已完成" { runtime.EventsEmit(a.ctx, "运行命令", err.Error()) } else { runtime.EventsEmit(a.ctx, "运行命令", "报错:"+err.Error()) } } else { println("回显内容", output) regex := regexp.MustCompile("\x1b\\[[0-9;]*m") cleaned := regex.ReplaceAllString(output, "") runtime.EventsEmit(a.ctx, "运行命令", cleaned) } }) return "运行命令成功" } func (a *App) E停止命令() string { a.terminal.StopCommand() return "停止命令成功" } func (a *App) E检查更新() string { if myfunc.E是否为macOS系统() { mymodel.E检查更新_Mac() } if myfunc.E是否为window系统() { mymodel.E检查更新_window() } return "检查更新" } func (a *App) E取文件修改时间(文件路径 string) string { // 获取文件最新的修改时间 文件信息, err := os.Stat(文件路径) if err != nil { return "" } //转换为时间戳 时间戳 := 文件信息.ModTime().Unix() return fmt.Sprintf("%d", 时间戳) } func (a *App) E添加文件监视(文件路径 string) string { a.文件监视.E添加监视文件(文件路径, func(文件路径 string) { println("文件被修改,触发处理函数:", 文件路径) // 在这里可以添加通知你的程序的逻辑 runtime.EventsEmit(a.ctx, "文件被修改", 文件路径) }) return "添加文件监视" } func (a *App) E清空文件监视() string { a.文件监视.E清空() return "清空文件监视" } func (a *App) E打开选择文件夹对话框() string { println("E打开选择文件夹对话框") result, err := runtime.OpenDirectoryDialog(a.ctx, runtime.OpenDialogOptions{ Title: "选择文件夹", }) if err != nil { return "" } return result } func (a *App) E取当前目录() string { return ecore.E取当前目录() } func (a *App) E下载github项目(github项目地址 string, 保存目录 string) string { err := mymodel.E下载github项目(github项目地址, 保存目录) if err != nil { return err.Error() } return "success" } func (a *App) E文件是否存在(路径 string) bool { return ecore.E文件是否存在(路径) } func (a *App) E搜索文件(路径 string, 文件名 string) []string { //func E文件枚举(欲寻找的目录 string, 欲寻找的文件名 string, files *[]string, 是否带路径 bool, 是否遍历子目录 bool) error { var files []string ecore.E文件枚举(路径, 文件名, &files, true, true) //for _, v := range files { // println(v) //} return files } func (a *App) E取运行目录() string { return ecore.E取运行目录() } ================================================ FILE: GoEasyDesigner/build/README.md ================================================ # Build Directory The build directory is used to house all the build files and assets for your application. The structure is: * bin - Output directory * darwin - macOS specific files * windows - Windows specific files ## Mac The `darwin` directory holds files specific to Mac builds. These may be customised and used as part of the build. To return these files to the default state, simply delete them and build with `wails build`. The directory contains the following files: - `Info.plist` - the main plist file used for Mac builds. It is used when building using `wails build`. - `Info.dev.plist` - same as the main plist file but used when building using `wails dev`. ## Windows The `windows` directory contains the manifest and rc files used when building with `wails build`. These may be customised for your application. To return these files to the default state, simply delete them and build with `wails build`. - `icon.ico` - The icon used for the application. This is used when building using `wails build`. If you wish to use a different icon, simply replace this file with your own. If it is missing, a new `icon.ico` file will be created using the `appicon.png` file in the build directory. - `installer/*` - The files used to create the Windows installer. These are used when building using `wails build`. - `info.json` - Application details used for Windows builds. The data here will be used by the Windows installer, as well as the application itself (right click the exe -> properties -> details) - `wails.exe.manifest` - The main application manifest file. ================================================ FILE: GoEasyDesigner/build/darwin/Info.dev.plist ================================================ CFBundlePackageType APPL CFBundleName {{.Info.ProductName}} CFBundleExecutable {{.Name}} CFBundleIdentifier com.wails.{{.Name}} CFBundleVersion {{.Info.ProductVersion}} CFBundleGetInfoString {{.Info.Comments}} CFBundleShortVersionString {{.Info.ProductVersion}} CFBundleIconFile iconfile LSMinimumSystemVersion 10.13.0 NSHighResolutionCapable true NSHumanReadableCopyright {{.Info.Copyright}} NSAppTransportSecurity NSAllowsLocalNetworking ================================================ FILE: GoEasyDesigner/build/darwin/Info.plist ================================================ CFBundlePackageType APPL CFBundleName {{.Info.ProductName}} CFBundleExecutable {{.Name}} CFBundleIdentifier com.wails.{{.Name}} CFBundleVersion {{.Info.ProductVersion}} CFBundleGetInfoString {{.Info.Comments}} CFBundleShortVersionString {{.Info.ProductVersion}} CFBundleIconFile iconfile LSMinimumSystemVersion 10.13.0 NSHighResolutionCapable true NSHumanReadableCopyright {{.Info.Copyright}} ================================================ FILE: GoEasyDesigner/build/dmg.sh ================================================ #!/bin/bash APP_NAME="GoEasyDesigner" APP_VERSION="$version" DMG_NAME="${APP_NAME}-${APP_VERSION}.dmg" TEMP_DIR="./install" mkdir -p "${TEMP_DIR}" cp -r "./${APP_NAME}.app" "${TEMP_DIR}" # 创建 Applications 文件夹的快捷方式 ln -s "/Applications" "${TEMP_DIR}/Applications" # 创建空的镜像文件 hdiutil create -srcfolder "${TEMP_DIR}" -volname "${APP_NAME}" -format UDZO "${DMG_NAME}" echo "${DMG_NAME} 已经创建完成!" ================================================ FILE: GoEasyDesigner/build/windows/info.json ================================================ { "fixed": { "file_version": "{{.Info.ProductVersion}}" }, "info": { "0000": { "ProductVersion": "{{.Info.ProductVersion}}", "CompanyName": "{{.Info.CompanyName}}", "FileDescription": "{{.Info.ProductName}}", "LegalCopyright": "{{.Info.Copyright}}", "ProductName": "{{.Info.ProductName}}", "Comments": "{{.Info.Comments}}" } } } ================================================ FILE: GoEasyDesigner/build/windows/installer/project.nsi ================================================ Unicode true #### ## Please note: Template replacements don't work in this file. They are provided with default defines like ## mentioned underneath. ## If the keyword is not defined, "wails_tools.nsh" will populate them with the values from ProjectInfo. ## If they are defined here, "wails_tools.nsh" will not touch them. This allows to use this project.nsi manually ## from outside of Wails for debugging and development of the installer. ## ## For development first make a wails nsis build to populate the "wails_tools.nsh": ## > wails build --target windows/amd64 --nsis ## Then you can call makensis on this file with specifying the path to your binary: ## For a AMD64 only installer: ## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app.exe ## For a ARM64 only installer: ## > makensis -DARG_WAILS_ARM64_BINARY=..\..\bin\app.exe ## For a installer with both architectures: ## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app-amd64.exe -DARG_WAILS_ARM64_BINARY=..\..\bin\app-arm64.exe #### ## The following information is taken from the ProjectInfo file, but they can be overwritten here. #### ## !define INFO_PROJECTNAME "GoEasyDesigner" # Default "{{.Name}}" ## !define INFO_COMPANYNAME "MyCompany" # Default "{{.Info.CompanyName}}" ## !define INFO_PRODUCTNAME "MyProduct" # Default "{{.Info.ProductName}}" ## !define INFO_PRODUCTVERSION "1.0.0" # Default "{{.Info.ProductVersion}}" ## !define INFO_COPYRIGHT "Copyright" # Default "{{.Info.Copyright}}" ### ## !define PRODUCT_EXECUTABLE "Application.exe" # Default "${INFO_PROJECTNAME}.exe" ## !define UNINST_KEY_NAME "UninstKeyInRegistry" # Default "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}" #### ## !define REQUEST_EXECUTION_LEVEL "admin" # Default "admin" see also https://nsis.sourceforge.io/Docs/Chapter4.html #### ## Include the wails tools #### !include "wails_tools.nsh" # The version information for this two must consist of 4 parts VIProductVersion "${INFO_PRODUCTVERSION}.0" VIFileVersion "${INFO_PRODUCTVERSION}.0" VIAddVersionKey "CompanyName" "${INFO_COMPANYNAME}" VIAddVersionKey "FileDescription" "${INFO_PRODUCTNAME} Installer" VIAddVersionKey "ProductVersion" "${INFO_PRODUCTVERSION}" VIAddVersionKey "FileVersion" "${INFO_PRODUCTVERSION}" VIAddVersionKey "LegalCopyright" "${INFO_COPYRIGHT}" VIAddVersionKey "ProductName" "${INFO_PRODUCTNAME}" !include "MUI.nsh" !define MUI_ICON "..\icon.ico" !define MUI_UNICON "..\icon.ico" # !define MUI_WELCOMEFINISHPAGE_BITMAP "resources\leftimage.bmp" #Include this to add a bitmap on the left side of the Welcome Page. Must be a size of 164x314 !define MUI_FINISHPAGE_NOAUTOCLOSE # Wait on the INSTFILES page so the user can take a look into the details of the installation steps !define MUI_ABORTWARNING # This will warn the user if they exit from the installer. !insertmacro MUI_PAGE_WELCOME # Welcome to the installer page. # !insertmacro MUI_PAGE_LICENSE "resources\eula.txt" # Adds a EULA page to the installer !insertmacro MUI_PAGE_DIRECTORY # In which folder install page. !insertmacro MUI_PAGE_INSTFILES # Installing page. !insertmacro MUI_PAGE_FINISH # Finished installation page. !insertmacro MUI_UNPAGE_INSTFILES # Uinstalling page !insertmacro MUI_LANGUAGE "English" # Set the Language of the installer ## The following two statements can be used to sign the installer and the uninstaller. The path to the binaries are provided in %1 #!uninstfinalize 'signtool --file "%1"' #!finalize 'signtool --file "%1"' Name "${INFO_PRODUCTNAME}" OutFile "..\..\bin\${INFO_PROJECTNAME}-${ARCH}-installer.exe" # Name of the installer's file. InstallDir "$PROGRAMFILES64\${INFO_COMPANYNAME}\${INFO_PRODUCTNAME}" # Default installing folder ($PROGRAMFILES is Program Files folder). ShowInstDetails show # This will always show the installation details. Function .onInit !insertmacro wails.checkArchitecture FunctionEnd Section !insertmacro wails.setShellContext !insertmacro wails.webview2runtime SetOutPath $INSTDIR !insertmacro wails.files CreateShortcut "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}" CreateShortCut "$DESKTOP\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}" !insertmacro wails.writeUninstaller SectionEnd Section "uninstall" !insertmacro wails.setShellContext RMDir /r "$AppData\${PRODUCT_EXECUTABLE}" # Remove the WebView2 DataPath RMDir /r $INSTDIR Delete "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" Delete "$DESKTOP\${INFO_PRODUCTNAME}.lnk" !insertmacro wails.deleteUninstaller SectionEnd ================================================ FILE: GoEasyDesigner/build/windows/installer/wails_tools.nsh ================================================ # DO NOT EDIT - Generated automatically by `wails build` !include "x64.nsh" !include "WinVer.nsh" !include "FileFunc.nsh" !ifndef INFO_PROJECTNAME !define INFO_PROJECTNAME "{{.Name}}" !endif !ifndef INFO_COMPANYNAME !define INFO_COMPANYNAME "{{.Info.CompanyName}}" !endif !ifndef INFO_PRODUCTNAME !define INFO_PRODUCTNAME "{{.Info.ProductName}}" !endif !ifndef INFO_PRODUCTVERSION !define INFO_PRODUCTVERSION "{{.Info.ProductVersion}}" !endif !ifndef INFO_COPYRIGHT !define INFO_COPYRIGHT "{{.Info.Copyright}}" !endif !ifndef PRODUCT_EXECUTABLE !define PRODUCT_EXECUTABLE "${INFO_PROJECTNAME}.exe" !endif !ifndef UNINST_KEY_NAME !define UNINST_KEY_NAME "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}" !endif !define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINST_KEY_NAME}" !ifndef REQUEST_EXECUTION_LEVEL !define REQUEST_EXECUTION_LEVEL "admin" !endif RequestExecutionLevel "${REQUEST_EXECUTION_LEVEL}" !ifdef ARG_WAILS_AMD64_BINARY !define SUPPORTS_AMD64 !endif !ifdef ARG_WAILS_ARM64_BINARY !define SUPPORTS_ARM64 !endif !ifdef SUPPORTS_AMD64 !ifdef SUPPORTS_ARM64 !define ARCH "amd64_arm64" !else !define ARCH "amd64" !endif !else !ifdef SUPPORTS_ARM64 !define ARCH "arm64" !else !error "Wails: Undefined ARCH, please provide at least one of ARG_WAILS_AMD64_BINARY or ARG_WAILS_ARM64_BINARY" !endif !endif !macro wails.checkArchitecture !ifndef WAILS_WIN10_REQUIRED !define WAILS_WIN10_REQUIRED "This product is only supported on Windows 10 (Server 2016) and later." !endif !ifndef WAILS_ARCHITECTURE_NOT_SUPPORTED !define WAILS_ARCHITECTURE_NOT_SUPPORTED "This product can't be installed on the current Windows architecture. Supports: ${ARCH}" !endif ${If} ${AtLeastWin10} !ifdef SUPPORTS_AMD64 ${if} ${IsNativeAMD64} Goto ok ${EndIf} !endif !ifdef SUPPORTS_ARM64 ${if} ${IsNativeARM64} Goto ok ${EndIf} !endif IfSilent silentArch notSilentArch silentArch: SetErrorLevel 65 Abort notSilentArch: MessageBox MB_OK "${WAILS_ARCHITECTURE_NOT_SUPPORTED}" Quit ${else} IfSilent silentWin notSilentWin silentWin: SetErrorLevel 64 Abort notSilentWin: MessageBox MB_OK "${WAILS_WIN10_REQUIRED}" Quit ${EndIf} ok: !macroend !macro wails.files !ifdef SUPPORTS_AMD64 ${if} ${IsNativeAMD64} File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_AMD64_BINARY}" ${EndIf} !endif !ifdef SUPPORTS_ARM64 ${if} ${IsNativeARM64} File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_ARM64_BINARY}" ${EndIf} !endif !macroend !macro wails.writeUninstaller WriteUninstaller "$INSTDIR\uninstall.exe" SetRegView 64 WriteRegStr HKLM "${UNINST_KEY}" "Publisher" "${INFO_COMPANYNAME}" WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "${INFO_PRODUCTNAME}" WriteRegStr HKLM "${UNINST_KEY}" "DisplayVersion" "${INFO_PRODUCTVERSION}" WriteRegStr HKLM "${UNINST_KEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_EXECUTABLE}" WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\"" WriteRegStr HKLM "${UNINST_KEY}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S" ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2 IntFmt $0 "0x%08X" $0 WriteRegDWORD HKLM "${UNINST_KEY}" "EstimatedSize" "$0" !macroend !macro wails.deleteUninstaller Delete "$INSTDIR\uninstall.exe" SetRegView 64 DeleteRegKey HKLM "${UNINST_KEY}" !macroend !macro wails.setShellContext ${If} ${REQUEST_EXECUTION_LEVEL} == "admin" SetShellVarContext all ${else} SetShellVarContext current ${EndIf} !macroend # Install webview2 by launching the bootstrapper # See https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#online-only-deployment !macro wails.webview2runtime !ifndef WAILS_INSTALL_WEBVIEW_DETAILPRINT !define WAILS_INSTALL_WEBVIEW_DETAILPRINT "Installing: WebView2 Runtime" !endif SetRegView 64 # If the admin key exists and is not empty then webview2 is already installed ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv" ${If} $0 != "" Goto ok ${EndIf} ${If} ${REQUEST_EXECUTION_LEVEL} == "user" # If the installer is run in user level, check the user specific key exists and is not empty then webview2 is already installed ReadRegStr $0 HKCU "Software\Microsoft\EdgeUpdate\Clients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv" ${If} $0 != "" Goto ok ${EndIf} ${EndIf} SetDetailsPrint both DetailPrint "${WAILS_INSTALL_WEBVIEW_DETAILPRINT}" SetDetailsPrint listonly InitPluginsDir CreateDirectory "$pluginsdir\webview2bootstrapper" SetOutPath "$pluginsdir\webview2bootstrapper" File "tmp\MicrosoftEdgeWebview2Setup.exe" ExecWait '"$pluginsdir\webview2bootstrapper\MicrosoftEdgeWebview2Setup.exe" /silent /install' SetDetailsPrint both ok: !macroend ================================================ FILE: GoEasyDesigner/build/windows/wails.exe.manifest ================================================ true/pm permonitorv2,permonitor ================================================ FILE: GoEasyDesigner/docker-compose.yml ================================================ version: "3" services: goeasy: container_name: goeasy build: . ports: - "3005:3005" ================================================ FILE: GoEasyDesigner/frontend/README.md ================================================ # Vue 3 + Vite This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 ` ================================================ FILE: GoEasyDesigner/frontend/jsconfig.json ================================================ { "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["src/*"] } }, "include": ["src/**/*"] } ================================================ FILE: GoEasyDesigner/frontend/package.json ================================================ { "name": "eview", "version": "0.0.0", "private": true, "scripts": { "dev": "vite", "build": "vite build", "preview": "vite preview" }, "dependencies": { "@element-plus/icons-vue": "^2.3.1", "@guolao/vue-monaco-editor": "1.3.0", "@vitejs/plugin-vue-jsx": "latest", "element-plus": "^2.9.9", "lodash-es": "^4.17.21", "monaco-editor": "0.38.0", "pinia": "^3.0.2", "pinyin-pro": "^3.26.0", "tdesign-icons-vue-next": "^0.3.6", "tdesign-vue-next": "^1.12.0", "uuid": "^11.1.0", "vue": "^3.5.13", "vue-i18n": "^11.1.3", "vue3-menus": "^1.1.2", "vue3-sfc-loader": "^0.9.5" }, "devDependencies": { "@iconify/vue": "^5.0.0", "@vitejs/plugin-vue": "^5.2.3", "autoprefixer": "^10.4.21", "monaco-editor-webpack-plugin": "^7.1.0", "postcss": "^8.5.3", "tailwindcss": "^3.4.17", "unplugin-auto-import": "^19.2.0", "unplugin-icons": "^22.1.0", "unplugin-vue-components": "^28.5.0", "vite": "^6.3.5" } } ================================================ FILE: GoEasyDesigner/frontend/postcss.config.js ================================================ module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, } ================================================ FILE: GoEasyDesigner/frontend/public/1.html ================================================
Made with Material Tailwind by Creative Tim.
================================================ FILE: GoEasyDesigner/frontend/public/cdn.tailwindcss.com_3.4.5.js ================================================ (()=>{var wb=Object.create;var li=Object.defineProperty;var bb=Object.getOwnPropertyDescriptor;var vb=Object.getOwnPropertyNames;var xb=Object.getPrototypeOf,kb=Object.prototype.hasOwnProperty;var au=i=>li(i,"__esModule",{value:!0});var ou=i=>{if(typeof require!="undefined")return require(i);throw new Error('Dynamic require of "'+i+'" is not supported')};var C=(i,e)=>()=>(i&&(e=i(i=0)),e);var v=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),_e=(i,e)=>{au(i);for(var t in e)li(i,t,{get:e[t],enumerable:!0})},Sb=(i,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of vb(e))!kb.call(i,r)&&r!=="default"&&li(i,r,{get:()=>e[r],enumerable:!(t=bb(e,r))||t.enumerable});return i},X=i=>Sb(au(li(i!=null?wb(xb(i)):{},"default",i&&i.__esModule&&"default"in i?{get:()=>i.default,enumerable:!0}:{value:i,enumerable:!0})),i);var h,l=C(()=>{h={platform:"",env:{},versions:{node:"14.17.6"}}});var Cb,re,je=C(()=>{l();Cb=0,re={readFileSync:i=>self[i]||"",statSync:()=>({mtimeMs:Cb++}),promises:{readFile:i=>Promise.resolve(self[i]||"")}}});var Qn=v((PO,uu)=>{l();"use strict";var lu=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof e.maxAge=="number"&&e.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=e.maxSize,this.maxAge=e.maxAge||1/0,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(e){if(typeof this.onEviction=="function")for(let[t,r]of e)this.onEviction(t,r.value)}_deleteIfExpired(e,t){return typeof t.expiry=="number"&&t.expiry<=Date.now()?(typeof this.onEviction=="function"&&this.onEviction(e,t.value),this.delete(e)):!1}_getOrDeleteIfExpired(e,t){if(this._deleteIfExpired(e,t)===!1)return t.value}_getItemValue(e,t){return t.expiry?this._getOrDeleteIfExpired(e,t):t.value}_peek(e,t){let r=t.get(e);return this._getItemValue(e,r)}_set(e,t){this.cache.set(e,t),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(e,t){this.oldCache.delete(e),this._set(e,t)}*_entriesAscending(){for(let e of this.oldCache){let[t,r]=e;this.cache.has(t)||this._deleteIfExpired(t,r)===!1&&(yield e)}for(let e of this.cache){let[t,r]=e;this._deleteIfExpired(t,r)===!1&&(yield e)}}get(e){if(this.cache.has(e)){let t=this.cache.get(e);return this._getItemValue(e,t)}if(this.oldCache.has(e)){let t=this.oldCache.get(e);if(this._deleteIfExpired(e,t)===!1)return this._moveToRecent(e,t),t.value}}set(e,t,{maxAge:r=this.maxAge===1/0?void 0:Date.now()+this.maxAge}={}){this.cache.has(e)?this.cache.set(e,{value:t,maxAge:r}):this._set(e,{value:t,expiry:r})}has(e){return this.cache.has(e)?!this._deleteIfExpired(e,this.cache.get(e)):this.oldCache.has(e)?!this._deleteIfExpired(e,this.oldCache.get(e)):!1}peek(e){if(this.cache.has(e))return this._peek(e,this.cache);if(this.oldCache.has(e))return this._peek(e,this.oldCache)}delete(e){let t=this.cache.delete(e);return t&&this._size--,this.oldCache.delete(e)||t}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(e){if(!(e&&e>0))throw new TypeError("`maxSize` must be a number greater than 0");let t=[...this._entriesAscending()],r=t.length-e;r<0?(this.cache=new Map(t),this.oldCache=new Map,this._size=t.length):(r>0&&this._emitEvictions(t.slice(0,r)),this.oldCache=new Map(t.slice(r)),this.cache=new Map,this._size=0),this.maxSize=e}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache){let[t,r]=e;this._deleteIfExpired(t,r)===!1&&(yield[t,r.value])}for(let e of this.oldCache){let[t,r]=e;this.cache.has(t)||this._deleteIfExpired(t,r)===!1&&(yield[t,r.value])}}*entriesDescending(){let e=[...this.cache];for(let t=e.length-1;t>=0;--t){let r=e[t],[n,a]=r;this._deleteIfExpired(n,a)===!1&&(yield[n,a.value])}e=[...this.oldCache];for(let t=e.length-1;t>=0;--t){let r=e[t],[n,a]=r;this.cache.has(n)||this._deleteIfExpired(n,a)===!1&&(yield[n,a.value])}}*entriesAscending(){for(let[e,t]of this._entriesAscending())yield[e,t.value]}get size(){if(!this._size)return this.oldCache.size;let e=0;for(let t of this.oldCache.keys())this.cache.has(t)||e++;return Math.min(this._size+e,this.maxSize)}};uu.exports=lu});var fu,cu=C(()=>{l();fu=i=>i&&i._hash});function ui(i){return fu(i,{ignoreUnknown:!0})}var pu=C(()=>{l();cu()});function Xe(i){if(i=`${i}`,i==="0")return"0";if(/^[+-]?(\d+|\d*\.\d+)(e[+-]?\d+)?(%|\w+)?$/.test(i))return i.replace(/^[+-]?/,t=>t==="-"?"":"-");let e=["var","calc","min","max","clamp"];for(let t of e)if(i.includes(`${t}(`))return`calc(${i} * -1)`}var fi=C(()=>{l()});var du,hu=C(()=>{l();du=["preflight","container","accessibility","pointerEvents","visibility","position","inset","isolation","zIndex","order","gridColumn","gridColumnStart","gridColumnEnd","gridRow","gridRowStart","gridRowEnd","float","clear","margin","boxSizing","lineClamp","display","aspectRatio","size","height","maxHeight","minHeight","width","minWidth","maxWidth","flex","flexShrink","flexGrow","flexBasis","tableLayout","captionSide","borderCollapse","borderSpacing","transformOrigin","translate","rotate","skew","scale","transform","animation","cursor","touchAction","userSelect","resize","scrollSnapType","scrollSnapAlign","scrollSnapStop","scrollMargin","scrollPadding","listStylePosition","listStyleType","listStyleImage","appearance","columns","breakBefore","breakInside","breakAfter","gridAutoColumns","gridAutoFlow","gridAutoRows","gridTemplateColumns","gridTemplateRows","flexDirection","flexWrap","placeContent","placeItems","alignContent","alignItems","justifyContent","justifyItems","gap","space","divideWidth","divideStyle","divideColor","divideOpacity","placeSelf","alignSelf","justifySelf","overflow","overscrollBehavior","scrollBehavior","textOverflow","hyphens","whitespace","textWrap","wordBreak","borderRadius","borderWidth","borderStyle","borderColor","borderOpacity","backgroundColor","backgroundOpacity","backgroundImage","gradientColorStops","boxDecorationBreak","backgroundSize","backgroundAttachment","backgroundClip","backgroundPosition","backgroundRepeat","backgroundOrigin","fill","stroke","strokeWidth","objectFit","objectPosition","padding","textAlign","textIndent","verticalAlign","fontFamily","fontSize","fontWeight","textTransform","fontStyle","fontVariantNumeric","lineHeight","letterSpacing","textColor","textOpacity","textDecoration","textDecorationColor","textDecorationStyle","textDecorationThickness","textUnderlineOffset","fontSmoothing","placeholderColor","placeholderOpacity","caretColor","accentColor","opacity","backgroundBlendMode","mixBlendMode","boxShadow","boxShadowColor","outlineStyle","outlineWidth","outlineOffset","outlineColor","ringWidth","ringColor","ringOpacity","ringOffsetWidth","ringOffsetColor","blur","brightness","contrast","dropShadow","grayscale","hueRotate","invert","saturate","sepia","filter","backdropBlur","backdropBrightness","backdropContrast","backdropGrayscale","backdropHueRotate","backdropInvert","backdropOpacity","backdropSaturate","backdropSepia","backdropFilter","transitionProperty","transitionDelay","transitionDuration","transitionTimingFunction","willChange","contain","content","forcedColorAdjust"]});function mu(i,e){return i===void 0?e:Array.isArray(i)?i:[...new Set(e.filter(r=>i!==!1&&i[r]!==!1).concat(Object.keys(i).filter(r=>i[r]!==!1)))]}var gu=C(()=>{l()});var yu={};_e(yu,{default:()=>Oe});var Oe,ci=C(()=>{l();Oe=new Proxy({},{get:()=>String})});function Jn(i,e,t){typeof h!="undefined"&&h.env.JEST_WORKER_ID||t&&wu.has(t)||(t&&wu.add(t),console.warn(""),e.forEach(r=>console.warn(i,"-",r)))}function Xn(i){return Oe.dim(i)}var wu,F,Ee=C(()=>{l();ci();wu=new Set;F={info(i,e){Jn(Oe.bold(Oe.cyan("info")),...Array.isArray(i)?[i]:[e,i])},warn(i,e){["content-problems"].includes(i)||Jn(Oe.bold(Oe.yellow("warn")),...Array.isArray(i)?[i]:[e,i])},risk(i,e){Jn(Oe.bold(Oe.magenta("risk")),...Array.isArray(i)?[i]:[e,i])}}});var bu={};_e(bu,{default:()=>Kn});function ar({version:i,from:e,to:t}){F.warn(`${e}-color-renamed`,[`As of Tailwind CSS ${i}, \`${e}\` has been renamed to \`${t}\`.`,"Update your configuration file to silence this warning."])}var Kn,Zn=C(()=>{l();Ee();Kn={inherit:"inherit",current:"currentColor",transparent:"transparent",black:"#000",white:"#fff",slate:{50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a",950:"#020617"},gray:{50:"#f9fafb",100:"#f3f4f6",200:"#e5e7eb",300:"#d1d5db",400:"#9ca3af",500:"#6b7280",600:"#4b5563",700:"#374151",800:"#1f2937",900:"#111827",950:"#030712"},zinc:{50:"#fafafa",100:"#f4f4f5",200:"#e4e4e7",300:"#d4d4d8",400:"#a1a1aa",500:"#71717a",600:"#52525b",700:"#3f3f46",800:"#27272a",900:"#18181b",950:"#09090b"},neutral:{50:"#fafafa",100:"#f5f5f5",200:"#e5e5e5",300:"#d4d4d4",400:"#a3a3a3",500:"#737373",600:"#525252",700:"#404040",800:"#262626",900:"#171717",950:"#0a0a0a"},stone:{50:"#fafaf9",100:"#f5f5f4",200:"#e7e5e4",300:"#d6d3d1",400:"#a8a29e",500:"#78716c",600:"#57534e",700:"#44403c",800:"#292524",900:"#1c1917",950:"#0c0a09"},red:{50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d",950:"#450a0a"},orange:{50:"#fff7ed",100:"#ffedd5",200:"#fed7aa",300:"#fdba74",400:"#fb923c",500:"#f97316",600:"#ea580c",700:"#c2410c",800:"#9a3412",900:"#7c2d12",950:"#431407"},amber:{50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f",950:"#451a03"},yellow:{50:"#fefce8",100:"#fef9c3",200:"#fef08a",300:"#fde047",400:"#facc15",500:"#eab308",600:"#ca8a04",700:"#a16207",800:"#854d0e",900:"#713f12",950:"#422006"},lime:{50:"#f7fee7",100:"#ecfccb",200:"#d9f99d",300:"#bef264",400:"#a3e635",500:"#84cc16",600:"#65a30d",700:"#4d7c0f",800:"#3f6212",900:"#365314",950:"#1a2e05"},green:{50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d",950:"#052e16"},emerald:{50:"#ecfdf5",100:"#d1fae5",200:"#a7f3d0",300:"#6ee7b7",400:"#34d399",500:"#10b981",600:"#059669",700:"#047857",800:"#065f46",900:"#064e3b",950:"#022c22"},teal:{50:"#f0fdfa",100:"#ccfbf1",200:"#99f6e4",300:"#5eead4",400:"#2dd4bf",500:"#14b8a6",600:"#0d9488",700:"#0f766e",800:"#115e59",900:"#134e4a",950:"#042f2e"},cyan:{50:"#ecfeff",100:"#cffafe",200:"#a5f3fc",300:"#67e8f9",400:"#22d3ee",500:"#06b6d4",600:"#0891b2",700:"#0e7490",800:"#155e75",900:"#164e63",950:"#083344"},sky:{50:"#f0f9ff",100:"#e0f2fe",200:"#bae6fd",300:"#7dd3fc",400:"#38bdf8",500:"#0ea5e9",600:"#0284c7",700:"#0369a1",800:"#075985",900:"#0c4a6e",950:"#082f49"},blue:{50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a",950:"#172554"},indigo:{50:"#eef2ff",100:"#e0e7ff",200:"#c7d2fe",300:"#a5b4fc",400:"#818cf8",500:"#6366f1",600:"#4f46e5",700:"#4338ca",800:"#3730a3",900:"#312e81",950:"#1e1b4b"},violet:{50:"#f5f3ff",100:"#ede9fe",200:"#ddd6fe",300:"#c4b5fd",400:"#a78bfa",500:"#8b5cf6",600:"#7c3aed",700:"#6d28d9",800:"#5b21b6",900:"#4c1d95",950:"#2e1065"},purple:{50:"#faf5ff",100:"#f3e8ff",200:"#e9d5ff",300:"#d8b4fe",400:"#c084fc",500:"#a855f7",600:"#9333ea",700:"#7e22ce",800:"#6b21a8",900:"#581c87",950:"#3b0764"},fuchsia:{50:"#fdf4ff",100:"#fae8ff",200:"#f5d0fe",300:"#f0abfc",400:"#e879f9",500:"#d946ef",600:"#c026d3",700:"#a21caf",800:"#86198f",900:"#701a75",950:"#4a044e"},pink:{50:"#fdf2f8",100:"#fce7f3",200:"#fbcfe8",300:"#f9a8d4",400:"#f472b6",500:"#ec4899",600:"#db2777",700:"#be185d",800:"#9d174d",900:"#831843",950:"#500724"},rose:{50:"#fff1f2",100:"#ffe4e6",200:"#fecdd3",300:"#fda4af",400:"#fb7185",500:"#f43f5e",600:"#e11d48",700:"#be123c",800:"#9f1239",900:"#881337",950:"#4c0519"},get lightBlue(){return ar({version:"v2.2",from:"lightBlue",to:"sky"}),this.sky},get warmGray(){return ar({version:"v3.0",from:"warmGray",to:"stone"}),this.stone},get trueGray(){return ar({version:"v3.0",from:"trueGray",to:"neutral"}),this.neutral},get coolGray(){return ar({version:"v3.0",from:"coolGray",to:"gray"}),this.gray},get blueGray(){return ar({version:"v3.0",from:"blueGray",to:"slate"}),this.slate}}});function es(i,...e){for(let t of e){for(let r in t)i?.hasOwnProperty?.(r)||(i[r]=t[r]);for(let r of Object.getOwnPropertySymbols(t))i?.hasOwnProperty?.(r)||(i[r]=t[r])}return i}var vu=C(()=>{l()});function Ke(i){if(Array.isArray(i))return i;let e=i.split("[").length-1,t=i.split("]").length-1;if(e!==t)throw new Error(`Path is invalid. Has unbalanced brackets: ${i}`);return i.split(/\.(?![^\[]*\])|[\[\]]/g).filter(Boolean)}var pi=C(()=>{l()});function Z(i,e){return di.future.includes(e)?i.future==="all"||(i?.future?.[e]??xu[e]??!1):di.experimental.includes(e)?i.experimental==="all"||(i?.experimental?.[e]??xu[e]??!1):!1}function ku(i){return i.experimental==="all"?di.experimental:Object.keys(i?.experimental??{}).filter(e=>di.experimental.includes(e)&&i.experimental[e])}function Su(i){if(h.env.JEST_WORKER_ID===void 0&&ku(i).length>0){let e=ku(i).map(t=>Oe.yellow(t)).join(", ");F.warn("experimental-flags-enabled",[`You have enabled experimental features: ${e}`,"Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time."])}}var xu,di,ze=C(()=>{l();ci();Ee();xu={optimizeUniversalDefaults:!1,generalizedModifiers:!0,disableColorOpacityUtilitiesByDefault:!1,relativeContentPathsByDefault:!1},di={future:["hoverOnlyWhenSupported","respectDefaultRingColorOpacity","disableColorOpacityUtilitiesByDefault","relativeContentPathsByDefault"],experimental:["optimizeUniversalDefaults","generalizedModifiers"]}});function Cu(i){(()=>{if(i.purge||!i.content||!Array.isArray(i.content)&&!(typeof i.content=="object"&&i.content!==null))return!1;if(Array.isArray(i.content))return i.content.every(t=>typeof t=="string"?!0:!(typeof t?.raw!="string"||t?.extension&&typeof t?.extension!="string"));if(typeof i.content=="object"&&i.content!==null){if(Object.keys(i.content).some(t=>!["files","relative","extract","transform"].includes(t)))return!1;if(Array.isArray(i.content.files)){if(!i.content.files.every(t=>typeof t=="string"?!0:!(typeof t?.raw!="string"||t?.extension&&typeof t?.extension!="string")))return!1;if(typeof i.content.extract=="object"){for(let t of Object.values(i.content.extract))if(typeof t!="function")return!1}else if(!(i.content.extract===void 0||typeof i.content.extract=="function"))return!1;if(typeof i.content.transform=="object"){for(let t of Object.values(i.content.transform))if(typeof t!="function")return!1}else if(!(i.content.transform===void 0||typeof i.content.transform=="function"))return!1;if(typeof i.content.relative!="boolean"&&typeof i.content.relative!="undefined")return!1}return!0}return!1})()||F.warn("purge-deprecation",["The `purge`/`content` options have changed in Tailwind CSS v3.0.","Update your configuration file to eliminate this warning.","https://tailwindcss.com/docs/upgrade-guide#configure-content-sources"]),i.safelist=(()=>{let{content:t,purge:r,safelist:n}=i;return Array.isArray(n)?n:Array.isArray(t?.safelist)?t.safelist:Array.isArray(r?.safelist)?r.safelist:Array.isArray(r?.options?.safelist)?r.options.safelist:[]})(),i.blocklist=(()=>{let{blocklist:t}=i;if(Array.isArray(t)){if(t.every(r=>typeof r=="string"))return t;F.warn("blocklist-invalid",["The `blocklist` option must be an array of strings.","https://tailwindcss.com/docs/content-configuration#discarding-classes"])}return[]})(),typeof i.prefix=="function"?(F.warn("prefix-function",["As of Tailwind CSS v3.0, `prefix` cannot be a function.","Update `prefix` in your configuration to be a string to eliminate this warning.","https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function"]),i.prefix=""):i.prefix=i.prefix??"",i.content={relative:(()=>{let{content:t}=i;return t?.relative?t.relative:Z(i,"relativeContentPathsByDefault")})(),files:(()=>{let{content:t,purge:r}=i;return Array.isArray(r)?r:Array.isArray(r?.content)?r.content:Array.isArray(t)?t:Array.isArray(t?.content)?t.content:Array.isArray(t?.files)?t.files:[]})(),extract:(()=>{let t=(()=>i.purge?.extract?i.purge.extract:i.content?.extract?i.content.extract:i.purge?.extract?.DEFAULT?i.purge.extract.DEFAULT:i.content?.extract?.DEFAULT?i.content.extract.DEFAULT:i.purge?.options?.extractors?i.purge.options.extractors:i.content?.options?.extractors?i.content.options.extractors:{})(),r={},n=(()=>{if(i.purge?.options?.defaultExtractor)return i.purge.options.defaultExtractor;if(i.content?.options?.defaultExtractor)return i.content.options.defaultExtractor})();if(n!==void 0&&(r.DEFAULT=n),typeof t=="function")r.DEFAULT=t;else if(Array.isArray(t))for(let{extensions:a,extractor:s}of t??[])for(let o of a)r[o]=s;else typeof t=="object"&&t!==null&&Object.assign(r,t);return r})(),transform:(()=>{let t=(()=>i.purge?.transform?i.purge.transform:i.content?.transform?i.content.transform:i.purge?.transform?.DEFAULT?i.purge.transform.DEFAULT:i.content?.transform?.DEFAULT?i.content.transform.DEFAULT:{})(),r={};return typeof t=="function"?r.DEFAULT=t:typeof t=="object"&&t!==null&&Object.assign(r,t),r})()};for(let t of i.content.files)if(typeof t=="string"&&/{([^,]*?)}/g.test(t)){F.warn("invalid-glob-braces",[`The glob pattern ${Xn(t)} in your Tailwind CSS configuration is invalid.`,`Update it to ${Xn(t.replace(/{([^,]*?)}/g,"$1"))} to silence this warning.`]);break}return i}var Au=C(()=>{l();ze();Ee()});function se(i){if(Object.prototype.toString.call(i)!=="[object Object]")return!1;let e=Object.getPrototypeOf(i);return e===null||Object.getPrototypeOf(e)===null}var Ct=C(()=>{l()});function Ze(i){return Array.isArray(i)?i.map(e=>Ze(e)):typeof i=="object"&&i!==null?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,Ze(t)])):i}var hi=C(()=>{l()});function gt(i){return i.replace(/\\,/g,"\\2c ")}var mi=C(()=>{l()});var ts,_u=C(()=>{l();ts={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});function or(i,{loose:e=!1}={}){if(typeof i!="string")return null;if(i=i.trim(),i==="transparent")return{mode:"rgb",color:["0","0","0"],alpha:"0"};if(i in ts)return{mode:"rgb",color:ts[i].map(a=>a.toString())};let t=i.replace(_b,(a,s,o,u,c)=>["#",s,s,o,o,u,u,c?c+c:""].join("")).match(Ab);if(t!==null)return{mode:"rgb",color:[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)].map(a=>a.toString()),alpha:t[4]?(parseInt(t[4],16)/255).toString():void 0};let r=i.match(Ob)??i.match(Eb);if(r===null)return null;let n=[r[2],r[3],r[4]].filter(Boolean).map(a=>a.toString());return n.length===2&&n[0].startsWith("var(")?{mode:r[1],color:[n[0]],alpha:n[1]}:!e&&n.length!==3||n.length<3&&!n.some(a=>/^var\(.*?\)$/.test(a))?null:{mode:r[1],color:n,alpha:r[5]?.toString?.()}}function rs({mode:i,color:e,alpha:t}){let r=t!==void 0;return i==="rgba"||i==="hsla"?`${i}(${e.join(", ")}${r?`, ${t}`:""})`:`${i}(${e.join(" ")}${r?` / ${t}`:""})`}var Ab,_b,et,gi,Ou,tt,Ob,Eb,is=C(()=>{l();_u();Ab=/^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i,_b=/^#([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,et=/(?:\d+|\d*\.\d+)%?/,gi=/(?:\s*,\s*|\s+)/,Ou=/\s*[,/]\s*/,tt=/var\(--(?:[^ )]*?)(?:,(?:[^ )]*?|var\(--[^ )]*?\)))?\)/,Ob=new RegExp(`^(rgba?)\\(\\s*(${et.source}|${tt.source})(?:${gi.source}(${et.source}|${tt.source}))?(?:${gi.source}(${et.source}|${tt.source}))?(?:${Ou.source}(${et.source}|${tt.source}))?\\s*\\)$`),Eb=new RegExp(`^(hsla?)\\(\\s*((?:${et.source})(?:deg|rad|grad|turn)?|${tt.source})(?:${gi.source}(${et.source}|${tt.source}))?(?:${gi.source}(${et.source}|${tt.source}))?(?:${Ou.source}(${et.source}|${tt.source}))?\\s*\\)$`)});function qe(i,e,t){if(typeof i=="function")return i({opacityValue:e});let r=or(i,{loose:!0});return r===null?t:rs({...r,alpha:e})}function oe({color:i,property:e,variable:t}){let r=[].concat(e);if(typeof i=="function")return{[t]:"1",...Object.fromEntries(r.map(a=>[a,i({opacityVariable:t,opacityValue:`var(${t})`})]))};let n=or(i);return n===null?Object.fromEntries(r.map(a=>[a,i])):n.alpha!==void 0?Object.fromEntries(r.map(a=>[a,i])):{[t]:"1",...Object.fromEntries(r.map(a=>[a,rs({...n,alpha:`var(${t})`})]))}}var lr=C(()=>{l();is()});function ie(i,e){let t=[],r=[],n=0,a=!1;for(let s=0;s{l()});function yi(i){return ie(i,",").map(t=>{let r=t.trim(),n={raw:r},a=r.split(Pb),s=new Set;for(let o of a)Eu.lastIndex=0,!s.has("KEYWORD")&&Tb.has(o)?(n.keyword=o,s.add("KEYWORD")):Eu.test(o)?s.has("X")?s.has("Y")?s.has("BLUR")?s.has("SPREAD")||(n.spread=o,s.add("SPREAD")):(n.blur=o,s.add("BLUR")):(n.y=o,s.add("Y")):(n.x=o,s.add("X")):n.color?(n.unknown||(n.unknown=[]),n.unknown.push(o)):n.color=o;return n.valid=n.x!==void 0&&n.y!==void 0,n})}function Tu(i){return i.map(e=>e.valid?[e.keyword,e.x,e.y,e.blur,e.spread,e.color].filter(Boolean).join(" "):e.raw).join(", ")}var Tb,Pb,Eu,ns=C(()=>{l();yt();Tb=new Set(["inset","inherit","initial","revert","unset"]),Pb=/\ +(?![^(]*\))/g,Eu=/^-?(\d+|\.\d+)(.*?)$/g});function ss(i){return Db.some(e=>new RegExp(`^${e}\\(.*\\)`).test(i))}function N(i,e=null,t=!0){let r=e&&Ib.has(e.property);return i.startsWith("--")&&!r?`var(${i})`:i.includes("url(")?i.split(/(url\(.*?\))/g).filter(Boolean).map(n=>/^url\(.*?\)$/.test(n)?n:N(n,e,!1)).join(""):(i=i.replace(/([^\\])_+/g,(n,a)=>a+" ".repeat(n.length-1)).replace(/^_/g," ").replace(/\\_/g,"_"),t&&(i=i.trim()),i=qb(i),i)}function qb(i){let e=["theme"],t=["min-content","max-content","fit-content","safe-area-inset-top","safe-area-inset-right","safe-area-inset-bottom","safe-area-inset-left","titlebar-area-x","titlebar-area-y","titlebar-area-width","titlebar-area-height","keyboard-inset-top","keyboard-inset-right","keyboard-inset-bottom","keyboard-inset-left","keyboard-inset-width","keyboard-inset-height","radial-gradient","linear-gradient","conic-gradient","repeating-radial-gradient","repeating-linear-gradient","repeating-conic-gradient"];return i.replace(/(calc|min|max|clamp)\(.+\)/g,r=>{let n="";function a(){let s=n.trimEnd();return s[s.length-1]}for(let s=0;sr[s+p]===d)},u=function(f){let d=1/0;for(let m of f){let b=r.indexOf(m,s);b!==-1&&bo(f))){let f=t.find(d=>o(d));n+=f,s+=f.length-1}else e.some(f=>o(f))?n+=u([")"]):o("[")?n+=u(["]"]):["+","-","*","/"].includes(c)&&!["(","+","-","*","/",","].includes(a())?n+=` ${c} `:n+=c}return n.replace(/\s+/g," ")})}function as(i){return i.startsWith("url(")}function os(i){return!isNaN(Number(i))||ss(i)}function ur(i){return i.endsWith("%")&&os(i.slice(0,-1))||ss(i)}function fr(i){return i==="0"||new RegExp(`^[+-]?[0-9]*.?[0-9]+(?:[eE][+-]?[0-9]+)?${Mb}$`).test(i)||ss(i)}function Pu(i){return Bb.has(i)}function Du(i){let e=yi(N(i));for(let t of e)if(!t.valid)return!1;return!0}function Iu(i){let e=0;return ie(i,"_").every(r=>(r=N(r),r.startsWith("var(")?!0:or(r,{loose:!0})!==null?(e++,!0):!1))?e>0:!1}function qu(i){let e=0;return ie(i,",").every(r=>(r=N(r),r.startsWith("var(")?!0:as(r)||Nb(r)||["element(","image(","cross-fade(","image-set("].some(n=>r.startsWith(n))?(e++,!0):!1))?e>0:!1}function Nb(i){i=N(i);for(let e of Fb)if(i.startsWith(`${e}(`))return!0;return!1}function Ru(i){let e=0;return ie(i,"_").every(r=>(r=N(r),r.startsWith("var(")?!0:Lb.has(r)||fr(r)||ur(r)?(e++,!0):!1))?e>0:!1}function Mu(i){let e=0;return ie(i,",").every(r=>(r=N(r),r.startsWith("var(")?!0:r.includes(" ")&&!/(['"])([^"']+)\1/g.test(r)||/^\d/g.test(r)?!1:(e++,!0)))?e>0:!1}function Bu(i){return $b.has(i)}function Fu(i){return jb.has(i)}function Nu(i){return zb.has(i)}var Db,Ib,Rb,Mb,Bb,Fb,Lb,$b,jb,zb,cr=C(()=>{l();is();ns();yt();Db=["min","max","clamp","calc"];Ib=new Set(["scroll-timeline-name","timeline-scope","view-timeline-name","font-palette","anchor-name","anchor-scope","position-anchor","position-try-options","scroll-timeline","animation-timeline","view-timeline","position-try"]);Rb=["cm","mm","Q","in","pc","pt","px","em","ex","ch","rem","lh","rlh","vw","vh","vmin","vmax","vb","vi","svw","svh","lvw","lvh","dvw","dvh","cqw","cqh","cqi","cqb","cqmin","cqmax"],Mb=`(?:${Rb.join("|")})`;Bb=new Set(["thin","medium","thick"]);Fb=new Set(["conic-gradient","linear-gradient","radial-gradient","repeating-conic-gradient","repeating-linear-gradient","repeating-radial-gradient"]);Lb=new Set(["center","top","right","bottom","left"]);$b=new Set(["serif","sans-serif","monospace","cursive","fantasy","system-ui","ui-serif","ui-sans-serif","ui-monospace","ui-rounded","math","emoji","fangsong"]);jb=new Set(["xx-small","x-small","small","medium","large","x-large","xx-large","xxx-large"]);zb=new Set(["larger","smaller"])});function Lu(i){let e=["cover","contain"];return ie(i,",").every(t=>{let r=ie(t,"_").filter(Boolean);return r.length===1&&e.includes(r[0])?!0:r.length!==1&&r.length!==2?!1:r.every(n=>fr(n)||ur(n)||n==="auto")})}var $u=C(()=>{l();cr();yt()});function ju(i,e){i.walkClasses(t=>{t.value=e(t.value),t.raws&&t.raws.value&&(t.raws.value=gt(t.raws.value))})}function zu(i,e){if(!rt(i))return;let t=i.slice(1,-1);if(!!e(t))return N(t)}function Vb(i,e={},t){let r=e[i];if(r!==void 0)return Xe(r);if(rt(i)){let n=zu(i,t);return n===void 0?void 0:Xe(n)}}function wi(i,e={},{validate:t=()=>!0}={}){let r=e.values?.[i];return r!==void 0?r:e.supportsNegativeValues&&i.startsWith("-")?Vb(i.slice(1),e.values,t):zu(i,t)}function rt(i){return i.startsWith("[")&&i.endsWith("]")}function Vu(i){let e=i.lastIndexOf("/"),t=i.lastIndexOf("[",e),r=i.indexOf("]",e);return i[e-1]==="]"||i[e+1]==="["||t!==-1&&r!==-1&&t")){let e=i;return({opacityValue:t=1})=>e.replace(//g,t)}return i}function Uu(i){return N(i.slice(1,-1))}function Ub(i,e={},{tailwindConfig:t={}}={}){if(e.values?.[i]!==void 0)return At(e.values?.[i]);let[r,n]=Vu(i);if(n!==void 0){let a=e.values?.[r]??(rt(r)?r.slice(1,-1):void 0);return a===void 0?void 0:(a=At(a),rt(n)?qe(a,Uu(n)):t.theme?.opacity?.[n]===void 0?void 0:qe(a,t.theme.opacity[n]))}return wi(i,e,{validate:Iu})}function Wb(i,e={}){return e.values?.[i]}function ge(i){return(e,t)=>wi(e,t,{validate:i})}function Gb(i,e){let t=i.indexOf(e);return t===-1?[void 0,i]:[i.slice(0,t),i.slice(t+1)]}function us(i,e,t,r){if(t.values&&e in t.values)for(let{type:a}of i??[]){let s=ls[a](e,t,{tailwindConfig:r});if(s!==void 0)return[s,a,null]}if(rt(e)){let a=e.slice(1,-1),[s,o]=Gb(a,":");if(!/^[\w-_]+$/g.test(s))o=a;else if(s!==void 0&&!Wu.includes(s))return[];if(o.length>0&&Wu.includes(s))return[wi(`[${o}]`,t),s,null]}let n=fs(i,e,t,r);for(let a of n)return a;return[]}function*fs(i,e,t,r){let n=Z(r,"generalizedModifiers"),[a,s]=Vu(e);if(n&&t.modifiers!=null&&(t.modifiers==="any"||typeof t.modifiers=="object"&&(s&&rt(s)||s in t.modifiers))||(a=e,s=void 0),s!==void 0&&a===""&&(a="DEFAULT"),s!==void 0&&typeof t.modifiers=="object"){let u=t.modifiers?.[s]??null;u!==null?s=u:rt(s)&&(s=Uu(s))}for(let{type:u}of i??[]){let c=ls[u](a,t,{tailwindConfig:r});c!==void 0&&(yield[c,u,s??null])}}var ls,Wu,pr=C(()=>{l();mi();lr();cr();fi();$u();ze();ls={any:wi,color:Ub,url:ge(as),image:ge(qu),length:ge(fr),percentage:ge(ur),position:ge(Ru),lookup:Wb,"generic-name":ge(Bu),"family-name":ge(Mu),number:ge(os),"line-width":ge(Pu),"absolute-size":ge(Fu),"relative-size":ge(Nu),shadow:ge(Du),size:ge(Lu)},Wu=Object.keys(ls)});function L(i){return typeof i=="function"?i({}):i}var cs=C(()=>{l()});function _t(i){return typeof i=="function"}function dr(i,...e){let t=e.pop();for(let r of e)for(let n in r){let a=t(i[n],r[n]);a===void 0?se(i[n])&&se(r[n])?i[n]=dr({},i[n],r[n],t):i[n]=r[n]:i[n]=a}return i}function Hb(i,...e){return _t(i)?i(...e):i}function Yb(i){return i.reduce((e,{extend:t})=>dr(e,t,(r,n)=>r===void 0?[n]:Array.isArray(r)?[n,...r]:[n,r]),{})}function Qb(i){return{...i.reduce((e,t)=>es(e,t),{}),extend:Yb(i)}}function Gu(i,e){if(Array.isArray(i)&&se(i[0]))return i.concat(e);if(Array.isArray(e)&&se(e[0])&&se(i))return[i,...e];if(Array.isArray(e))return e}function Jb({extend:i,...e}){return dr(e,i,(t,r)=>!_t(t)&&!r.some(_t)?dr({},t,...r,Gu):(n,a)=>dr({},...[t,...r].map(s=>Hb(s,n,a)),Gu))}function*Xb(i){let e=Ke(i);if(e.length===0||(yield e,Array.isArray(i)))return;let t=/^(.*?)\s*\/\s*([^/]+)$/,r=i.match(t);if(r!==null){let[,n,a]=r,s=Ke(n);s.alpha=a,yield s}}function Kb(i){let e=(t,r)=>{for(let n of Xb(t)){let a=0,s=i;for(;s!=null&&a(t[r]=_t(i[r])?i[r](e,ps):i[r],t),{})}function Hu(i){let e=[];return i.forEach(t=>{e=[...e,t];let r=t?.plugins??[];r.length!==0&&r.forEach(n=>{n.__isOptionsFunction&&(n=n()),e=[...e,...Hu([n?.config??{}])]})}),e}function Zb(i){return[...i].reduceRight((t,r)=>_t(r)?r({corePlugins:t}):mu(r,t),du)}function e0(i){return[...i].reduceRight((t,r)=>[...t,...r],[])}function ds(i){let e=[...Hu(i),{prefix:"",important:!1,separator:":"}];return Cu(es({theme:Kb(Jb(Qb(e.map(t=>t?.theme??{})))),corePlugins:Zb(e.map(t=>t.corePlugins)),plugins:e0(i.map(t=>t?.plugins??[]))},...e))}var ps,Yu=C(()=>{l();fi();hu();gu();Zn();vu();pi();Au();Ct();hi();pr();lr();cs();ps={colors:Kn,negative(i){return Object.keys(i).filter(e=>i[e]!=="0").reduce((e,t)=>{let r=Xe(i[t]);return r!==void 0&&(e[`-${t}`]=r),e},{})},breakpoints(i){return Object.keys(i).filter(e=>typeof i[e]=="string").reduce((e,t)=>({...e,[`screen-${t}`]:i[t]}),{})}}});var bi=v((qE,Qu)=>{l();Qu.exports={content:[],presets:[],darkMode:"media",theme:{accentColor:({theme:i})=>({...i("colors"),auto:"auto"}),animation:{none:"none",spin:"spin 1s linear infinite",ping:"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",pulse:"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",bounce:"bounce 1s infinite"},aria:{busy:'busy="true"',checked:'checked="true"',disabled:'disabled="true"',expanded:'expanded="true"',hidden:'hidden="true"',pressed:'pressed="true"',readonly:'readonly="true"',required:'required="true"',selected:'selected="true"'},aspectRatio:{auto:"auto",square:"1 / 1",video:"16 / 9"},backdropBlur:({theme:i})=>i("blur"),backdropBrightness:({theme:i})=>i("brightness"),backdropContrast:({theme:i})=>i("contrast"),backdropGrayscale:({theme:i})=>i("grayscale"),backdropHueRotate:({theme:i})=>i("hueRotate"),backdropInvert:({theme:i})=>i("invert"),backdropOpacity:({theme:i})=>i("opacity"),backdropSaturate:({theme:i})=>i("saturate"),backdropSepia:({theme:i})=>i("sepia"),backgroundColor:({theme:i})=>i("colors"),backgroundImage:{none:"none","gradient-to-t":"linear-gradient(to top, var(--tw-gradient-stops))","gradient-to-tr":"linear-gradient(to top right, var(--tw-gradient-stops))","gradient-to-r":"linear-gradient(to right, var(--tw-gradient-stops))","gradient-to-br":"linear-gradient(to bottom right, var(--tw-gradient-stops))","gradient-to-b":"linear-gradient(to bottom, var(--tw-gradient-stops))","gradient-to-bl":"linear-gradient(to bottom left, var(--tw-gradient-stops))","gradient-to-l":"linear-gradient(to left, var(--tw-gradient-stops))","gradient-to-tl":"linear-gradient(to top left, var(--tw-gradient-stops))"},backgroundOpacity:({theme:i})=>i("opacity"),backgroundPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},backgroundSize:{auto:"auto",cover:"cover",contain:"contain"},blur:{0:"0",none:"",sm:"4px",DEFAULT:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},borderColor:({theme:i})=>({...i("colors"),DEFAULT:i("colors.gray.200","currentColor")}),borderOpacity:({theme:i})=>i("opacity"),borderRadius:{none:"0px",sm:"0.125rem",DEFAULT:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},borderSpacing:({theme:i})=>({...i("spacing")}),borderWidth:{DEFAULT:"1px",0:"0px",2:"2px",4:"4px",8:"8px"},boxShadow:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",DEFAULT:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",none:"none"},boxShadowColor:({theme:i})=>i("colors"),brightness:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",200:"2"},caretColor:({theme:i})=>i("colors"),colors:({colors:i})=>({inherit:i.inherit,current:i.current,transparent:i.transparent,black:i.black,white:i.white,slate:i.slate,gray:i.gray,zinc:i.zinc,neutral:i.neutral,stone:i.stone,red:i.red,orange:i.orange,amber:i.amber,yellow:i.yellow,lime:i.lime,green:i.green,emerald:i.emerald,teal:i.teal,cyan:i.cyan,sky:i.sky,blue:i.blue,indigo:i.indigo,violet:i.violet,purple:i.purple,fuchsia:i.fuchsia,pink:i.pink,rose:i.rose}),columns:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12","3xs":"16rem","2xs":"18rem",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem"},container:{},content:{none:"none"},contrast:{0:"0",50:".5",75:".75",100:"1",125:"1.25",150:"1.5",200:"2"},cursor:{auto:"auto",default:"default",pointer:"pointer",wait:"wait",text:"text",move:"move",help:"help","not-allowed":"not-allowed",none:"none","context-menu":"context-menu",progress:"progress",cell:"cell",crosshair:"crosshair","vertical-text":"vertical-text",alias:"alias",copy:"copy","no-drop":"no-drop",grab:"grab",grabbing:"grabbing","all-scroll":"all-scroll","col-resize":"col-resize","row-resize":"row-resize","n-resize":"n-resize","e-resize":"e-resize","s-resize":"s-resize","w-resize":"w-resize","ne-resize":"ne-resize","nw-resize":"nw-resize","se-resize":"se-resize","sw-resize":"sw-resize","ew-resize":"ew-resize","ns-resize":"ns-resize","nesw-resize":"nesw-resize","nwse-resize":"nwse-resize","zoom-in":"zoom-in","zoom-out":"zoom-out"},divideColor:({theme:i})=>i("borderColor"),divideOpacity:({theme:i})=>i("borderOpacity"),divideWidth:({theme:i})=>i("borderWidth"),dropShadow:{sm:"0 1px 1px rgb(0 0 0 / 0.05)",DEFAULT:["0 1px 2px rgb(0 0 0 / 0.1)","0 1px 1px rgb(0 0 0 / 0.06)"],md:["0 4px 3px rgb(0 0 0 / 0.07)","0 2px 2px rgb(0 0 0 / 0.06)"],lg:["0 10px 8px rgb(0 0 0 / 0.04)","0 4px 3px rgb(0 0 0 / 0.1)"],xl:["0 20px 13px rgb(0 0 0 / 0.03)","0 8px 5px rgb(0 0 0 / 0.08)"],"2xl":"0 25px 25px rgb(0 0 0 / 0.15)",none:"0 0 #0000"},fill:({theme:i})=>({none:"none",...i("colors")}),flex:{1:"1 1 0%",auto:"1 1 auto",initial:"0 1 auto",none:"none"},flexBasis:({theme:i})=>({auto:"auto",...i("spacing"),"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%"}),flexGrow:{0:"0",DEFAULT:"1"},flexShrink:{0:"0",DEFAULT:"1"},fontFamily:{sans:["ui-sans-serif","system-ui","sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'],serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:["ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"]},fontSize:{xs:["0.75rem",{lineHeight:"1rem"}],sm:["0.875rem",{lineHeight:"1.25rem"}],base:["1rem",{lineHeight:"1.5rem"}],lg:["1.125rem",{lineHeight:"1.75rem"}],xl:["1.25rem",{lineHeight:"1.75rem"}],"2xl":["1.5rem",{lineHeight:"2rem"}],"3xl":["1.875rem",{lineHeight:"2.25rem"}],"4xl":["2.25rem",{lineHeight:"2.5rem"}],"5xl":["3rem",{lineHeight:"1"}],"6xl":["3.75rem",{lineHeight:"1"}],"7xl":["4.5rem",{lineHeight:"1"}],"8xl":["6rem",{lineHeight:"1"}],"9xl":["8rem",{lineHeight:"1"}]},fontWeight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},gap:({theme:i})=>i("spacing"),gradientColorStops:({theme:i})=>i("colors"),gradientColorStopPositions:{"0%":"0%","5%":"5%","10%":"10%","15%":"15%","20%":"20%","25%":"25%","30%":"30%","35%":"35%","40%":"40%","45%":"45%","50%":"50%","55%":"55%","60%":"60%","65%":"65%","70%":"70%","75%":"75%","80%":"80%","85%":"85%","90%":"90%","95%":"95%","100%":"100%"},grayscale:{0:"0",DEFAULT:"100%"},gridAutoColumns:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridAutoRows:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridColumn:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridColumnEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13"},gridColumnStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13"},gridRow:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridRowEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13"},gridRowStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13"},gridTemplateColumns:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))"},gridTemplateRows:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))"},height:({theme:i})=>({auto:"auto",...i("spacing"),"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content"}),hueRotate:{0:"0deg",15:"15deg",30:"30deg",60:"60deg",90:"90deg",180:"180deg"},inset:({theme:i})=>({auto:"auto",...i("spacing"),"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%"}),invert:{0:"0",DEFAULT:"100%"},keyframes:{spin:{to:{transform:"rotate(360deg)"}},ping:{"75%, 100%":{transform:"scale(2)",opacity:"0"}},pulse:{"50%":{opacity:".5"}},bounce:{"0%, 100%":{transform:"translateY(-25%)",animationTimingFunction:"cubic-bezier(0.8,0,1,1)"},"50%":{transform:"none",animationTimingFunction:"cubic-bezier(0,0,0.2,1)"}}},letterSpacing:{tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},lineHeight:{none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2",3:".75rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem"},listStyleType:{none:"none",disc:"disc",decimal:"decimal"},listStyleImage:{none:"none"},margin:({theme:i})=>({auto:"auto",...i("spacing")}),lineClamp:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6"},maxHeight:({theme:i})=>({...i("spacing"),none:"none",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content"}),maxWidth:({theme:i,breakpoints:e})=>({...i("spacing"),none:"none",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",prose:"65ch",...e(i("screens"))}),minHeight:({theme:i})=>({...i("spacing"),full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content"}),minWidth:({theme:i})=>({...i("spacing"),full:"100%",min:"min-content",max:"max-content",fit:"fit-content"}),objectPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},opacity:{0:"0",5:"0.05",10:"0.1",15:"0.15",20:"0.2",25:"0.25",30:"0.3",35:"0.35",40:"0.4",45:"0.45",50:"0.5",55:"0.55",60:"0.6",65:"0.65",70:"0.7",75:"0.75",80:"0.8",85:"0.85",90:"0.9",95:"0.95",100:"1"},order:{first:"-9999",last:"9999",none:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12"},outlineColor:({theme:i})=>i("colors"),outlineOffset:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px"},outlineWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px"},padding:({theme:i})=>i("spacing"),placeholderColor:({theme:i})=>i("colors"),placeholderOpacity:({theme:i})=>i("opacity"),ringColor:({theme:i})=>({DEFAULT:i("colors.blue.500","#3b82f6"),...i("colors")}),ringOffsetColor:({theme:i})=>i("colors"),ringOffsetWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px"},ringOpacity:({theme:i})=>({DEFAULT:"0.5",...i("opacity")}),ringWidth:{DEFAULT:"3px",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px"},rotate:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",45:"45deg",90:"90deg",180:"180deg"},saturate:{0:"0",50:".5",100:"1",150:"1.5",200:"2"},scale:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5"},screens:{sm:"640px",md:"768px",lg:"1024px",xl:"1280px","2xl":"1536px"},scrollMargin:({theme:i})=>({...i("spacing")}),scrollPadding:({theme:i})=>i("spacing"),sepia:{0:"0",DEFAULT:"100%"},skew:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg"},space:({theme:i})=>({...i("spacing")}),spacing:{px:"1px",0:"0px",.5:"0.125rem",1:"0.25rem",1.5:"0.375rem",2:"0.5rem",2.5:"0.625rem",3:"0.75rem",3.5:"0.875rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem",11:"2.75rem",12:"3rem",14:"3.5rem",16:"4rem",20:"5rem",24:"6rem",28:"7rem",32:"8rem",36:"9rem",40:"10rem",44:"11rem",48:"12rem",52:"13rem",56:"14rem",60:"15rem",64:"16rem",72:"18rem",80:"20rem",96:"24rem"},stroke:({theme:i})=>({none:"none",...i("colors")}),strokeWidth:{0:"0",1:"1",2:"2"},supports:{},data:{},textColor:({theme:i})=>i("colors"),textDecorationColor:({theme:i})=>i("colors"),textDecorationThickness:{auto:"auto","from-font":"from-font",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px"},textIndent:({theme:i})=>({...i("spacing")}),textOpacity:({theme:i})=>i("opacity"),textUnderlineOffset:{auto:"auto",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px"},transformOrigin:{center:"center",top:"top","top-right":"top right",right:"right","bottom-right":"bottom right",bottom:"bottom","bottom-left":"bottom left",left:"left","top-left":"top left"},transitionDelay:{0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms"},transitionDuration:{DEFAULT:"150ms",0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms"},transitionProperty:{none:"none",all:"all",DEFAULT:"color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",colors:"color, background-color, border-color, text-decoration-color, fill, stroke",opacity:"opacity",shadow:"box-shadow",transform:"transform"},transitionTimingFunction:{DEFAULT:"cubic-bezier(0.4, 0, 0.2, 1)",linear:"linear",in:"cubic-bezier(0.4, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.2, 1)","in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},translate:({theme:i})=>({...i("spacing"),"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%"}),size:({theme:i})=>({auto:"auto",...i("spacing"),"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",min:"min-content",max:"max-content",fit:"fit-content"}),width:({theme:i})=>({auto:"auto",...i("spacing"),"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",screen:"100vw",svw:"100svw",lvw:"100lvw",dvw:"100dvw",min:"min-content",max:"max-content",fit:"fit-content"}),willChange:{auto:"auto",scroll:"scroll-position",contents:"contents",transform:"transform"},zIndex:{auto:"auto",0:"0",10:"10",20:"20",30:"30",40:"40",50:"50"}},plugins:[]}});function vi(i){let e=(i?.presets??[Ju.default]).slice().reverse().flatMap(n=>vi(n instanceof Function?n():n)),t={respectDefaultRingColorOpacity:{theme:{ringColor:({theme:n})=>({DEFAULT:"#3b82f67f",...n("colors")})}},disableColorOpacityUtilitiesByDefault:{corePlugins:{backgroundOpacity:!1,borderOpacity:!1,divideOpacity:!1,placeholderOpacity:!1,ringOpacity:!1,textOpacity:!1}}},r=Object.keys(t).filter(n=>Z(i,n)).map(n=>t[n]);return[i,...r,...e]}var Ju,Xu=C(()=>{l();Ju=X(bi());ze()});var Ku={};_e(Ku,{default:()=>hr});function hr(...i){let[,...e]=vi(i[0]);return ds([...i,...e])}var hs=C(()=>{l();Yu();Xu()});var Zu={};_e(Zu,{default:()=>ee});var ee,wt=C(()=>{l();ee={resolve:i=>i,extname:i=>"."+i.split(".").pop()}});function xi(i){return typeof i=="object"&&i!==null}function r0(i){return Object.keys(i).length===0}function ef(i){return typeof i=="string"||i instanceof String}function ms(i){return xi(i)&&i.config===void 0&&!r0(i)?null:xi(i)&&i.config!==void 0&&ef(i.config)?ee.resolve(i.config):xi(i)&&i.config!==void 0&&xi(i.config)?null:ef(i)?ee.resolve(i):i0()}function i0(){for(let i of t0)try{let e=ee.resolve(i);return re.accessSync(e),e}catch(e){}return null}var t0,tf=C(()=>{l();je();wt();t0=["./tailwind.config.js","./tailwind.config.cjs","./tailwind.config.mjs","./tailwind.config.ts","./tailwind.config.cts","./tailwind.config.mts"]});var rf={};_e(rf,{default:()=>gs});var gs,ys=C(()=>{l();gs={parse:i=>({href:i})}});var ws=v(()=>{l()});var ki=v((VE,af)=>{l();"use strict";var nf=(ci(),yu),sf=ws(),Ot=class extends Error{constructor(e,t,r,n,a,s){super(e);this.name="CssSyntaxError",this.reason=e,a&&(this.file=a),n&&(this.source=n),s&&(this.plugin=s),typeof t!="undefined"&&typeof r!="undefined"&&(typeof t=="number"?(this.line=t,this.column=r):(this.line=t.line,this.column=t.column,this.endLine=r.line,this.endColumn=r.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,Ot)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",typeof this.line!="undefined"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;e==null&&(e=nf.isColorSupported),sf&&e&&(t=sf(t));let r=t.split(/\r?\n/),n=Math.max(this.line-3,0),a=Math.min(this.line+2,r.length),s=String(a).length,o,u;if(e){let{bold:c,red:f,gray:d}=nf.createColors(!0);o=p=>c(f(p)),u=p=>d(p)}else o=u=c=>c;return r.slice(n,a).map((c,f)=>{let d=n+1+f,p=" "+(" "+d).slice(-s)+" | ";if(d===this.line){let m=u(p.replace(/\d/g," "))+c.slice(0,this.column-1).replace(/[^\t]/g," ");return o(">")+u(p)+c+` `+m+o("^")}return" "+u(p)+c}).join(` `)}toString(){let e=this.showSourceCode();return e&&(e=` `+e+` `),this.name+": "+this.message+e}};af.exports=Ot;Ot.default=Ot});var Si=v((UE,bs)=>{l();"use strict";bs.exports.isClean=Symbol("isClean");bs.exports.my=Symbol("my")});var vs=v((WE,lf)=>{l();"use strict";var of={colon:": ",indent:" ",beforeDecl:` `,beforeRule:` `,beforeOpen:" ",beforeClose:` `,beforeComment:` `,after:` `,emptyBody:"",commentLeft:" ",commentRight:" ",semicolon:!1};function n0(i){return i[0].toUpperCase()+i.slice(1)}var Ci=class{constructor(e){this.builder=e}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}document(e){this.body(e)}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}comment(e){let t=this.raw(e,"left","commentLeft"),r=this.raw(e,"right","commentRight");this.builder("/*"+t+e.text+r+"*/",e)}decl(e,t){let r=this.raw(e,"between","colon"),n=e.prop+r+this.rawValue(e,"value");e.important&&(n+=e.raws.important||" !important"),t&&(n+=";"),this.builder(n,e)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}atrule(e,t){let r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(typeof e.raws.afterName!="undefined"?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{let a=(e.raws.between||"")+(t?";":"");this.builder(r+n+a,e)}}body(e){let t=e.nodes.length-1;for(;t>0&&e.nodes[t].type==="comment";)t-=1;let r=this.raw(e,"semicolon");for(let n=0;n{if(n=u.raws[t],typeof n!="undefined")return!1})}return typeof n=="undefined"&&(n=of[r]),s.rawCache[r]=n,n}rawSemicolon(e){let t;return e.walk(r=>{if(r.nodes&&r.nodes.length&&r.last.type==="decl"&&(t=r.raws.semicolon,typeof t!="undefined"))return!1}),t}rawEmptyBody(e){let t;return e.walk(r=>{if(r.nodes&&r.nodes.length===0&&(t=r.raws.after,typeof t!="undefined"))return!1}),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk(r=>{let n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&typeof r.raws.before!="undefined"){let a=r.raws.before.split(` `);return t=a[a.length-1],t=t.replace(/\S/g,""),!1}}),t}rawBeforeComment(e,t){let r;return e.walkComments(n=>{if(typeof n.raws.before!="undefined")return r=n.raws.before,r.includes(` `)&&(r=r.replace(/[^\n]+$/,"")),!1}),typeof r=="undefined"?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r}rawBeforeDecl(e,t){let r;return e.walkDecls(n=>{if(typeof n.raws.before!="undefined")return r=n.raws.before,r.includes(` `)&&(r=r.replace(/[^\n]+$/,"")),!1}),typeof r=="undefined"?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r}rawBeforeRule(e){let t;return e.walk(r=>{if(r.nodes&&(r.parent!==e||e.first!==r)&&typeof r.raws.before!="undefined")return t=r.raws.before,t.includes(` `)&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t}rawBeforeClose(e){let t;return e.walk(r=>{if(r.nodes&&r.nodes.length>0&&typeof r.raws.after!="undefined")return t=r.raws.after,t.includes(` `)&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t}rawBeforeOpen(e){let t;return e.walk(r=>{if(r.type!=="decl"&&(t=r.raws.between,typeof t!="undefined"))return!1}),t}rawColon(e){let t;return e.walkDecls(r=>{if(typeof r.raws.between!="undefined")return t=r.raws.between.replace(/[^\s:]/g,""),!1}),t}beforeAfter(e,t){let r;e.type==="decl"?r=this.raw(e,null,"beforeDecl"):e.type==="comment"?r=this.raw(e,null,"beforeComment"):t==="before"?r=this.raw(e,null,"beforeRule"):r=this.raw(e,null,"beforeClose");let n=e.parent,a=0;for(;n&&n.type!=="root";)a+=1,n=n.parent;if(r.includes(` `)){let s=this.raw(e,null,"indent");if(s.length)for(let o=0;o{l();"use strict";var s0=vs();function xs(i,e){new s0(e).stringify(i)}uf.exports=xs;xs.default=xs});var gr=v((HE,ff)=>{l();"use strict";var{isClean:Ai,my:a0}=Si(),o0=ki(),l0=vs(),u0=mr();function ks(i,e){let t=new i.constructor;for(let r in i){if(!Object.prototype.hasOwnProperty.call(i,r)||r==="proxyCache")continue;let n=i[r],a=typeof n;r==="parent"&&a==="object"?e&&(t[r]=e):r==="source"?t[r]=n:Array.isArray(n)?t[r]=n.map(s=>ks(s,t)):(a==="object"&&n!==null&&(n=ks(n)),t[r]=n)}return t}var _i=class{constructor(e={}){this.raws={},this[Ai]=!1,this[a0]=!0;for(let t in e)if(t==="nodes"){this.nodes=[];for(let r of e[t])typeof r.clone=="function"?this.append(r.clone()):this.append(r)}else this[t]=e[t]}error(e,t={}){if(this.source){let{start:r,end:n}=this.rangeBy(t);return this.source.input.error(e,{line:r.line,column:r.column},{line:n.line,column:n.column},t)}return new o0(e)}warn(e,t,r){let n={node:this};for(let a in r)n[a]=r[a];return e.warn(t,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}toString(e=u0){e.stringify&&(e=e.stringify);let t="";return e(this,r=>{t+=r}),t}assign(e={}){for(let t in e)this[t]=e[t];return this}clone(e={}){let t=ks(this);for(let r in e)t[r]=e[r];return t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}replaceWith(...e){if(this.parent){let t=this,r=!1;for(let n of e)n===this?r=!0:r?(this.parent.insertAfter(t,n),t=n):this.parent.insertBefore(t,n);r||this.remove()}return this}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}before(e){return this.parent.insertBefore(this,e),this}after(e){return this.parent.insertAfter(this,e),this}root(){let e=this;for(;e.parent&&e.parent.type!=="document";)e=e.parent;return e}raw(e,t){return new l0().raw(this,e,t)}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}toJSON(e,t){let r={},n=t==null;t=t||new Map;let a=0;for(let s in this){if(!Object.prototype.hasOwnProperty.call(this,s)||s==="parent"||s==="proxyCache")continue;let o=this[s];if(Array.isArray(o))r[s]=o.map(u=>typeof u=="object"&&u.toJSON?u.toJSON(null,t):u);else if(typeof o=="object"&&o.toJSON)r[s]=o.toJSON(null,t);else if(s==="source"){let u=t.get(o.input);u==null&&(u=a,t.set(o.input,a),a++),r[s]={inputId:u,start:o.start,end:o.end}}else r[s]=o}return n&&(r.inputs=[...t.keys()].map(s=>s.toJSON())),r}positionInside(e){let t=this.toString(),r=this.source.start.column,n=this.source.start.line;for(let a=0;ae.root().toProxy():e[t]}}}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}markDirty(){if(this[Ai]){this[Ai]=!1;let e=this;for(;e=e.parent;)e[Ai]=!1}}get proxyOf(){return this}};ff.exports=_i;_i.default=_i});var yr=v((YE,cf)=>{l();"use strict";var f0=gr(),Oi=class extends f0{constructor(e){e&&typeof e.value!="undefined"&&typeof e.value!="string"&&(e={...e,value:String(e.value)});super(e);this.type="decl"}get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}};cf.exports=Oi;Oi.default=Oi});var Ss=v((QE,pf)=>{l();pf.exports=function(i,e){return{generate:()=>{let t="";return i(e,r=>{t+=r}),[t]}}}});var wr=v((JE,df)=>{l();"use strict";var c0=gr(),Ei=class extends c0{constructor(e){super(e);this.type="comment"}};df.exports=Ei;Ei.default=Ei});var it=v((XE,kf)=>{l();"use strict";var{isClean:hf,my:mf}=Si(),gf=yr(),yf=wr(),p0=gr(),wf,Cs,As,bf;function vf(i){return i.map(e=>(e.nodes&&(e.nodes=vf(e.nodes)),delete e.source,e))}function xf(i){if(i[hf]=!1,i.proxyOf.nodes)for(let e of i.proxyOf.nodes)xf(e)}var be=class extends p0{push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}each(e){if(!this.proxyOf.nodes)return;let t=this.getIterator(),r,n;for(;this.indexes[t]{let n;try{n=e(t,r)}catch(a){throw t.addToError(a)}return n!==!1&&t.walk&&(n=t.walk(e)),n})}walkDecls(e,t){return t?e instanceof RegExp?this.walk((r,n)=>{if(r.type==="decl"&&e.test(r.prop))return t(r,n)}):this.walk((r,n)=>{if(r.type==="decl"&&r.prop===e)return t(r,n)}):(t=e,this.walk((r,n)=>{if(r.type==="decl")return t(r,n)}))}walkRules(e,t){return t?e instanceof RegExp?this.walk((r,n)=>{if(r.type==="rule"&&e.test(r.selector))return t(r,n)}):this.walk((r,n)=>{if(r.type==="rule"&&r.selector===e)return t(r,n)}):(t=e,this.walk((r,n)=>{if(r.type==="rule")return t(r,n)}))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk((r,n)=>{if(r.type==="atrule"&&e.test(r.name))return t(r,n)}):this.walk((r,n)=>{if(r.type==="atrule"&&r.name===e)return t(r,n)}):(t=e,this.walk((r,n)=>{if(r.type==="atrule")return t(r,n)}))}walkComments(e){return this.walk((t,r)=>{if(t.type==="comment")return e(t,r)})}append(...e){for(let t of e){let r=this.normalize(t,this.last);for(let n of r)this.proxyOf.nodes.push(n)}return this.markDirty(),this}prepend(...e){e=e.reverse();for(let t of e){let r=this.normalize(t,this.first,"prepend").reverse();for(let n of r)this.proxyOf.nodes.unshift(n);for(let n in this.indexes)this.indexes[n]=this.indexes[n]+r.length}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}insertBefore(e,t){let r=this.index(e),n=r===0?"prepend":!1,a=this.normalize(t,this.proxyOf.nodes[r],n).reverse();r=this.index(e);for(let o of a)this.proxyOf.nodes.splice(r,0,o);let s;for(let o in this.indexes)s=this.indexes[o],r<=s&&(this.indexes[o]=s+a.length);return this.markDirty(),this}insertAfter(e,t){let r=this.index(e),n=this.normalize(t,this.proxyOf.nodes[r]).reverse();r=this.index(e);for(let s of n)this.proxyOf.nodes.splice(r+1,0,s);let a;for(let s in this.indexes)a=this.indexes[s],r=e&&(this.indexes[r]=t-1);return this.markDirty(),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}replaceValues(e,t,r){return r||(r=t,t={}),this.walkDecls(n=>{t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this}every(e){return this.nodes.every(e)}some(e){return this.nodes.some(e)}index(e){return typeof e=="number"?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}get first(){if(!!this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(!!this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}normalize(e,t){if(typeof e=="string")e=vf(wf(e).nodes);else if(Array.isArray(e)){e=e.slice(0);for(let n of e)n.parent&&n.parent.removeChild(n,"ignore")}else if(e.type==="root"&&this.type!=="document"){e=e.nodes.slice(0);for(let n of e)n.parent&&n.parent.removeChild(n,"ignore")}else if(e.type)e=[e];else if(e.prop){if(typeof e.value=="undefined")throw new Error("Value field is missed in node creation");typeof e.value!="string"&&(e.value=String(e.value)),e=[new gf(e)]}else if(e.selector)e=[new Cs(e)];else if(e.name)e=[new As(e)];else if(e.text)e=[new yf(e)];else throw new Error("Unknown node type in node creation");return e.map(n=>(n[mf]||be.rebuild(n),n=n.proxyOf,n.parent&&n.parent.removeChild(n),n[hf]&&xf(n),typeof n.raws.before=="undefined"&&t&&typeof t.raws.before!="undefined"&&(n.raws.before=t.raws.before.replace(/\S/g,"")),n.parent=this.proxyOf,n))}getProxyProcessor(){return{set(e,t,r){return e[t]===r||(e[t]=r,(t==="name"||t==="params"||t==="selector")&&e.markDirty()),!0},get(e,t){return t==="proxyOf"?e:e[t]?t==="each"||typeof t=="string"&&t.startsWith("walk")?(...r)=>e[t](...r.map(n=>typeof n=="function"?(a,s)=>n(a.toProxy(),s):n)):t==="every"||t==="some"?r=>e[t]((n,...a)=>r(n.toProxy(),...a)):t==="root"?()=>e.root().toProxy():t==="nodes"?e.nodes.map(r=>r.toProxy()):t==="first"||t==="last"?e[t].toProxy():e[t]:e[t]}}}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}};be.registerParse=i=>{wf=i};be.registerRule=i=>{Cs=i};be.registerAtRule=i=>{As=i};be.registerRoot=i=>{bf=i};kf.exports=be;be.default=be;be.rebuild=i=>{i.type==="atrule"?Object.setPrototypeOf(i,As.prototype):i.type==="rule"?Object.setPrototypeOf(i,Cs.prototype):i.type==="decl"?Object.setPrototypeOf(i,gf.prototype):i.type==="comment"?Object.setPrototypeOf(i,yf.prototype):i.type==="root"&&Object.setPrototypeOf(i,bf.prototype),i[mf]=!0,i.nodes&&i.nodes.forEach(e=>{be.rebuild(e)})}});var Ti=v((KE,Af)=>{l();"use strict";var d0=it(),Sf,Cf,Et=class extends d0{constructor(e){super({type:"document",...e});this.nodes||(this.nodes=[])}toResult(e={}){return new Sf(new Cf,this,e).stringify()}};Et.registerLazyResult=i=>{Sf=i};Et.registerProcessor=i=>{Cf=i};Af.exports=Et;Et.default=Et});var _s=v((ZE,Of)=>{l();"use strict";var _f={};Of.exports=function(e){_f[e]||(_f[e]=!0,typeof console!="undefined"&&console.warn&&console.warn(e))}});var Os=v((eT,Ef)=>{l();"use strict";var Pi=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(let r in t)this[r]=t[r]}toString(){return this.node?this.node.error(this.text,{plugin:this.plugin,index:this.index,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};Ef.exports=Pi;Pi.default=Pi});var Ii=v((tT,Tf)=>{l();"use strict";var h0=Os(),Di=class{constructor(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let r=new h0(e,t);return this.messages.push(r),r}warnings(){return this.messages.filter(e=>e.type==="warning")}get content(){return this.css}};Tf.exports=Di;Di.default=Di});var Rf=v((rT,qf)=>{l();"use strict";var Es="'".charCodeAt(0),Pf='"'.charCodeAt(0),qi="\\".charCodeAt(0),Df="/".charCodeAt(0),Ri=` `.charCodeAt(0),br=" ".charCodeAt(0),Mi="\f".charCodeAt(0),Bi=" ".charCodeAt(0),Fi="\r".charCodeAt(0),m0="[".charCodeAt(0),g0="]".charCodeAt(0),y0="(".charCodeAt(0),w0=")".charCodeAt(0),b0="{".charCodeAt(0),v0="}".charCodeAt(0),x0=";".charCodeAt(0),k0="*".charCodeAt(0),S0=":".charCodeAt(0),C0="@".charCodeAt(0),Ni=/[\t\n\f\r "#'()/;[\\\]{}]/g,Li=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,A0=/.[\n"'(/\\]/,If=/[\da-f]/i;qf.exports=function(e,t={}){let r=e.css.valueOf(),n=t.ignoreErrors,a,s,o,u,c,f,d,p,m,b,x=r.length,y=0,w=[],k=[];function S(){return y}function _(R){throw e.error("Unclosed "+R,y)}function E(){return k.length===0&&y>=x}function I(R){if(k.length)return k.pop();if(y>=x)return;let J=R?R.ignoreUnclosed:!1;switch(a=r.charCodeAt(y),a){case Ri:case br:case Bi:case Fi:case Mi:{s=y;do s+=1,a=r.charCodeAt(s);while(a===br||a===Ri||a===Bi||a===Fi||a===Mi);b=["space",r.slice(y,s)],y=s-1;break}case m0:case g0:case b0:case v0:case S0:case x0:case w0:{let fe=String.fromCharCode(a);b=[fe,fe,y];break}case y0:{if(p=w.length?w.pop()[1]:"",m=r.charCodeAt(y+1),p==="url"&&m!==Es&&m!==Pf&&m!==br&&m!==Ri&&m!==Bi&&m!==Mi&&m!==Fi){s=y;do{if(f=!1,s=r.indexOf(")",s+1),s===-1)if(n||J){s=y;break}else _("bracket");for(d=s;r.charCodeAt(d-1)===qi;)d-=1,f=!f}while(f);b=["brackets",r.slice(y,s+1),y,s],y=s}else s=r.indexOf(")",y+1),u=r.slice(y,s+1),s===-1||A0.test(u)?b=["(","(",y]:(b=["brackets",u,y,s],y=s);break}case Es:case Pf:{o=a===Es?"'":'"',s=y;do{if(f=!1,s=r.indexOf(o,s+1),s===-1)if(n||J){s=y+1;break}else _("string");for(d=s;r.charCodeAt(d-1)===qi;)d-=1,f=!f}while(f);b=["string",r.slice(y,s+1),y,s],y=s;break}case C0:{Ni.lastIndex=y+1,Ni.test(r),Ni.lastIndex===0?s=r.length-1:s=Ni.lastIndex-2,b=["at-word",r.slice(y,s+1),y,s],y=s;break}case qi:{for(s=y,c=!0;r.charCodeAt(s+1)===qi;)s+=1,c=!c;if(a=r.charCodeAt(s+1),c&&a!==Df&&a!==br&&a!==Ri&&a!==Bi&&a!==Fi&&a!==Mi&&(s+=1,If.test(r.charAt(s)))){for(;If.test(r.charAt(s+1));)s+=1;r.charCodeAt(s+1)===br&&(s+=1)}b=["word",r.slice(y,s+1),y,s],y=s;break}default:{a===Df&&r.charCodeAt(y+1)===k0?(s=r.indexOf("*/",y+2)+1,s===0&&(n||J?s=r.length:_("comment")),b=["comment",r.slice(y,s+1),y,s],y=s):(Li.lastIndex=y+1,Li.test(r),Li.lastIndex===0?s=r.length-1:s=Li.lastIndex-2,b=["word",r.slice(y,s+1),y,s],w.push(b),y=s);break}}return y++,b}function q(R){k.push(R)}return{back:q,nextToken:I,endOfFile:E,position:S}}});var $i=v((iT,Bf)=>{l();"use strict";var Mf=it(),vr=class extends Mf{constructor(e){super(e);this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};Bf.exports=vr;vr.default=vr;Mf.registerAtRule(vr)});var Tt=v((nT,$f)=>{l();"use strict";var Ff=it(),Nf,Lf,bt=class extends Ff{constructor(e){super(e);this.type="root",this.nodes||(this.nodes=[])}removeChild(e,t){let r=this.index(e);return!t&&r===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[r].raws.before),super.removeChild(e)}normalize(e,t,r){let n=super.normalize(e);if(t){if(r==="prepend")this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let a of n)a.raws.before=t.raws.before}return n}toResult(e={}){return new Nf(new Lf,this,e).stringify()}};bt.registerLazyResult=i=>{Nf=i};bt.registerProcessor=i=>{Lf=i};$f.exports=bt;bt.default=bt;Ff.registerRoot(bt)});var Ts=v((sT,jf)=>{l();"use strict";var xr={split(i,e,t){let r=[],n="",a=!1,s=0,o=!1,u="",c=!1;for(let f of i)c?c=!1:f==="\\"?c=!0:o?f===u&&(o=!1):f==='"'||f==="'"?(o=!0,u=f):f==="("?s+=1:f===")"?s>0&&(s-=1):s===0&&e.includes(f)&&(a=!0),a?(n!==""&&r.push(n.trim()),n="",a=!1):n+=f;return(t||n!=="")&&r.push(n.trim()),r},space(i){let e=[" ",` `," "];return xr.split(i,e)},comma(i){return xr.split(i,[","],!0)}};jf.exports=xr;xr.default=xr});var ji=v((aT,Vf)=>{l();"use strict";var zf=it(),_0=Ts(),kr=class extends zf{constructor(e){super(e);this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return _0.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}};Vf.exports=kr;kr.default=kr;zf.registerRule(kr)});var Yf=v((oT,Hf)=>{l();"use strict";var O0=yr(),E0=Rf(),T0=wr(),P0=$i(),D0=Tt(),Uf=ji(),Wf={empty:!0,space:!0};function I0(i){for(let e=i.length-1;e>=0;e--){let t=i[e],r=t[3]||t[2];if(r)return r}}var Gf=class{constructor(e){this.input=e,this.root=new D0,this.current=this.root,this.spaces="",this.semicolon=!1,this.customProperty=!1,this.createTokenizer(),this.root.source={input:e,start:{offset:0,line:1,column:1}}}createTokenizer(){this.tokenizer=E0(this.input)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e);break}this.endFile()}comment(e){let t=new T0;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]);let r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{let n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}}emptyRule(e){let t=new Uf;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}other(e){let t=!1,r=null,n=!1,a=null,s=[],o=e[1].startsWith("--"),u=[],c=e;for(;c;){if(r=c[0],u.push(c),r==="("||r==="[")a||(a=c),s.push(r==="("?")":"]");else if(o&&n&&r==="{")a||(a=c),s.push("}");else if(s.length===0)if(r===";")if(n){this.decl(u,o);return}else break;else if(r==="{"){this.rule(u);return}else if(r==="}"){this.tokenizer.back(u.pop()),t=!0;break}else r===":"&&(n=!0);else r===s[s.length-1]&&(s.pop(),s.length===0&&(a=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),s.length>0&&this.unclosedBracket(a),t&&n){if(!o)for(;u.length&&(c=u[u.length-1][0],!(c!=="space"&&c!=="comment"));)this.tokenizer.back(u.pop());this.decl(u,o)}else this.unknownWord(u)}rule(e){e.pop();let t=new Uf;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}decl(e,t){let r=new O0;this.init(r,e[0][2]);let n=e[e.length-1];for(n[0]===";"&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(n[3]||n[2]||I0(e));e[0][0]!=="word";)e.length===1&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){let c=e[0][0];if(c===":"||c==="space"||c==="comment")break;r.prop+=e.shift()[1]}r.raws.between="";let a;for(;e.length;)if(a=e.shift(),a[0]===":"){r.raws.between+=a[1];break}else a[0]==="word"&&/\w/.test(a[1])&&this.unknownWord([a]),r.raws.between+=a[1];(r.prop[0]==="_"||r.prop[0]==="*")&&(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));let s=[],o;for(;e.length&&(o=e[0][0],!(o!=="space"&&o!=="comment"));)s.push(e.shift());this.precheckMissedSemicolon(e);for(let c=e.length-1;c>=0;c--){if(a=e[c],a[1].toLowerCase()==="!important"){r.important=!0;let f=this.stringFrom(e,c);f=this.spacesFromEnd(e)+f,f!==" !important"&&(r.raws.important=f);break}else if(a[1].toLowerCase()==="important"){let f=e.slice(0),d="";for(let p=c;p>0;p--){let m=f[p][0];if(d.trim().indexOf("!")===0&&m!=="space")break;d=f.pop()[1]+d}d.trim().indexOf("!")===0&&(r.important=!0,r.raws.important=d,e=f)}if(a[0]!=="space"&&a[0]!=="comment")break}e.some(c=>c[0]!=="space"&&c[0]!=="comment")&&(r.raws.between+=s.map(c=>c[1]).join(""),s=[]),this.raw(r,"value",s.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}atrule(e){let t=new P0;t.name=e[1].slice(1),t.name===""&&this.unnamedAtrule(t,e),this.init(t,e[2]);let r,n,a,s=!1,o=!1,u=[],c=[];for(;!this.tokenizer.endOfFile();){if(e=this.tokenizer.nextToken(),r=e[0],r==="("||r==="["?c.push(r==="("?")":"]"):r==="{"&&c.length>0?c.push("}"):r===c[c.length-1]&&c.pop(),c.length===0)if(r===";"){t.source.end=this.getPosition(e[2]),this.semicolon=!0;break}else if(r==="{"){o=!0;break}else if(r==="}"){if(u.length>0){for(a=u.length-1,n=u[a];n&&n[0]==="space";)n=u[--a];n&&(t.source.end=this.getPosition(n[3]||n[2]))}this.end(e);break}else u.push(e);else u.push(e);if(this.tokenizer.endOfFile()){s=!0;break}}t.raws.between=this.spacesAndCommentsFromEnd(u),u.length?(t.raws.afterName=this.spacesAndCommentsFromStart(u),this.raw(t,"params",u),s&&(e=u[u.length-1],t.source.end=this.getPosition(e[3]||e[2]),this.spaces=t.raws.between,t.raws.between="")):(t.raws.afterName="",t.params=""),o&&(t.nodes=[],this.current=t)}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let t=this.current.nodes[this.current.nodes.length-1];t&&t.type==="rule"&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{offset:e,line:t.line,column:t.col}}init(e,t){this.current.push(e),e.source={start:this.getPosition(t),input:this.input},e.raws.before=this.spaces,this.spaces="",e.type!=="comment"&&(this.semicolon=!1)}raw(e,t,r,n){let a,s,o=r.length,u="",c=!0,f,d;for(let p=0;pm+b[1],"");e.raws[t]={value:u,raw:p}}e[t]=u}spacesAndCommentsFromEnd(e){let t,r="";for(;e.length&&(t=e[e.length-1][0],!(t!=="space"&&t!=="comment"));)r=e.pop()[1]+r;return r}spacesAndCommentsFromStart(e){let t,r="";for(;e.length&&(t=e[0][0],!(t!=="space"&&t!=="comment"));)r+=e.shift()[1];return r}spacesFromEnd(e){let t,r="";for(;e.length&&(t=e[e.length-1][0],t==="space");)r=e.pop()[1]+r;return r}stringFrom(e,t){let r="";for(let n=t;n=0&&(n=e[a],!(n[0]!=="space"&&(r+=1,r===2)));a--);throw this.input.error("Missed semicolon",n[0]==="word"?n[3]+1:n[2])}};Hf.exports=Gf});var Qf=v(()=>{l()});var Xf=v((fT,Jf)=>{l();var q0="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",R0=(i,e=21)=>(t=e)=>{let r="",n=t;for(;n--;)r+=i[Math.random()*i.length|0];return r},M0=(i=21)=>{let e="",t=i;for(;t--;)e+=q0[Math.random()*64|0];return e};Jf.exports={nanoid:M0,customAlphabet:R0}});var Ps=v((cT,Kf)=>{l();Kf.exports={}});var Vi=v((pT,rc)=>{l();"use strict";var{SourceMapConsumer:B0,SourceMapGenerator:F0}=Qf(),{fileURLToPath:Zf,pathToFileURL:zi}=(ys(),rf),{resolve:Ds,isAbsolute:Is}=(wt(),Zu),{nanoid:N0}=Xf(),qs=ws(),ec=ki(),L0=Ps(),Rs=Symbol("fromOffsetCache"),$0=Boolean(B0&&F0),tc=Boolean(Ds&&Is),Sr=class{constructor(e,t={}){if(e===null||typeof e=="undefined"||typeof e=="object"&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),this.css[0]==="\uFEFF"||this.css[0]==="\uFFFE"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!tc||/^\w+:\/\//.test(t.from)||Is(t.from)?this.file=t.from:this.file=Ds(t.from)),tc&&$0){let r=new L0(this.css,t);if(r.text){this.map=r;let n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}fromOffset(e){let t,r;if(this[Rs])r=this[Rs];else{let a=this.css.split(` `);r=new Array(a.length);let s=0;for(let o=0,u=a.length;o=t)n=r.length-1;else{let a=r.length-2,s;for(;n>1),e=r[s+1])n=s+1;else{n=s;break}}return{line:n+1,col:e-r[n]+1}}error(e,t,r,n={}){let a,s,o;if(t&&typeof t=="object"){let c=t,f=r;if(typeof c.offset=="number"){let d=this.fromOffset(c.offset);t=d.line,r=d.col}else t=c.line,r=c.column;if(typeof f.offset=="number"){let d=this.fromOffset(f.offset);s=d.line,o=d.col}else s=f.line,o=f.column}else if(!r){let c=this.fromOffset(t);t=c.line,r=c.col}let u=this.origin(t,r,s,o);return u?a=new ec(e,u.endLine===void 0?u.line:{line:u.line,column:u.column},u.endLine===void 0?u.column:{line:u.endLine,column:u.endColumn},u.source,u.file,n.plugin):a=new ec(e,s===void 0?t:{line:t,column:r},s===void 0?r:{line:s,column:o},this.css,this.file,n.plugin),a.input={line:t,column:r,endLine:s,endColumn:o,source:this.css},this.file&&(zi&&(a.input.url=zi(this.file).toString()),a.input.file=this.file),a}origin(e,t,r,n){if(!this.map)return!1;let a=this.map.consumer(),s=a.originalPositionFor({line:e,column:t});if(!s.source)return!1;let o;typeof r=="number"&&(o=a.originalPositionFor({line:r,column:n}));let u;Is(s.source)?u=zi(s.source):u=new URL(s.source,this.map.consumer().sourceRoot||zi(this.map.mapFile));let c={url:u.toString(),line:s.line,column:s.column,endLine:o&&o.line,endColumn:o&&o.column};if(u.protocol==="file:")if(Zf)c.file=Zf(u);else throw new Error("file: protocol is not available in this PostCSS build");let f=a.sourceContentFor(s.source);return f&&(c.source=f),c}mapResolve(e){return/^\w+:\/\//.test(e)?e:Ds(this.map.consumer().sourceRoot||this.map.root||".",e)}get from(){return this.file||this.id}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])this[t]!=null&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}};rc.exports=Sr;Sr.default=Sr;qs&&qs.registerInput&&qs.registerInput(Sr)});var Wi=v((dT,ic)=>{l();"use strict";var j0=it(),z0=Yf(),V0=Vi();function Ui(i,e){let t=new V0(i,e),r=new z0(t);try{r.parse()}catch(n){throw n}return r.root}ic.exports=Ui;Ui.default=Ui;j0.registerParse(Ui)});var Fs=v((mT,oc)=>{l();"use strict";var{isClean:Re,my:U0}=Si(),W0=Ss(),G0=mr(),H0=it(),Y0=Ti(),hT=_s(),nc=Ii(),Q0=Wi(),J0=Tt(),X0={document:"Document",root:"Root",atrule:"AtRule",rule:"Rule",decl:"Declaration",comment:"Comment"},K0={postcssPlugin:!0,prepare:!0,Once:!0,Document:!0,Root:!0,Declaration:!0,Rule:!0,AtRule:!0,Comment:!0,DeclarationExit:!0,RuleExit:!0,AtRuleExit:!0,CommentExit:!0,RootExit:!0,DocumentExit:!0,OnceExit:!0},Z0={postcssPlugin:!0,prepare:!0,Once:!0},Pt=0;function Cr(i){return typeof i=="object"&&typeof i.then=="function"}function sc(i){let e=!1,t=X0[i.type];return i.type==="decl"?e=i.prop.toLowerCase():i.type==="atrule"&&(e=i.name.toLowerCase()),e&&i.append?[t,t+"-"+e,Pt,t+"Exit",t+"Exit-"+e]:e?[t,t+"-"+e,t+"Exit",t+"Exit-"+e]:i.append?[t,Pt,t+"Exit"]:[t,t+"Exit"]}function ac(i){let e;return i.type==="document"?e=["Document",Pt,"DocumentExit"]:i.type==="root"?e=["Root",Pt,"RootExit"]:e=sc(i),{node:i,events:e,eventIndex:0,visitors:[],visitorIndex:0,iterator:0}}function Ms(i){return i[Re]=!1,i.nodes&&i.nodes.forEach(e=>Ms(e)),i}var Bs={},Ve=class{constructor(e,t,r){this.stringified=!1,this.processed=!1;let n;if(typeof t=="object"&&t!==null&&(t.type==="root"||t.type==="document"))n=Ms(t);else if(t instanceof Ve||t instanceof nc)n=Ms(t.root),t.map&&(typeof r.map=="undefined"&&(r.map={}),r.map.inline||(r.map.inline=!1),r.map.prev=t.map);else{let a=Q0;r.syntax&&(a=r.syntax.parse),r.parser&&(a=r.parser),a.parse&&(a=a.parse);try{n=a(t,r)}catch(s){this.processed=!0,this.error=s}n&&!n[U0]&&H0.rebuild(n)}this.result=new nc(e,n,r),this.helpers={...Bs,result:this.result,postcss:Bs},this.plugins=this.processor.plugins.map(a=>typeof a=="object"&&a.prepare?{...a,...a.prepare(this.result)}:a)}get[Symbol.toStringTag](){return"LazyResult"}get processor(){return this.result.processor}get opts(){return this.result.opts}get css(){return this.stringify().css}get content(){return this.stringify().content}get map(){return this.stringify().map}get root(){return this.sync().root}get messages(){return this.sync().messages}warnings(){return this.sync().warnings()}toString(){return this.css}then(e,t){return this.async().then(e,t)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){let t=this.runOnRoot(e);if(Cr(t))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Re];)e[Re]=!0,this.walkSync(e);if(this.listeners.OnceExit)if(e.type==="document")for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=G0;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let n=new W0(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result}walkSync(e){e[Re]=!0;let t=sc(e);for(let r of t)if(r===Pt)e.nodes&&e.each(n=>{n[Re]||this.walkSync(n)});else{let n=this.listeners[r];if(n&&this.visitSync(n,e.toProxy()))return}}visitSync(e,t){for(let[r,n]of e){this.result.lastPlugin=r;let a;try{a=n(t,this.helpers)}catch(s){throw this.handleError(s,t.proxyOf)}if(t.type!=="root"&&t.type!=="document"&&!t.parent)return!0;if(Cr(a))throw this.getAsyncError()}}runOnRoot(e){this.result.lastPlugin=e;try{if(typeof e=="object"&&e.Once){if(this.result.root.type==="document"){let t=this.result.root.nodes.map(r=>e.Once(r,this.helpers));return Cr(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}else if(typeof e=="function")return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let r=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,e.name==="CssSyntaxError"&&!e.plugin?(e.plugin=r.postcssPlugin,e.setMessage()):r.postcssVersion}catch(n){console&&console.error&&console.error(n)}return e}async runAsync(){this.plugin=0;for(let e=0;e0;){let r=this.visitTick(t);if(Cr(r))try{await r}catch(n){let a=t[t.length-1].node;throw this.handleError(n,a)}}}if(this.listeners.OnceExit)for(let[t,r]of this.listeners.OnceExit){this.result.lastPlugin=t;try{if(e.type==="document"){let n=e.nodes.map(a=>r(a,this.helpers));await Promise.all(n)}else await r(e,this.helpers)}catch(n){throw this.handleError(n)}}}return this.processed=!0,this.stringify()}prepareVisitors(){this.listeners={};let e=(t,r,n)=>{this.listeners[r]||(this.listeners[r]=[]),this.listeners[r].push([t,n])};for(let t of this.plugins)if(typeof t=="object")for(let r in t){if(!K0[r]&&/^[A-Z]/.test(r))throw new Error(`Unknown event ${r} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Z0[r])if(typeof t[r]=="object")for(let n in t[r])n==="*"?e(t,r,t[r][n]):e(t,r+"-"+n.toLowerCase(),t[r][n]);else typeof t[r]=="function"&&e(t,r,t[r])}this.hasListener=Object.keys(this.listeners).length>0}visitTick(e){let t=e[e.length-1],{node:r,visitors:n}=t;if(r.type!=="root"&&r.type!=="document"&&!r.parent){e.pop();return}if(n.length>0&&t.visitorIndex{Bs=i};oc.exports=Ve;Ve.default=Ve;J0.registerLazyResult(Ve);Y0.registerLazyResult(Ve)});var uc=v((yT,lc)=>{l();"use strict";var ev=Ss(),tv=mr(),gT=_s(),rv=Wi(),iv=Ii(),Gi=class{constructor(e,t,r){t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=r,this._map=void 0;let n,a=tv;this.result=new iv(this._processor,n,this._opts),this.result.css=t;let s=this;Object.defineProperty(this.result,"root",{get(){return s.root}});let o=new ev(a,n,this._opts,t);if(o.isMap()){let[u,c]=o.generate();u&&(this.result.css=u),c&&(this.result.map=c)}}get[Symbol.toStringTag](){return"NoWorkResult"}get processor(){return this.result.processor}get opts(){return this.result.opts}get css(){return this.result.css}get content(){return this.result.css}get map(){return this.result.map}get root(){if(this._root)return this._root;let e,t=rv;try{e=t(this._css,this._opts)}catch(r){this.error=r}if(this.error)throw this.error;return this._root=e,e}get messages(){return[]}warnings(){return[]}toString(){return this._css}then(e,t){return this.async().then(e,t)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}sync(){if(this.error)throw this.error;return this.result}};lc.exports=Gi;Gi.default=Gi});var cc=v((wT,fc)=>{l();"use strict";var nv=uc(),sv=Fs(),av=Ti(),ov=Tt(),Dt=class{constructor(e=[]){this.version="8.4.24",this.plugins=this.normalize(e)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}process(e,t={}){return this.plugins.length===0&&typeof t.parser=="undefined"&&typeof t.stringifier=="undefined"&&typeof t.syntax=="undefined"?new nv(this,e,t):new sv(this,e,t)}normalize(e){let t=[];for(let r of e)if(r.postcss===!0?r=r():r.postcss&&(r=r.postcss),typeof r=="object"&&Array.isArray(r.plugins))t=t.concat(r.plugins);else if(typeof r=="object"&&r.postcssPlugin)t.push(r);else if(typeof r=="function")t.push(r);else if(!(typeof r=="object"&&(r.parse||r.stringify)))throw new Error(r+" is not a PostCSS plugin");return t}};fc.exports=Dt;Dt.default=Dt;ov.registerProcessor(Dt);av.registerProcessor(Dt)});var dc=v((bT,pc)=>{l();"use strict";var lv=yr(),uv=Ps(),fv=wr(),cv=$i(),pv=Vi(),dv=Tt(),hv=ji();function Ar(i,e){if(Array.isArray(i))return i.map(n=>Ar(n));let{inputs:t,...r}=i;if(t){e=[];for(let n of t){let a={...n,__proto__:pv.prototype};a.map&&(a.map={...a.map,__proto__:uv.prototype}),e.push(a)}}if(r.nodes&&(r.nodes=i.nodes.map(n=>Ar(n,e))),r.source){let{inputId:n,...a}=r.source;r.source=a,n!=null&&(r.source.input=e[n])}if(r.type==="root")return new dv(r);if(r.type==="decl")return new lv(r);if(r.type==="rule")return new hv(r);if(r.type==="comment")return new fv(r);if(r.type==="atrule")return new cv(r);throw new Error("Unknown node type: "+i.type)}pc.exports=Ar;Ar.default=Ar});var ye=v((vT,vc)=>{l();"use strict";var mv=ki(),hc=yr(),gv=Fs(),yv=it(),Ns=cc(),wv=mr(),bv=dc(),mc=Ti(),vv=Os(),gc=wr(),yc=$i(),xv=Ii(),kv=Vi(),Sv=Wi(),Cv=Ts(),wc=ji(),bc=Tt(),Av=gr();function j(...i){return i.length===1&&Array.isArray(i[0])&&(i=i[0]),new Ns(i)}j.plugin=function(e,t){let r=!1;function n(...s){console&&console.warn&&!r&&(r=!0,console.warn(e+`: postcss.plugin was deprecated. Migration guide: https://evilmartians.com/chronicles/postcss-8-plugin-migration`),h.env.LANG&&h.env.LANG.startsWith("cn")&&console.warn(e+`: \u91CC\u9762 postcss.plugin \u88AB\u5F03\u7528. \u8FC1\u79FB\u6307\u5357: https://www.w3ctech.com/topic/2226`));let o=t(...s);return o.postcssPlugin=e,o.postcssVersion=new Ns().version,o}let a;return Object.defineProperty(n,"postcss",{get(){return a||(a=n()),a}}),n.process=function(s,o,u){return j([n(u)]).process(s,o)},n};j.stringify=wv;j.parse=Sv;j.fromJSON=bv;j.list=Cv;j.comment=i=>new gc(i);j.atRule=i=>new yc(i);j.decl=i=>new hc(i);j.rule=i=>new wc(i);j.root=i=>new bc(i);j.document=i=>new mc(i);j.CssSyntaxError=mv;j.Declaration=hc;j.Container=yv;j.Processor=Ns;j.Document=mc;j.Comment=gc;j.Warning=vv;j.AtRule=yc;j.Result=xv;j.Input=kv;j.Rule=wc;j.Root=bc;j.Node=Av;gv.registerPostcss(j);vc.exports=j;j.default=j});var U,z,xT,kT,ST,CT,AT,_T,OT,ET,TT,PT,DT,IT,qT,RT,MT,BT,FT,NT,LT,$T,jT,zT,VT,UT,nt=C(()=>{l();U=X(ye()),z=U.default,xT=U.default.stringify,kT=U.default.fromJSON,ST=U.default.plugin,CT=U.default.parse,AT=U.default.list,_T=U.default.document,OT=U.default.comment,ET=U.default.atRule,TT=U.default.rule,PT=U.default.decl,DT=U.default.root,IT=U.default.CssSyntaxError,qT=U.default.Declaration,RT=U.default.Container,MT=U.default.Processor,BT=U.default.Document,FT=U.default.Comment,NT=U.default.Warning,LT=U.default.AtRule,$T=U.default.Result,jT=U.default.Input,zT=U.default.Rule,VT=U.default.Root,UT=U.default.Node});var Ls=v((GT,xc)=>{l();xc.exports=function(i,e,t,r,n){for(e=e.split?e.split("."):e,r=0;r{l();"use strict";Hi.__esModule=!0;Hi.default=Ev;function _v(i){for(var e=i.toLowerCase(),t="",r=!1,n=0;n<6&&e[n]!==void 0;n++){var a=e.charCodeAt(n),s=a>=97&&a<=102||a>=48&&a<=57;if(r=a===32,!s)break;t+=e[n]}if(t.length!==0){var o=parseInt(t,16),u=o>=55296&&o<=57343;return u||o===0||o>1114111?["\uFFFD",t.length+(r?1:0)]:[String.fromCodePoint(o),t.length+(r?1:0)]}}var Ov=/\\/;function Ev(i){var e=Ov.test(i);if(!e)return i;for(var t="",r=0;r{l();"use strict";Qi.__esModule=!0;Qi.default=Tv;function Tv(i){for(var e=arguments.length,t=new Array(e>1?e-1:0),r=1;r0;){var n=t.shift();if(!i[n])return;i=i[n]}return i}Sc.exports=Qi.default});var _c=v((Ji,Ac)=>{l();"use strict";Ji.__esModule=!0;Ji.default=Pv;function Pv(i){for(var e=arguments.length,t=new Array(e>1?e-1:0),r=1;r0;){var n=t.shift();i[n]||(i[n]={}),i=i[n]}}Ac.exports=Ji.default});var Ec=v((Xi,Oc)=>{l();"use strict";Xi.__esModule=!0;Xi.default=Dv;function Dv(i){for(var e="",t=i.indexOf("/*"),r=0;t>=0;){e=e+i.slice(r,t);var n=i.indexOf("*/",t+2);if(n<0)return e;r=n+2,t=i.indexOf("/*",r)}return e=e+i.slice(r),e}Oc.exports=Xi.default});var _r=v(Me=>{l();"use strict";Me.__esModule=!0;Me.unesc=Me.stripComments=Me.getProp=Me.ensureObject=void 0;var Iv=Ki(Yi());Me.unesc=Iv.default;var qv=Ki(Cc());Me.getProp=qv.default;var Rv=Ki(_c());Me.ensureObject=Rv.default;var Mv=Ki(Ec());Me.stripComments=Mv.default;function Ki(i){return i&&i.__esModule?i:{default:i}}});var Ue=v((Or,Dc)=>{l();"use strict";Or.__esModule=!0;Or.default=void 0;var Tc=_r();function Pc(i,e){for(var t=0;tr||this.source.end.linen||this.source.end.line===r&&this.source.end.column{l();"use strict";W.__esModule=!0;W.UNIVERSAL=W.TAG=W.STRING=W.SELECTOR=W.ROOT=W.PSEUDO=W.NESTING=W.ID=W.COMMENT=W.COMBINATOR=W.CLASS=W.ATTRIBUTE=void 0;var Lv="tag";W.TAG=Lv;var $v="string";W.STRING=$v;var jv="selector";W.SELECTOR=jv;var zv="root";W.ROOT=zv;var Vv="pseudo";W.PSEUDO=Vv;var Uv="nesting";W.NESTING=Uv;var Wv="id";W.ID=Wv;var Gv="comment";W.COMMENT=Gv;var Hv="combinator";W.COMBINATOR=Hv;var Yv="class";W.CLASS=Yv;var Qv="attribute";W.ATTRIBUTE=Qv;var Jv="universal";W.UNIVERSAL=Jv});var Zi=v((Er,Mc)=>{l();"use strict";Er.__esModule=!0;Er.default=void 0;var Xv=Zv(Ue()),We=Kv(ae());function Ic(i){if(typeof WeakMap!="function")return null;var e=new WeakMap,t=new WeakMap;return(Ic=function(n){return n?t:e})(i)}function Kv(i,e){if(!e&&i&&i.__esModule)return i;if(i===null||typeof i!="object"&&typeof i!="function")return{default:i};var t=Ic(e);if(t&&t.has(i))return t.get(i);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in i)if(a!=="default"&&Object.prototype.hasOwnProperty.call(i,a)){var s=n?Object.getOwnPropertyDescriptor(i,a):null;s&&(s.get||s.set)?Object.defineProperty(r,a,s):r[a]=i[a]}return r.default=i,t&&t.set(i,r),r}function Zv(i){return i&&i.__esModule?i:{default:i}}function ex(i,e){var t=typeof Symbol!="undefined"&&i[Symbol.iterator]||i["@@iterator"];if(t)return(t=t.call(i)).next.bind(t);if(Array.isArray(i)||(t=tx(i))||e&&i&&typeof i.length=="number"){t&&(i=t);var r=0;return function(){return r>=i.length?{done:!0}:{done:!1,value:i[r++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function tx(i,e){if(!!i){if(typeof i=="string")return qc(i,e);var t=Object.prototype.toString.call(i).slice(8,-1);if(t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set")return Array.from(i);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return qc(i,e)}}function qc(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,r=new Array(e);t=n&&(this.indexes[s]=a-1);return this},t.removeAll=function(){for(var n=ex(this.nodes),a;!(a=n()).done;){var s=a.value;s.parent=void 0}return this.nodes=[],this},t.empty=function(){return this.removeAll()},t.insertAfter=function(n,a){a.parent=this;var s=this.index(n);this.nodes.splice(s+1,0,a),a.parent=this;var o;for(var u in this.indexes)o=this.indexes[u],s<=o&&(this.indexes[u]=o+1);return this},t.insertBefore=function(n,a){a.parent=this;var s=this.index(n);this.nodes.splice(s,0,a),a.parent=this;var o;for(var u in this.indexes)o=this.indexes[u],o<=s&&(this.indexes[u]=o+1);return this},t._findChildAtPosition=function(n,a){var s=void 0;return this.each(function(o){if(o.atPosition){var u=o.atPosition(n,a);if(u)return s=u,!1}else if(o.isAtPosition(n,a))return s=o,!1}),s},t.atPosition=function(n,a){if(this.isAtPosition(n,a))return this._findChildAtPosition(n,a)||this},t._inferEndPosition=function(){this.last&&this.last.source&&this.last.source.end&&(this.source=this.source||{},this.source.end=this.source.end||{},Object.assign(this.source.end,this.last.source.end))},t.each=function(n){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach++;var a=this.lastEach;if(this.indexes[a]=0,!!this.length){for(var s,o;this.indexes[a]{l();"use strict";Tr.__esModule=!0;Tr.default=void 0;var sx=ox(Zi()),ax=ae();function ox(i){return i&&i.__esModule?i:{default:i}}function Bc(i,e){for(var t=0;t{l();"use strict";Pr.__esModule=!0;Pr.default=void 0;var cx=dx(Zi()),px=ae();function dx(i){return i&&i.__esModule?i:{default:i}}function hx(i,e){i.prototype=Object.create(e.prototype),i.prototype.constructor=i,Vs(i,e)}function Vs(i,e){return Vs=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},Vs(i,e)}var mx=function(i){hx(e,i);function e(t){var r;return r=i.call(this,t)||this,r.type=px.SELECTOR,r}return e}(cx.default);Pr.default=mx;Nc.exports=Pr.default});var en=v((QT,Lc)=>{l();"use strict";var gx={},yx=gx.hasOwnProperty,wx=function(e,t){if(!e)return t;var r={};for(var n in t)r[n]=yx.call(e,n)?e[n]:t[n];return r},bx=/[ -,\.\/:-@\[-\^`\{-~]/,vx=/[ -,\.\/:-@\[\]\^`\{-~]/,xx=/(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g,Ws=function i(e,t){t=wx(t,i.options),t.quotes!="single"&&t.quotes!="double"&&(t.quotes="single");for(var r=t.quotes=="double"?'"':"'",n=t.isIdentifier,a=e.charAt(0),s="",o=0,u=e.length;o126){if(f>=55296&&f<=56319&&o{l();"use strict";Dr.__esModule=!0;Dr.default=void 0;var kx=$c(en()),Sx=_r(),Cx=$c(Ue()),Ax=ae();function $c(i){return i&&i.__esModule?i:{default:i}}function jc(i,e){for(var t=0;t{l();"use strict";Ir.__esModule=!0;Ir.default=void 0;var Tx=Dx(Ue()),Px=ae();function Dx(i){return i&&i.__esModule?i:{default:i}}function Ix(i,e){i.prototype=Object.create(e.prototype),i.prototype.constructor=i,Ys(i,e)}function Ys(i,e){return Ys=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},Ys(i,e)}var qx=function(i){Ix(e,i);function e(t){var r;return r=i.call(this,t)||this,r.type=Px.COMMENT,r}return e}(Tx.default);Ir.default=qx;Vc.exports=Ir.default});var Xs=v((qr,Uc)=>{l();"use strict";qr.__esModule=!0;qr.default=void 0;var Rx=Bx(Ue()),Mx=ae();function Bx(i){return i&&i.__esModule?i:{default:i}}function Fx(i,e){i.prototype=Object.create(e.prototype),i.prototype.constructor=i,Js(i,e)}function Js(i,e){return Js=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},Js(i,e)}var Nx=function(i){Fx(e,i);function e(r){var n;return n=i.call(this,r)||this,n.type=Mx.ID,n}var t=e.prototype;return t.valueToString=function(){return"#"+i.prototype.valueToString.call(this)},e}(Rx.default);qr.default=Nx;Uc.exports=qr.default});var tn=v((Rr,Hc)=>{l();"use strict";Rr.__esModule=!0;Rr.default=void 0;var Lx=Wc(en()),$x=_r(),jx=Wc(Ue());function Wc(i){return i&&i.__esModule?i:{default:i}}function Gc(i,e){for(var t=0;t{l();"use strict";Mr.__esModule=!0;Mr.default=void 0;var Wx=Hx(tn()),Gx=ae();function Hx(i){return i&&i.__esModule?i:{default:i}}function Yx(i,e){i.prototype=Object.create(e.prototype),i.prototype.constructor=i,Zs(i,e)}function Zs(i,e){return Zs=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},Zs(i,e)}var Qx=function(i){Yx(e,i);function e(t){var r;return r=i.call(this,t)||this,r.type=Gx.TAG,r}return e}(Wx.default);Mr.default=Qx;Yc.exports=Mr.default});var ra=v((Br,Qc)=>{l();"use strict";Br.__esModule=!0;Br.default=void 0;var Jx=Kx(Ue()),Xx=ae();function Kx(i){return i&&i.__esModule?i:{default:i}}function Zx(i,e){i.prototype=Object.create(e.prototype),i.prototype.constructor=i,ta(i,e)}function ta(i,e){return ta=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},ta(i,e)}var e1=function(i){Zx(e,i);function e(t){var r;return r=i.call(this,t)||this,r.type=Xx.STRING,r}return e}(Jx.default);Br.default=e1;Qc.exports=Br.default});var na=v((Fr,Jc)=>{l();"use strict";Fr.__esModule=!0;Fr.default=void 0;var t1=i1(Zi()),r1=ae();function i1(i){return i&&i.__esModule?i:{default:i}}function n1(i,e){i.prototype=Object.create(e.prototype),i.prototype.constructor=i,ia(i,e)}function ia(i,e){return ia=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},ia(i,e)}var s1=function(i){n1(e,i);function e(r){var n;return n=i.call(this,r)||this,n.type=r1.PSEUDO,n}var t=e.prototype;return t.toString=function(){var n=this.length?"("+this.map(String).join(",")+")":"";return[this.rawSpaceBefore,this.stringifyProperty("value"),n,this.rawSpaceAfter].join("")},e}(t1.default);Fr.default=s1;Jc.exports=Fr.default});var Xc={};_e(Xc,{deprecate:()=>a1});function a1(i){return i}var Kc=C(()=>{l()});var ep=v((JT,Zc)=>{l();Zc.exports=(Kc(),Xc).deprecate});var fa=v($r=>{l();"use strict";$r.__esModule=!0;$r.default=void 0;$r.unescapeValue=la;var Nr=aa(en()),o1=aa(Yi()),l1=aa(tn()),u1=ae(),sa;function aa(i){return i&&i.__esModule?i:{default:i}}function tp(i,e){for(var t=0;t0&&!n.quoted&&o.before.length===0&&!(n.spaces.value&&n.spaces.value.after)&&(o.before=" "),rp(s,o)}))),a.push("]"),a.push(this.rawSpaceAfter),a.join("")},f1(e,[{key:"quoted",get:function(){var n=this.quoteMark;return n==="'"||n==='"'},set:function(n){h1()}},{key:"quoteMark",get:function(){return this._quoteMark},set:function(n){if(!this._constructed){this._quoteMark=n;return}this._quoteMark!==n&&(this._quoteMark=n,this._syncRawValue())}},{key:"qualifiedAttribute",get:function(){return this.qualifiedName(this.raws.attribute||this.attribute)}},{key:"insensitiveFlag",get:function(){return this.insensitive?"i":""}},{key:"value",get:function(){return this._value},set:function(n){if(this._constructed){var a=la(n),s=a.deprecatedUsage,o=a.unescaped,u=a.quoteMark;if(s&&d1(),o===this._value&&u===this._quoteMark)return;this._value=o,this._quoteMark=u,this._syncRawValue()}else this._value=n}},{key:"insensitive",get:function(){return this._insensitive},set:function(n){n||(this._insensitive=!1,this.raws&&(this.raws.insensitiveFlag==="I"||this.raws.insensitiveFlag==="i")&&(this.raws.insensitiveFlag=void 0)),this._insensitive=n}},{key:"attribute",get:function(){return this._attribute},set:function(n){this._handleEscapes("attribute",n),this._attribute=n}}]),e}(l1.default);$r.default=rn;rn.NO_QUOTE=null;rn.SINGLE_QUOTE="'";rn.DOUBLE_QUOTE='"';var ua=(sa={"'":{quotes:"single",wrap:!0},'"':{quotes:"double",wrap:!0}},sa[null]={isIdentifier:!0},sa);function rp(i,e){return""+e.before+i+e.after}});var pa=v((jr,ip)=>{l();"use strict";jr.__esModule=!0;jr.default=void 0;var y1=b1(tn()),w1=ae();function b1(i){return i&&i.__esModule?i:{default:i}}function v1(i,e){i.prototype=Object.create(e.prototype),i.prototype.constructor=i,ca(i,e)}function ca(i,e){return ca=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},ca(i,e)}var x1=function(i){v1(e,i);function e(t){var r;return r=i.call(this,t)||this,r.type=w1.UNIVERSAL,r.value="*",r}return e}(y1.default);jr.default=x1;ip.exports=jr.default});var ha=v((zr,np)=>{l();"use strict";zr.__esModule=!0;zr.default=void 0;var k1=C1(Ue()),S1=ae();function C1(i){return i&&i.__esModule?i:{default:i}}function A1(i,e){i.prototype=Object.create(e.prototype),i.prototype.constructor=i,da(i,e)}function da(i,e){return da=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},da(i,e)}var _1=function(i){A1(e,i);function e(t){var r;return r=i.call(this,t)||this,r.type=S1.COMBINATOR,r}return e}(k1.default);zr.default=_1;np.exports=zr.default});var ga=v((Vr,sp)=>{l();"use strict";Vr.__esModule=!0;Vr.default=void 0;var O1=T1(Ue()),E1=ae();function T1(i){return i&&i.__esModule?i:{default:i}}function P1(i,e){i.prototype=Object.create(e.prototype),i.prototype.constructor=i,ma(i,e)}function ma(i,e){return ma=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,n){return r.__proto__=n,r},ma(i,e)}var D1=function(i){P1(e,i);function e(t){var r;return r=i.call(this,t)||this,r.type=E1.NESTING,r.value="&",r}return e}(O1.default);Vr.default=D1;sp.exports=Vr.default});var op=v((nn,ap)=>{l();"use strict";nn.__esModule=!0;nn.default=I1;function I1(i){return i.sort(function(e,t){return e-t})}ap.exports=nn.default});var ya=v(D=>{l();"use strict";D.__esModule=!0;D.word=D.tilde=D.tab=D.str=D.space=D.slash=D.singleQuote=D.semicolon=D.plus=D.pipe=D.openSquare=D.openParenthesis=D.newline=D.greaterThan=D.feed=D.equals=D.doubleQuote=D.dollar=D.cr=D.comment=D.comma=D.combinator=D.colon=D.closeSquare=D.closeParenthesis=D.caret=D.bang=D.backslash=D.at=D.asterisk=D.ampersand=void 0;var q1=38;D.ampersand=q1;var R1=42;D.asterisk=R1;var M1=64;D.at=M1;var B1=44;D.comma=B1;var F1=58;D.colon=F1;var N1=59;D.semicolon=N1;var L1=40;D.openParenthesis=L1;var $1=41;D.closeParenthesis=$1;var j1=91;D.openSquare=j1;var z1=93;D.closeSquare=z1;var V1=36;D.dollar=V1;var U1=126;D.tilde=U1;var W1=94;D.caret=W1;var G1=43;D.plus=G1;var H1=61;D.equals=H1;var Y1=124;D.pipe=Y1;var Q1=62;D.greaterThan=Q1;var J1=32;D.space=J1;var lp=39;D.singleQuote=lp;var X1=34;D.doubleQuote=X1;var K1=47;D.slash=K1;var Z1=33;D.bang=Z1;var ek=92;D.backslash=ek;var tk=13;D.cr=tk;var rk=12;D.feed=rk;var ik=10;D.newline=ik;var nk=9;D.tab=nk;var sk=lp;D.str=sk;var ak=-1;D.comment=ak;var ok=-2;D.word=ok;var lk=-3;D.combinator=lk});var cp=v(Ur=>{l();"use strict";Ur.__esModule=!0;Ur.FIELDS=void 0;Ur.default=mk;var O=uk(ya()),It,V;function up(i){if(typeof WeakMap!="function")return null;var e=new WeakMap,t=new WeakMap;return(up=function(n){return n?t:e})(i)}function uk(i,e){if(!e&&i&&i.__esModule)return i;if(i===null||typeof i!="object"&&typeof i!="function")return{default:i};var t=up(e);if(t&&t.has(i))return t.get(i);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in i)if(a!=="default"&&Object.prototype.hasOwnProperty.call(i,a)){var s=n?Object.getOwnPropertyDescriptor(i,a):null;s&&(s.get||s.set)?Object.defineProperty(r,a,s):r[a]=i[a]}return r.default=i,t&&t.set(i,r),r}var fk=(It={},It[O.tab]=!0,It[O.newline]=!0,It[O.cr]=!0,It[O.feed]=!0,It),ck=(V={},V[O.space]=!0,V[O.tab]=!0,V[O.newline]=!0,V[O.cr]=!0,V[O.feed]=!0,V[O.ampersand]=!0,V[O.asterisk]=!0,V[O.bang]=!0,V[O.comma]=!0,V[O.colon]=!0,V[O.semicolon]=!0,V[O.openParenthesis]=!0,V[O.closeParenthesis]=!0,V[O.openSquare]=!0,V[O.closeSquare]=!0,V[O.singleQuote]=!0,V[O.doubleQuote]=!0,V[O.plus]=!0,V[O.pipe]=!0,V[O.tilde]=!0,V[O.greaterThan]=!0,V[O.equals]=!0,V[O.dollar]=!0,V[O.caret]=!0,V[O.slash]=!0,V),wa={},fp="0123456789abcdefABCDEF";for(sn=0;sn0?(k=s+x,S=w-y[x].length):(k=s,S=a),E=O.comment,s=k,p=k,d=w-S):c===O.slash?(w=o,E=c,p=s,d=o-a,u=w+1):(w=pk(t,o),E=O.word,p=s,d=w-a),u=w+1;break}e.push([E,s,o-a,p,d,o,u]),S&&(a=S,S=null),o=u}return e}});var bp=v((Wr,wp)=>{l();"use strict";Wr.__esModule=!0;Wr.default=void 0;var gk=ve(zs()),ba=ve(Us()),yk=ve(Hs()),pp=ve(Qs()),wk=ve(Xs()),bk=ve(ea()),va=ve(ra()),vk=ve(na()),dp=an(fa()),xk=ve(pa()),xa=ve(ha()),kk=ve(ga()),Sk=ve(op()),A=an(cp()),T=an(ya()),Ck=an(ae()),Y=_r(),vt,ka;function hp(i){if(typeof WeakMap!="function")return null;var e=new WeakMap,t=new WeakMap;return(hp=function(n){return n?t:e})(i)}function an(i,e){if(!e&&i&&i.__esModule)return i;if(i===null||typeof i!="object"&&typeof i!="function")return{default:i};var t=hp(e);if(t&&t.has(i))return t.get(i);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in i)if(a!=="default"&&Object.prototype.hasOwnProperty.call(i,a)){var s=n?Object.getOwnPropertyDescriptor(i,a):null;s&&(s.get||s.set)?Object.defineProperty(r,a,s):r[a]=i[a]}return r.default=i,t&&t.set(i,r),r}function ve(i){return i&&i.__esModule?i:{default:i}}function mp(i,e){for(var t=0;t0){var s=this.current.last;if(s){var o=this.convertWhitespaceNodesToSpace(a),u=o.space,c=o.rawSpace;c!==void 0&&(s.rawSpaceAfter+=c),s.spaces.after+=u}else a.forEach(function(E){return r.newNode(E)})}return}var f=this.currToken,d=void 0;n>this.position&&(d=this.parseWhitespaceEquivalentTokens(n));var p;if(this.isNamedCombinator()?p=this.namedCombinator():this.currToken[A.FIELDS.TYPE]===T.combinator?(p=new xa.default({value:this.content(),source:qt(this.currToken),sourceIndex:this.currToken[A.FIELDS.START_POS]}),this.position++):Sa[this.currToken[A.FIELDS.TYPE]]||d||this.unexpected(),p){if(d){var m=this.convertWhitespaceNodesToSpace(d),b=m.space,x=m.rawSpace;p.spaces.before=b,p.rawSpaceBefore=x}}else{var y=this.convertWhitespaceNodesToSpace(d,!0),w=y.space,k=y.rawSpace;k||(k=w);var S={},_={spaces:{}};w.endsWith(" ")&&k.endsWith(" ")?(S.before=w.slice(0,w.length-1),_.spaces.before=k.slice(0,k.length-1)):w.startsWith(" ")&&k.startsWith(" ")?(S.after=w.slice(1),_.spaces.after=k.slice(1)):_.value=k,p=new xa.default({value:" ",source:Ca(f,this.tokens[this.position-1]),sourceIndex:f[A.FIELDS.START_POS],spaces:S,raws:_})}return this.currToken&&this.currToken[A.FIELDS.TYPE]===T.space&&(p.spaces.after=this.optionalSpace(this.content()),this.position++),this.newNode(p)},e.comma=function(){if(this.position===this.tokens.length-1){this.root.trailingComma=!0,this.position++;return}this.current._inferEndPosition();var r=new ba.default({source:{start:gp(this.tokens[this.position+1])}});this.current.parent.append(r),this.current=r,this.position++},e.comment=function(){var r=this.currToken;this.newNode(new pp.default({value:this.content(),source:qt(r),sourceIndex:r[A.FIELDS.START_POS]})),this.position++},e.error=function(r,n){throw this.root.error(r,n)},e.missingBackslash=function(){return this.error("Expected a backslash preceding the semicolon.",{index:this.currToken[A.FIELDS.START_POS]})},e.missingParenthesis=function(){return this.expected("opening parenthesis",this.currToken[A.FIELDS.START_POS])},e.missingSquareBracket=function(){return this.expected("opening square bracket",this.currToken[A.FIELDS.START_POS])},e.unexpected=function(){return this.error("Unexpected '"+this.content()+"'. Escaping special characters with \\ may help.",this.currToken[A.FIELDS.START_POS])},e.unexpectedPipe=function(){return this.error("Unexpected '|'.",this.currToken[A.FIELDS.START_POS])},e.namespace=function(){var r=this.prevToken&&this.content(this.prevToken)||!0;if(this.nextToken[A.FIELDS.TYPE]===T.word)return this.position++,this.word(r);if(this.nextToken[A.FIELDS.TYPE]===T.asterisk)return this.position++,this.universal(r);this.unexpectedPipe()},e.nesting=function(){if(this.nextToken){var r=this.content(this.nextToken);if(r==="|"){this.position++;return}}var n=this.currToken;this.newNode(new kk.default({value:this.content(),source:qt(n),sourceIndex:n[A.FIELDS.START_POS]})),this.position++},e.parentheses=function(){var r=this.current.last,n=1;if(this.position++,r&&r.type===Ck.PSEUDO){var a=new ba.default({source:{start:gp(this.tokens[this.position-1])}}),s=this.current;for(r.append(a),this.current=a;this.position1&&r.nextToken&&r.nextToken[A.FIELDS.TYPE]===T.openParenthesis&&r.error("Misplaced parenthesis.",{index:r.nextToken[A.FIELDS.START_POS]})});else return this.expected(["pseudo-class","pseudo-element"],this.currToken[A.FIELDS.START_POS])},e.space=function(){var r=this.content();this.position===0||this.prevToken[A.FIELDS.TYPE]===T.comma||this.prevToken[A.FIELDS.TYPE]===T.openParenthesis||this.current.nodes.every(function(n){return n.type==="comment"})?(this.spaces=this.optionalSpace(r),this.position++):this.position===this.tokens.length-1||this.nextToken[A.FIELDS.TYPE]===T.comma||this.nextToken[A.FIELDS.TYPE]===T.closeParenthesis?(this.current.last.spaces.after=this.optionalSpace(r),this.position++):this.combinator()},e.string=function(){var r=this.currToken;this.newNode(new va.default({value:this.content(),source:qt(r),sourceIndex:r[A.FIELDS.START_POS]})),this.position++},e.universal=function(r){var n=this.nextToken;if(n&&this.content(n)==="|")return this.position++,this.namespace();var a=this.currToken;this.newNode(new xk.default({value:this.content(),source:qt(a),sourceIndex:a[A.FIELDS.START_POS]}),r),this.position++},e.splitWord=function(r,n){for(var a=this,s=this.nextToken,o=this.content();s&&~[T.dollar,T.caret,T.equals,T.word].indexOf(s[A.FIELDS.TYPE]);){this.position++;var u=this.content();if(o+=u,u.lastIndexOf("\\")===u.length-1){var c=this.nextToken;c&&c[A.FIELDS.TYPE]===T.space&&(o+=this.requiredSpace(this.content(c)),this.position++)}s=this.nextToken}var f=Aa(o,".").filter(function(b){var x=o[b-1]==="\\",y=/^\d+\.\d+%$/.test(o);return!x&&!y}),d=Aa(o,"#").filter(function(b){return o[b-1]!=="\\"}),p=Aa(o,"#{");p.length&&(d=d.filter(function(b){return!~p.indexOf(b)}));var m=(0,Sk.default)(Ok([0].concat(f,d)));m.forEach(function(b,x){var y=m[x+1]||o.length,w=o.slice(b,y);if(x===0&&n)return n.call(a,w,m.length);var k,S=a.currToken,_=S[A.FIELDS.START_POS]+m[x],E=xt(S[1],S[2]+b,S[3],S[2]+(y-1));if(~f.indexOf(b)){var I={value:w.slice(1),source:E,sourceIndex:_};k=new yk.default(Rt(I,"value"))}else if(~d.indexOf(b)){var q={value:w.slice(1),source:E,sourceIndex:_};k=new wk.default(Rt(q,"value"))}else{var R={value:w,source:E,sourceIndex:_};Rt(R,"value"),k=new bk.default(R)}a.newNode(k,r),r=null}),this.position++},e.word=function(r){var n=this.nextToken;return n&&this.content(n)==="|"?(this.position++,this.namespace()):this.splitWord(r)},e.loop=function(){for(;this.position{l();"use strict";Gr.__esModule=!0;Gr.default=void 0;var Tk=Pk(bp());function Pk(i){return i&&i.__esModule?i:{default:i}}var Dk=function(){function i(t,r){this.func=t||function(){},this.funcRes=null,this.options=r}var e=i.prototype;return e._shouldUpdateSelector=function(r,n){n===void 0&&(n={});var a=Object.assign({},this.options,n);return a.updateSelector===!1?!1:typeof r!="string"},e._isLossy=function(r){r===void 0&&(r={});var n=Object.assign({},this.options,r);return n.lossless===!1},e._root=function(r,n){n===void 0&&(n={});var a=new Tk.default(r,this._parseOptions(n));return a.root},e._parseOptions=function(r){return{lossy:this._isLossy(r)}},e._run=function(r,n){var a=this;return n===void 0&&(n={}),new Promise(function(s,o){try{var u=a._root(r,n);Promise.resolve(a.func(u)).then(function(c){var f=void 0;return a._shouldUpdateSelector(r,n)&&(f=u.toString(),r.selector=f),{transform:c,root:u,string:f}}).then(s,o)}catch(c){o(c);return}})},e._runSync=function(r,n){n===void 0&&(n={});var a=this._root(r,n),s=this.func(a);if(s&&typeof s.then=="function")throw new Error("Selector processor returned a promise to a synchronous call.");var o=void 0;return n.updateSelector&&typeof r!="string"&&(o=a.toString(),r.selector=o),{transform:s,root:a,string:o}},e.ast=function(r,n){return this._run(r,n).then(function(a){return a.root})},e.astSync=function(r,n){return this._runSync(r,n).root},e.transform=function(r,n){return this._run(r,n).then(function(a){return a.transform})},e.transformSync=function(r,n){return this._runSync(r,n).transform},e.process=function(r,n){return this._run(r,n).then(function(a){return a.string||a.root.toString()})},e.processSync=function(r,n){var a=this._runSync(r,n);return a.string||a.root.toString()},i}();Gr.default=Dk;vp.exports=Gr.default});var kp=v(G=>{l();"use strict";G.__esModule=!0;G.universal=G.tag=G.string=G.selector=G.root=G.pseudo=G.nesting=G.id=G.comment=G.combinator=G.className=G.attribute=void 0;var Ik=xe(fa()),qk=xe(Hs()),Rk=xe(ha()),Mk=xe(Qs()),Bk=xe(Xs()),Fk=xe(ga()),Nk=xe(na()),Lk=xe(zs()),$k=xe(Us()),jk=xe(ra()),zk=xe(ea()),Vk=xe(pa());function xe(i){return i&&i.__esModule?i:{default:i}}var Uk=function(e){return new Ik.default(e)};G.attribute=Uk;var Wk=function(e){return new qk.default(e)};G.className=Wk;var Gk=function(e){return new Rk.default(e)};G.combinator=Gk;var Hk=function(e){return new Mk.default(e)};G.comment=Hk;var Yk=function(e){return new Bk.default(e)};G.id=Yk;var Qk=function(e){return new Fk.default(e)};G.nesting=Qk;var Jk=function(e){return new Nk.default(e)};G.pseudo=Jk;var Xk=function(e){return new Lk.default(e)};G.root=Xk;var Kk=function(e){return new $k.default(e)};G.selector=Kk;var Zk=function(e){return new jk.default(e)};G.string=Zk;var eS=function(e){return new zk.default(e)};G.tag=eS;var tS=function(e){return new Vk.default(e)};G.universal=tS});var _p=v($=>{l();"use strict";$.__esModule=!0;$.isComment=$.isCombinator=$.isClassName=$.isAttribute=void 0;$.isContainer=dS;$.isIdentifier=void 0;$.isNamespace=hS;$.isNesting=void 0;$.isNode=_a;$.isPseudo=void 0;$.isPseudoClass=pS;$.isPseudoElement=Ap;$.isUniversal=$.isTag=$.isString=$.isSelector=$.isRoot=void 0;var Q=ae(),ce,rS=(ce={},ce[Q.ATTRIBUTE]=!0,ce[Q.CLASS]=!0,ce[Q.COMBINATOR]=!0,ce[Q.COMMENT]=!0,ce[Q.ID]=!0,ce[Q.NESTING]=!0,ce[Q.PSEUDO]=!0,ce[Q.ROOT]=!0,ce[Q.SELECTOR]=!0,ce[Q.STRING]=!0,ce[Q.TAG]=!0,ce[Q.UNIVERSAL]=!0,ce);function _a(i){return typeof i=="object"&&rS[i.type]}function ke(i,e){return _a(e)&&e.type===i}var Sp=ke.bind(null,Q.ATTRIBUTE);$.isAttribute=Sp;var iS=ke.bind(null,Q.CLASS);$.isClassName=iS;var nS=ke.bind(null,Q.COMBINATOR);$.isCombinator=nS;var sS=ke.bind(null,Q.COMMENT);$.isComment=sS;var aS=ke.bind(null,Q.ID);$.isIdentifier=aS;var oS=ke.bind(null,Q.NESTING);$.isNesting=oS;var Oa=ke.bind(null,Q.PSEUDO);$.isPseudo=Oa;var lS=ke.bind(null,Q.ROOT);$.isRoot=lS;var uS=ke.bind(null,Q.SELECTOR);$.isSelector=uS;var fS=ke.bind(null,Q.STRING);$.isString=fS;var Cp=ke.bind(null,Q.TAG);$.isTag=Cp;var cS=ke.bind(null,Q.UNIVERSAL);$.isUniversal=cS;function Ap(i){return Oa(i)&&i.value&&(i.value.startsWith("::")||i.value.toLowerCase()===":before"||i.value.toLowerCase()===":after"||i.value.toLowerCase()===":first-letter"||i.value.toLowerCase()===":first-line")}function pS(i){return Oa(i)&&!Ap(i)}function dS(i){return!!(_a(i)&&i.walk)}function hS(i){return Sp(i)||Cp(i)}});var Op=v(Te=>{l();"use strict";Te.__esModule=!0;var Ea=ae();Object.keys(Ea).forEach(function(i){i==="default"||i==="__esModule"||i in Te&&Te[i]===Ea[i]||(Te[i]=Ea[i])});var Ta=kp();Object.keys(Ta).forEach(function(i){i==="default"||i==="__esModule"||i in Te&&Te[i]===Ta[i]||(Te[i]=Ta[i])});var Pa=_p();Object.keys(Pa).forEach(function(i){i==="default"||i==="__esModule"||i in Te&&Te[i]===Pa[i]||(Te[i]=Pa[i])})});var Be=v((Hr,Tp)=>{l();"use strict";Hr.__esModule=!0;Hr.default=void 0;var mS=wS(xp()),gS=yS(Op());function Ep(i){if(typeof WeakMap!="function")return null;var e=new WeakMap,t=new WeakMap;return(Ep=function(n){return n?t:e})(i)}function yS(i,e){if(!e&&i&&i.__esModule)return i;if(i===null||typeof i!="object"&&typeof i!="function")return{default:i};var t=Ep(e);if(t&&t.has(i))return t.get(i);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in i)if(a!=="default"&&Object.prototype.hasOwnProperty.call(i,a)){var s=n?Object.getOwnPropertyDescriptor(i,a):null;s&&(s.get||s.set)?Object.defineProperty(r,a,s):r[a]=i[a]}return r.default=i,t&&t.set(i,r),r}function wS(i){return i&&i.__esModule?i:{default:i}}var Da=function(e){return new mS.default(e)};Object.assign(Da,gS);delete Da.__esModule;var bS=Da;Hr.default=bS;Tp.exports=Hr.default});function Ge(i){return["fontSize","outline"].includes(i)?e=>(typeof e=="function"&&(e=e({})),Array.isArray(e)&&(e=e[0]),e):i==="fontFamily"?e=>{typeof e=="function"&&(e=e({}));let t=Array.isArray(e)&&se(e[1])?e[0]:e;return Array.isArray(t)?t.join(", "):t}:["boxShadow","transitionProperty","transitionDuration","transitionDelay","transitionTimingFunction","backgroundImage","backgroundSize","backgroundColor","cursor","animation"].includes(i)?e=>(typeof e=="function"&&(e=e({})),Array.isArray(e)&&(e=e.join(", ")),e):["gridTemplateColumns","gridTemplateRows","objectPosition"].includes(i)?e=>(typeof e=="function"&&(e=e({})),typeof e=="string"&&(e=z.list.comma(e).join(" ")),e):(e,t={})=>(typeof e=="function"&&(e=e(t)),e)}var Yr=C(()=>{l();nt();Ct()});var Bp=v((a3,Ba)=>{l();var{Rule:Pp,AtRule:vS}=ye(),Dp=Be();function Ia(i,e){let t;try{Dp(r=>{t=r}).processSync(i)}catch(r){throw i.includes(":")?e?e.error("Missed semicolon"):r:e?e.error(r.message):r}return t.at(0)}function Ip(i,e){let t=!1;return i.each(r=>{if(r.type==="nesting"){let n=e.clone({});r.value!=="&"?r.replaceWith(Ia(r.value.replace("&",n.toString()))):r.replaceWith(n),t=!0}else"nodes"in r&&r.nodes&&Ip(r,e)&&(t=!0)}),t}function qp(i,e){let t=[];return i.selectors.forEach(r=>{let n=Ia(r,i);e.selectors.forEach(a=>{if(!a)return;let s=Ia(a,e);Ip(s,n)||(s.prepend(Dp.combinator({value:" "})),s.prepend(n.clone({}))),t.push(s.toString())})}),t}function on(i,e){let t=i.prev();for(e.after(i);t&&t.type==="comment";){let r=t.prev();e.after(t),t=r}return i}function xS(i){return function e(t,r,n,a=n){let s=[];if(r.each(o=>{o.type==="rule"&&n?a&&(o.selectors=qp(t,o)):o.type==="atrule"&&o.nodes?i[o.name]?e(t,o,a):r[Ra]!==!1&&s.push(o):s.push(o)}),n&&s.length){let o=t.clone({nodes:[]});for(let u of s)o.append(u);r.prepend(o)}}}function qa(i,e,t){let r=new Pp({selector:i,nodes:[]});return r.append(e),t.after(r),r}function Rp(i,e){let t={};for(let r of i)t[r]=!0;if(e)for(let r of e)t[r.replace(/^@/,"")]=!0;return t}function kS(i){i=i.trim();let e=i.match(/^\((.*)\)$/);if(!e)return{type:"basic",selector:i};let t=e[1].match(/^(with(?:out)?):(.+)$/);if(t){let r=t[1]==="with",n=Object.fromEntries(t[2].trim().split(/\s+/).map(s=>[s,!0]));if(r&&n.all)return{type:"noop"};let a=s=>!!n[s];return n.all?a=()=>!0:r&&(a=s=>s==="all"?!1:!n[s]),{type:"withrules",escapes:a}}return{type:"unknown"}}function SS(i){let e=[],t=i.parent;for(;t&&t instanceof vS;)e.push(t),t=t.parent;return e}function CS(i){let e=i[Mp];if(!e)i.after(i.nodes);else{let t=i.nodes,r,n=-1,a,s,o,u=SS(i);if(u.forEach((c,f)=>{if(e(c.name))r=c,n=f,s=o;else{let d=o;o=c.clone({nodes:[]}),d&&o.append(d),a=a||o}}),r?s?(a.append(t),r.after(s)):r.after(t):i.after(t),i.next()&&r){let c;u.slice(0,n+1).forEach((f,d,p)=>{let m=c;c=f.clone({nodes:[]}),m&&c.append(m);let b=[],y=(p[d-1]||i).next();for(;y;)b.push(y),y=y.next();c.append(b)}),c&&(s||t[t.length-1]).after(c)}}i.remove()}var Ra=Symbol("rootRuleMergeSel"),Mp=Symbol("rootRuleEscapes");function AS(i){let{params:e}=i,{type:t,selector:r,escapes:n}=kS(e);if(t==="unknown")throw i.error(`Unknown @${i.name} parameter ${JSON.stringify(e)}`);if(t==="basic"&&r){let a=new Pp({selector:r,nodes:i.nodes});i.removeAll(),i.append(a)}i[Mp]=n,i[Ra]=n?!n("all"):t==="noop"}var Ma=Symbol("hasRootRule");Ba.exports=(i={})=>{let e=Rp(["media","supports","layer","container"],i.bubble),t=xS(e),r=Rp(["document","font-face","keyframes","-webkit-keyframes","-moz-keyframes"],i.unwrap),n=(i.rootRuleName||"at-root").replace(/^@/,""),a=i.preserveEmpty;return{postcssPlugin:"postcss-nested",Once(s){s.walkAtRules(n,o=>{AS(o),s[Ma]=!0})},Rule(s){let o=!1,u=s,c=!1,f=[];s.each(d=>{d.type==="rule"?(f.length&&(u=qa(s.selector,f,u),f=[]),c=!0,o=!0,d.selectors=qp(s,d),u=on(d,u)):d.type==="atrule"?(f.length&&(u=qa(s.selector,f,u),f=[]),d.name===n?(o=!0,t(s,d,!0,d[Ra]),u=on(d,u)):e[d.name]?(c=!0,o=!0,t(s,d,!0),u=on(d,u)):r[d.name]?(c=!0,o=!0,t(s,d,!1),u=on(d,u)):c&&f.push(d)):d.type==="decl"&&c&&f.push(d)}),f.length&&(u=qa(s.selector,f,u)),o&&a!==!0&&(s.raws.semicolon=!0,s.nodes.length===0&&s.remove())},RootExit(s){s[Ma]&&(s.walkAtRules(n,CS),s[Ma]=!1)}}};Ba.exports.postcss=!0});var $p=v((o3,Lp)=>{l();"use strict";var Fp=/-(\w|$)/g,Np=(i,e)=>e.toUpperCase(),_S=i=>(i=i.toLowerCase(),i==="float"?"cssFloat":i.startsWith("-ms-")?i.substr(1).replace(Fp,Np):i.replace(Fp,Np));Lp.exports=_S});var La=v((l3,jp)=>{l();var OS=$p(),ES={boxFlex:!0,boxFlexGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,strokeDashoffset:!0,strokeOpacity:!0,strokeWidth:!0};function Fa(i){return typeof i.nodes=="undefined"?!0:Na(i)}function Na(i){let e,t={};return i.each(r=>{if(r.type==="atrule")e="@"+r.name,r.params&&(e+=" "+r.params),typeof t[e]=="undefined"?t[e]=Fa(r):Array.isArray(t[e])?t[e].push(Fa(r)):t[e]=[t[e],Fa(r)];else if(r.type==="rule"){let n=Na(r);if(t[r.selector])for(let a in n)t[r.selector][a]=n[a];else t[r.selector]=n}else if(r.type==="decl"){r.prop[0]==="-"&&r.prop[1]==="-"||r.parent&&r.parent.selector===":export"?e=r.prop:e=OS(r.prop);let n=r.value;!isNaN(r.value)&&ES[e]&&(n=parseFloat(r.value)),r.important&&(n+=" !important"),typeof t[e]=="undefined"?t[e]=n:Array.isArray(t[e])?t[e].push(n):t[e]=[t[e],n]}}),t}jp.exports=Na});var ln=v((u3,Wp)=>{l();var Qr=ye(),zp=/\s*!important\s*$/i,TS={"box-flex":!0,"box-flex-group":!0,"column-count":!0,flex:!0,"flex-grow":!0,"flex-positive":!0,"flex-shrink":!0,"flex-negative":!0,"font-weight":!0,"line-clamp":!0,"line-height":!0,opacity:!0,order:!0,orphans:!0,"tab-size":!0,widows:!0,"z-index":!0,zoom:!0,"fill-opacity":!0,"stroke-dashoffset":!0,"stroke-opacity":!0,"stroke-width":!0};function PS(i){return i.replace(/([A-Z])/g,"-$1").replace(/^ms-/,"-ms-").toLowerCase()}function Vp(i,e,t){t===!1||t===null||(e.startsWith("--")||(e=PS(e)),typeof t=="number"&&(t===0||TS[e]?t=t.toString():t+="px"),e==="css-float"&&(e="float"),zp.test(t)?(t=t.replace(zp,""),i.push(Qr.decl({prop:e,value:t,important:!0}))):i.push(Qr.decl({prop:e,value:t})))}function Up(i,e,t){let r=Qr.atRule({name:e[1],params:e[3]||""});typeof t=="object"&&(r.nodes=[],$a(t,r)),i.push(r)}function $a(i,e){let t,r,n;for(t in i)if(r=i[t],!(r===null||typeof r=="undefined"))if(t[0]==="@"){let a=t.match(/@(\S+)(\s+([\W\w]*)\s*)?/);if(Array.isArray(r))for(let s of r)Up(e,a,s);else Up(e,a,r)}else if(Array.isArray(r))for(let a of r)Vp(e,t,a);else typeof r=="object"?(n=Qr.rule({selector:t}),$a(r,n),e.push(n)):Vp(e,t,r)}Wp.exports=function(i){let e=Qr.root();return $a(i,e),e}});var ja=v((f3,Gp)=>{l();var DS=La();Gp.exports=function(e){return console&&console.warn&&e.warnings().forEach(t=>{let r=t.plugin||"PostCSS";console.warn(r+": "+t.text)}),DS(e.root)}});var Yp=v((c3,Hp)=>{l();var IS=ye(),qS=ja(),RS=ln();Hp.exports=function(e){let t=IS(e);return async r=>{let n=await t.process(r,{parser:RS,from:void 0});return qS(n)}}});var Jp=v((p3,Qp)=>{l();var MS=ye(),BS=ja(),FS=ln();Qp.exports=function(i){let e=MS(i);return t=>{let r=e.process(t,{parser:FS,from:void 0});return BS(r)}}});var Kp=v((d3,Xp)=>{l();var NS=La(),LS=ln(),$S=Yp(),jS=Jp();Xp.exports={objectify:NS,parse:LS,async:$S,sync:jS}});var Mt,Zp,h3,m3,g3,y3,ed=C(()=>{l();Mt=X(Kp()),Zp=Mt.default,h3=Mt.default.objectify,m3=Mt.default.parse,g3=Mt.default.async,y3=Mt.default.sync});function Bt(i){return Array.isArray(i)?i.flatMap(e=>z([(0,td.default)({bubble:["screen"]})]).process(e,{parser:Zp}).root.nodes):Bt([i])}var td,za=C(()=>{l();nt();td=X(Bp());ed()});function Ft(i,e,t=!1){if(i==="")return e;let r=typeof e=="string"?(0,rd.default)().astSync(e):e;return r.walkClasses(n=>{let a=n.value,s=t&&a.startsWith("-");n.value=s?`-${i}${a.slice(1)}`:`${i}${a}`}),typeof e=="string"?r.toString():r}var rd,un=C(()=>{l();rd=X(Be())});function pe(i){let e=id.default.className();return e.value=i,gt(e?.raws?.value??e.value)}var id,Nt=C(()=>{l();id=X(Be());mi()});function Va(i){return gt(`.${pe(i)}`)}function fn(i,e){return Va(Jr(i,e))}function Jr(i,e){return e==="DEFAULT"?i:e==="-"||e==="-DEFAULT"?`-${i}`:e.startsWith("-")?`-${i}${e}`:e.startsWith("/")?`${i}${e}`:`${i}-${e}`}var Ua=C(()=>{l();Nt();mi()});function P(i,e=[[i,[i]]],{filterDefault:t=!1,...r}={}){let n=Ge(i);return function({matchUtilities:a,theme:s}){for(let o of e){let u=Array.isArray(o[0])?o:[o];a(u.reduce((c,[f,d])=>Object.assign(c,{[f]:p=>d.reduce((m,b)=>Array.isArray(b)?Object.assign(m,{[b[0]]:b[1]}):Object.assign(m,{[b]:n(p)}),{})}),{}),{...r,values:t?Object.fromEntries(Object.entries(s(i)??{}).filter(([c])=>c!=="DEFAULT")):s(i)})}}}var nd=C(()=>{l();Yr()});function st(i){return i=Array.isArray(i)?i:[i],i.map(e=>{let t=e.values.map(r=>r.raw!==void 0?r.raw:[r.min&&`(min-width: ${r.min})`,r.max&&`(max-width: ${r.max})`].filter(Boolean).join(" and "));return e.not?`not all and ${t}`:t}).join(", ")}var cn=C(()=>{l()});function Wa(i){return i.split(YS).map(t=>{let r=t.trim(),n={value:r},a=r.split(QS),s=new Set;for(let o of a)!s.has("DIRECTIONS")&&zS.has(o)?(n.direction=o,s.add("DIRECTIONS")):!s.has("PLAY_STATES")&&VS.has(o)?(n.playState=o,s.add("PLAY_STATES")):!s.has("FILL_MODES")&&US.has(o)?(n.fillMode=o,s.add("FILL_MODES")):!s.has("ITERATION_COUNTS")&&(WS.has(o)||JS.test(o))?(n.iterationCount=o,s.add("ITERATION_COUNTS")):!s.has("TIMING_FUNCTION")&&GS.has(o)||!s.has("TIMING_FUNCTION")&&HS.some(u=>o.startsWith(`${u}(`))?(n.timingFunction=o,s.add("TIMING_FUNCTION")):!s.has("DURATION")&&sd.test(o)?(n.duration=o,s.add("DURATION")):!s.has("DELAY")&&sd.test(o)?(n.delay=o,s.add("DELAY")):s.has("NAME")?(n.unknown||(n.unknown=[]),n.unknown.push(o)):(n.name=o,s.add("NAME"));return n})}var zS,VS,US,WS,GS,HS,YS,QS,sd,JS,ad=C(()=>{l();zS=new Set(["normal","reverse","alternate","alternate-reverse"]),VS=new Set(["running","paused"]),US=new Set(["none","forwards","backwards","both"]),WS=new Set(["infinite"]),GS=new Set(["linear","ease","ease-in","ease-out","ease-in-out","step-start","step-end"]),HS=["cubic-bezier","steps"],YS=/\,(?![^(]*\))/g,QS=/\ +(?![^(]*\))/g,sd=/^(-?[\d.]+m?s)$/,JS=/^(\d+)$/});var od,ne,ld=C(()=>{l();od=i=>Object.assign({},...Object.entries(i??{}).flatMap(([e,t])=>typeof t=="object"?Object.entries(od(t)).map(([r,n])=>({[e+(r==="DEFAULT"?"":`-${r}`)]:n})):[{[`${e}`]:t}])),ne=od});var fd,ud=C(()=>{fd="3.4.5"});function at(i,e=!0){return Array.isArray(i)?i.map(t=>{if(e&&Array.isArray(t))throw new Error("The tuple syntax is not supported for `screens`.");if(typeof t=="string")return{name:t.toString(),not:!1,values:[{min:t,max:void 0}]};let[r,n]=t;return r=r.toString(),typeof n=="string"?{name:r,not:!1,values:[{min:n,max:void 0}]}:Array.isArray(n)?{name:r,not:!1,values:n.map(a=>pd(a))}:{name:r,not:!1,values:[pd(n)]}}):at(Object.entries(i??{}),!1)}function pn(i){return i.values.length!==1?{result:!1,reason:"multiple-values"}:i.values[0].raw!==void 0?{result:!1,reason:"raw-values"}:i.values[0].min!==void 0&&i.values[0].max!==void 0?{result:!1,reason:"min-and-max"}:{result:!0,reason:null}}function cd(i,e,t){let r=dn(e,i),n=dn(t,i),a=pn(r),s=pn(n);if(a.reason==="multiple-values"||s.reason==="multiple-values")throw new Error("Attempted to sort a screen with multiple values. This should never happen. Please open a bug report.");if(a.reason==="raw-values"||s.reason==="raw-values")throw new Error("Attempted to sort a screen with raw values. This should never happen. Please open a bug report.");if(a.reason==="min-and-max"||s.reason==="min-and-max")throw new Error("Attempted to sort a screen with both min and max values. This should never happen. Please open a bug report.");let{min:o,max:u}=r.values[0],{min:c,max:f}=n.values[0];e.not&&([o,u]=[u,o]),t.not&&([c,f]=[f,c]),o=o===void 0?o:parseFloat(o),u=u===void 0?u:parseFloat(u),c=c===void 0?c:parseFloat(c),f=f===void 0?f:parseFloat(f);let[d,p]=i==="min"?[o,c]:[f,u];return d-p}function dn(i,e){return typeof i=="object"?i:{name:"arbitrary-screen",values:[{[e]:i}]}}function pd({"min-width":i,min:e=i,max:t,raw:r}={}){return{min:e,max:t,raw:r}}var hn=C(()=>{l()});function mn(i,e){i.walkDecls(t=>{if(e.includes(t.prop)){t.remove();return}for(let r of e)t.value.includes(`/ var(${r})`)&&(t.value=t.value.replace(`/ var(${r})`,""))})}var dd=C(()=>{l()});var H,Pe,Fe,K,hd,md=C(()=>{l();je();wt();nt();nd();cn();Nt();ad();ld();lr();cs();Ct();Yr();ud();Ee();hn();ns();dd();ze();cr();Xr();H={childVariant:({addVariant:i})=>{i("*","& > *")},pseudoElementVariants:({addVariant:i})=>{i("first-letter","&::first-letter"),i("first-line","&::first-line"),i("marker",[({container:e})=>(mn(e,["--tw-text-opacity"]),"& *::marker"),({container:e})=>(mn(e,["--tw-text-opacity"]),"&::marker")]),i("selection",["& *::selection","&::selection"]),i("file","&::file-selector-button"),i("placeholder","&::placeholder"),i("backdrop","&::backdrop"),i("before",({container:e})=>(e.walkRules(t=>{let r=!1;t.walkDecls("content",()=>{r=!0}),r||t.prepend(z.decl({prop:"content",value:"var(--tw-content)"}))}),"&::before")),i("after",({container:e})=>(e.walkRules(t=>{let r=!1;t.walkDecls("content",()=>{r=!0}),r||t.prepend(z.decl({prop:"content",value:"var(--tw-content)"}))}),"&::after"))},pseudoClassVariants:({addVariant:i,matchVariant:e,config:t,prefix:r})=>{let n=[["first","&:first-child"],["last","&:last-child"],["only","&:only-child"],["odd","&:nth-child(odd)"],["even","&:nth-child(even)"],"first-of-type","last-of-type","only-of-type",["visited",({container:s})=>(mn(s,["--tw-text-opacity","--tw-border-opacity","--tw-bg-opacity"]),"&:visited")],"target",["open","&[open]"],"default","checked","indeterminate","placeholder-shown","autofill","optional","required","valid","invalid","in-range","out-of-range","read-only","empty","focus-within",["hover",Z(t(),"hoverOnlyWhenSupported")?"@media (hover: hover) and (pointer: fine) { &:hover }":"&:hover"],"focus","focus-visible","active","enabled","disabled"].map(s=>Array.isArray(s)?s:[s,`&:${s}`]);for(let[s,o]of n)i(s,u=>typeof o=="function"?o(u):o);let a={group:(s,{modifier:o})=>o?[`:merge(${r(".group")}\\/${pe(o)})`," &"]:[`:merge(${r(".group")})`," &"],peer:(s,{modifier:o})=>o?[`:merge(${r(".peer")}\\/${pe(o)})`," ~ &"]:[`:merge(${r(".peer")})`," ~ &"]};for(let[s,o]of Object.entries(a))e(s,(u="",c)=>{let f=N(typeof u=="function"?u(c):u);f.includes("&")||(f="&"+f);let[d,p]=o("",c),m=null,b=null,x=0;for(let y=0;y{i("ltr",'&:where([dir="ltr"], [dir="ltr"] *)'),i("rtl",'&:where([dir="rtl"], [dir="rtl"] *)')},reducedMotionVariants:({addVariant:i})=>{i("motion-safe","@media (prefers-reduced-motion: no-preference)"),i("motion-reduce","@media (prefers-reduced-motion: reduce)")},darkVariants:({config:i,addVariant:e})=>{let[t,r=".dark"]=[].concat(i("darkMode","media"));if(t===!1&&(t="media",F.warn("darkmode-false",["The `darkMode` option in your Tailwind CSS configuration is set to `false`, which now behaves the same as `media`.","Change `darkMode` to `media` or remove it entirely.","https://tailwindcss.com/docs/upgrade-guide#remove-dark-mode-configuration"])),t==="variant"){let n;if(Array.isArray(r)||typeof r=="function"?n=r:typeof r=="string"&&(n=[r]),Array.isArray(n))for(let a of n)a===".dark"?(t=!1,F.warn("darkmode-variant-without-selector",["When using `variant` for `darkMode`, you must provide a selector.",'Example: `darkMode: ["variant", ".your-selector &"]`'])):a.includes("&")||(t=!1,F.warn("darkmode-variant-without-ampersand",["When using `variant` for `darkMode`, your selector must contain `&`.",'Example `darkMode: ["variant", ".your-selector &"]`']));r=n}t==="selector"?e("dark",`&:where(${r}, ${r} *)`):t==="media"?e("dark","@media (prefers-color-scheme: dark)"):t==="variant"?e("dark",r):t==="class"&&e("dark",`&:is(${r} *)`)},printVariant:({addVariant:i})=>{i("print","@media print")},screenVariants:({theme:i,addVariant:e,matchVariant:t})=>{let r=i("screens")??{},n=Object.values(r).every(w=>typeof w=="string"),a=at(i("screens")),s=new Set([]);function o(w){return w.match(/(\D+)$/)?.[1]??"(none)"}function u(w){w!==void 0&&s.add(o(w))}function c(w){return u(w),s.size===1}for(let w of a)for(let k of w.values)u(k.min),u(k.max);let f=s.size<=1;function d(w){return Object.fromEntries(a.filter(k=>pn(k).result).map(k=>{let{min:S,max:_}=k.values[0];if(w==="min"&&S!==void 0)return k;if(w==="min"&&_!==void 0)return{...k,not:!k.not};if(w==="max"&&_!==void 0)return k;if(w==="max"&&S!==void 0)return{...k,not:!k.not}}).map(k=>[k.name,k]))}function p(w){return(k,S)=>cd(w,k.value,S.value)}let m=p("max"),b=p("min");function x(w){return k=>{if(n)if(f){if(typeof k=="string"&&!c(k))return F.warn("minmax-have-mixed-units",["The `min-*` and `max-*` variants are not supported with a `screens` configuration containing mixed units."]),[]}else return F.warn("mixed-screen-units",["The `min-*` and `max-*` variants are not supported with a `screens` configuration containing mixed units."]),[];else return F.warn("complex-screen-config",["The `min-*` and `max-*` variants are not supported with a `screens` configuration containing objects."]),[];return[`@media ${st(dn(k,w))}`]}}t("max",x("max"),{sort:m,values:n?d("max"):{}});let y="min-screens";for(let w of a)e(w.name,`@media ${st(w)}`,{id:y,sort:n&&f?b:void 0,value:w});t("min",x("min"),{id:y,sort:b})},supportsVariants:({matchVariant:i,theme:e})=>{i("supports",(t="")=>{let r=N(t),n=/^\w*\s*\(/.test(r);return r=n?r.replace(/\b(and|or|not)\b/g," $1 "):r,n?`@supports ${r}`:(r.includes(":")||(r=`${r}: var(--tw)`),r.startsWith("(")&&r.endsWith(")")||(r=`(${r})`),`@supports ${r}`)},{values:e("supports")??{}})},hasVariants:({matchVariant:i,prefix:e})=>{i("has",t=>`&:has(${N(t)})`,{values:{},[ot]:{respectPrefix:!1}}),i("group-has",(t,{modifier:r})=>r?`:merge(${e(".group")}\\/${r}):has(${N(t)}) &`:`:merge(${e(".group")}):has(${N(t)}) &`,{values:{},[ot]:{respectPrefix:!1}}),i("peer-has",(t,{modifier:r})=>r?`:merge(${e(".peer")}\\/${r}):has(${N(t)}) ~ &`:`:merge(${e(".peer")}):has(${N(t)}) ~ &`,{values:{},[ot]:{respectPrefix:!1}})},ariaVariants:({matchVariant:i,theme:e})=>{i("aria",t=>`&[aria-${N(t)}]`,{values:e("aria")??{}}),i("group-aria",(t,{modifier:r})=>r?`:merge(.group\\/${r})[aria-${N(t)}] &`:`:merge(.group)[aria-${N(t)}] &`,{values:e("aria")??{}}),i("peer-aria",(t,{modifier:r})=>r?`:merge(.peer\\/${r})[aria-${N(t)}] ~ &`:`:merge(.peer)[aria-${N(t)}] ~ &`,{values:e("aria")??{}})},dataVariants:({matchVariant:i,theme:e})=>{i("data",t=>`&[data-${N(t)}]`,{values:e("data")??{}}),i("group-data",(t,{modifier:r})=>r?`:merge(.group\\/${r})[data-${N(t)}] &`:`:merge(.group)[data-${N(t)}] &`,{values:e("data")??{}}),i("peer-data",(t,{modifier:r})=>r?`:merge(.peer\\/${r})[data-${N(t)}] ~ &`:`:merge(.peer)[data-${N(t)}] ~ &`,{values:e("data")??{}})},orientationVariants:({addVariant:i})=>{i("portrait","@media (orientation: portrait)"),i("landscape","@media (orientation: landscape)")},prefersContrastVariants:({addVariant:i})=>{i("contrast-more","@media (prefers-contrast: more)"),i("contrast-less","@media (prefers-contrast: less)")},forcedColorsVariants:({addVariant:i})=>{i("forced-colors","@media (forced-colors: active)")}},Pe=["translate(var(--tw-translate-x), var(--tw-translate-y))","rotate(var(--tw-rotate))","skewX(var(--tw-skew-x))","skewY(var(--tw-skew-y))","scaleX(var(--tw-scale-x))","scaleY(var(--tw-scale-y))"].join(" "),Fe=["var(--tw-blur)","var(--tw-brightness)","var(--tw-contrast)","var(--tw-grayscale)","var(--tw-hue-rotate)","var(--tw-invert)","var(--tw-saturate)","var(--tw-sepia)","var(--tw-drop-shadow)"].join(" "),K=["var(--tw-backdrop-blur)","var(--tw-backdrop-brightness)","var(--tw-backdrop-contrast)","var(--tw-backdrop-grayscale)","var(--tw-backdrop-hue-rotate)","var(--tw-backdrop-invert)","var(--tw-backdrop-opacity)","var(--tw-backdrop-saturate)","var(--tw-backdrop-sepia)"].join(" "),hd={preflight:({addBase:i})=>{let e=z.parse(`*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:theme('borderColor.DEFAULT', currentColor)}::after,::before{--tw-content:''}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:theme('fontFamily.sans', ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:theme('fontFamily.sans[1].fontFeatureSettings', normal);font-variation-settings:theme('fontFamily.sans[1].fontVariationSettings', normal);-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:theme('fontFamily.mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:theme('fontFamily.mono[1].fontFeatureSettings', normal);font-variation-settings:theme('fontFamily.mono[1].fontVariationSettings', normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:theme('colors.gray.4', #9ca3af)}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}`);i([z.comment({text:`! tailwindcss v${fd} | MIT License | https://tailwindcss.com`}),...e.nodes])},container:(()=>{function i(t=[]){return t.flatMap(r=>r.values.map(n=>n.min)).filter(r=>r!==void 0)}function e(t,r,n){if(typeof n=="undefined")return[];if(!(typeof n=="object"&&n!==null))return[{screen:"DEFAULT",minWidth:0,padding:n}];let a=[];n.DEFAULT&&a.push({screen:"DEFAULT",minWidth:0,padding:n.DEFAULT});for(let s of t)for(let o of r)for(let{min:u}of o.values)u===s&&a.push({minWidth:s,padding:n[o.name]});return a}return function({addComponents:t,theme:r}){let n=at(r("container.screens",r("screens"))),a=i(n),s=e(a,n,r("container.padding")),o=c=>{let f=s.find(d=>d.minWidth===c);return f?{paddingRight:f.padding,paddingLeft:f.padding}:{}},u=Array.from(new Set(a.slice().sort((c,f)=>parseInt(c)-parseInt(f)))).map(c=>({[`@media (min-width: ${c})`]:{".container":{"max-width":c,...o(c)}}}));t([{".container":Object.assign({width:"100%"},r("container.center",!1)?{marginRight:"auto",marginLeft:"auto"}:{},o(0))},...u])}})(),accessibility:({addUtilities:i})=>{i({".sr-only":{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"},".not-sr-only":{position:"static",width:"auto",height:"auto",padding:"0",margin:"0",overflow:"visible",clip:"auto",whiteSpace:"normal"}})},pointerEvents:({addUtilities:i})=>{i({".pointer-events-none":{"pointer-events":"none"},".pointer-events-auto":{"pointer-events":"auto"}})},visibility:({addUtilities:i})=>{i({".visible":{visibility:"visible"},".invisible":{visibility:"hidden"},".collapse":{visibility:"collapse"}})},position:({addUtilities:i})=>{i({".static":{position:"static"},".fixed":{position:"fixed"},".absolute":{position:"absolute"},".relative":{position:"relative"},".sticky":{position:"sticky"}})},inset:P("inset",[["inset",["inset"]],[["inset-x",["left","right"]],["inset-y",["top","bottom"]]],[["start",["inset-inline-start"]],["end",["inset-inline-end"]],["top",["top"]],["right",["right"]],["bottom",["bottom"]],["left",["left"]]]],{supportsNegativeValues:!0}),isolation:({addUtilities:i})=>{i({".isolate":{isolation:"isolate"},".isolation-auto":{isolation:"auto"}})},zIndex:P("zIndex",[["z",["zIndex"]]],{supportsNegativeValues:!0}),order:P("order",void 0,{supportsNegativeValues:!0}),gridColumn:P("gridColumn",[["col",["gridColumn"]]]),gridColumnStart:P("gridColumnStart",[["col-start",["gridColumnStart"]]],{supportsNegativeValues:!0}),gridColumnEnd:P("gridColumnEnd",[["col-end",["gridColumnEnd"]]],{supportsNegativeValues:!0}),gridRow:P("gridRow",[["row",["gridRow"]]]),gridRowStart:P("gridRowStart",[["row-start",["gridRowStart"]]],{supportsNegativeValues:!0}),gridRowEnd:P("gridRowEnd",[["row-end",["gridRowEnd"]]],{supportsNegativeValues:!0}),float:({addUtilities:i})=>{i({".float-start":{float:"inline-start"},".float-end":{float:"inline-end"},".float-right":{float:"right"},".float-left":{float:"left"},".float-none":{float:"none"}})},clear:({addUtilities:i})=>{i({".clear-start":{clear:"inline-start"},".clear-end":{clear:"inline-end"},".clear-left":{clear:"left"},".clear-right":{clear:"right"},".clear-both":{clear:"both"},".clear-none":{clear:"none"}})},margin:P("margin",[["m",["margin"]],[["mx",["margin-left","margin-right"]],["my",["margin-top","margin-bottom"]]],[["ms",["margin-inline-start"]],["me",["margin-inline-end"]],["mt",["margin-top"]],["mr",["margin-right"]],["mb",["margin-bottom"]],["ml",["margin-left"]]]],{supportsNegativeValues:!0}),boxSizing:({addUtilities:i})=>{i({".box-border":{"box-sizing":"border-box"},".box-content":{"box-sizing":"content-box"}})},lineClamp:({matchUtilities:i,addUtilities:e,theme:t})=>{i({"line-clamp":r=>({overflow:"hidden",display:"-webkit-box","-webkit-box-orient":"vertical","-webkit-line-clamp":`${r}`})},{values:t("lineClamp")}),e({".line-clamp-none":{overflow:"visible",display:"block","-webkit-box-orient":"horizontal","-webkit-line-clamp":"none"}})},display:({addUtilities:i})=>{i({".block":{display:"block"},".inline-block":{display:"inline-block"},".inline":{display:"inline"},".flex":{display:"flex"},".inline-flex":{display:"inline-flex"},".table":{display:"table"},".inline-table":{display:"inline-table"},".table-caption":{display:"table-caption"},".table-cell":{display:"table-cell"},".table-column":{display:"table-column"},".table-column-group":{display:"table-column-group"},".table-footer-group":{display:"table-footer-group"},".table-header-group":{display:"table-header-group"},".table-row-group":{display:"table-row-group"},".table-row":{display:"table-row"},".flow-root":{display:"flow-root"},".grid":{display:"grid"},".inline-grid":{display:"inline-grid"},".contents":{display:"contents"},".list-item":{display:"list-item"},".hidden":{display:"none"}})},aspectRatio:P("aspectRatio",[["aspect",["aspect-ratio"]]]),size:P("size",[["size",["width","height"]]]),height:P("height",[["h",["height"]]]),maxHeight:P("maxHeight",[["max-h",["maxHeight"]]]),minHeight:P("minHeight",[["min-h",["minHeight"]]]),width:P("width",[["w",["width"]]]),minWidth:P("minWidth",[["min-w",["minWidth"]]]),maxWidth:P("maxWidth",[["max-w",["maxWidth"]]]),flex:P("flex"),flexShrink:P("flexShrink",[["flex-shrink",["flex-shrink"]],["shrink",["flex-shrink"]]]),flexGrow:P("flexGrow",[["flex-grow",["flex-grow"]],["grow",["flex-grow"]]]),flexBasis:P("flexBasis",[["basis",["flex-basis"]]]),tableLayout:({addUtilities:i})=>{i({".table-auto":{"table-layout":"auto"},".table-fixed":{"table-layout":"fixed"}})},captionSide:({addUtilities:i})=>{i({".caption-top":{"caption-side":"top"},".caption-bottom":{"caption-side":"bottom"}})},borderCollapse:({addUtilities:i})=>{i({".border-collapse":{"border-collapse":"collapse"},".border-separate":{"border-collapse":"separate"}})},borderSpacing:({addDefaults:i,matchUtilities:e,theme:t})=>{i("border-spacing",{"--tw-border-spacing-x":0,"--tw-border-spacing-y":0}),e({"border-spacing":r=>({"--tw-border-spacing-x":r,"--tw-border-spacing-y":r,"@defaults border-spacing":{},"border-spacing":"var(--tw-border-spacing-x) var(--tw-border-spacing-y)"}),"border-spacing-x":r=>({"--tw-border-spacing-x":r,"@defaults border-spacing":{},"border-spacing":"var(--tw-border-spacing-x) var(--tw-border-spacing-y)"}),"border-spacing-y":r=>({"--tw-border-spacing-y":r,"@defaults border-spacing":{},"border-spacing":"var(--tw-border-spacing-x) var(--tw-border-spacing-y)"})},{values:t("borderSpacing")})},transformOrigin:P("transformOrigin",[["origin",["transformOrigin"]]]),translate:P("translate",[[["translate-x",[["@defaults transform",{}],"--tw-translate-x",["transform",Pe]]],["translate-y",[["@defaults transform",{}],"--tw-translate-y",["transform",Pe]]]]],{supportsNegativeValues:!0}),rotate:P("rotate",[["rotate",[["@defaults transform",{}],"--tw-rotate",["transform",Pe]]]],{supportsNegativeValues:!0}),skew:P("skew",[[["skew-x",[["@defaults transform",{}],"--tw-skew-x",["transform",Pe]]],["skew-y",[["@defaults transform",{}],"--tw-skew-y",["transform",Pe]]]]],{supportsNegativeValues:!0}),scale:P("scale",[["scale",[["@defaults transform",{}],"--tw-scale-x","--tw-scale-y",["transform",Pe]]],[["scale-x",[["@defaults transform",{}],"--tw-scale-x",["transform",Pe]]],["scale-y",[["@defaults transform",{}],"--tw-scale-y",["transform",Pe]]]]],{supportsNegativeValues:!0}),transform:({addDefaults:i,addUtilities:e})=>{i("transform",{"--tw-translate-x":"0","--tw-translate-y":"0","--tw-rotate":"0","--tw-skew-x":"0","--tw-skew-y":"0","--tw-scale-x":"1","--tw-scale-y":"1"}),e({".transform":{"@defaults transform":{},transform:Pe},".transform-cpu":{transform:Pe},".transform-gpu":{transform:Pe.replace("translate(var(--tw-translate-x), var(--tw-translate-y))","translate3d(var(--tw-translate-x), var(--tw-translate-y), 0)")},".transform-none":{transform:"none"}})},animation:({matchUtilities:i,theme:e,config:t})=>{let r=a=>pe(t("prefix")+a),n=Object.fromEntries(Object.entries(e("keyframes")??{}).map(([a,s])=>[a,{[`@keyframes ${r(a)}`]:s}]));i({animate:a=>{let s=Wa(a);return[...s.flatMap(o=>n[o.name]),{animation:s.map(({name:o,value:u})=>o===void 0||n[o]===void 0?u:u.replace(o,r(o))).join(", ")}]}},{values:e("animation")})},cursor:P("cursor"),touchAction:({addDefaults:i,addUtilities:e})=>{i("touch-action",{"--tw-pan-x":" ","--tw-pan-y":" ","--tw-pinch-zoom":" "});let t="var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)";e({".touch-auto":{"touch-action":"auto"},".touch-none":{"touch-action":"none"},".touch-pan-x":{"@defaults touch-action":{},"--tw-pan-x":"pan-x","touch-action":t},".touch-pan-left":{"@defaults touch-action":{},"--tw-pan-x":"pan-left","touch-action":t},".touch-pan-right":{"@defaults touch-action":{},"--tw-pan-x":"pan-right","touch-action":t},".touch-pan-y":{"@defaults touch-action":{},"--tw-pan-y":"pan-y","touch-action":t},".touch-pan-up":{"@defaults touch-action":{},"--tw-pan-y":"pan-up","touch-action":t},".touch-pan-down":{"@defaults touch-action":{},"--tw-pan-y":"pan-down","touch-action":t},".touch-pinch-zoom":{"@defaults touch-action":{},"--tw-pinch-zoom":"pinch-zoom","touch-action":t},".touch-manipulation":{"touch-action":"manipulation"}})},userSelect:({addUtilities:i})=>{i({".select-none":{"user-select":"none"},".select-text":{"user-select":"text"},".select-all":{"user-select":"all"},".select-auto":{"user-select":"auto"}})},resize:({addUtilities:i})=>{i({".resize-none":{resize:"none"},".resize-y":{resize:"vertical"},".resize-x":{resize:"horizontal"},".resize":{resize:"both"}})},scrollSnapType:({addDefaults:i,addUtilities:e})=>{i("scroll-snap-type",{"--tw-scroll-snap-strictness":"proximity"}),e({".snap-none":{"scroll-snap-type":"none"},".snap-x":{"@defaults scroll-snap-type":{},"scroll-snap-type":"x var(--tw-scroll-snap-strictness)"},".snap-y":{"@defaults scroll-snap-type":{},"scroll-snap-type":"y var(--tw-scroll-snap-strictness)"},".snap-both":{"@defaults scroll-snap-type":{},"scroll-snap-type":"both var(--tw-scroll-snap-strictness)"},".snap-mandatory":{"--tw-scroll-snap-strictness":"mandatory"},".snap-proximity":{"--tw-scroll-snap-strictness":"proximity"}})},scrollSnapAlign:({addUtilities:i})=>{i({".snap-start":{"scroll-snap-align":"start"},".snap-end":{"scroll-snap-align":"end"},".snap-center":{"scroll-snap-align":"center"},".snap-align-none":{"scroll-snap-align":"none"}})},scrollSnapStop:({addUtilities:i})=>{i({".snap-normal":{"scroll-snap-stop":"normal"},".snap-always":{"scroll-snap-stop":"always"}})},scrollMargin:P("scrollMargin",[["scroll-m",["scroll-margin"]],[["scroll-mx",["scroll-margin-left","scroll-margin-right"]],["scroll-my",["scroll-margin-top","scroll-margin-bottom"]]],[["scroll-ms",["scroll-margin-inline-start"]],["scroll-me",["scroll-margin-inline-end"]],["scroll-mt",["scroll-margin-top"]],["scroll-mr",["scroll-margin-right"]],["scroll-mb",["scroll-margin-bottom"]],["scroll-ml",["scroll-margin-left"]]]],{supportsNegativeValues:!0}),scrollPadding:P("scrollPadding",[["scroll-p",["scroll-padding"]],[["scroll-px",["scroll-padding-left","scroll-padding-right"]],["scroll-py",["scroll-padding-top","scroll-padding-bottom"]]],[["scroll-ps",["scroll-padding-inline-start"]],["scroll-pe",["scroll-padding-inline-end"]],["scroll-pt",["scroll-padding-top"]],["scroll-pr",["scroll-padding-right"]],["scroll-pb",["scroll-padding-bottom"]],["scroll-pl",["scroll-padding-left"]]]]),listStylePosition:({addUtilities:i})=>{i({".list-inside":{"list-style-position":"inside"},".list-outside":{"list-style-position":"outside"}})},listStyleType:P("listStyleType",[["list",["listStyleType"]]]),listStyleImage:P("listStyleImage",[["list-image",["listStyleImage"]]]),appearance:({addUtilities:i})=>{i({".appearance-none":{appearance:"none"},".appearance-auto":{appearance:"auto"}})},columns:P("columns",[["columns",["columns"]]]),breakBefore:({addUtilities:i})=>{i({".break-before-auto":{"break-before":"auto"},".break-before-avoid":{"break-before":"avoid"},".break-before-all":{"break-before":"all"},".break-before-avoid-page":{"break-before":"avoid-page"},".break-before-page":{"break-before":"page"},".break-before-left":{"break-before":"left"},".break-before-right":{"break-before":"right"},".break-before-column":{"break-before":"column"}})},breakInside:({addUtilities:i})=>{i({".break-inside-auto":{"break-inside":"auto"},".break-inside-avoid":{"break-inside":"avoid"},".break-inside-avoid-page":{"break-inside":"avoid-page"},".break-inside-avoid-column":{"break-inside":"avoid-column"}})},breakAfter:({addUtilities:i})=>{i({".break-after-auto":{"break-after":"auto"},".break-after-avoid":{"break-after":"avoid"},".break-after-all":{"break-after":"all"},".break-after-avoid-page":{"break-after":"avoid-page"},".break-after-page":{"break-after":"page"},".break-after-left":{"break-after":"left"},".break-after-right":{"break-after":"right"},".break-after-column":{"break-after":"column"}})},gridAutoColumns:P("gridAutoColumns",[["auto-cols",["gridAutoColumns"]]]),gridAutoFlow:({addUtilities:i})=>{i({".grid-flow-row":{gridAutoFlow:"row"},".grid-flow-col":{gridAutoFlow:"column"},".grid-flow-dense":{gridAutoFlow:"dense"},".grid-flow-row-dense":{gridAutoFlow:"row dense"},".grid-flow-col-dense":{gridAutoFlow:"column dense"}})},gridAutoRows:P("gridAutoRows",[["auto-rows",["gridAutoRows"]]]),gridTemplateColumns:P("gridTemplateColumns",[["grid-cols",["gridTemplateColumns"]]]),gridTemplateRows:P("gridTemplateRows",[["grid-rows",["gridTemplateRows"]]]),flexDirection:({addUtilities:i})=>{i({".flex-row":{"flex-direction":"row"},".flex-row-reverse":{"flex-direction":"row-reverse"},".flex-col":{"flex-direction":"column"},".flex-col-reverse":{"flex-direction":"column-reverse"}})},flexWrap:({addUtilities:i})=>{i({".flex-wrap":{"flex-wrap":"wrap"},".flex-wrap-reverse":{"flex-wrap":"wrap-reverse"},".flex-nowrap":{"flex-wrap":"nowrap"}})},placeContent:({addUtilities:i})=>{i({".place-content-center":{"place-content":"center"},".place-content-start":{"place-content":"start"},".place-content-end":{"place-content":"end"},".place-content-between":{"place-content":"space-between"},".place-content-around":{"place-content":"space-around"},".place-content-evenly":{"place-content":"space-evenly"},".place-content-baseline":{"place-content":"baseline"},".place-content-stretch":{"place-content":"stretch"}})},placeItems:({addUtilities:i})=>{i({".place-items-start":{"place-items":"start"},".place-items-end":{"place-items":"end"},".place-items-center":{"place-items":"center"},".place-items-baseline":{"place-items":"baseline"},".place-items-stretch":{"place-items":"stretch"}})},alignContent:({addUtilities:i})=>{i({".content-normal":{"align-content":"normal"},".content-center":{"align-content":"center"},".content-start":{"align-content":"flex-start"},".content-end":{"align-content":"flex-end"},".content-between":{"align-content":"space-between"},".content-around":{"align-content":"space-around"},".content-evenly":{"align-content":"space-evenly"},".content-baseline":{"align-content":"baseline"},".content-stretch":{"align-content":"stretch"}})},alignItems:({addUtilities:i})=>{i({".items-start":{"align-items":"flex-start"},".items-end":{"align-items":"flex-end"},".items-center":{"align-items":"center"},".items-baseline":{"align-items":"baseline"},".items-stretch":{"align-items":"stretch"}})},justifyContent:({addUtilities:i})=>{i({".justify-normal":{"justify-content":"normal"},".justify-start":{"justify-content":"flex-start"},".justify-end":{"justify-content":"flex-end"},".justify-center":{"justify-content":"center"},".justify-between":{"justify-content":"space-between"},".justify-around":{"justify-content":"space-around"},".justify-evenly":{"justify-content":"space-evenly"},".justify-stretch":{"justify-content":"stretch"}})},justifyItems:({addUtilities:i})=>{i({".justify-items-start":{"justify-items":"start"},".justify-items-end":{"justify-items":"end"},".justify-items-center":{"justify-items":"center"},".justify-items-stretch":{"justify-items":"stretch"}})},gap:P("gap",[["gap",["gap"]],[["gap-x",["columnGap"]],["gap-y",["rowGap"]]]]),space:({matchUtilities:i,addUtilities:e,theme:t})=>{i({"space-x":r=>(r=r==="0"?"0px":r,{"& > :not([hidden]) ~ :not([hidden])":{"--tw-space-x-reverse":"0","margin-right":`calc(${r} * var(--tw-space-x-reverse))`,"margin-left":`calc(${r} * calc(1 - var(--tw-space-x-reverse)))`}}),"space-y":r=>(r=r==="0"?"0px":r,{"& > :not([hidden]) ~ :not([hidden])":{"--tw-space-y-reverse":"0","margin-top":`calc(${r} * calc(1 - var(--tw-space-y-reverse)))`,"margin-bottom":`calc(${r} * var(--tw-space-y-reverse))`}})},{values:t("space"),supportsNegativeValues:!0}),e({".space-y-reverse > :not([hidden]) ~ :not([hidden])":{"--tw-space-y-reverse":"1"},".space-x-reverse > :not([hidden]) ~ :not([hidden])":{"--tw-space-x-reverse":"1"}})},divideWidth:({matchUtilities:i,addUtilities:e,theme:t})=>{i({"divide-x":r=>(r=r==="0"?"0px":r,{"& > :not([hidden]) ~ :not([hidden])":{"@defaults border-width":{},"--tw-divide-x-reverse":"0","border-right-width":`calc(${r} * var(--tw-divide-x-reverse))`,"border-left-width":`calc(${r} * calc(1 - var(--tw-divide-x-reverse)))`}}),"divide-y":r=>(r=r==="0"?"0px":r,{"& > :not([hidden]) ~ :not([hidden])":{"@defaults border-width":{},"--tw-divide-y-reverse":"0","border-top-width":`calc(${r} * calc(1 - var(--tw-divide-y-reverse)))`,"border-bottom-width":`calc(${r} * var(--tw-divide-y-reverse))`}})},{values:t("divideWidth"),type:["line-width","length","any"]}),e({".divide-y-reverse > :not([hidden]) ~ :not([hidden])":{"@defaults border-width":{},"--tw-divide-y-reverse":"1"},".divide-x-reverse > :not([hidden]) ~ :not([hidden])":{"@defaults border-width":{},"--tw-divide-x-reverse":"1"}})},divideStyle:({addUtilities:i})=>{i({".divide-solid > :not([hidden]) ~ :not([hidden])":{"border-style":"solid"},".divide-dashed > :not([hidden]) ~ :not([hidden])":{"border-style":"dashed"},".divide-dotted > :not([hidden]) ~ :not([hidden])":{"border-style":"dotted"},".divide-double > :not([hidden]) ~ :not([hidden])":{"border-style":"double"},".divide-none > :not([hidden]) ~ :not([hidden])":{"border-style":"none"}})},divideColor:({matchUtilities:i,theme:e,corePlugins:t})=>{i({divide:r=>t("divideOpacity")?{["& > :not([hidden]) ~ :not([hidden])"]:oe({color:r,property:"border-color",variable:"--tw-divide-opacity"})}:{["& > :not([hidden]) ~ :not([hidden])"]:{"border-color":L(r)}}},{values:(({DEFAULT:r,...n})=>n)(ne(e("divideColor"))),type:["color","any"]})},divideOpacity:({matchUtilities:i,theme:e})=>{i({"divide-opacity":t=>({["& > :not([hidden]) ~ :not([hidden])"]:{"--tw-divide-opacity":t}})},{values:e("divideOpacity")})},placeSelf:({addUtilities:i})=>{i({".place-self-auto":{"place-self":"auto"},".place-self-start":{"place-self":"start"},".place-self-end":{"place-self":"end"},".place-self-center":{"place-self":"center"},".place-self-stretch":{"place-self":"stretch"}})},alignSelf:({addUtilities:i})=>{i({".self-auto":{"align-self":"auto"},".self-start":{"align-self":"flex-start"},".self-end":{"align-self":"flex-end"},".self-center":{"align-self":"center"},".self-stretch":{"align-self":"stretch"},".self-baseline":{"align-self":"baseline"}})},justifySelf:({addUtilities:i})=>{i({".justify-self-auto":{"justify-self":"auto"},".justify-self-start":{"justify-self":"start"},".justify-self-end":{"justify-self":"end"},".justify-self-center":{"justify-self":"center"},".justify-self-stretch":{"justify-self":"stretch"}})},overflow:({addUtilities:i})=>{i({".overflow-auto":{overflow:"auto"},".overflow-hidden":{overflow:"hidden"},".overflow-clip":{overflow:"clip"},".overflow-visible":{overflow:"visible"},".overflow-scroll":{overflow:"scroll"},".overflow-x-auto":{"overflow-x":"auto"},".overflow-y-auto":{"overflow-y":"auto"},".overflow-x-hidden":{"overflow-x":"hidden"},".overflow-y-hidden":{"overflow-y":"hidden"},".overflow-x-clip":{"overflow-x":"clip"},".overflow-y-clip":{"overflow-y":"clip"},".overflow-x-visible":{"overflow-x":"visible"},".overflow-y-visible":{"overflow-y":"visible"},".overflow-x-scroll":{"overflow-x":"scroll"},".overflow-y-scroll":{"overflow-y":"scroll"}})},overscrollBehavior:({addUtilities:i})=>{i({".overscroll-auto":{"overscroll-behavior":"auto"},".overscroll-contain":{"overscroll-behavior":"contain"},".overscroll-none":{"overscroll-behavior":"none"},".overscroll-y-auto":{"overscroll-behavior-y":"auto"},".overscroll-y-contain":{"overscroll-behavior-y":"contain"},".overscroll-y-none":{"overscroll-behavior-y":"none"},".overscroll-x-auto":{"overscroll-behavior-x":"auto"},".overscroll-x-contain":{"overscroll-behavior-x":"contain"},".overscroll-x-none":{"overscroll-behavior-x":"none"}})},scrollBehavior:({addUtilities:i})=>{i({".scroll-auto":{"scroll-behavior":"auto"},".scroll-smooth":{"scroll-behavior":"smooth"}})},textOverflow:({addUtilities:i})=>{i({".truncate":{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},".overflow-ellipsis":{"text-overflow":"ellipsis"},".text-ellipsis":{"text-overflow":"ellipsis"},".text-clip":{"text-overflow":"clip"}})},hyphens:({addUtilities:i})=>{i({".hyphens-none":{hyphens:"none"},".hyphens-manual":{hyphens:"manual"},".hyphens-auto":{hyphens:"auto"}})},whitespace:({addUtilities:i})=>{i({".whitespace-normal":{"white-space":"normal"},".whitespace-nowrap":{"white-space":"nowrap"},".whitespace-pre":{"white-space":"pre"},".whitespace-pre-line":{"white-space":"pre-line"},".whitespace-pre-wrap":{"white-space":"pre-wrap"},".whitespace-break-spaces":{"white-space":"break-spaces"}})},textWrap:({addUtilities:i})=>{i({".text-wrap":{"text-wrap":"wrap"},".text-nowrap":{"text-wrap":"nowrap"},".text-balance":{"text-wrap":"balance"},".text-pretty":{"text-wrap":"pretty"}})},wordBreak:({addUtilities:i})=>{i({".break-normal":{"overflow-wrap":"normal","word-break":"normal"},".break-words":{"overflow-wrap":"break-word"},".break-all":{"word-break":"break-all"},".break-keep":{"word-break":"keep-all"}})},borderRadius:P("borderRadius",[["rounded",["border-radius"]],[["rounded-s",["border-start-start-radius","border-end-start-radius"]],["rounded-e",["border-start-end-radius","border-end-end-radius"]],["rounded-t",["border-top-left-radius","border-top-right-radius"]],["rounded-r",["border-top-right-radius","border-bottom-right-radius"]],["rounded-b",["border-bottom-right-radius","border-bottom-left-radius"]],["rounded-l",["border-top-left-radius","border-bottom-left-radius"]]],[["rounded-ss",["border-start-start-radius"]],["rounded-se",["border-start-end-radius"]],["rounded-ee",["border-end-end-radius"]],["rounded-es",["border-end-start-radius"]],["rounded-tl",["border-top-left-radius"]],["rounded-tr",["border-top-right-radius"]],["rounded-br",["border-bottom-right-radius"]],["rounded-bl",["border-bottom-left-radius"]]]]),borderWidth:P("borderWidth",[["border",[["@defaults border-width",{}],"border-width"]],[["border-x",[["@defaults border-width",{}],"border-left-width","border-right-width"]],["border-y",[["@defaults border-width",{}],"border-top-width","border-bottom-width"]]],[["border-s",[["@defaults border-width",{}],"border-inline-start-width"]],["border-e",[["@defaults border-width",{}],"border-inline-end-width"]],["border-t",[["@defaults border-width",{}],"border-top-width"]],["border-r",[["@defaults border-width",{}],"border-right-width"]],["border-b",[["@defaults border-width",{}],"border-bottom-width"]],["border-l",[["@defaults border-width",{}],"border-left-width"]]]],{type:["line-width","length"]}),borderStyle:({addUtilities:i})=>{i({".border-solid":{"border-style":"solid"},".border-dashed":{"border-style":"dashed"},".border-dotted":{"border-style":"dotted"},".border-double":{"border-style":"double"},".border-hidden":{"border-style":"hidden"},".border-none":{"border-style":"none"}})},borderColor:({matchUtilities:i,theme:e,corePlugins:t})=>{i({border:r=>t("borderOpacity")?oe({color:r,property:"border-color",variable:"--tw-border-opacity"}):{"border-color":L(r)}},{values:(({DEFAULT:r,...n})=>n)(ne(e("borderColor"))),type:["color","any"]}),i({"border-x":r=>t("borderOpacity")?oe({color:r,property:["border-left-color","border-right-color"],variable:"--tw-border-opacity"}):{"border-left-color":L(r),"border-right-color":L(r)},"border-y":r=>t("borderOpacity")?oe({color:r,property:["border-top-color","border-bottom-color"],variable:"--tw-border-opacity"}):{"border-top-color":L(r),"border-bottom-color":L(r)}},{values:(({DEFAULT:r,...n})=>n)(ne(e("borderColor"))),type:["color","any"]}),i({"border-s":r=>t("borderOpacity")?oe({color:r,property:"border-inline-start-color",variable:"--tw-border-opacity"}):{"border-inline-start-color":L(r)},"border-e":r=>t("borderOpacity")?oe({color:r,property:"border-inline-end-color",variable:"--tw-border-opacity"}):{"border-inline-end-color":L(r)},"border-t":r=>t("borderOpacity")?oe({color:r,property:"border-top-color",variable:"--tw-border-opacity"}):{"border-top-color":L(r)},"border-r":r=>t("borderOpacity")?oe({color:r,property:"border-right-color",variable:"--tw-border-opacity"}):{"border-right-color":L(r)},"border-b":r=>t("borderOpacity")?oe({color:r,property:"border-bottom-color",variable:"--tw-border-opacity"}):{"border-bottom-color":L(r)},"border-l":r=>t("borderOpacity")?oe({color:r,property:"border-left-color",variable:"--tw-border-opacity"}):{"border-left-color":L(r)}},{values:(({DEFAULT:r,...n})=>n)(ne(e("borderColor"))),type:["color","any"]})},borderOpacity:P("borderOpacity",[["border-opacity",["--tw-border-opacity"]]]),backgroundColor:({matchUtilities:i,theme:e,corePlugins:t})=>{i({bg:r=>t("backgroundOpacity")?oe({color:r,property:"background-color",variable:"--tw-bg-opacity"}):{"background-color":L(r)}},{values:ne(e("backgroundColor")),type:["color","any"]})},backgroundOpacity:P("backgroundOpacity",[["bg-opacity",["--tw-bg-opacity"]]]),backgroundImage:P("backgroundImage",[["bg",["background-image"]]],{type:["lookup","image","url"]}),gradientColorStops:(()=>{function i(e){return qe(e,0,"rgb(255 255 255 / 0)")}return function({matchUtilities:e,theme:t,addDefaults:r}){r("gradient-color-stops",{"--tw-gradient-from-position":" ","--tw-gradient-via-position":" ","--tw-gradient-to-position":" "});let n={values:ne(t("gradientColorStops")),type:["color","any"]},a={values:t("gradientColorStopPositions"),type:["length","percentage"]};e({from:s=>{let o=i(s);return{"@defaults gradient-color-stops":{},"--tw-gradient-from":`${L(s)} var(--tw-gradient-from-position)`,"--tw-gradient-to":`${o} var(--tw-gradient-to-position)`,"--tw-gradient-stops":"var(--tw-gradient-from), var(--tw-gradient-to)"}}},n),e({from:s=>({"--tw-gradient-from-position":s})},a),e({via:s=>{let o=i(s);return{"@defaults gradient-color-stops":{},"--tw-gradient-to":`${o} var(--tw-gradient-to-position)`,"--tw-gradient-stops":`var(--tw-gradient-from), ${L(s)} var(--tw-gradient-via-position), var(--tw-gradient-to)`}}},n),e({via:s=>({"--tw-gradient-via-position":s})},a),e({to:s=>({"@defaults gradient-color-stops":{},"--tw-gradient-to":`${L(s)} var(--tw-gradient-to-position)`})},n),e({to:s=>({"--tw-gradient-to-position":s})},a)}})(),boxDecorationBreak:({addUtilities:i})=>{i({".decoration-slice":{"box-decoration-break":"slice"},".decoration-clone":{"box-decoration-break":"clone"},".box-decoration-slice":{"box-decoration-break":"slice"},".box-decoration-clone":{"box-decoration-break":"clone"}})},backgroundSize:P("backgroundSize",[["bg",["background-size"]]],{type:["lookup","length","percentage","size"]}),backgroundAttachment:({addUtilities:i})=>{i({".bg-fixed":{"background-attachment":"fixed"},".bg-local":{"background-attachment":"local"},".bg-scroll":{"background-attachment":"scroll"}})},backgroundClip:({addUtilities:i})=>{i({".bg-clip-border":{"background-clip":"border-box"},".bg-clip-padding":{"background-clip":"padding-box"},".bg-clip-content":{"background-clip":"content-box"},".bg-clip-text":{"background-clip":"text"}})},backgroundPosition:P("backgroundPosition",[["bg",["background-position"]]],{type:["lookup",["position",{preferOnConflict:!0}]]}),backgroundRepeat:({addUtilities:i})=>{i({".bg-repeat":{"background-repeat":"repeat"},".bg-no-repeat":{"background-repeat":"no-repeat"},".bg-repeat-x":{"background-repeat":"repeat-x"},".bg-repeat-y":{"background-repeat":"repeat-y"},".bg-repeat-round":{"background-repeat":"round"},".bg-repeat-space":{"background-repeat":"space"}})},backgroundOrigin:({addUtilities:i})=>{i({".bg-origin-border":{"background-origin":"border-box"},".bg-origin-padding":{"background-origin":"padding-box"},".bg-origin-content":{"background-origin":"content-box"}})},fill:({matchUtilities:i,theme:e})=>{i({fill:t=>({fill:L(t)})},{values:ne(e("fill")),type:["color","any"]})},stroke:({matchUtilities:i,theme:e})=>{i({stroke:t=>({stroke:L(t)})},{values:ne(e("stroke")),type:["color","url","any"]})},strokeWidth:P("strokeWidth",[["stroke",["stroke-width"]]],{type:["length","number","percentage"]}),objectFit:({addUtilities:i})=>{i({".object-contain":{"object-fit":"contain"},".object-cover":{"object-fit":"cover"},".object-fill":{"object-fit":"fill"},".object-none":{"object-fit":"none"},".object-scale-down":{"object-fit":"scale-down"}})},objectPosition:P("objectPosition",[["object",["object-position"]]]),padding:P("padding",[["p",["padding"]],[["px",["padding-left","padding-right"]],["py",["padding-top","padding-bottom"]]],[["ps",["padding-inline-start"]],["pe",["padding-inline-end"]],["pt",["padding-top"]],["pr",["padding-right"]],["pb",["padding-bottom"]],["pl",["padding-left"]]]]),textAlign:({addUtilities:i})=>{i({".text-left":{"text-align":"left"},".text-center":{"text-align":"center"},".text-right":{"text-align":"right"},".text-justify":{"text-align":"justify"},".text-start":{"text-align":"start"},".text-end":{"text-align":"end"}})},textIndent:P("textIndent",[["indent",["text-indent"]]],{supportsNegativeValues:!0}),verticalAlign:({addUtilities:i,matchUtilities:e})=>{i({".align-baseline":{"vertical-align":"baseline"},".align-top":{"vertical-align":"top"},".align-middle":{"vertical-align":"middle"},".align-bottom":{"vertical-align":"bottom"},".align-text-top":{"vertical-align":"text-top"},".align-text-bottom":{"vertical-align":"text-bottom"},".align-sub":{"vertical-align":"sub"},".align-super":{"vertical-align":"super"}}),e({align:t=>({"vertical-align":t})})},fontFamily:({matchUtilities:i,theme:e})=>{i({font:t=>{let[r,n={}]=Array.isArray(t)&&se(t[1])?t:[t],{fontFeatureSettings:a,fontVariationSettings:s}=n;return{"font-family":Array.isArray(r)?r.join(", "):r,...a===void 0?{}:{"font-feature-settings":a},...s===void 0?{}:{"font-variation-settings":s}}}},{values:e("fontFamily"),type:["lookup","generic-name","family-name"]})},fontSize:({matchUtilities:i,theme:e})=>{i({text:(t,{modifier:r})=>{let[n,a]=Array.isArray(t)?t:[t];if(r)return{"font-size":n,"line-height":r};let{lineHeight:s,letterSpacing:o,fontWeight:u}=se(a)?a:{lineHeight:a};return{"font-size":n,...s===void 0?{}:{"line-height":s},...o===void 0?{}:{"letter-spacing":o},...u===void 0?{}:{"font-weight":u}}}},{values:e("fontSize"),modifiers:e("lineHeight"),type:["absolute-size","relative-size","length","percentage"]})},fontWeight:P("fontWeight",[["font",["fontWeight"]]],{type:["lookup","number","any"]}),textTransform:({addUtilities:i})=>{i({".uppercase":{"text-transform":"uppercase"},".lowercase":{"text-transform":"lowercase"},".capitalize":{"text-transform":"capitalize"},".normal-case":{"text-transform":"none"}})},fontStyle:({addUtilities:i})=>{i({".italic":{"font-style":"italic"},".not-italic":{"font-style":"normal"}})},fontVariantNumeric:({addDefaults:i,addUtilities:e})=>{let t="var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)";i("font-variant-numeric",{"--tw-ordinal":" ","--tw-slashed-zero":" ","--tw-numeric-figure":" ","--tw-numeric-spacing":" ","--tw-numeric-fraction":" "}),e({".normal-nums":{"font-variant-numeric":"normal"},".ordinal":{"@defaults font-variant-numeric":{},"--tw-ordinal":"ordinal","font-variant-numeric":t},".slashed-zero":{"@defaults font-variant-numeric":{},"--tw-slashed-zero":"slashed-zero","font-variant-numeric":t},".lining-nums":{"@defaults font-variant-numeric":{},"--tw-numeric-figure":"lining-nums","font-variant-numeric":t},".oldstyle-nums":{"@defaults font-variant-numeric":{},"--tw-numeric-figure":"oldstyle-nums","font-variant-numeric":t},".proportional-nums":{"@defaults font-variant-numeric":{},"--tw-numeric-spacing":"proportional-nums","font-variant-numeric":t},".tabular-nums":{"@defaults font-variant-numeric":{},"--tw-numeric-spacing":"tabular-nums","font-variant-numeric":t},".diagonal-fractions":{"@defaults font-variant-numeric":{},"--tw-numeric-fraction":"diagonal-fractions","font-variant-numeric":t},".stacked-fractions":{"@defaults font-variant-numeric":{},"--tw-numeric-fraction":"stacked-fractions","font-variant-numeric":t}})},lineHeight:P("lineHeight",[["leading",["lineHeight"]]]),letterSpacing:P("letterSpacing",[["tracking",["letterSpacing"]]],{supportsNegativeValues:!0}),textColor:({matchUtilities:i,theme:e,corePlugins:t})=>{i({text:r=>t("textOpacity")?oe({color:r,property:"color",variable:"--tw-text-opacity"}):{color:L(r)}},{values:ne(e("textColor")),type:["color","any"]})},textOpacity:P("textOpacity",[["text-opacity",["--tw-text-opacity"]]]),textDecoration:({addUtilities:i})=>{i({".underline":{"text-decoration-line":"underline"},".overline":{"text-decoration-line":"overline"},".line-through":{"text-decoration-line":"line-through"},".no-underline":{"text-decoration-line":"none"}})},textDecorationColor:({matchUtilities:i,theme:e})=>{i({decoration:t=>({"text-decoration-color":L(t)})},{values:ne(e("textDecorationColor")),type:["color","any"]})},textDecorationStyle:({addUtilities:i})=>{i({".decoration-solid":{"text-decoration-style":"solid"},".decoration-double":{"text-decoration-style":"double"},".decoration-dotted":{"text-decoration-style":"dotted"},".decoration-dashed":{"text-decoration-style":"dashed"},".decoration-wavy":{"text-decoration-style":"wavy"}})},textDecorationThickness:P("textDecorationThickness",[["decoration",["text-decoration-thickness"]]],{type:["length","percentage"]}),textUnderlineOffset:P("textUnderlineOffset",[["underline-offset",["text-underline-offset"]]],{type:["length","percentage","any"]}),fontSmoothing:({addUtilities:i})=>{i({".antialiased":{"-webkit-font-smoothing":"antialiased","-moz-osx-font-smoothing":"grayscale"},".subpixel-antialiased":{"-webkit-font-smoothing":"auto","-moz-osx-font-smoothing":"auto"}})},placeholderColor:({matchUtilities:i,theme:e,corePlugins:t})=>{i({placeholder:r=>t("placeholderOpacity")?{"&::placeholder":oe({color:r,property:"color",variable:"--tw-placeholder-opacity"})}:{"&::placeholder":{color:L(r)}}},{values:ne(e("placeholderColor")),type:["color","any"]})},placeholderOpacity:({matchUtilities:i,theme:e})=>{i({"placeholder-opacity":t=>({["&::placeholder"]:{"--tw-placeholder-opacity":t}})},{values:e("placeholderOpacity")})},caretColor:({matchUtilities:i,theme:e})=>{i({caret:t=>({"caret-color":L(t)})},{values:ne(e("caretColor")),type:["color","any"]})},accentColor:({matchUtilities:i,theme:e})=>{i({accent:t=>({"accent-color":L(t)})},{values:ne(e("accentColor")),type:["color","any"]})},opacity:P("opacity",[["opacity",["opacity"]]]),backgroundBlendMode:({addUtilities:i})=>{i({".bg-blend-normal":{"background-blend-mode":"normal"},".bg-blend-multiply":{"background-blend-mode":"multiply"},".bg-blend-screen":{"background-blend-mode":"screen"},".bg-blend-overlay":{"background-blend-mode":"overlay"},".bg-blend-darken":{"background-blend-mode":"darken"},".bg-blend-lighten":{"background-blend-mode":"lighten"},".bg-blend-color-dodge":{"background-blend-mode":"color-dodge"},".bg-blend-color-burn":{"background-blend-mode":"color-burn"},".bg-blend-hard-light":{"background-blend-mode":"hard-light"},".bg-blend-soft-light":{"background-blend-mode":"soft-light"},".bg-blend-difference":{"background-blend-mode":"difference"},".bg-blend-exclusion":{"background-blend-mode":"exclusion"},".bg-blend-hue":{"background-blend-mode":"hue"},".bg-blend-saturation":{"background-blend-mode":"saturation"},".bg-blend-color":{"background-blend-mode":"color"},".bg-blend-luminosity":{"background-blend-mode":"luminosity"}})},mixBlendMode:({addUtilities:i})=>{i({".mix-blend-normal":{"mix-blend-mode":"normal"},".mix-blend-multiply":{"mix-blend-mode":"multiply"},".mix-blend-screen":{"mix-blend-mode":"screen"},".mix-blend-overlay":{"mix-blend-mode":"overlay"},".mix-blend-darken":{"mix-blend-mode":"darken"},".mix-blend-lighten":{"mix-blend-mode":"lighten"},".mix-blend-color-dodge":{"mix-blend-mode":"color-dodge"},".mix-blend-color-burn":{"mix-blend-mode":"color-burn"},".mix-blend-hard-light":{"mix-blend-mode":"hard-light"},".mix-blend-soft-light":{"mix-blend-mode":"soft-light"},".mix-blend-difference":{"mix-blend-mode":"difference"},".mix-blend-exclusion":{"mix-blend-mode":"exclusion"},".mix-blend-hue":{"mix-blend-mode":"hue"},".mix-blend-saturation":{"mix-blend-mode":"saturation"},".mix-blend-color":{"mix-blend-mode":"color"},".mix-blend-luminosity":{"mix-blend-mode":"luminosity"},".mix-blend-plus-darker":{"mix-blend-mode":"plus-darker"},".mix-blend-plus-lighter":{"mix-blend-mode":"plus-lighter"}})},boxShadow:(()=>{let i=Ge("boxShadow"),e=["var(--tw-ring-offset-shadow, 0 0 #0000)","var(--tw-ring-shadow, 0 0 #0000)","var(--tw-shadow)"].join(", ");return function({matchUtilities:t,addDefaults:r,theme:n}){r("box-shadow",{"--tw-ring-offset-shadow":"0 0 #0000","--tw-ring-shadow":"0 0 #0000","--tw-shadow":"0 0 #0000","--tw-shadow-colored":"0 0 #0000"}),t({shadow:a=>{a=i(a);let s=yi(a);for(let o of s)!o.valid||(o.color="var(--tw-shadow-color)");return{"@defaults box-shadow":{},"--tw-shadow":a==="none"?"0 0 #0000":a,"--tw-shadow-colored":a==="none"?"0 0 #0000":Tu(s),"box-shadow":e}}},{values:n("boxShadow"),type:["shadow"]})}})(),boxShadowColor:({matchUtilities:i,theme:e})=>{i({shadow:t=>({"--tw-shadow-color":L(t),"--tw-shadow":"var(--tw-shadow-colored)"})},{values:ne(e("boxShadowColor")),type:["color","any"]})},outlineStyle:({addUtilities:i})=>{i({".outline-none":{outline:"2px solid transparent","outline-offset":"2px"},".outline":{"outline-style":"solid"},".outline-dashed":{"outline-style":"dashed"},".outline-dotted":{"outline-style":"dotted"},".outline-double":{"outline-style":"double"}})},outlineWidth:P("outlineWidth",[["outline",["outline-width"]]],{type:["length","number","percentage"]}),outlineOffset:P("outlineOffset",[["outline-offset",["outline-offset"]]],{type:["length","number","percentage","any"],supportsNegativeValues:!0}),outlineColor:({matchUtilities:i,theme:e})=>{i({outline:t=>({"outline-color":L(t)})},{values:ne(e("outlineColor")),type:["color","any"]})},ringWidth:({matchUtilities:i,addDefaults:e,addUtilities:t,theme:r,config:n})=>{let a=(()=>{if(Z(n(),"respectDefaultRingColorOpacity"))return r("ringColor.DEFAULT");let s=r("ringOpacity.DEFAULT","0.5");return r("ringColor")?.DEFAULT?qe(r("ringColor")?.DEFAULT,s,`rgb(147 197 253 / ${s})`):`rgb(147 197 253 / ${s})`})();e("ring-width",{"--tw-ring-inset":" ","--tw-ring-offset-width":r("ringOffsetWidth.DEFAULT","0px"),"--tw-ring-offset-color":r("ringOffsetColor.DEFAULT","#fff"),"--tw-ring-color":a,"--tw-ring-offset-shadow":"0 0 #0000","--tw-ring-shadow":"0 0 #0000","--tw-shadow":"0 0 #0000","--tw-shadow-colored":"0 0 #0000"}),i({ring:s=>({"@defaults ring-width":{},"--tw-ring-offset-shadow":"var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)","--tw-ring-shadow":`var(--tw-ring-inset) 0 0 0 calc(${s} + var(--tw-ring-offset-width)) var(--tw-ring-color)`,"box-shadow":["var(--tw-ring-offset-shadow)","var(--tw-ring-shadow)","var(--tw-shadow, 0 0 #0000)"].join(", ")})},{values:r("ringWidth"),type:"length"}),t({".ring-inset":{"@defaults ring-width":{},"--tw-ring-inset":"inset"}})},ringColor:({matchUtilities:i,theme:e,corePlugins:t})=>{i({ring:r=>t("ringOpacity")?oe({color:r,property:"--tw-ring-color",variable:"--tw-ring-opacity"}):{"--tw-ring-color":L(r)}},{values:Object.fromEntries(Object.entries(ne(e("ringColor"))).filter(([r])=>r!=="DEFAULT")),type:["color","any"]})},ringOpacity:i=>{let{config:e}=i;return P("ringOpacity",[["ring-opacity",["--tw-ring-opacity"]]],{filterDefault:!Z(e(),"respectDefaultRingColorOpacity")})(i)},ringOffsetWidth:P("ringOffsetWidth",[["ring-offset",["--tw-ring-offset-width"]]],{type:"length"}),ringOffsetColor:({matchUtilities:i,theme:e})=>{i({"ring-offset":t=>({"--tw-ring-offset-color":L(t)})},{values:ne(e("ringOffsetColor")),type:["color","any"]})},blur:({matchUtilities:i,theme:e})=>{i({blur:t=>({"--tw-blur":t.trim()===""?" ":`blur(${t})`,"@defaults filter":{},filter:Fe})},{values:e("blur")})},brightness:({matchUtilities:i,theme:e})=>{i({brightness:t=>({"--tw-brightness":`brightness(${t})`,"@defaults filter":{},filter:Fe})},{values:e("brightness")})},contrast:({matchUtilities:i,theme:e})=>{i({contrast:t=>({"--tw-contrast":`contrast(${t})`,"@defaults filter":{},filter:Fe})},{values:e("contrast")})},dropShadow:({matchUtilities:i,theme:e})=>{i({"drop-shadow":t=>({"--tw-drop-shadow":Array.isArray(t)?t.map(r=>`drop-shadow(${r})`).join(" "):`drop-shadow(${t})`,"@defaults filter":{},filter:Fe})},{values:e("dropShadow")})},grayscale:({matchUtilities:i,theme:e})=>{i({grayscale:t=>({"--tw-grayscale":`grayscale(${t})`,"@defaults filter":{},filter:Fe})},{values:e("grayscale")})},hueRotate:({matchUtilities:i,theme:e})=>{i({"hue-rotate":t=>({"--tw-hue-rotate":`hue-rotate(${t})`,"@defaults filter":{},filter:Fe})},{values:e("hueRotate"),supportsNegativeValues:!0})},invert:({matchUtilities:i,theme:e})=>{i({invert:t=>({"--tw-invert":`invert(${t})`,"@defaults filter":{},filter:Fe})},{values:e("invert")})},saturate:({matchUtilities:i,theme:e})=>{i({saturate:t=>({"--tw-saturate":`saturate(${t})`,"@defaults filter":{},filter:Fe})},{values:e("saturate")})},sepia:({matchUtilities:i,theme:e})=>{i({sepia:t=>({"--tw-sepia":`sepia(${t})`,"@defaults filter":{},filter:Fe})},{values:e("sepia")})},filter:({addDefaults:i,addUtilities:e})=>{i("filter",{"--tw-blur":" ","--tw-brightness":" ","--tw-contrast":" ","--tw-grayscale":" ","--tw-hue-rotate":" ","--tw-invert":" ","--tw-saturate":" ","--tw-sepia":" ","--tw-drop-shadow":" "}),e({".filter":{"@defaults filter":{},filter:Fe},".filter-none":{filter:"none"}})},backdropBlur:({matchUtilities:i,theme:e})=>{i({"backdrop-blur":t=>({"--tw-backdrop-blur":t.trim()===""?" ":`blur(${t})`,"@defaults backdrop-filter":{},"-webkit-backdrop-filter":K,"backdrop-filter":K})},{values:e("backdropBlur")})},backdropBrightness:({matchUtilities:i,theme:e})=>{i({"backdrop-brightness":t=>({"--tw-backdrop-brightness":`brightness(${t})`,"@defaults backdrop-filter":{},"-webkit-backdrop-filter":K,"backdrop-filter":K})},{values:e("backdropBrightness")})},backdropContrast:({matchUtilities:i,theme:e})=>{i({"backdrop-contrast":t=>({"--tw-backdrop-contrast":`contrast(${t})`,"@defaults backdrop-filter":{},"-webkit-backdrop-filter":K,"backdrop-filter":K})},{values:e("backdropContrast")})},backdropGrayscale:({matchUtilities:i,theme:e})=>{i({"backdrop-grayscale":t=>({"--tw-backdrop-grayscale":`grayscale(${t})`,"@defaults backdrop-filter":{},"-webkit-backdrop-filter":K,"backdrop-filter":K})},{values:e("backdropGrayscale")})},backdropHueRotate:({matchUtilities:i,theme:e})=>{i({"backdrop-hue-rotate":t=>({"--tw-backdrop-hue-rotate":`hue-rotate(${t})`,"@defaults backdrop-filter":{},"-webkit-backdrop-filter":K,"backdrop-filter":K})},{values:e("backdropHueRotate"),supportsNegativeValues:!0})},backdropInvert:({matchUtilities:i,theme:e})=>{i({"backdrop-invert":t=>({"--tw-backdrop-invert":`invert(${t})`,"@defaults backdrop-filter":{},"-webkit-backdrop-filter":K,"backdrop-filter":K})},{values:e("backdropInvert")})},backdropOpacity:({matchUtilities:i,theme:e})=>{i({"backdrop-opacity":t=>({"--tw-backdrop-opacity":`opacity(${t})`,"@defaults backdrop-filter":{},"-webkit-backdrop-filter":K,"backdrop-filter":K})},{values:e("backdropOpacity")})},backdropSaturate:({matchUtilities:i,theme:e})=>{i({"backdrop-saturate":t=>({"--tw-backdrop-saturate":`saturate(${t})`,"@defaults backdrop-filter":{},"-webkit-backdrop-filter":K,"backdrop-filter":K})},{values:e("backdropSaturate")})},backdropSepia:({matchUtilities:i,theme:e})=>{i({"backdrop-sepia":t=>({"--tw-backdrop-sepia":`sepia(${t})`,"@defaults backdrop-filter":{},"-webkit-backdrop-filter":K,"backdrop-filter":K})},{values:e("backdropSepia")})},backdropFilter:({addDefaults:i,addUtilities:e})=>{i("backdrop-filter",{"--tw-backdrop-blur":" ","--tw-backdrop-brightness":" ","--tw-backdrop-contrast":" ","--tw-backdrop-grayscale":" ","--tw-backdrop-hue-rotate":" ","--tw-backdrop-invert":" ","--tw-backdrop-opacity":" ","--tw-backdrop-saturate":" ","--tw-backdrop-sepia":" "}),e({".backdrop-filter":{"@defaults backdrop-filter":{},"-webkit-backdrop-filter":K,"backdrop-filter":K},".backdrop-filter-none":{"-webkit-backdrop-filter":"none","backdrop-filter":"none"}})},transitionProperty:({matchUtilities:i,theme:e})=>{let t=e("transitionTimingFunction.DEFAULT"),r=e("transitionDuration.DEFAULT");i({transition:n=>({"transition-property":n,...n==="none"?{}:{"transition-timing-function":t,"transition-duration":r}})},{values:e("transitionProperty")})},transitionDelay:P("transitionDelay",[["delay",["transitionDelay"]]]),transitionDuration:P("transitionDuration",[["duration",["transitionDuration"]]],{filterDefault:!0}),transitionTimingFunction:P("transitionTimingFunction",[["ease",["transitionTimingFunction"]]],{filterDefault:!0}),willChange:P("willChange",[["will-change",["will-change"]]]),contain:({addDefaults:i,addUtilities:e})=>{let t="var(--tw-contain-size) var(--tw-contain-layout) var(--tw-contain-paint) var(--tw-contain-style)";i("contain",{"--tw-contain-size":" ","--tw-contain-layout":" ","--tw-contain-paint":" ","--tw-contain-style":" "}),e({".contain-none":{contain:"none"},".contain-content":{contain:"content"},".contain-strict":{contain:"strict"},".contain-size":{"@defaults contain":{},"--tw-contain-size":"size",contain:t},".contain-inline-size":{"@defaults contain":{},"--tw-contain-size":"inline-size",contain:t},".contain-layout":{"@defaults contain":{},"--tw-contain-layout":"layout",contain:t},".contain-paint":{"@defaults contain":{},"--tw-contain-paint":"paint",contain:t},".contain-style":{"@defaults contain":{},"--tw-contain-style":"style",contain:t}})},content:P("content",[["content",["--tw-content",["content","var(--tw-content)"]]]]),forcedColorAdjust:({addUtilities:i})=>{i({".forced-color-adjust-auto":{"forced-color-adjust":"auto"},".forced-color-adjust-none":{"forced-color-adjust":"none"}})}}});function KS(i){if(i===void 0)return!1;if(i==="true"||i==="1")return!0;if(i==="false"||i==="0")return!1;if(i==="*")return!0;let e=i.split(",").map(t=>t.split(":")[0]);return e.includes("-tailwindcss")?!1:!!e.includes("tailwindcss")}var De,gd,yd,gn,Ga,He,Kr,lt=C(()=>{l();De=typeof h!="undefined"?{NODE_ENV:"production",DEBUG:KS(h.env.DEBUG)}:{NODE_ENV:"production",DEBUG:!1},gd=new Map,yd=new Map,gn=new Map,Ga=new Map,He=new String("*"),Kr=Symbol("__NONE__")});function Lt(i){let e=[],t=!1;for(let r=0;r0)}var wd,bd,ZS,Ha=C(()=>{l();wd=new Map([["{","}"],["[","]"],["(",")"]]),bd=new Map(Array.from(wd.entries()).map(([i,e])=>[e,i])),ZS=new Set(['"',"'","`"])});function $t(i){let[e]=vd(i);return e.forEach(([t,r])=>t.removeChild(r)),i.nodes.push(...e.map(([,t])=>t)),i}function vd(i){let e=[],t=null;for(let r of i.nodes)if(r.type==="combinator")e=e.filter(([,n])=>Qa(n).includes("jumpable")),t=null;else if(r.type==="pseudo"){eC(r)?(t=r,e.push([i,r,null])):t&&tC(r,t)?e.push([i,r,t]):t=null;for(let n of r.nodes??[]){let[a,s]=vd(n);t=s||t,e.push(...a)}}return[e,t]}function xd(i){return i.value.startsWith("::")||Ya[i.value]!==void 0}function eC(i){return xd(i)&&Qa(i).includes("terminal")}function tC(i,e){return i.type!=="pseudo"||xd(i)?!1:Qa(e).includes("actionable")}function Qa(i){return Ya[i.value]??Ya.__default__}var Ya,yn=C(()=>{l();Ya={"::after":["terminal","jumpable"],"::backdrop":["terminal","jumpable"],"::before":["terminal","jumpable"],"::cue":["terminal"],"::cue-region":["terminal"],"::first-letter":["terminal","jumpable"],"::first-line":["terminal","jumpable"],"::grammar-error":["terminal"],"::marker":["terminal","jumpable"],"::part":["terminal","actionable"],"::placeholder":["terminal","jumpable"],"::selection":["terminal","jumpable"],"::slotted":["terminal"],"::spelling-error":["terminal"],"::target-text":["terminal"],"::file-selector-button":["terminal","actionable"],"::deep":["actionable"],"::v-deep":["actionable"],"::ng-deep":["actionable"],":after":["terminal","jumpable"],":before":["terminal","jumpable"],":first-letter":["terminal","jumpable"],":first-line":["terminal","jumpable"],":where":[],":is":[],":has":[],__default__:["terminal","actionable"]}});function jt(i,{context:e,candidate:t}){let r=e?.tailwindConfig.prefix??"",n=i.map(s=>{let o=(0,Ne.default)().astSync(s.format);return{...s,ast:s.respectPrefix?Ft(r,o):o}}),a=Ne.default.root({nodes:[Ne.default.selector({nodes:[Ne.default.className({value:pe(t)})]})]});for(let{ast:s}of n)[a,s]=iC(a,s),s.walkNesting(o=>o.replaceWith(...a.nodes[0].nodes)),a=s;return a}function Sd(i){let e=[];for(;i.prev()&&i.prev().type!=="combinator";)i=i.prev();for(;i&&i.type!=="combinator";)e.push(i),i=i.next();return e}function rC(i){return i.sort((e,t)=>e.type==="tag"&&t.type==="class"?-1:e.type==="class"&&t.type==="tag"?1:e.type==="class"&&t.type==="pseudo"&&t.value.startsWith("::")?-1:e.type==="pseudo"&&e.value.startsWith("::")&&t.type==="class"?1:i.index(e)-i.index(t)),i}function Xa(i,e){let t=!1;i.walk(r=>{if(r.type==="class"&&r.value===e)return t=!0,!1}),t||i.remove()}function wn(i,e,{context:t,candidate:r,base:n}){let a=t?.tailwindConfig?.separator??":";n=n??ie(r,a).pop();let s=(0,Ne.default)().astSync(i);if(s.walkClasses(f=>{f.raws&&f.value.includes(n)&&(f.raws.value=pe((0,kd.default)(f.raws.value)))}),s.each(f=>Xa(f,n)),s.length===0)return null;let o=Array.isArray(e)?jt(e,{context:t,candidate:r}):e;if(o===null)return s.toString();let u=Ne.default.comment({value:"/*__simple__*/"}),c=Ne.default.comment({value:"/*__simple__*/"});return s.walkClasses(f=>{if(f.value!==n)return;let d=f.parent,p=o.nodes[0].nodes;if(d.nodes.length===1){f.replaceWith(...p);return}let m=Sd(f);d.insertBefore(m[0],u),d.insertAfter(m[m.length-1],c);for(let x of p)d.insertBefore(m[0],x.clone());f.remove(),m=Sd(u);let b=d.index(u);d.nodes.splice(b,m.length,...rC(Ne.default.selector({nodes:m})).nodes),u.remove(),c.remove()}),s.walkPseudos(f=>{f.value===Ja&&f.replaceWith(f.nodes)}),s.each(f=>$t(f)),s.toString()}function iC(i,e){let t=[];return i.walkPseudos(r=>{r.value===Ja&&t.push({pseudo:r,value:r.nodes[0].toString()})}),e.walkPseudos(r=>{if(r.value!==Ja)return;let n=r.nodes[0].toString(),a=t.find(c=>c.value===n);if(!a)return;let s=[],o=r.next();for(;o&&o.type!=="combinator";)s.push(o),o=o.next();let u=o;a.pseudo.parent.insertAfter(a.pseudo,Ne.default.selector({nodes:s.map(c=>c.clone())})),r.remove(),s.forEach(c=>c.remove()),u&&u.type==="combinator"&&u.remove()}),[i,e]}var Ne,kd,Ja,Ka=C(()=>{l();Ne=X(Be()),kd=X(Yi());Nt();un();yn();yt();Ja=":merge"});function bn(i,e){let t=(0,Za.default)().astSync(i);return t.each(r=>{r.nodes[0].type==="pseudo"&&r.nodes[0].value===":is"&&r.nodes.every(a=>a.type!=="combinator")||(r.nodes=[Za.default.pseudo({value:":is",nodes:[r.clone()]})]),$t(r)}),`${e} ${t.toString()}`}var Za,eo=C(()=>{l();Za=X(Be());yn()});function to(i){return nC.transformSync(i)}function*sC(i){let e=1/0;for(;e>=0;){let t,r=!1;if(e===1/0&&i.endsWith("]")){let s=i.indexOf("[");i[s-1]==="-"?t=s-1:i[s-1]==="/"?(t=s-1,r=!0):t=-1}else e===1/0&&i.includes("/")?(t=i.lastIndexOf("/"),r=!0):t=i.lastIndexOf("-",e);if(t<0)break;let n=i.slice(0,t),a=i.slice(r?t:t+1);e=t-1,!(n===""||a==="/")&&(yield[n,a])}}function aC(i,e){if(i.length===0||e.tailwindConfig.prefix==="")return i;for(let t of i){let[r]=t;if(r.options.respectPrefix){let n=z.root({nodes:[t[1].clone()]}),a=t[1].raws.tailwind.classCandidate;n.walkRules(s=>{let o=a.startsWith("-");s.selector=Ft(e.tailwindConfig.prefix,s.selector,o)}),t[1]=n.nodes[0]}}return i}function oC(i,e){if(i.length===0)return i;let t=[];function r(n){return n.parent&&n.parent.type==="atrule"&&n.parent.name==="keyframes"}for(let[n,a]of i){let s=z.root({nodes:[a.clone()]});s.walkRules(o=>{if(r(o))return;let u=(0,vn.default)().astSync(o.selector);u.each(c=>Xa(c,e)),ju(u,c=>c===e?`!${c}`:c),o.selector=u.toString(),o.walkDecls(c=>c.important=!0)}),t.push([{...n,important:!0},s.nodes[0]])}return t}function lC(i,e,t){if(e.length===0)return e;let r={modifier:null,value:Kr};{let[n,...a]=ie(i,"/");if(a.length>1&&(n=n+"/"+a.slice(0,-1).join("/"),a=a.slice(-1)),a.length&&!t.variantMap.has(i)&&(i=n,r.modifier=a[0],!Z(t.tailwindConfig,"generalizedModifiers")))return[]}if(i.endsWith("]")&&!i.startsWith("[")){let n=/(.)(-?)\[(.*)\]/g.exec(i);if(n){let[,a,s,o]=n;if(a==="@"&&s==="-")return[];if(a!=="@"&&s==="")return[];i=i.replace(`${s}[${o}]`,""),r.value=o}}if(no(i)&&!t.variantMap.has(i)){let n=t.offsets.recordVariant(i),a=N(i.slice(1,-1)),s=ie(a,",");if(s.length>1)return[];if(!s.every(Cn))return[];let o=s.map((u,c)=>[t.offsets.applyParallelOffset(n,c),Zr(u.trim())]);t.variantMap.set(i,o)}if(t.variantMap.has(i)){let n=no(i),a=t.variantOptions.get(i)?.[ot]??{},s=t.variantMap.get(i).slice(),o=[],u=(()=>!(n||a.respectPrefix===!1))();for(let[c,f]of e){if(c.layer==="user")continue;let d=z.root({nodes:[f.clone()]});for(let[p,m,b]of s){let w=function(){x.raws.neededBackup||(x.raws.neededBackup=!0,x.walkRules(E=>E.raws.originalSelector=E.selector))},k=function(E){return w(),x.each(I=>{I.type==="rule"&&(I.selectors=I.selectors.map(q=>E({get className(){return to(q)},selector:q})))}),x},x=(b??d).clone(),y=[],S=m({get container(){return w(),x},separator:t.tailwindConfig.separator,modifySelectors:k,wrap(E){let I=x.nodes;x.removeAll(),E.append(I),x.append(E)},format(E){y.push({format:E,respectPrefix:u})},args:r});if(Array.isArray(S)){for(let[E,I]of S.entries())s.push([t.offsets.applyParallelOffset(p,E),I,x.clone()]);continue}if(typeof S=="string"&&y.push({format:S,respectPrefix:u}),S===null)continue;x.raws.neededBackup&&(delete x.raws.neededBackup,x.walkRules(E=>{let I=E.raws.originalSelector;if(!I||(delete E.raws.originalSelector,I===E.selector))return;let q=E.selector,R=(0,vn.default)(J=>{J.walkClasses(fe=>{fe.value=`${i}${t.tailwindConfig.separator}${fe.value}`})}).processSync(I);y.push({format:q.replace(R,"&"),respectPrefix:u}),E.selector=I})),x.nodes[0].raws.tailwind={...x.nodes[0].raws.tailwind,parentLayer:c.layer};let _=[{...c,sort:t.offsets.applyVariantOffset(c.sort,p,Object.assign(r,t.variantOptions.get(i))),collectedFormats:(c.collectedFormats??[]).concat(y)},x.nodes[0]];o.push(_)}}return o}return[]}function ro(i,e,t={}){return!se(i)&&!Array.isArray(i)?[[i],t]:Array.isArray(i)?ro(i[0],e,i[1]):(e.has(i)||e.set(i,Bt(i)),[e.get(i),t])}function fC(i){return uC.test(i)}function cC(i){if(!i.includes("://"))return!1;try{let e=new URL(i);return e.scheme!==""&&e.host!==""}catch(e){return!1}}function Cd(i){let e=!0;return i.walkDecls(t=>{if(!Ad(t.prop,t.value))return e=!1,!1}),e}function Ad(i,e){if(cC(`${i}:${e}`))return!1;try{return z.parse(`a{${i}:${e}}`).toResult(),!0}catch(t){return!1}}function pC(i,e){let[,t,r]=i.match(/^\[([a-zA-Z0-9-_]+):(\S+)\]$/)??[];if(r===void 0||!fC(t)||!Lt(r))return null;let n=N(r,{property:t});return Ad(t,n)?[[{sort:e.offsets.arbitraryProperty(i),layer:"utilities",options:{respectImportant:!0}},()=>({[Va(i)]:{[t]:n}})]]:null}function*dC(i,e){e.candidateRuleMap.has(i)&&(yield[e.candidateRuleMap.get(i),"DEFAULT"]),yield*function*(o){o!==null&&(yield[o,"DEFAULT"])}(pC(i,e));let t=i,r=!1,n=e.tailwindConfig.prefix,a=n.length,s=t.startsWith(n)||t.startsWith(`-${n}`);t[a]==="-"&&s&&(r=!0,t=n+t.slice(a+1)),r&&e.candidateRuleMap.has(t)&&(yield[e.candidateRuleMap.get(t),"-DEFAULT"]);for(let[o,u]of sC(t))e.candidateRuleMap.has(o)&&(yield[e.candidateRuleMap.get(o),r?`-${u}`:u])}function hC(i,e){return i===He?[He]:ie(i,e)}function*mC(i,e){for(let t of i)t[1].raws.tailwind={...t[1].raws.tailwind,classCandidate:e,preserveSource:t[0].options?.preserveSource??!1},yield t}function*io(i,e){let t=e.tailwindConfig.separator,[r,...n]=hC(i,t).reverse(),a=!1;r.startsWith("!")&&(a=!0,r=r.slice(1));for(let s of dC(r,e)){let o=[],u=new Map,[c,f]=s,d=c.length===1;for(let[p,m]of c){let b=[];if(typeof m=="function")for(let x of[].concat(m(f,{isOnlyPlugin:d}))){let[y,w]=ro(x,e.postCssNodeCache);for(let k of y)b.push([{...p,options:{...p.options,...w}},k])}else if(f==="DEFAULT"||f==="-DEFAULT"){let x=m,[y,w]=ro(x,e.postCssNodeCache);for(let k of y)b.push([{...p,options:{...p.options,...w}},k])}if(b.length>0){let x=Array.from(fs(p.options?.types??[],f,p.options??{},e.tailwindConfig)).map(([y,w])=>w);x.length>0&&u.set(b,x),o.push(b)}}if(no(f)){if(o.length>1){let b=function(y){return y.length===1?y[0]:y.find(w=>{let k=u.get(w);return w.some(([{options:S},_])=>Cd(_)?S.types.some(({type:E,preferOnConflict:I})=>k.includes(E)&&I):!1)})},[p,m]=o.reduce((y,w)=>(w.some(([{options:S}])=>S.types.some(({type:_})=>_==="any"))?y[0].push(w):y[1].push(w),y),[[],[]]),x=b(m)??b(p);if(x)o=[x];else{let y=o.map(k=>new Set([...u.get(k)??[]]));for(let k of y)for(let S of k){let _=!1;for(let E of y)k!==E&&E.has(S)&&(E.delete(S),_=!0);_&&k.delete(S)}let w=[];for(let[k,S]of y.entries())for(let _ of S){let E=o[k].map(([,I])=>I).flat().map(I=>I.toString().split(` `).slice(1,-1).map(q=>q.trim()).map(q=>` ${q}`).join(` `)).join(` `);w.push(` Use \`${i.replace("[",`[${_}:`)}\` for \`${E.trim()}\``);break}F.warn([`The class \`${i}\` is ambiguous and matches multiple utilities.`,...w,`If this is content and not a class, replace it with \`${i.replace("[","[").replace("]","]")}\` to silence this warning.`]);continue}}o=o.map(p=>p.filter(m=>Cd(m[1])))}o=o.flat(),o=Array.from(mC(o,r)),o=aC(o,e),a&&(o=oC(o,r));for(let p of n)o=lC(p,o,e);for(let p of o)p[1].raws.tailwind={...p[1].raws.tailwind,candidate:i},p=gC(p,{context:e,candidate:i}),p!==null&&(yield p)}}function gC(i,{context:e,candidate:t}){if(!i[0].collectedFormats)return i;let r=!0,n;try{n=jt(i[0].collectedFormats,{context:e,candidate:t})}catch{return null}let a=z.root({nodes:[i[1].clone()]});return a.walkRules(s=>{if(!xn(s))try{let o=wn(s.selector,n,{candidate:t,context:e});if(o===null){s.remove();return}s.selector=o}catch{return r=!1,!1}}),!r||a.nodes.length===0?null:(i[1]=a.nodes[0],i)}function xn(i){return i.parent&&i.parent.type==="atrule"&&i.parent.name==="keyframes"}function yC(i){if(i===!0)return e=>{xn(e)||e.walkDecls(t=>{t.parent.type==="rule"&&!xn(t.parent)&&(t.important=!0)})};if(typeof i=="string")return e=>{xn(e)||(e.selectors=e.selectors.map(t=>bn(t,i)))}}function kn(i,e,t=!1){let r=[],n=yC(e.tailwindConfig.important);for(let a of i){if(e.notClassCache.has(a))continue;if(e.candidateRuleCache.has(a)){r=r.concat(Array.from(e.candidateRuleCache.get(a)));continue}let s=Array.from(io(a,e));if(s.length===0){e.notClassCache.add(a);continue}e.classCache.set(a,s);let o=e.candidateRuleCache.get(a)??new Set;e.candidateRuleCache.set(a,o);for(let u of s){let[{sort:c,options:f},d]=u;if(f.respectImportant&&n){let m=z.root({nodes:[d.clone()]});m.walkRules(n),d=m.nodes[0]}let p=[c,t?d.clone():d];o.add(p),e.ruleCache.add(p),r.push(p)}}return r}function no(i){return i.startsWith("[")&&i.endsWith("]")}var vn,nC,uC,Sn=C(()=>{l();nt();vn=X(Be());za();Ct();un();pr();Ee();lt();Ka();Ua();cr();Xr();Ha();yt();ze();eo();nC=(0,vn.default)(i=>i.first.filter(({type:e})=>e==="class").pop().value);uC=/^[a-z_-]/});var _d,Od=C(()=>{l();_d={}});function wC(i){try{return _d.createHash("md5").update(i,"utf-8").digest("binary")}catch(e){return""}}function Ed(i,e){let t=e.toString();if(!t.includes("@tailwind"))return!1;let r=Ga.get(i),n=wC(t),a=r!==n;return Ga.set(i,n),a}var Td=C(()=>{l();Od();lt()});function An(i){return(i>0n)-(i<0n)}var Pd=C(()=>{l()});function Dd(i,e){let t=0n,r=0n;for(let[n,a]of e)i&n&&(t=t|n,r=r|a);return i&~t|r}var Id=C(()=>{l()});function qd(i){let e=null;for(let t of i)e=e??t,e=e>t?e:t;return e}function bC(i,e){let t=i.length,r=e.length,n=t{l();Pd();Id();so=class{constructor(){this.offsets={defaults:0n,base:0n,components:0n,utilities:0n,variants:0n,user:0n},this.layerPositions={defaults:0n,base:1n,components:2n,utilities:3n,user:4n,variants:5n},this.reservedVariantBits=0n,this.variantOffsets=new Map}create(e){return{layer:e,parentLayer:e,arbitrary:0n,variants:0n,parallelIndex:0n,index:this.offsets[e]++,propertyOffset:0n,property:"",options:[]}}arbitraryProperty(e){return{...this.create("utilities"),arbitrary:1n,property:e}}forVariant(e,t=0){let r=this.variantOffsets.get(e);if(r===void 0)throw new Error(`Cannot find offset for unknown variant ${e}`);return{...this.create("variants"),variants:r<n.startsWith("[")).sort(([n],[a])=>bC(n,a)),t=e.map(([,n])=>n).sort((n,a)=>An(n-a));return e.map(([,n],a)=>[n,t[a]]).filter(([n,a])=>n!==a)}remapArbitraryVariantOffsets(e){let t=this.recalculateVariantOffsets();return t.length===0?e:e.map(r=>{let[n,a]=r;return n={...n,variants:Dd(n.variants,t)},[n,a]})}sortArbitraryProperties(e){let t=new Set;for(let[s]of e)s.arbitrary===1n&&t.add(s.property);if(t.size===0)return e;let r=Array.from(t).sort(),n=new Map,a=1n;for(let s of r)n.set(s,a++);return e.map(s=>{let[o,u]=s;return o={...o,propertyOffset:n.get(o.property)??0n},[o,u]})}sort(e){return e=this.remapArbitraryVariantOffsets(e),e=this.sortArbitraryProperties(e),e.sort(([t],[r])=>An(this.compare(t,r)))}}});function uo(i,e){let t=i.tailwindConfig.prefix;return typeof t=="function"?t(e):t+e}function Bd({type:i="any",...e}){let t=[].concat(i);return{...e,types:t.map(r=>Array.isArray(r)?{type:r[0],...r[1]}:{type:r,preferOnConflict:!1})}}function vC(i){let e=[],t="",r=0;for(let n=0;n0&&e.push(t.trim()),e=e.filter(n=>n!==""),e}function xC(i,e,{before:t=[]}={}){if(t=[].concat(t),t.length<=0){i.push(e);return}let r=i.length-1;for(let n of t){let a=i.indexOf(n);a!==-1&&(r=Math.min(r,a))}i.splice(r,0,e)}function Fd(i){return Array.isArray(i)?i.flatMap(e=>!Array.isArray(e)&&!se(e)?e:Bt(e)):Fd([i])}function kC(i,e){return(0,ao.default)(r=>{let n=[];return e&&e(r),r.walkClasses(a=>{n.push(a.value)}),n}).transformSync(i)}function SC(i){i.walkPseudos(e=>{e.value===":not"&&e.remove()})}function CC(i,e={containsNonOnDemandable:!1},t=0){let r=[],n=[];i.type==="rule"?n.push(...i.selectors):i.type==="atrule"&&i.walkRules(a=>n.push(...a.selectors));for(let a of n){let s=kC(a,SC);s.length===0&&(e.containsNonOnDemandable=!0);for(let o of s)r.push(o)}return t===0?[e.containsNonOnDemandable||r.length===0,r]:r}function _n(i){return Fd(i).flatMap(e=>{let t=new Map,[r,n]=CC(e);return r&&n.unshift(He),n.map(a=>(t.has(e)||t.set(e,e),[a,t.get(e)]))})}function Cn(i){return i.startsWith("@")||i.includes("&")}function Zr(i){i=i.replace(/\n+/g,"").replace(/\s{1,}/g," ").trim();let e=vC(i).map(t=>{if(!t.startsWith("@"))return({format:a})=>a(t);let[,r,n]=/@(\S*)( .+|[({].*)?/g.exec(t);return({wrap:a})=>a(z.atRule({name:r,params:n?.trim()??""}))}).reverse();return t=>{for(let r of e)r(t)}}function AC(i,e,{variantList:t,variantMap:r,offsets:n,classList:a}){function s(p,m){return p?(0,Md.default)(i,p,m):i}function o(p){return Ft(i.prefix,p)}function u(p,m){return p===He?He:m.respectPrefix?e.tailwindConfig.prefix+p:p}function c(p,m,b={}){let x=Ke(p),y=s(["theme",...x],m);return Ge(x[0])(y,b)}let f=0,d={postcss:z,prefix:o,e:pe,config:s,theme:c,corePlugins:p=>Array.isArray(i.corePlugins)?i.corePlugins.includes(p):s(["corePlugins",p],!0),variants:()=>[],addBase(p){for(let[m,b]of _n(p)){let x=u(m,{}),y=n.create("base");e.candidateRuleMap.has(x)||e.candidateRuleMap.set(x,[]),e.candidateRuleMap.get(x).push([{sort:y,layer:"base"},b])}},addDefaults(p,m){let b={[`@defaults ${p}`]:m};for(let[x,y]of _n(b)){let w=u(x,{});e.candidateRuleMap.has(w)||e.candidateRuleMap.set(w,[]),e.candidateRuleMap.get(w).push([{sort:n.create("defaults"),layer:"defaults"},y])}},addComponents(p,m){m=Object.assign({},{preserveSource:!1,respectPrefix:!0,respectImportant:!1},Array.isArray(m)?{}:m);for(let[x,y]of _n(p)){let w=u(x,m);a.add(w),e.candidateRuleMap.has(w)||e.candidateRuleMap.set(w,[]),e.candidateRuleMap.get(w).push([{sort:n.create("components"),layer:"components",options:m},y])}},addUtilities(p,m){m=Object.assign({},{preserveSource:!1,respectPrefix:!0,respectImportant:!0},Array.isArray(m)?{}:m);for(let[x,y]of _n(p)){let w=u(x,m);a.add(w),e.candidateRuleMap.has(w)||e.candidateRuleMap.set(w,[]),e.candidateRuleMap.get(w).push([{sort:n.create("utilities"),layer:"utilities",options:m},y])}},matchUtilities:function(p,m){m=Bd({...{respectPrefix:!0,respectImportant:!0,modifiers:!1},...m});let x=n.create("utilities");for(let y in p){let S=function(E,{isOnlyPlugin:I}){let[q,R,J]=us(m.types,E,m,i);if(q===void 0)return[];if(!m.types.some(({type:te})=>te===R))if(I)F.warn([`Unnecessary typehint \`${R}\` in \`${y}-${E}\`.`,`You can safely update it to \`${y}-${E.replace(R+":","")}\`.`]);else return[];if(!Lt(q))return[];let fe={get modifier(){return m.modifiers||F.warn(`modifier-used-without-options-for-${y}`,["Your plugin must set `modifiers: true` in its options to support modifiers."]),J}},he=Z(i,"generalizedModifiers");return[].concat(he?k(q,fe):k(q)).filter(Boolean).map(te=>({[fn(y,E)]:te}))},w=u(y,m),k=p[y];a.add([w,m]);let _=[{sort:x,layer:"utilities",options:m},S];e.candidateRuleMap.has(w)||e.candidateRuleMap.set(w,[]),e.candidateRuleMap.get(w).push(_)}},matchComponents:function(p,m){m=Bd({...{respectPrefix:!0,respectImportant:!1,modifiers:!1},...m});let x=n.create("components");for(let y in p){let S=function(E,{isOnlyPlugin:I}){let[q,R,J]=us(m.types,E,m,i);if(q===void 0)return[];if(!m.types.some(({type:te})=>te===R))if(I)F.warn([`Unnecessary typehint \`${R}\` in \`${y}-${E}\`.`,`You can safely update it to \`${y}-${E.replace(R+":","")}\`.`]);else return[];if(!Lt(q))return[];let fe={get modifier(){return m.modifiers||F.warn(`modifier-used-without-options-for-${y}`,["Your plugin must set `modifiers: true` in its options to support modifiers."]),J}},he=Z(i,"generalizedModifiers");return[].concat(he?k(q,fe):k(q)).filter(Boolean).map(te=>({[fn(y,E)]:te}))},w=u(y,m),k=p[y];a.add([w,m]);let _=[{sort:x,layer:"components",options:m},S];e.candidateRuleMap.has(w)||e.candidateRuleMap.set(w,[]),e.candidateRuleMap.get(w).push(_)}},addVariant(p,m,b={}){m=[].concat(m).map(x=>{if(typeof x!="string")return(y={})=>{let{args:w,modifySelectors:k,container:S,separator:_,wrap:E,format:I}=y,q=x(Object.assign({modifySelectors:k,container:S,separator:_},b.type===oo.MatchVariant&&{args:w,wrap:E,format:I}));if(typeof q=="string"&&!Cn(q))throw new Error(`Your custom variant \`${p}\` has an invalid format string. Make sure it's an at-rule or contains a \`&\` placeholder.`);return Array.isArray(q)?q.filter(R=>typeof R=="string").map(R=>Zr(R)):q&&typeof q=="string"&&Zr(q)(y)};if(!Cn(x))throw new Error(`Your custom variant \`${p}\` has an invalid format string. Make sure it's an at-rule or contains a \`&\` placeholder.`);return Zr(x)}),xC(t,p,b),r.set(p,m),e.variantOptions.set(p,b)},matchVariant(p,m,b){let x=b?.id??++f,y=p==="@",w=Z(i,"generalizedModifiers");for(let[S,_]of Object.entries(b?.values??{}))S!=="DEFAULT"&&d.addVariant(y?`${p}${S}`:`${p}-${S}`,({args:E,container:I})=>m(_,w?{modifier:E?.modifier,container:I}:{container:I}),{...b,value:_,id:x,type:oo.MatchVariant,variantInfo:lo.Base});let k="DEFAULT"in(b?.values??{});d.addVariant(p,({args:S,container:_})=>S?.value===Kr&&!k?null:m(S?.value===Kr?b.values.DEFAULT:S?.value??(typeof S=="string"?S:""),w?{modifier:S?.modifier,container:_}:{container:_}),{...b,id:x,type:oo.MatchVariant,variantInfo:lo.Dynamic})}};return d}function On(i){return fo.has(i)||fo.set(i,new Map),fo.get(i)}function Nd(i,e){let t=!1,r=new Map;for(let n of i){if(!n)continue;let a=gs.parse(n),s=a.hash?a.href.replace(a.hash,""):a.href;s=a.search?s.replace(a.search,""):s;let o=re.statSync(decodeURIComponent(s),{throwIfNoEntry:!1})?.mtimeMs;!o||((!e.has(n)||o>e.get(n))&&(t=!0),r.set(n,o))}return[t,r]}function Ld(i){i.walkAtRules(e=>{["responsive","variants"].includes(e.name)&&(Ld(e),e.before(e.nodes),e.remove())})}function _C(i){let e=[];return i.each(t=>{t.type==="atrule"&&["responsive","variants"].includes(t.name)&&(t.name="layer",t.params="utilities")}),i.walkAtRules("layer",t=>{if(Ld(t),t.params==="base"){for(let r of t.nodes)e.push(function({addBase:n}){n(r,{respectPrefix:!1})});t.remove()}else if(t.params==="components"){for(let r of t.nodes)e.push(function({addComponents:n}){n(r,{respectPrefix:!1,preserveSource:!0})});t.remove()}else if(t.params==="utilities"){for(let r of t.nodes)e.push(function({addUtilities:n}){n(r,{respectPrefix:!1,preserveSource:!0})});t.remove()}}),e}function OC(i,e){let t=Object.entries({...H,...hd}).map(([u,c])=>i.tailwindConfig.corePlugins.includes(u)?c:null).filter(Boolean),r=i.tailwindConfig.plugins.map(u=>(u.__isOptionsFunction&&(u=u()),typeof u=="function"?u:u.handler)),n=_C(e),a=[H.childVariant,H.pseudoElementVariants,H.pseudoClassVariants,H.hasVariants,H.ariaVariants,H.dataVariants],s=[H.supportsVariants,H.reducedMotionVariants,H.prefersContrastVariants,H.screenVariants,H.orientationVariants,H.directionVariants,H.darkVariants,H.forcedColorsVariants,H.printVariant];return(i.tailwindConfig.darkMode==="class"||Array.isArray(i.tailwindConfig.darkMode)&&i.tailwindConfig.darkMode[0]==="class")&&(s=[H.supportsVariants,H.reducedMotionVariants,H.prefersContrastVariants,H.darkVariants,H.screenVariants,H.orientationVariants,H.directionVariants,H.forcedColorsVariants,H.printVariant]),[...t,...a,...r,...s,...n]}function EC(i,e){let t=[],r=new Map;e.variantMap=r;let n=new so;e.offsets=n;let a=new Set,s=AC(e.tailwindConfig,e,{variantList:t,variantMap:r,offsets:n,classList:a});for(let f of i)if(Array.isArray(f))for(let d of f)d(s);else f?.(s);n.recordVariants(t,f=>r.get(f).length);for(let[f,d]of r.entries())e.variantMap.set(f,d.map((p,m)=>[n.forVariant(f,m),p]));let o=(e.tailwindConfig.safelist??[]).filter(Boolean);if(o.length>0){let f=[];for(let d of o){if(typeof d=="string"){e.changedContent.push({content:d,extension:"html"});continue}if(d instanceof RegExp){F.warn("root-regex",["Regular expressions in `safelist` work differently in Tailwind CSS v3.0.","Update your `safelist` configuration to eliminate this warning.","https://tailwindcss.com/docs/content-configuration#safelisting-classes"]);continue}f.push(d)}if(f.length>0){let d=new Map,p=e.tailwindConfig.prefix.length,m=f.some(b=>b.pattern.source.includes("!"));for(let b of a){let x=Array.isArray(b)?(()=>{let[y,w]=b,S=Object.keys(w?.values??{}).map(_=>Jr(y,_));return w?.supportsNegativeValues&&(S=[...S,...S.map(_=>"-"+_)],S=[...S,...S.map(_=>_.slice(0,p)+"-"+_.slice(p))]),w.types.some(({type:_})=>_==="color")&&(S=[...S,...S.flatMap(_=>Object.keys(e.tailwindConfig.theme.opacity).map(E=>`${_}/${E}`))]),m&&w?.respectImportant&&(S=[...S,...S.map(_=>"!"+_)]),S})():[b];for(let y of x)for(let{pattern:w,variants:k=[]}of f)if(w.lastIndex=0,d.has(w)||d.set(w,0),!!w.test(y)){d.set(w,d.get(w)+1),e.changedContent.push({content:y,extension:"html"});for(let S of k)e.changedContent.push({content:S+e.tailwindConfig.separator+y,extension:"html"})}}for(let[b,x]of d.entries())x===0&&F.warn([`The safelist pattern \`${b}\` doesn't match any Tailwind CSS classes.`,"Fix this pattern or remove it from your `safelist` configuration.","https://tailwindcss.com/docs/content-configuration#safelisting-classes"])}}let u=[].concat(e.tailwindConfig.darkMode??"media")[1]??"dark",c=[uo(e,u),uo(e,"group"),uo(e,"peer")];e.getClassOrder=function(d){let p=[...d].sort((y,w)=>y===w?0:y[y,null])),b=kn(new Set(p),e,!0);b=e.offsets.sort(b);let x=BigInt(c.length);for(let[,y]of b){let w=y.raws.tailwind.candidate;m.set(w,m.get(w)??x++)}return d.map(y=>{let w=m.get(y)??null,k=c.indexOf(y);return w===null&&k!==-1&&(w=BigInt(k)),[y,w]})},e.getClassList=function(d={}){let p=[];for(let m of a)if(Array.isArray(m)){let[b,x]=m,y=[],w=Object.keys(x?.modifiers??{});x?.types?.some(({type:_})=>_==="color")&&w.push(...Object.keys(e.tailwindConfig.theme.opacity??{}));let k={modifiers:w},S=d.includeMetadata&&w.length>0;for(let[_,E]of Object.entries(x?.values??{})){if(E==null)continue;let I=Jr(b,_);if(p.push(S?[I,k]:I),x?.supportsNegativeValues&&Xe(E)){let q=Jr(b,`-${_}`);y.push(S?[q,k]:q)}}p.push(...y)}else p.push(m);return p},e.getVariants=function(){let d=Math.random().toString(36).substring(7).toUpperCase(),p=[];for(let[m,b]of e.variantOptions.entries())b.variantInfo!==lo.Base&&p.push({name:m,isArbitrary:b.type===Symbol.for("MATCH_VARIANT"),values:Object.keys(b.values??{}),hasDash:m!=="@",selectors({modifier:x,value:y}={}){let w=`TAILWINDPLACEHOLDER${d}`,k=z.rule({selector:`.${w}`}),S=z.root({nodes:[k.clone()]}),_=S.toString(),E=(e.variantMap.get(m)??[]).flatMap(([le,me])=>me),I=[];for(let le of E){let me=[],ai={args:{modifier:x,value:b.values?.[y]??y},separator:e.tailwindConfig.separator,modifySelectors(Ae){return S.each(Yn=>{Yn.type==="rule"&&(Yn.selectors=Yn.selectors.map(su=>Ae({get className(){return to(su)},selector:su})))}),S},format(Ae){me.push(Ae)},wrap(Ae){me.push(`@${Ae.name} ${Ae.params} { & }`)},container:S},oi=le(ai);if(me.length>0&&I.push(me),Array.isArray(oi))for(let Ae of oi)me=[],Ae(ai),I.push(me)}let q=[],R=S.toString();_!==R&&(S.walkRules(le=>{let me=le.selector,ai=(0,ao.default)(oi=>{oi.walkClasses(Ae=>{Ae.value=`${m}${e.tailwindConfig.separator}${Ae.value}`})}).processSync(me);q.push(me.replace(ai,"&").replace(w,"&"))}),S.walkAtRules(le=>{q.push(`@${le.name} (${le.params}) { & }`)}));let J=!(y in(b.values??{})),fe=b[ot]??{},he=(()=>!(J||fe.respectPrefix===!1))();I=I.map(le=>le.map(me=>({format:me,respectPrefix:he}))),q=q.map(le=>({format:le,respectPrefix:he}));let Ie={candidate:w,context:e},te=I.map(le=>wn(`.${w}`,jt(le,Ie),Ie).replace(`.${w}`,"&").replace("{ & }","").trim());return q.length>0&&te.push(jt(q,Ie).toString().replace(`.${w}`,"&")),te}});return p}}function $d(i,e){!i.classCache.has(e)||(i.notClassCache.add(e),i.classCache.delete(e),i.applyClassCache.delete(e),i.candidateRuleMap.delete(e),i.candidateRuleCache.delete(e),i.stylesheetCache=null)}function TC(i,e){let t=e.raws.tailwind.candidate;if(!!t){for(let r of i.ruleCache)r[1].raws.tailwind.candidate===t&&i.ruleCache.delete(r);$d(i,t)}}function co(i,e=[],t=z.root()){let r={disposables:[],ruleCache:new Set,candidateRuleCache:new Map,classCache:new Map,applyClassCache:new Map,notClassCache:new Set(i.blocklist??[]),postCssNodeCache:new Map,candidateRuleMap:new Map,tailwindConfig:i,changedContent:e,variantMap:new Map,stylesheetCache:null,variantOptions:new Map,markInvalidUtilityCandidate:a=>$d(r,a),markInvalidUtilityNode:a=>TC(r,a)},n=OC(r,t);return EC(n,r),r}function jd(i,e,t,r,n,a){let s=e.opts.from,o=r!==null;De.DEBUG&&console.log("Source path:",s);let u;if(o&&zt.has(s))u=zt.get(s);else if(ei.has(n)){let p=ei.get(n);ut.get(p).add(s),zt.set(s,p),u=p}let c=Ed(s,i);if(u){let[p,m]=Nd([...a],On(u));if(!p&&!c)return[u,!1,m]}if(zt.has(s)){let p=zt.get(s);if(ut.has(p)&&(ut.get(p).delete(s),ut.get(p).size===0)){ut.delete(p);for(let[m,b]of ei)b===p&&ei.delete(m);for(let m of p.disposables.splice(0))m(p)}}De.DEBUG&&console.log("Setting up new context...");let f=co(t,[],i);Object.assign(f,{userConfigPath:r});let[,d]=Nd([...a],On(f));return ei.set(n,f),zt.set(s,f),ut.has(f)||ut.set(f,new Set),ut.get(f).add(s),[f,!0,d]}var Md,ao,ot,oo,lo,fo,zt,ei,ut,Xr=C(()=>{l();je();ys();nt();Md=X(Ls()),ao=X(Be());Yr();za();un();Ct();Nt();Ua();pr();md();lt();lt();pi();Ee();fi();Ha();Sn();Td();Rd();ze();Ka();ot=Symbol(),oo={AddVariant:Symbol.for("ADD_VARIANT"),MatchVariant:Symbol.for("MATCH_VARIANT")},lo={Base:1<<0,Dynamic:1<<1};fo=new WeakMap;zt=gd,ei=yd,ut=gn});function po(i){return i.ignore?[]:i.glob?h.env.ROLLUP_WATCH==="true"?[{type:"dependency",file:i.base}]:[{type:"dir-dependency",dir:i.base,glob:i.glob}]:[{type:"dependency",file:i.base}]}var zd=C(()=>{l()});function Vd(i,e){return{handler:i,config:e}}var Ud,Wd=C(()=>{l();Vd.withOptions=function(i,e=()=>({})){let t=function(r){return{__options:r,handler:i(r),config:e(r)}};return t.__isOptionsFunction=!0,t.__pluginFunction=i,t.__configFunction=e,t};Ud=Vd});var ho={};_e(ho,{default:()=>PC});var PC,mo=C(()=>{l();Wd();PC=Ud});var Hd=v((c6,Gd)=>{l();var DC=(mo(),ho).default,IC={overflow:"hidden",display:"-webkit-box","-webkit-box-orient":"vertical"},qC=DC(function({matchUtilities:i,addUtilities:e,theme:t,variants:r}){let n=t("lineClamp");i({"line-clamp":a=>({...IC,"-webkit-line-clamp":`${a}`})},{values:n}),e([{".line-clamp-none":{"-webkit-line-clamp":"unset"}}],r("lineClamp"))},{theme:{lineClamp:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6"}},variants:{lineClamp:["responsive"]}});Gd.exports=qC});function go(i){i.content.files.length===0&&F.warn("content-problems",["The `content` option in your Tailwind CSS configuration is missing or empty.","Configure your content sources or your generated CSS will be missing styles.","https://tailwindcss.com/docs/content-configuration"]);try{let e=Hd();i.plugins.includes(e)&&(F.warn("line-clamp-in-core",["As of Tailwind CSS v3.3, the `@tailwindcss/line-clamp` plugin is now included by default.","Remove it from the `plugins` array in your configuration to eliminate this warning."]),i.plugins=i.plugins.filter(t=>t!==e))}catch{}return i}var Yd=C(()=>{l();Ee()});var Qd,Jd=C(()=>{l();Qd=()=>!1});var En,Xd=C(()=>{l();En={sync:i=>[].concat(i),generateTasks:i=>[{dynamic:!1,base:".",negative:[],positive:[].concat(i),patterns:[].concat(i)}],escapePath:i=>i}});var yo,Kd=C(()=>{l();yo=i=>i});var Zd,eh=C(()=>{l();Zd=()=>""});function th(i){let e=i,t=Zd(i);return t!=="."&&(e=i.substr(t.length),e.charAt(0)==="/"&&(e=e.substr(1))),e.substr(0,2)==="./"?e=e.substr(2):e.charAt(0)==="/"&&(e=e.substr(1)),{base:t,glob:e}}var rh=C(()=>{l();eh()});function ih(i,e){let t=e.content.files;t=t.filter(o=>typeof o=="string"),t=t.map(yo);let r=En.generateTasks(t),n=[],a=[];for(let o of r)n.push(...o.positive.map(u=>nh(u,!1))),a.push(...o.negative.map(u=>nh(u,!0)));let s=[...n,...a];return s=MC(i,s),s=s.flatMap(BC),s=s.map(RC),s}function nh(i,e){let t={original:i,base:i,ignore:e,pattern:i,glob:null};return Qd(i)&&Object.assign(t,th(i)),t}function RC(i){let e=yo(i.base);return e=En.escapePath(e),i.pattern=i.glob?`${e}/${i.glob}`:e,i.pattern=i.ignore?`!${i.pattern}`:i.pattern,i}function MC(i,e){let t=[];return i.userConfigPath&&i.tailwindConfig.content.relative&&(t=[ee.dirname(i.userConfigPath)]),e.map(r=>(r.base=ee.resolve(...t,r.base),r))}function BC(i){let e=[i];try{let t=re.realpathSync(i.base);t!==i.base&&e.push({...i,base:t})}catch{}return e}function sh(i,e,t){let r=i.tailwindConfig.content.files.filter(s=>typeof s.raw=="string").map(({raw:s,extension:o="html"})=>({content:s,extension:o})),[n,a]=FC(e,t);for(let s of n){let o=ee.extname(s).slice(1);r.push({file:s,extension:o})}return[r,a]}function FC(i,e){let t=i.map(s=>s.pattern),r=new Map,n=new Set;De.DEBUG&&console.time("Finding changed files");let a=En.sync(t,{absolute:!0});for(let s of a){let o=e.get(s)||-1/0,u=re.statSync(s).mtimeMs;u>o&&(n.add(s),r.set(s,u))}return De.DEBUG&&console.timeEnd("Finding changed files"),[n,r]}var ah=C(()=>{l();je();wt();Jd();Xd();Kd();rh();lt()});function oh(){}var lh=C(()=>{l()});function jC(i,e){for(let t of e){let r=`${i}${t}`;if(re.existsSync(r)&&re.statSync(r).isFile())return r}for(let t of e){let r=`${i}/index${t}`;if(re.existsSync(r))return r}return null}function*uh(i,e,t,r=ee.extname(i)){let n=jC(ee.resolve(e,i),NC.includes(r)?LC:$C);if(n===null||t.has(n))return;t.add(n),yield n,e=ee.dirname(n),r=ee.extname(n);let a=re.readFileSync(n,"utf-8");for(let s of[...a.matchAll(/import[\s\S]*?['"](.{3,}?)['"]/gi),...a.matchAll(/import[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi),...a.matchAll(/require\(['"`](.+)['"`]\)/gi)])!s[1].startsWith(".")||(yield*uh(s[1],e,t,r))}function wo(i){return i===null?new Set:new Set(uh(i,ee.dirname(i),new Set))}var NC,LC,$C,fh=C(()=>{l();je();wt();NC=[".js",".cjs",".mjs"],LC=["",".js",".cjs",".mjs",".ts",".cts",".mts",".jsx",".tsx"],$C=["",".ts",".cts",".mts",".tsx",".js",".cjs",".mjs",".jsx"]});function zC(i,e){if(bo.has(i))return bo.get(i);let t=ih(i,e);return bo.set(i,t).get(i)}function VC(i){let e=ms(i);if(e!==null){let[r,n,a,s]=ph.get(e)||[],o=wo(e),u=!1,c=new Map;for(let p of o){let m=re.statSync(p).mtimeMs;c.set(p,m),(!s||!s.has(p)||m>s.get(p))&&(u=!0)}if(!u)return[r,e,n,a];for(let p of o)delete ou.cache[p];let f=go(hr(oh(e))),d=ui(f);return ph.set(e,[f,d,o,c]),[f,e,d,o]}let t=hr(i?.config??i??{});return t=go(t),[t,null,ui(t),[]]}function vo(i){return({tailwindDirectives:e,registerDependency:t})=>(r,n)=>{let[a,s,o,u]=VC(i),c=new Set(u);if(e.size>0){c.add(n.opts.from);for(let b of n.messages)b.type==="dependency"&&c.add(b.file)}let[f,,d]=jd(r,n,a,s,o,c),p=On(f),m=zC(f,a);if(e.size>0){for(let y of m)for(let w of po(y))t(w);let[b,x]=sh(f,m,p);for(let y of b)f.changedContent.push(y);for(let[y,w]of x.entries())d.set(y,w)}for(let b of u)t({type:"dependency",file:b});for(let[b,x]of d.entries())p.set(b,x);return f}}var ch,ph,bo,dh=C(()=>{l();je();ch=X(Qn());pu();hs();tf();Xr();zd();Yd();ah();lh();fh();ph=new ch.default({maxSize:100}),bo=new WeakMap});function xo(i){let e=new Set,t=new Set,r=new Set;if(i.walkAtRules(n=>{n.name==="apply"&&r.add(n),n.name==="import"&&(n.params==='"tailwindcss/base"'||n.params==="'tailwindcss/base'"?(n.name="tailwind",n.params="base"):n.params==='"tailwindcss/components"'||n.params==="'tailwindcss/components'"?(n.name="tailwind",n.params="components"):n.params==='"tailwindcss/utilities"'||n.params==="'tailwindcss/utilities'"?(n.name="tailwind",n.params="utilities"):(n.params==='"tailwindcss/screens"'||n.params==="'tailwindcss/screens'"||n.params==='"tailwindcss/variants"'||n.params==="'tailwindcss/variants'")&&(n.name="tailwind",n.params="variants")),n.name==="tailwind"&&(n.params==="screens"&&(n.params="variants"),e.add(n.params)),["layer","responsive","variants"].includes(n.name)&&(["responsive","variants"].includes(n.name)&&F.warn(`${n.name}-at-rule-deprecated`,[`The \`@${n.name}\` directive has been deprecated in Tailwind CSS v3.0.`,"Use `@layer utilities` or `@layer components` instead.","https://tailwindcss.com/docs/upgrade-guide#replace-variants-with-layer"]),t.add(n))}),!e.has("base")||!e.has("components")||!e.has("utilities")){for(let n of t)if(n.name==="layer"&&["base","components","utilities"].includes(n.params)){if(!e.has(n.params))throw n.error(`\`@layer ${n.params}\` is used but no matching \`@tailwind ${n.params}\` directive is present.`)}else if(n.name==="responsive"){if(!e.has("utilities"))throw n.error("`@responsive` is used but `@tailwind utilities` is missing.")}else if(n.name==="variants"&&!e.has("utilities"))throw n.error("`@variants` is used but `@tailwind utilities` is missing.")}return{tailwindDirectives:e,applyDirectives:r}}var hh=C(()=>{l();Ee()});function kt(i,e=void 0,t=void 0){return i.map(r=>{let n=r.clone();return t!==void 0&&(n.raws.tailwind={...n.raws.tailwind,...t}),e!==void 0&&mh(n,a=>{if(a.raws.tailwind?.preserveSource===!0&&a.source)return!1;a.source=e}),n})}function mh(i,e){e(i)!==!1&&i.each?.(t=>mh(t,e))}var gh=C(()=>{l()});function ko(i){return i=Array.isArray(i)?i:[i],i=i.map(e=>e instanceof RegExp?e.source:e),i.join("")}function we(i){return new RegExp(ko(i),"g")}function ft(i){return`(?:${i.map(ko).join("|")})`}function So(i){return`(?:${ko(i)})?`}function wh(i){return i&&UC.test(i)?i.replace(yh,"\\$&"):i||""}var yh,UC,bh=C(()=>{l();yh=/[\\^$.*+?()[\]{}|]/g,UC=RegExp(yh.source)});function vh(i){let e=Array.from(WC(i));return t=>{let r=[];for(let n of e)for(let a of t.match(n)??[])r.push(YC(a));for(let n of r.slice()){let a=ie(n,".");for(let s=0;s=a.length-1){r.push(o);continue}let u=parseInt(a[s+1]);isNaN(u)?r.push(o):s++}}return r}}function*WC(i){let e=i.tailwindConfig.separator,t=i.tailwindConfig.prefix!==""?So(we([/-?/,wh(i.tailwindConfig.prefix)])):"",r=ft([/\[[^\s:'"`]+:[^\s\[\]]+\]/,/\[[^\s:'"`\]]+:[^\s]+?\[[^\s]+\][^\s]+?\]/,we([ft([/-?(?:\w+)/,/@(?:\w+)/]),So(ft([we([ft([/-(?:\w+-)*\['[^\s]+'\]/,/-(?:\w+-)*\["[^\s]+"\]/,/-(?:\w+-)*\[`[^\s]+`\]/,/-(?:\w+-)*\[(?:[^\s\[\]]+\[[^\s\[\]]+\])*[^\s:\[\]]+\]/]),/(?![{([]])/,/(?:\/[^\s'"`\\><$]*)?/]),we([ft([/-(?:\w+-)*\['[^\s]+'\]/,/-(?:\w+-)*\["[^\s]+"\]/,/-(?:\w+-)*\[`[^\s]+`\]/,/-(?:\w+-)*\[(?:[^\s\[\]]+\[[^\s\[\]]+\])*[^\s\[\]]+\]/]),/(?![{([]])/,/(?:\/[^\s'"`\\$]*)?/]),/[-\/][^\s'"`\\$={><]*/]))])]),n=[ft([we([/@\[[^\s"'`]+\](\/[^\s"'`]+)?/,e]),we([/([^\s"'`\[\\]+-)?\[[^\s"'`]+\]\/[\w_-]+/,e]),we([/([^\s"'`\[\\]+-)?\[[^\s"'`]+\]/,e]),we([/[^\s"'`\[\\]+/,e])]),ft([we([/([^\s"'`\[\\]+-)?\[[^\s`]+\]\/[\w_-]+/,e]),we([/([^\s"'`\[\\]+-)?\[[^\s`]+\]/,e]),we([/[^\s`\[\\]+/,e])])];for(let a of n)yield we(["((?=((",a,")+))\\2)?",/!?/,t,r])}function YC(i){if(!i.includes("-["))return i;let e=0,t=[],r=i.matchAll(GC);r=Array.from(r).flatMap(n=>{let[,...a]=n;return a.map((s,o)=>Object.assign([],n,{index:n.index+o,0:s}))});for(let n of r){let a=n[0],s=t[t.length-1];if(a===s?t.pop():(a==="'"||a==='"'||a==="`")&&t.push(a),!s){if(a==="["){e++;continue}else if(a==="]"){e--;continue}if(e<0)return i.substring(0,n.index-1);if(e===0&&!HC.test(a))return i.substring(0,n.index)}}return i}var GC,HC,xh=C(()=>{l();bh();yt();GC=/([\[\]'"`])([^\[\]'"`])?/g,HC=/[^"'`\s<>\]]+/});function QC(i,e){let t=i.tailwindConfig.content.extract;return t[e]||t.DEFAULT||Sh[e]||Sh.DEFAULT(i)}function JC(i,e){let t=i.content.transform;return t[e]||t.DEFAULT||Ch[e]||Ch.DEFAULT}function XC(i,e,t,r){ti.has(e)||ti.set(e,new kh.default({maxSize:25e3}));for(let n of i.split(` `))if(n=n.trim(),!r.has(n))if(r.add(n),ti.get(e).has(n))for(let a of ti.get(e).get(n))t.add(a);else{let a=e(n).filter(o=>o!=="!*"),s=new Set(a);for(let o of s)t.add(o);ti.get(e).set(n,s)}}function KC(i,e){let t=e.offsets.sort(i),r={base:new Set,defaults:new Set,components:new Set,utilities:new Set,variants:new Set};for(let[n,a]of t)r[n.layer].add(a);return r}function Co(i){return async e=>{let t={base:null,components:null,utilities:null,variants:null};if(e.walkAtRules(y=>{y.name==="tailwind"&&Object.keys(t).includes(y.params)&&(t[y.params]=y)}),Object.values(t).every(y=>y===null))return e;let r=new Set([...i.candidates??[],He]),n=new Set;Ye.DEBUG&&console.time("Reading changed files");let a=[];for(let y of i.changedContent){let w=JC(i.tailwindConfig,y.extension),k=QC(i,y.extension);a.push([y,{transformer:w,extractor:k}])}let s=500;for(let y=0;y{S=k?await re.promises.readFile(k,"utf8"):S,XC(_(S),E,r,n)}))}Ye.DEBUG&&console.timeEnd("Reading changed files");let o=i.classCache.size;Ye.DEBUG&&console.time("Generate rules"),Ye.DEBUG&&console.time("Sorting candidates");let u=new Set([...r].sort((y,w)=>y===w?0:y{let w=y.raws.tailwind?.parentLayer;return w==="components"?t.components!==null:w==="utilities"?t.utilities!==null:!0});t.variants?(t.variants.before(kt(b,t.variants.source,{layer:"variants"})),t.variants.remove()):b.length>0&&e.append(kt(b,e.source,{layer:"variants"})),e.source.end=e.source.end??e.source.start;let x=b.some(y=>y.raws.tailwind?.parentLayer==="utilities");t.utilities&&p.size===0&&!x&&F.warn("content-problems",["No utility classes were detected in your source files. If this is unexpected, double-check the `content` option in your Tailwind CSS configuration.","https://tailwindcss.com/docs/content-configuration"]),Ye.DEBUG&&(console.log("Potential classes: ",r.size),console.log("Active contexts: ",gn.size)),i.changedContent=[],e.walkAtRules("layer",y=>{Object.keys(t).includes(y.params)&&y.remove()})}}var kh,Ye,Sh,Ch,ti,Ah=C(()=>{l();je();kh=X(Qn());lt();Sn();Ee();gh();xh();Ye=De,Sh={DEFAULT:vh},Ch={DEFAULT:i=>i,svelte:i=>i.replace(/(?:^|\s)class:/g," ")};ti=new WeakMap});function Pn(i){let e=new Map;z.root({nodes:[i.clone()]}).walkRules(a=>{(0,Tn.default)(s=>{s.walkClasses(o=>{let u=o.parent.toString(),c=e.get(u);c||e.set(u,c=new Set),c.add(o.value)})}).processSync(a.selector)});let r=Array.from(e.values(),a=>Array.from(a)),n=r.flat();return Object.assign(n,{groups:r})}function Ao(i){return ZC.astSync(i)}function _h(i,e){let t=new Set;for(let r of i)t.add(r.split(e).pop());return Array.from(t)}function Oh(i,e){let t=i.tailwindConfig.prefix;return typeof t=="function"?t(e):t+e}function*Eh(i){for(yield i;i.parent;)yield i.parent,i=i.parent}function e2(i,e={}){let t=i.nodes;i.nodes=[];let r=i.clone(e);return i.nodes=t,r}function t2(i){for(let e of Eh(i))if(i!==e){if(e.type==="root")break;i=e2(e,{nodes:[i]})}return i}function r2(i,e){let t=new Map;return i.walkRules(r=>{for(let s of Eh(r))if(s.raws.tailwind?.layer!==void 0)return;let n=t2(r),a=e.offsets.create("user");for(let s of Pn(r)){let o=t.get(s)||[];t.set(s,o),o.push([{layer:"user",sort:a,important:!1},n])}}),t}function i2(i,e){for(let t of i){if(e.notClassCache.has(t)||e.applyClassCache.has(t))continue;if(e.classCache.has(t)){e.applyClassCache.set(t,e.classCache.get(t).map(([n,a])=>[n,a.clone()]));continue}let r=Array.from(io(t,e));if(r.length===0){e.notClassCache.add(t);continue}e.applyClassCache.set(t,r)}return e.applyClassCache}function n2(i){let e=null;return{get:t=>(e=e||i(),e.get(t)),has:t=>(e=e||i(),e.has(t))}}function s2(i){return{get:e=>i.flatMap(t=>t.get(e)||[]),has:e=>i.some(t=>t.has(e))}}function Th(i){let e=i.split(/[\s\t\n]+/g);return e[e.length-1]==="!important"?[e.slice(0,-1),!0]:[e,!1]}function Ph(i,e,t){let r=new Set,n=[];if(i.walkAtRules("apply",u=>{let[c]=Th(u.params);for(let f of c)r.add(f);n.push(u)}),n.length===0)return;let a=s2([t,i2(r,e)]);function s(u,c,f){let d=Ao(u),p=Ao(c),b=Ao(`.${pe(f)}`).nodes[0].nodes[0];return d.each(x=>{let y=new Set;p.each(w=>{let k=!1;w=w.clone(),w.walkClasses(S=>{S.value===b.value&&(k||(S.replaceWith(...x.nodes.map(_=>_.clone())),y.add(w),k=!0))})});for(let w of y){let k=[[]];for(let S of w.nodes)S.type==="combinator"?(k.push(S),k.push([])):k[k.length-1].push(S);w.nodes=[];for(let S of k)Array.isArray(S)&&S.sort((_,E)=>_.type==="tag"&&E.type==="class"?-1:_.type==="class"&&E.type==="tag"?1:_.type==="class"&&E.type==="pseudo"&&E.value.startsWith("::")?-1:_.type==="pseudo"&&_.value.startsWith("::")&&E.type==="class"?1:0),w.nodes=w.nodes.concat(S)}x.replaceWith(...y)}),d.toString()}let o=new Map;for(let u of n){let[c]=o.get(u.parent)||[[],u.source];o.set(u.parent,[c,u.source]);let[f,d]=Th(u.params);if(u.parent.type==="atrule"){if(u.parent.name==="screen"){let p=u.parent.params;throw u.error(`@apply is not supported within nested at-rules like @screen. We suggest you write this as @apply ${f.map(m=>`${p}:${m}`).join(" ")} instead.`)}throw u.error(`@apply is not supported within nested at-rules like @${u.parent.name}. You can fix this by un-nesting @${u.parent.name}.`)}for(let p of f){if([Oh(e,"group"),Oh(e,"peer")].includes(p))throw u.error(`@apply should not be used with the '${p}' utility`);if(!a.has(p))throw u.error(`The \`${p}\` class does not exist. If \`${p}\` is a custom class, make sure it is defined within a \`@layer\` directive.`);let m=a.get(p);for(let[,b]of m)b.type!=="atrule"&&b.walkRules(()=>{throw u.error([`The \`${p}\` class cannot be used with \`@apply\` because \`@apply\` does not currently support nested CSS.`,"Rewrite the selector without nesting or configure the `tailwindcss/nesting` plugin:","https://tailwindcss.com/docs/using-with-preprocessors#nesting"].join(` `))});c.push([p,d,m])}}for(let[u,[c,f]]of o){let d=[];for(let[m,b,x]of c){let y=[m,..._h([m],e.tailwindConfig.separator)];for(let[w,k]of x){let S=Pn(u),_=Pn(k);if(_=_.groups.filter(R=>R.some(J=>y.includes(J))).flat(),_=_.concat(_h(_,e.tailwindConfig.separator)),S.some(R=>_.includes(R)))throw k.error(`You cannot \`@apply\` the \`${m}\` utility here because it creates a circular dependency.`);let I=z.root({nodes:[k.clone()]});I.walk(R=>{R.source=f}),(k.type!=="atrule"||k.type==="atrule"&&k.name!=="keyframes")&&I.walkRules(R=>{if(!Pn(R).some(te=>te===m)){R.remove();return}let J=typeof e.tailwindConfig.important=="string"?e.tailwindConfig.important:null,he=u.raws.tailwind!==void 0&&J&&u.selector.indexOf(J)===0?u.selector.slice(J.length):u.selector;he===""&&(he=u.selector),R.selector=s(he,R.selector,m),J&&he!==u.selector&&(R.selector=bn(R.selector,J)),R.walkDecls(te=>{te.important=w.important||b});let Ie=(0,Tn.default)().astSync(R.selector);Ie.each(te=>$t(te)),R.selector=Ie.toString()}),!!I.nodes[0]&&d.push([w.sort,I.nodes[0]])}}let p=e.offsets.sort(d).map(m=>m[1]);u.after(p)}for(let u of n)u.parent.nodes.length>1?u.remove():u.parent.remove();Ph(i,e,t)}function _o(i){return e=>{let t=n2(()=>r2(e,i));Ph(e,i,t)}}var Tn,ZC,Dh=C(()=>{l();nt();Tn=X(Be());Sn();Nt();eo();yn();ZC=(0,Tn.default)()});var Ih=v((uD,Dn)=>{l();(function(){"use strict";function i(r,n,a){if(!r)return null;i.caseSensitive||(r=r.toLowerCase());var s=i.threshold===null?null:i.threshold*r.length,o=i.thresholdAbsolute,u;s!==null&&o!==null?u=Math.min(s,o):s!==null?u=s:o!==null?u=o:u=null;var c,f,d,p,m,b=n.length;for(m=0;ma)return a+1;var u=[],c,f,d,p,m;for(c=0;c<=o;c++)u[c]=[c];for(f=0;f<=s;f++)u[0][f]=f;for(c=1;c<=o;c++){for(d=e,p=1,c>a&&(p=c-a),m=o+1,m>a+c&&(m=a+c),f=1;f<=s;f++)fm?u[c][f]=a+1:n.charAt(c-1)===r.charAt(f-1)?u[c][f]=u[c-1][f-1]:u[c][f]=Math.min(u[c-1][f-1]+1,Math.min(u[c][f-1]+1,u[c-1][f]+1)),u[c][f]a)return a+1}return u[o][s]}})()});var Rh=v((fD,qh)=>{l();var Oo="(".charCodeAt(0),Eo=")".charCodeAt(0),In="'".charCodeAt(0),To='"'.charCodeAt(0),Po="\\".charCodeAt(0),Vt="/".charCodeAt(0),Do=",".charCodeAt(0),Io=":".charCodeAt(0),qn="*".charCodeAt(0),a2="u".charCodeAt(0),o2="U".charCodeAt(0),l2="+".charCodeAt(0),u2=/^[a-f0-9?-]+$/i;qh.exports=function(i){for(var e=[],t=i,r,n,a,s,o,u,c,f,d=0,p=t.charCodeAt(d),m=t.length,b=[{nodes:e}],x=0,y,w="",k="",S="";d{l();Mh.exports=function i(e,t,r){var n,a,s,o;for(n=0,a=e.length;n{l();function Fh(i,e){var t=i.type,r=i.value,n,a;return e&&(a=e(i))!==void 0?a:t==="word"||t==="space"?r:t==="string"?(n=i.quote||"",n+r+(i.unclosed?"":n)):t==="comment"?"/*"+r+(i.unclosed?"":"*/"):t==="div"?(i.before||"")+r+(i.after||""):Array.isArray(i.nodes)?(n=Nh(i.nodes,e),t!=="function"?n:r+"("+(i.before||"")+n+(i.after||"")+(i.unclosed?"":")")):r}function Nh(i,e){var t,r;if(Array.isArray(i)){for(t="",r=i.length-1;~r;r-=1)t=Fh(i[r],e)+t;return t}return Fh(i,e)}Lh.exports=Nh});var zh=v((dD,jh)=>{l();var Rn="-".charCodeAt(0),Mn="+".charCodeAt(0),qo=".".charCodeAt(0),f2="e".charCodeAt(0),c2="E".charCodeAt(0);function p2(i){var e=i.charCodeAt(0),t;if(e===Mn||e===Rn){if(t=i.charCodeAt(1),t>=48&&t<=57)return!0;var r=i.charCodeAt(2);return t===qo&&r>=48&&r<=57}return e===qo?(t=i.charCodeAt(1),t>=48&&t<=57):e>=48&&e<=57}jh.exports=function(i){var e=0,t=i.length,r,n,a;if(t===0||!p2(i))return!1;for(r=i.charCodeAt(e),(r===Mn||r===Rn)&&e++;e57));)e+=1;if(r=i.charCodeAt(e),n=i.charCodeAt(e+1),r===qo&&n>=48&&n<=57)for(e+=2;e57));)e+=1;if(r=i.charCodeAt(e),n=i.charCodeAt(e+1),a=i.charCodeAt(e+2),(r===f2||r===c2)&&(n>=48&&n<=57||(n===Mn||n===Rn)&&a>=48&&a<=57))for(e+=n===Mn||n===Rn?3:2;e57));)e+=1;return{number:i.slice(0,e),unit:i.slice(e)}}});var Gh=v((hD,Wh)=>{l();var d2=Rh(),Vh=Bh(),Uh=$h();function ct(i){return this instanceof ct?(this.nodes=d2(i),this):new ct(i)}ct.prototype.toString=function(){return Array.isArray(this.nodes)?Uh(this.nodes):""};ct.prototype.walk=function(i,e){return Vh(this.nodes,i,e),this};ct.unit=zh();ct.walk=Vh;ct.stringify=Uh;Wh.exports=ct});function Mo(i){return typeof i=="object"&&i!==null}function h2(i,e){let t=Ke(e);do if(t.pop(),(0,ri.default)(i,t)!==void 0)break;while(t.length);return t.length?t:void 0}function Ut(i){return typeof i=="string"?i:i.reduce((e,t,r)=>t.includes(".")?`${e}[${t}]`:r===0?t:`${e}.${t}`,"")}function Yh(i){return i.map(e=>`'${e}'`).join(", ")}function Qh(i){return Yh(Object.keys(i))}function Bo(i,e,t,r={}){let n=Array.isArray(e)?Ut(e):e.replace(/^['"]+|['"]+$/g,""),a=Array.isArray(e)?e:Ke(n),s=(0,ri.default)(i.theme,a,t);if(s===void 0){let u=`'${n}' does not exist in your theme config.`,c=a.slice(0,-1),f=(0,ri.default)(i.theme,c);if(Mo(f)){let d=Object.keys(f).filter(m=>Bo(i,[...c,m]).isValid),p=(0,Hh.default)(a[a.length-1],d);p?u+=` Did you mean '${Ut([...c,p])}'?`:d.length>0&&(u+=` '${Ut(c)}' has the following valid keys: ${Yh(d)}`)}else{let d=h2(i.theme,n);if(d){let p=(0,ri.default)(i.theme,d);Mo(p)?u+=` '${Ut(d)}' has the following keys: ${Qh(p)}`:u+=` '${Ut(d)}' is not an object.`}else u+=` Your theme has the following top-level keys: ${Qh(i.theme)}`}return{isValid:!1,error:u}}if(!(typeof s=="string"||typeof s=="number"||typeof s=="function"||s instanceof String||s instanceof Number||Array.isArray(s))){let u=`'${n}' was found but does not resolve to a string.`;if(Mo(s)){let c=Object.keys(s).filter(f=>Bo(i,[...a,f]).isValid);c.length&&(u+=` Did you mean something like '${Ut([...a,c[0]])}'?`)}return{isValid:!1,error:u}}let[o]=a;return{isValid:!0,value:Ge(o)(s,r)}}function m2(i,e,t){e=e.map(n=>Jh(i,n,t));let r=[""];for(let n of e)n.type==="div"&&n.value===","?r.push(""):r[r.length-1]+=Ro.default.stringify(n);return r}function Jh(i,e,t){if(e.type==="function"&&t[e.value]!==void 0){let r=m2(i,e.nodes,t);e.type="word",e.value=t[e.value](i,...r)}return e}function g2(i,e,t){return Object.keys(t).some(n=>e.includes(`${n}(`))?(0,Ro.default)(e).walk(n=>{Jh(i,n,t)}).toString():e}function*w2(i){i=i.replace(/^['"]+|['"]+$/g,"");let e=i.match(/^([^\s]+)(?![^\[]*\])(?:\s*\/\s*([^\/\s]+))$/),t;yield[i,void 0],e&&(i=e[1],t=e[2],yield[i,t])}function b2(i,e,t){let r=Array.from(w2(e)).map(([n,a])=>Object.assign(Bo(i,n,t,{opacityValue:a}),{resolvedPath:n,alpha:a}));return r.find(n=>n.isValid)??r[0]}function Xh(i){let e=i.tailwindConfig,t={theme:(r,n,...a)=>{let{isValid:s,value:o,error:u,alpha:c}=b2(e,n,a.length?a:void 0);if(!s){let p=r.parent,m=p?.raws.tailwind?.candidate;if(p&&m!==void 0){i.markInvalidUtilityNode(p),p.remove(),F.warn("invalid-theme-key-in-class",[`The utility \`${m}\` contains an invalid theme value and was not generated.`]);return}throw r.error(u)}let f=At(o),d=f!==void 0&&typeof f=="function";return(c!==void 0||d)&&(c===void 0&&(c=1),o=qe(f,c,f)),o},screen:(r,n)=>{n=n.replace(/^['"]+/g,"").replace(/['"]+$/g,"");let s=at(e.theme.screens).find(({name:o})=>o===n);if(!s)throw r.error(`The '${n}' screen does not exist in your theme.`);return st(s)}};return r=>{r.walk(n=>{let a=y2[n.type];a!==void 0&&(n[a]=g2(n,n[a],t))})}}var ri,Hh,Ro,y2,Kh=C(()=>{l();ri=X(Ls()),Hh=X(Ih());Yr();Ro=X(Gh());hn();cn();pi();lr();pr();Ee();y2={atrule:"params",decl:"value"}});function Zh({tailwindConfig:{theme:i}}){return function(e){e.walkAtRules("screen",t=>{let r=t.params,a=at(i.screens).find(({name:s})=>s===r);if(!a)throw t.error(`No \`${r}\` screen found.`);t.name="media",t.params=st(a)})}}var em=C(()=>{l();hn();cn()});function v2(i){let e=i.filter(o=>o.type!=="pseudo"||o.nodes.length>0?!0:o.value.startsWith("::")||[":before",":after",":first-line",":first-letter"].includes(o.value)).reverse(),t=new Set(["tag","class","id","attribute"]),r=e.findIndex(o=>t.has(o.type));if(r===-1)return e.reverse().join("").trim();let n=e[r],a=tm[n.type]?tm[n.type](n):n;e=e.slice(0,r);let s=e.findIndex(o=>o.type==="combinator"&&o.value===">");return s!==-1&&(e.splice(0,s),e.unshift(Bn.default.universal())),[a,...e.reverse()].join("").trim()}function k2(i){return Fo.has(i)||Fo.set(i,x2.transformSync(i)),Fo.get(i)}function No({tailwindConfig:i}){return e=>{let t=new Map,r=new Set;if(e.walkAtRules("defaults",n=>{if(n.nodes&&n.nodes.length>0){r.add(n);return}let a=n.params;t.has(a)||t.set(a,new Set),t.get(a).add(n.parent),n.remove()}),Z(i,"optimizeUniversalDefaults"))for(let n of r){let a=new Map,s=t.get(n.params)??[];for(let o of s)for(let u of k2(o.selector)){let c=u.includes(":-")||u.includes("::-")||u.includes(":has")?u:"__DEFAULT__",f=a.get(c)??new Set;a.set(c,f),f.add(u)}if(Z(i,"optimizeUniversalDefaults")){if(a.size===0){n.remove();continue}for(let[,o]of a){let u=z.rule({source:n.source});u.selectors=[...o],u.append(n.nodes.map(c=>c.clone())),n.before(u)}}n.remove()}else if(r.size){let n=z.rule({selectors:["*","::before","::after"]});for(let s of r)n.append(s.nodes),n.parent||s.before(n),n.source||(n.source=s.source),s.remove();let a=n.clone({selectors:["::backdrop"]});n.after(a)}}}var Bn,tm,x2,Fo,rm=C(()=>{l();nt();Bn=X(Be());ze();tm={id(i){return Bn.default.attribute({attribute:"id",operator:"=",value:i.value,quoteMark:'"'})}};x2=(0,Bn.default)(i=>i.map(e=>{let t=e.split(r=>r.type==="combinator"&&r.value===" ").pop();return v2(t)})),Fo=new Map});function Lo(){function i(e){let t=null;e.each(r=>{if(!S2.has(r.type)){t=null;return}if(t===null){t=r;return}let n=im[r.type];r.type==="atrule"&&r.name==="font-face"?t=r:n.every(a=>(r[a]??"").replace(/\s+/g," ")===(t[a]??"").replace(/\s+/g," "))?(r.nodes&&t.append(r.nodes),r.remove()):t=r}),e.each(r=>{r.type==="atrule"&&i(r)})}return e=>{i(e)}}var im,S2,nm=C(()=>{l();im={atrule:["name","params"],rule:["selector"]},S2=new Set(Object.keys(im))});function $o(){return i=>{i.walkRules(e=>{let t=new Map,r=new Set([]),n=new Map;e.walkDecls(a=>{if(a.parent===e){if(t.has(a.prop)){if(t.get(a.prop).value===a.value){r.add(t.get(a.prop)),t.set(a.prop,a);return}n.has(a.prop)||n.set(a.prop,new Set),n.get(a.prop).add(t.get(a.prop)),n.get(a.prop).add(a)}t.set(a.prop,a)}});for(let a of r)a.remove();for(let a of n.values()){let s=new Map;for(let o of a){let u=A2(o.value);u!==null&&(s.has(u)||s.set(u,new Set),s.get(u).add(o))}for(let o of s.values()){let u=Array.from(o).slice(0,-1);for(let c of u)c.remove()}}})}}function A2(i){let e=/^-?\d*.?\d+([\w%]+)?$/g.exec(i);return e?e[1]??C2:null}var C2,sm=C(()=>{l();C2=Symbol("unitless-number")});function _2(i){if(!i.walkAtRules)return;let e=new Set;if(i.walkAtRules("apply",t=>{e.add(t.parent)}),e.size!==0)for(let t of e){let r=[],n=[];for(let a of t.nodes)a.type==="atrule"&&a.name==="apply"?(n.length>0&&(r.push(n),n=[]),r.push([a])):n.push(a);if(n.length>0&&r.push(n),r.length!==1){for(let a of[...r].reverse()){let s=t.clone({nodes:[]});s.append(a),t.after(s)}t.remove()}}}function Fn(){return i=>{_2(i)}}var am=C(()=>{l()});function Nn(i){return async function(e,t){let{tailwindDirectives:r,applyDirectives:n}=xo(e);Fn()(e,t);let a=i({tailwindDirectives:r,applyDirectives:n,registerDependency(s){t.messages.push({plugin:"tailwindcss",parent:t.opts.from,...s})},createContext(s,o){return co(s,o,e)}})(e,t);if(a.tailwindConfig.separator==="-")throw new Error("The '-' character cannot be used as a custom separator in JIT mode due to parsing ambiguity. Please use another character like '_' instead.");Su(a.tailwindConfig),await Co(a)(e,t),Fn()(e,t),_o(a)(e,t),Xh(a)(e,t),Zh(a)(e,t),No(a)(e,t),Lo(a)(e,t),$o(a)(e,t)}}var om=C(()=>{l();hh();Ah();Dh();Kh();em();rm();nm();sm();am();Xr();ze()});function lm(i,e){let t=null,r=null;return i.walkAtRules("config",n=>{if(r=n.source?.input.file??e.opts.from??null,r===null)throw n.error("The `@config` directive cannot be used without setting `from` in your PostCSS config.");if(t)throw n.error("Only one `@config` directive is allowed per file.");let a=n.params.match(/(['"])(.*?)\1/);if(!a)throw n.error("A path is required when using the `@config` directive.");let s=a[2];if(ee.isAbsolute(s))throw n.error("The `@config` directive cannot be used with an absolute path.");if(t=ee.resolve(ee.dirname(r),s),!re.existsSync(t))throw n.error(`The config file at "${s}" does not exist. Make sure the path is correct and the file exists.`);n.remove()}),t||null}var um=C(()=>{l();je();wt()});var fm=v((XD,jo)=>{l();dh();om();lt();um();jo.exports=function(e){return{postcssPlugin:"tailwindcss",plugins:[De.DEBUG&&function(t){return console.log(` `),console.time("JIT TOTAL"),t},async function(t,r){e=lm(t,r)??e;let n=vo(e);if(t.type==="document"){let a=t.nodes.filter(s=>s.type==="root");for(let s of a)s.type==="root"&&await Nn(n)(s,r);return}await Nn(n)(t,r)},De.DEBUG&&function(t){return console.timeEnd("JIT TOTAL"),console.log(` `),t}].filter(Boolean)}};jo.exports.postcss=!0});var pm=v((KD,cm)=>{l();cm.exports=fm()});var zo=v((ZD,dm)=>{l();dm.exports=()=>["and_chr 114","and_uc 15.5","chrome 114","chrome 113","chrome 109","edge 114","firefox 114","ios_saf 16.5","ios_saf 16.4","ios_saf 16.3","ios_saf 16.1","opera 99","safari 16.5","samsung 21"]});var Ln={};_e(Ln,{agents:()=>O2,feature:()=>E2});function E2(){return{status:"cr",title:"CSS Feature Queries",stats:{ie:{"6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","5.5":"n"},edge:{"12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","79":"y","80":"y","81":"y","83":"y","84":"y","85":"y","86":"y","87":"y","88":"y","89":"y","90":"y","91":"y","92":"y","93":"y","94":"y","95":"y","96":"y","97":"y","98":"y","99":"y","100":"y","101":"y","102":"y","103":"y","104":"y","105":"y","106":"y","107":"y","108":"y","109":"y","110":"y","111":"y","112":"y","113":"y","114":"y"},firefox:{"2":"n","3":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y","60":"y","61":"y","62":"y","63":"y","64":"y","65":"y","66":"y","67":"y","68":"y","69":"y","70":"y","71":"y","72":"y","73":"y","74":"y","75":"y","76":"y","77":"y","78":"y","79":"y","80":"y","81":"y","82":"y","83":"y","84":"y","85":"y","86":"y","87":"y","88":"y","89":"y","90":"y","91":"y","92":"y","93":"y","94":"y","95":"y","96":"y","97":"y","98":"y","99":"y","100":"y","101":"y","102":"y","103":"y","104":"y","105":"y","106":"y","107":"y","108":"y","109":"y","110":"y","111":"y","112":"y","113":"y","114":"y","115":"y","116":"y","117":"y","3.5":"n","3.6":"n"},chrome:{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y","60":"y","61":"y","62":"y","63":"y","64":"y","65":"y","66":"y","67":"y","68":"y","69":"y","70":"y","71":"y","72":"y","73":"y","74":"y","75":"y","76":"y","77":"y","78":"y","79":"y","80":"y","81":"y","83":"y","84":"y","85":"y","86":"y","87":"y","88":"y","89":"y","90":"y","91":"y","92":"y","93":"y","94":"y","95":"y","96":"y","97":"y","98":"y","99":"y","100":"y","101":"y","102":"y","103":"y","104":"y","105":"y","106":"y","107":"y","108":"y","109":"y","110":"y","111":"y","112":"y","113":"y","114":"y","115":"y","116":"y","117":"y"},safari:{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","17":"y","9.1":"y","10.1":"y","11.1":"y","12.1":"y","13.1":"y","14.1":"y","15.1":"y","15.2-15.3":"y","15.4":"y","15.5":"y","15.6":"y","16.0":"y","16.1":"y","16.2":"y","16.3":"y","16.4":"y","16.5":"y","16.6":"y",TP:"y","3.1":"n","3.2":"n","5.1":"n","6.1":"n","7.1":"n"},opera:{"9":"n","11":"n","12":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","60":"y","62":"y","63":"y","64":"y","65":"y","66":"y","67":"y","68":"y","69":"y","70":"y","71":"y","72":"y","73":"y","74":"y","75":"y","76":"y","77":"y","78":"y","79":"y","80":"y","81":"y","82":"y","83":"y","84":"y","85":"y","86":"y","87":"y","88":"y","89":"y","90":"y","91":"y","92":"y","93":"y","94":"y","95":"y","96":"y","97":"y","98":"y","99":"y","100":"y","12.1":"y","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11.1":"n","11.5":"n","11.6":"n"},ios_saf:{"8":"n","17":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y","10.3":"y","11.0-11.2":"y","11.3-11.4":"y","12.0-12.1":"y","12.2-12.5":"y","13.0-13.1":"y","13.2":"y","13.3":"y","13.4-13.7":"y","14.0-14.4":"y","14.5-14.8":"y","15.0-15.1":"y","15.2-15.3":"y","15.4":"y","15.5":"y","15.6":"y","16.0":"y","16.1":"y","16.2":"y","16.3":"y","16.4":"y","16.5":"y","16.6":"y","3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8.1-8.4":"n"},op_mini:{all:"y"},android:{"3":"n","4":"n","114":"y","4.4":"y","4.4.3-4.4.4":"y","2.1":"n","2.2":"n","2.3":"n","4.1":"n","4.2-4.3":"n"},bb:{"7":"n","10":"n"},op_mob:{"10":"n","11":"n","12":"n","73":"y","11.1":"n","11.5":"n","12.1":"n"},and_chr:{"114":"y"},and_ff:{"115":"y"},ie_mob:{"10":"n","11":"n"},and_uc:{"15.5":"y"},samsung:{"4":"y","20":"y","21":"y","5.0-5.4":"y","6.2-6.4":"y","7.2-7.4":"y","8.2":"y","9.2":"y","10.1":"y","11.1-11.2":"y","12.0":"y","13.0":"y","14.0":"y","15.0":"y","16.0":"y","17.0":"y","18.0":"y","19.0":"y"},and_qq:{"13.1":"y"},baidu:{"13.18":"y"},kaios:{"2.5":"y","3.0-3.1":"y"}}}}var O2,$n=C(()=>{l();O2={ie:{prefix:"ms"},edge:{prefix:"webkit",prefix_exceptions:{"12":"ms","13":"ms","14":"ms","15":"ms","16":"ms","17":"ms","18":"ms"}},firefox:{prefix:"moz"},chrome:{prefix:"webkit"},safari:{prefix:"webkit"},opera:{prefix:"webkit",prefix_exceptions:{"9":"o","11":"o","12":"o","9.5-9.6":"o","10.0-10.1":"o","10.5":"o","10.6":"o","11.1":"o","11.5":"o","11.6":"o","12.1":"o"}},ios_saf:{prefix:"webkit"},op_mini:{prefix:"o"},android:{prefix:"webkit"},bb:{prefix:"webkit"},op_mob:{prefix:"o",prefix_exceptions:{"73":"webkit"}},and_chr:{prefix:"webkit"},and_ff:{prefix:"moz"},ie_mob:{prefix:"ms"},and_uc:{prefix:"webkit",prefix_exceptions:{"15.5":"webkit"}},samsung:{prefix:"webkit"},and_qq:{prefix:"webkit"},baidu:{prefix:"webkit"},kaios:{prefix:"moz"}}});var hm=v(()=>{l()});var ue=v((r4,pt)=>{l();var{list:Vo}=ye();pt.exports.error=function(i){let e=new Error(i);throw e.autoprefixer=!0,e};pt.exports.uniq=function(i){return[...new Set(i)]};pt.exports.removeNote=function(i){return i.includes(" ")?i.split(" ")[0]:i};pt.exports.escapeRegexp=function(i){return i.replace(/[$()*+-.?[\\\]^{|}]/g,"\\$&")};pt.exports.regexp=function(i,e=!0){return e&&(i=this.escapeRegexp(i)),new RegExp(`(^|[\\s,(])(${i}($|[\\s(,]))`,"gi")};pt.exports.editList=function(i,e){let t=Vo.comma(i),r=e(t,[]);if(t===r)return i;let n=i.match(/,\s*/);return n=n?n[0]:", ",r.join(n)};pt.exports.splitSelector=function(i){return Vo.comma(i).map(e=>Vo.space(e).map(t=>t.split(/(?=\.|#)/g)))}});var dt=v((i4,ym)=>{l();var T2=zo(),mm=($n(),Ln).agents,P2=ue(),gm=class{static prefixes(){if(this.prefixesCache)return this.prefixesCache;this.prefixesCache=[];for(let e in mm)this.prefixesCache.push(`-${mm[e].prefix}-`);return this.prefixesCache=P2.uniq(this.prefixesCache).sort((e,t)=>t.length-e.length),this.prefixesCache}static withPrefix(e){return this.prefixesRegexp||(this.prefixesRegexp=new RegExp(this.prefixes().join("|"))),this.prefixesRegexp.test(e)}constructor(e,t,r,n){this.data=e,this.options=r||{},this.browserslistOpts=n||{},this.selected=this.parse(t)}parse(e){let t={};for(let r in this.browserslistOpts)t[r]=this.browserslistOpts[r];return t.path=this.options.from,T2(e,t)}prefix(e){let[t,r]=e.split(" "),n=this.data[t],a=n.prefix_exceptions&&n.prefix_exceptions[r];return a||(a=n.prefix),`-${a}-`}isSelected(e){return this.selected.includes(e)}};ym.exports=gm});var ii=v((n4,wm)=>{l();wm.exports={prefix(i){let e=i.match(/^(-\w+-)/);return e?e[0]:""},unprefixed(i){return i.replace(/^-\w+-/,"")}}});var Wt=v((s4,vm)=>{l();var D2=dt(),bm=ii(),I2=ue();function Uo(i,e){let t=new i.constructor;for(let r of Object.keys(i||{})){let n=i[r];r==="parent"&&typeof n=="object"?e&&(t[r]=e):r==="source"||r===null?t[r]=n:Array.isArray(n)?t[r]=n.map(a=>Uo(a,t)):r!=="_autoprefixerPrefix"&&r!=="_autoprefixerValues"&&r!=="proxyCache"&&(typeof n=="object"&&n!==null&&(n=Uo(n,t)),t[r]=n)}return t}var jn=class{static hack(e){return this.hacks||(this.hacks={}),e.names.map(t=>(this.hacks[t]=e,this.hacks[t]))}static load(e,t,r){let n=this.hacks&&this.hacks[e];return n?new n(e,t,r):new this(e,t,r)}static clone(e,t){let r=Uo(e);for(let n in t)r[n]=t[n];return r}constructor(e,t,r){this.prefixes=t,this.name=e,this.all=r}parentPrefix(e){let t;return typeof e._autoprefixerPrefix!="undefined"?t=e._autoprefixerPrefix:e.type==="decl"&&e.prop[0]==="-"?t=bm.prefix(e.prop):e.type==="root"?t=!1:e.type==="rule"&&e.selector.includes(":-")&&/:(-\w+-)/.test(e.selector)?t=e.selector.match(/:(-\w+-)/)[1]:e.type==="atrule"&&e.name[0]==="-"?t=bm.prefix(e.name):t=this.parentPrefix(e.parent),D2.prefixes().includes(t)||(t=!1),e._autoprefixerPrefix=t,e._autoprefixerPrefix}process(e,t){if(!this.check(e))return;let r=this.parentPrefix(e),n=this.prefixes.filter(s=>!r||r===I2.removeNote(s)),a=[];for(let s of n)this.add(e,s,a.concat([s]),t)&&a.push(s);return a}clone(e,t){return jn.clone(e,t)}};vm.exports=jn});var M=v((a4,Sm)=>{l();var q2=Wt(),R2=dt(),xm=ue(),km=class extends q2{check(){return!0}prefixed(e,t){return t+e}normalize(e){return e}otherPrefixes(e,t){for(let r of R2.prefixes())if(r!==t&&e.includes(r))return!0;return!1}set(e,t){return e.prop=this.prefixed(e.prop,t),e}needCascade(e){return e._autoprefixerCascade||(e._autoprefixerCascade=this.all.options.cascade!==!1&&e.raw("before").includes(` `)),e._autoprefixerCascade}maxPrefixed(e,t){if(t._autoprefixerMax)return t._autoprefixerMax;let r=0;for(let n of e)n=xm.removeNote(n),n.length>r&&(r=n.length);return t._autoprefixerMax=r,t._autoprefixerMax}calcBefore(e,t,r=""){let a=this.maxPrefixed(e,t)-xm.removeNote(r).length,s=t.raw("before");return a>0&&(s+=Array(a).fill(" ").join("")),s}restoreBefore(e){let t=e.raw("before").split(` `),r=t[t.length-1];this.all.group(e).up(n=>{let a=n.raw("before").split(` `),s=a[a.length-1];s.lengths.prop===n.prop&&s.value===n.value)))return this.needCascade(e)&&(n.raws.before=this.calcBefore(r,e,t)),e.parent.insertBefore(e,n)}isAlready(e,t){let r=this.all.group(e).up(n=>n.prop===t);return r||(r=this.all.group(e).down(n=>n.prop===t)),r}add(e,t,r,n){let a=this.prefixed(e.prop,t);if(!(this.isAlready(e,a)||this.otherPrefixes(e.value,t)))return this.insert(e,t,r,n)}process(e,t){if(!this.needCascade(e)){super.process(e,t);return}let r=super.process(e,t);!r||!r.length||(this.restoreBefore(e),e.raws.before=this.calcBefore(r,e))}old(e,t){return[this.prefixed(e,t)]}};Sm.exports=km});var Am=v((o4,Cm)=>{l();Cm.exports=function i(e){return{mul:t=>new i(e*t),div:t=>new i(e/t),simplify:()=>new i(e),toString:()=>e.toString()}}});var Em=v((l4,Om)=>{l();var M2=Am(),B2=Wt(),Wo=ue(),F2=/(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpcm|dpi|x)/gi,N2=/(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpcm|dpi|x)/i,_m=class extends B2{prefixName(e,t){return e==="-moz-"?t+"--moz-device-pixel-ratio":e+t+"-device-pixel-ratio"}prefixQuery(e,t,r,n,a){return n=new M2(n),a==="dpi"?n=n.div(96):a==="dpcm"&&(n=n.mul(2.54).div(96)),n=n.simplify(),e==="-o-"&&(n=n.n+"/"+n.d),this.prefixName(e,t)+r+n}clean(e){if(!this.bad){this.bad=[];for(let t of this.prefixes)this.bad.push(this.prefixName(t,"min")),this.bad.push(this.prefixName(t,"max"))}e.params=Wo.editList(e.params,t=>t.filter(r=>this.bad.every(n=>!r.includes(n))))}process(e){let t=this.parentPrefix(e),r=t?[t]:this.prefixes;e.params=Wo.editList(e.params,(n,a)=>{for(let s of n){if(!s.includes("min-resolution")&&!s.includes("max-resolution")){a.push(s);continue}for(let o of r){let u=s.replace(F2,c=>{let f=c.match(N2);return this.prefixQuery(o,f[1],f[2],f[3],f[4])});a.push(u)}a.push(s)}return Wo.uniq(a)})}};Om.exports=_m});var Pm=v((u4,Tm)=>{l();var Go="(".charCodeAt(0),Ho=")".charCodeAt(0),zn="'".charCodeAt(0),Yo='"'.charCodeAt(0),Qo="\\".charCodeAt(0),Gt="/".charCodeAt(0),Jo=",".charCodeAt(0),Xo=":".charCodeAt(0),Vn="*".charCodeAt(0),L2="u".charCodeAt(0),$2="U".charCodeAt(0),j2="+".charCodeAt(0),z2=/^[a-f0-9?-]+$/i;Tm.exports=function(i){for(var e=[],t=i,r,n,a,s,o,u,c,f,d=0,p=t.charCodeAt(d),m=t.length,b=[{nodes:e}],x=0,y,w="",k="",S="";d{l();Dm.exports=function i(e,t,r){var n,a,s,o;for(n=0,a=e.length;n{l();function qm(i,e){var t=i.type,r=i.value,n,a;return e&&(a=e(i))!==void 0?a:t==="word"||t==="space"?r:t==="string"?(n=i.quote||"",n+r+(i.unclosed?"":n)):t==="comment"?"/*"+r+(i.unclosed?"":"*/"):t==="div"?(i.before||"")+r+(i.after||""):Array.isArray(i.nodes)?(n=Rm(i.nodes,e),t!=="function"?n:r+"("+(i.before||"")+n+(i.after||"")+(i.unclosed?"":")")):r}function Rm(i,e){var t,r;if(Array.isArray(i)){for(t="",r=i.length-1;~r;r-=1)t=qm(i[r],e)+t;return t}return qm(i,e)}Mm.exports=Rm});var Nm=v((p4,Fm)=>{l();var Un="-".charCodeAt(0),Wn="+".charCodeAt(0),Ko=".".charCodeAt(0),V2="e".charCodeAt(0),U2="E".charCodeAt(0);function W2(i){var e=i.charCodeAt(0),t;if(e===Wn||e===Un){if(t=i.charCodeAt(1),t>=48&&t<=57)return!0;var r=i.charCodeAt(2);return t===Ko&&r>=48&&r<=57}return e===Ko?(t=i.charCodeAt(1),t>=48&&t<=57):e>=48&&e<=57}Fm.exports=function(i){var e=0,t=i.length,r,n,a;if(t===0||!W2(i))return!1;for(r=i.charCodeAt(e),(r===Wn||r===Un)&&e++;e57));)e+=1;if(r=i.charCodeAt(e),n=i.charCodeAt(e+1),r===Ko&&n>=48&&n<=57)for(e+=2;e57));)e+=1;if(r=i.charCodeAt(e),n=i.charCodeAt(e+1),a=i.charCodeAt(e+2),(r===V2||r===U2)&&(n>=48&&n<=57||(n===Wn||n===Un)&&a>=48&&a<=57))for(e+=n===Wn||n===Un?3:2;e57));)e+=1;return{number:i.slice(0,e),unit:i.slice(e)}}});var Gn=v((d4,jm)=>{l();var G2=Pm(),Lm=Im(),$m=Bm();function ht(i){return this instanceof ht?(this.nodes=G2(i),this):new ht(i)}ht.prototype.toString=function(){return Array.isArray(this.nodes)?$m(this.nodes):""};ht.prototype.walk=function(i,e){return Lm(this.nodes,i,e),this};ht.unit=Nm();ht.walk=Lm;ht.stringify=$m;jm.exports=ht});var Gm=v((h4,Wm)=>{l();var{list:H2}=ye(),zm=Gn(),Y2=dt(),Vm=ii(),Um=class{constructor(e){this.props=["transition","transition-property"],this.prefixes=e}add(e,t){let r,n,a=this.prefixes.add[e.prop],s=this.ruleVendorPrefixes(e),o=s||a&&a.prefixes||[],u=this.parse(e.value),c=u.map(m=>this.findProp(m)),f=[];if(c.some(m=>m[0]==="-"))return;for(let m of u){if(n=this.findProp(m),n[0]==="-")continue;let b=this.prefixes.add[n];if(!(!b||!b.prefixes))for(r of b.prefixes){if(s&&!s.some(y=>r.includes(y)))continue;let x=this.prefixes.prefixed(n,r);x!=="-ms-transform"&&!c.includes(x)&&(this.disabled(n,r)||f.push(this.clone(n,x,m)))}}u=u.concat(f);let d=this.stringify(u),p=this.stringify(this.cleanFromUnprefixed(u,"-webkit-"));if(o.includes("-webkit-")&&this.cloneBefore(e,`-webkit-${e.prop}`,p),this.cloneBefore(e,e.prop,p),o.includes("-o-")){let m=this.stringify(this.cleanFromUnprefixed(u,"-o-"));this.cloneBefore(e,`-o-${e.prop}`,m)}for(r of o)if(r!=="-webkit-"&&r!=="-o-"){let m=this.stringify(this.cleanOtherPrefixes(u,r));this.cloneBefore(e,r+e.prop,m)}d!==e.value&&!this.already(e,e.prop,d)&&(this.checkForWarning(t,e),e.cloneBefore(),e.value=d)}findProp(e){let t=e[0].value;if(/^\d/.test(t)){for(let[r,n]of e.entries())if(r!==0&&n.type==="word")return n.value}return t}already(e,t,r){return e.parent.some(n=>n.prop===t&&n.value===r)}cloneBefore(e,t,r){this.already(e,t,r)||e.cloneBefore({prop:t,value:r})}checkForWarning(e,t){if(t.prop!=="transition-property")return;let r=!1,n=!1;t.parent.each(a=>{if(a.type!=="decl"||a.prop.indexOf("transition-")!==0)return;let s=H2.comma(a.value);if(a.prop==="transition-property"){s.forEach(o=>{let u=this.prefixes.add[o];u&&u.prefixes&&u.prefixes.length>0&&(r=!0)});return}return n=n||s.length>1,!1}),r&&n&&t.warn(e,"Replace transition-property to transition, because Autoprefixer could not support any cases of transition-property and other transition-*")}remove(e){let t=this.parse(e.value);t=t.filter(s=>{let o=this.prefixes.remove[this.findProp(s)];return!o||!o.remove});let r=this.stringify(t);if(e.value===r)return;if(t.length===0){e.remove();return}let n=e.parent.some(s=>s.prop===e.prop&&s.value===r),a=e.parent.some(s=>s!==e&&s.prop===e.prop&&s.value.length>r.length);if(n||a){e.remove();return}e.value=r}parse(e){let t=zm(e),r=[],n=[];for(let a of t.nodes)n.push(a),a.type==="div"&&a.value===","&&(r.push(n),n=[]);return r.push(n),r.filter(a=>a.length>0)}stringify(e){if(e.length===0)return"";let t=[];for(let r of e)r[r.length-1].type!=="div"&&r.push(this.div(e)),t=t.concat(r);return t[0].type==="div"&&(t=t.slice(1)),t[t.length-1].type==="div"&&(t=t.slice(0,-2+1||void 0)),zm.stringify({nodes:t})}clone(e,t,r){let n=[],a=!1;for(let s of r)!a&&s.type==="word"&&s.value===e?(n.push({type:"word",value:t}),a=!0):n.push(s);return n}div(e){for(let t of e)for(let r of t)if(r.type==="div"&&r.value===",")return r;return{type:"div",value:",",after:" "}}cleanOtherPrefixes(e,t){return e.filter(r=>{let n=Vm.prefix(this.findProp(r));return n===""||n===t})}cleanFromUnprefixed(e,t){let r=e.map(a=>this.findProp(a)).filter(a=>a.slice(0,t.length)===t).map(a=>this.prefixes.unprefixed(a)),n=[];for(let a of e){let s=this.findProp(a),o=Vm.prefix(s);!r.includes(s)&&(o===t||o==="")&&n.push(a)}return n}disabled(e,t){let r=["order","justify-content","align-self","align-content"];if(e.includes("flex")||r.includes(e)){if(this.prefixes.options.flexbox===!1)return!0;if(this.prefixes.options.flexbox==="no-2009")return t.includes("2009")}}ruleVendorPrefixes(e){let{parent:t}=e;if(t.type!=="rule")return!1;if(!t.selector.includes(":-"))return!1;let r=Y2.prefixes().filter(n=>t.selector.includes(":"+n));return r.length>0?r:!1}};Wm.exports=Um});var Ht=v((m4,Ym)=>{l();var Q2=ue(),Hm=class{constructor(e,t,r,n){this.unprefixed=e,this.prefixed=t,this.string=r||t,this.regexp=n||Q2.regexp(t)}check(e){return e.includes(this.string)?!!e.match(this.regexp):!1}};Ym.exports=Hm});var Se=v((g4,Jm)=>{l();var J2=Wt(),X2=Ht(),K2=ii(),Z2=ue(),Qm=class extends J2{static save(e,t){let r=t.prop,n=[];for(let a in t._autoprefixerValues){let s=t._autoprefixerValues[a];if(s===t.value)continue;let o,u=K2.prefix(r);if(u==="-pie-")continue;if(u===a){o=t.value=s,n.push(o);continue}let c=e.prefixed(r,a),f=t.parent;if(!f.every(b=>b.prop!==c)){n.push(o);continue}let d=s.replace(/\s+/," ");if(f.some(b=>b.prop===t.prop&&b.value.replace(/\s+/," ")===d)){n.push(o);continue}let m=this.clone(t,{value:s});o=t.parent.insertBefore(t,m),n.push(o)}return n}check(e){let t=e.value;return t.includes(this.name)?!!t.match(this.regexp()):!1}regexp(){return this.regexpCache||(this.regexpCache=Z2.regexp(this.name))}replace(e,t){return e.replace(this.regexp(),`$1${t}$2`)}value(e){return e.raws.value&&e.raws.value.value===e.value?e.raws.value.raw:e.value}add(e,t){e._autoprefixerValues||(e._autoprefixerValues={});let r=e._autoprefixerValues[t]||this.value(e),n;do if(n=r,r=this.replace(r,t),r===!1)return;while(r!==n);e._autoprefixerValues[t]=r}old(e){return new X2(this.name,e+this.name)}};Jm.exports=Qm});var mt=v((y4,Xm)=>{l();Xm.exports={}});var el=v((w4,eg)=>{l();var Km=Gn(),eA=Se(),tA=mt().insertAreas,rA=/(^|[^-])linear-gradient\(\s*(top|left|right|bottom)/i,iA=/(^|[^-])radial-gradient\(\s*\d+(\w*|%)\s+\d+(\w*|%)\s*,/i,nA=/(!\s*)?autoprefixer:\s*ignore\s+next/i,sA=/(!\s*)?autoprefixer\s*grid:\s*(on|off|(no-)?autoplace)/i,aA=["width","height","min-width","max-width","min-height","max-height","inline-size","min-inline-size","max-inline-size","block-size","min-block-size","max-block-size"];function Zo(i){return i.parent.some(e=>e.prop==="grid-template"||e.prop==="grid-template-areas")}function oA(i){let e=i.parent.some(r=>r.prop==="grid-template-rows"),t=i.parent.some(r=>r.prop==="grid-template-columns");return e&&t}var Zm=class{constructor(e){this.prefixes=e}add(e,t){let r=this.prefixes.add["@resolution"],n=this.prefixes.add["@keyframes"],a=this.prefixes.add["@viewport"],s=this.prefixes.add["@supports"];e.walkAtRules(f=>{if(f.name==="keyframes"){if(!this.disabled(f,t))return n&&n.process(f)}else if(f.name==="viewport"){if(!this.disabled(f,t))return a&&a.process(f)}else if(f.name==="supports"){if(this.prefixes.options.supports!==!1&&!this.disabled(f,t))return s.process(f)}else if(f.name==="media"&&f.params.includes("-resolution")&&!this.disabled(f,t))return r&&r.process(f)}),e.walkRules(f=>{if(!this.disabled(f,t))return this.prefixes.add.selectors.map(d=>d.process(f,t))});function o(f){return f.parent.nodes.some(d=>{if(d.type!=="decl")return!1;let p=d.prop==="display"&&/(inline-)?grid/.test(d.value),m=d.prop.startsWith("grid-template"),b=/^grid-([A-z]+-)?gap/.test(d.prop);return p||m||b})}function u(f){return f.parent.some(d=>d.prop==="display"&&/(inline-)?flex/.test(d.value))}let c=this.gridStatus(e,t)&&this.prefixes.add["grid-area"]&&this.prefixes.add["grid-area"].prefixes;return e.walkDecls(f=>{if(this.disabledDecl(f,t))return;let d=f.parent,p=f.prop,m=f.value;if(p==="grid-row-span"){t.warn("grid-row-span is not part of final Grid Layout. Use grid-row.",{node:f});return}else if(p==="grid-column-span"){t.warn("grid-column-span is not part of final Grid Layout. Use grid-column.",{node:f});return}else if(p==="display"&&m==="box"){t.warn("You should write display: flex by final spec instead of display: box",{node:f});return}else if(p==="text-emphasis-position")(m==="under"||m==="over")&&t.warn("You should use 2 values for text-emphasis-position For example, `under left` instead of just `under`.",{node:f});else if(/^(align|justify|place)-(items|content)$/.test(p)&&u(f))(m==="start"||m==="end")&&t.warn(`${m} value has mixed support, consider using flex-${m} instead`,{node:f});else if(p==="text-decoration-skip"&&m==="ink")t.warn("Replace text-decoration-skip: ink to text-decoration-skip-ink: auto, because spec had been changed",{node:f});else{if(c&&this.gridStatus(f,t))if(f.value==="subgrid"&&t.warn("IE does not support subgrid",{node:f}),/^(align|justify|place)-items$/.test(p)&&o(f)){let x=p.replace("-items","-self");t.warn(`IE does not support ${p} on grid containers. Try using ${x} on child elements instead: ${f.parent.selector} > * { ${x}: ${f.value} }`,{node:f})}else if(/^(align|justify|place)-content$/.test(p)&&o(f))t.warn(`IE does not support ${f.prop} on grid containers`,{node:f});else if(p==="display"&&f.value==="contents"){t.warn("Please do not use display: contents; if you have grid setting enabled",{node:f});return}else if(f.prop==="grid-gap"){let x=this.gridStatus(f,t);x==="autoplace"&&!oA(f)&&!Zo(f)?t.warn("grid-gap only works if grid-template(-areas) is being used or both rows and columns have been declared and cells have not been manually placed inside the explicit grid",{node:f}):(x===!0||x==="no-autoplace")&&!Zo(f)&&t.warn("grid-gap only works if grid-template(-areas) is being used",{node:f})}else if(p==="grid-auto-columns"){t.warn("grid-auto-columns is not supported by IE",{node:f});return}else if(p==="grid-auto-rows"){t.warn("grid-auto-rows is not supported by IE",{node:f});return}else if(p==="grid-auto-flow"){let x=d.some(w=>w.prop==="grid-template-rows"),y=d.some(w=>w.prop==="grid-template-columns");Zo(f)?t.warn("grid-auto-flow is not supported by IE",{node:f}):m.includes("dense")?t.warn("grid-auto-flow: dense is not supported by IE",{node:f}):!x&&!y&&t.warn("grid-auto-flow works only if grid-template-rows and grid-template-columns are present in the same rule",{node:f});return}else if(m.includes("auto-fit")){t.warn("auto-fit value is not supported by IE",{node:f,word:"auto-fit"});return}else if(m.includes("auto-fill")){t.warn("auto-fill value is not supported by IE",{node:f,word:"auto-fill"});return}else p.startsWith("grid-template")&&m.includes("[")&&t.warn("Autoprefixer currently does not support line names. Try using grid-template-areas instead.",{node:f,word:"["});if(m.includes("radial-gradient"))if(iA.test(f.value))t.warn("Gradient has outdated direction syntax. New syntax is like `closest-side at 0 0` instead of `0 0, closest-side`.",{node:f});else{let x=Km(m);for(let y of x.nodes)if(y.type==="function"&&y.value==="radial-gradient")for(let w of y.nodes)w.type==="word"&&(w.value==="cover"?t.warn("Gradient has outdated direction syntax. Replace `cover` to `farthest-corner`.",{node:f}):w.value==="contain"&&t.warn("Gradient has outdated direction syntax. Replace `contain` to `closest-side`.",{node:f}))}m.includes("linear-gradient")&&rA.test(m)&&t.warn("Gradient has outdated direction syntax. New syntax is like `to left` instead of `right`.",{node:f})}aA.includes(f.prop)&&(f.value.includes("-fill-available")||(f.value.includes("fill-available")?t.warn("Replace fill-available to stretch, because spec had been changed",{node:f}):f.value.includes("fill")&&Km(m).nodes.some(y=>y.type==="word"&&y.value==="fill")&&t.warn("Replace fill to stretch, because spec had been changed",{node:f})));let b;if(f.prop==="transition"||f.prop==="transition-property")return this.prefixes.transition.add(f,t);if(f.prop==="align-self"){if(this.displayType(f)!=="grid"&&this.prefixes.options.flexbox!==!1&&(b=this.prefixes.add["align-self"],b&&b.prefixes&&b.process(f)),this.gridStatus(f,t)!==!1&&(b=this.prefixes.add["grid-row-align"],b&&b.prefixes))return b.process(f,t)}else if(f.prop==="justify-self"){if(this.gridStatus(f,t)!==!1&&(b=this.prefixes.add["grid-column-align"],b&&b.prefixes))return b.process(f,t)}else if(f.prop==="place-self"){if(b=this.prefixes.add["place-self"],b&&b.prefixes&&this.gridStatus(f,t)!==!1)return b.process(f,t)}else if(b=this.prefixes.add[f.prop],b&&b.prefixes)return b.process(f,t)}),this.gridStatus(e,t)&&tA(e,this.disabled),e.walkDecls(f=>{if(this.disabledValue(f,t))return;let d=this.prefixes.unprefixed(f.prop),p=this.prefixes.values("add",d);if(Array.isArray(p))for(let m of p)m.process&&m.process(f,t);eA.save(this.prefixes,f)})}remove(e,t){let r=this.prefixes.remove["@resolution"];e.walkAtRules((n,a)=>{this.prefixes.remove[`@${n.name}`]?this.disabled(n,t)||n.parent.removeChild(a):n.name==="media"&&n.params.includes("-resolution")&&r&&r.clean(n)});for(let n of this.prefixes.remove.selectors)e.walkRules((a,s)=>{n.check(a)&&(this.disabled(a,t)||a.parent.removeChild(s))});return e.walkDecls((n,a)=>{if(this.disabled(n,t))return;let s=n.parent,o=this.prefixes.unprefixed(n.prop);if((n.prop==="transition"||n.prop==="transition-property")&&this.prefixes.transition.remove(n),this.prefixes.remove[n.prop]&&this.prefixes.remove[n.prop].remove){let u=this.prefixes.group(n).down(c=>this.prefixes.normalize(c.prop)===o);if(o==="flex-flow"&&(u=!0),n.prop==="-webkit-box-orient"){let c={"flex-direction":!0,"flex-flow":!0};if(!n.parent.some(f=>c[f.prop]))return}if(u&&!this.withHackValue(n)){n.raw("before").includes(` `)&&this.reduceSpaces(n),s.removeChild(a);return}}for(let u of this.prefixes.values("remove",o)){if(!u.check||!u.check(n.value))continue;if(o=u.unprefixed,this.prefixes.group(n).down(f=>f.value.includes(o))){s.removeChild(a);return}}})}withHackValue(e){return e.prop==="-webkit-background-clip"&&e.value==="text"}disabledValue(e,t){return this.gridStatus(e,t)===!1&&e.type==="decl"&&e.prop==="display"&&e.value.includes("grid")||this.prefixes.options.flexbox===!1&&e.type==="decl"&&e.prop==="display"&&e.value.includes("flex")||e.type==="decl"&&e.prop==="content"?!0:this.disabled(e,t)}disabledDecl(e,t){if(this.gridStatus(e,t)===!1&&e.type==="decl"&&(e.prop.includes("grid")||e.prop==="justify-items"))return!0;if(this.prefixes.options.flexbox===!1&&e.type==="decl"){let r=["order","justify-content","align-items","align-content"];if(e.prop.includes("flex")||r.includes(e.prop))return!0}return this.disabled(e,t)}disabled(e,t){if(!e)return!1;if(e._autoprefixerDisabled!==void 0)return e._autoprefixerDisabled;if(e.parent){let n=e.prev();if(n&&n.type==="comment"&&nA.test(n.text))return e._autoprefixerDisabled=!0,e._autoprefixerSelfDisabled=!0,!0}let r=null;if(e.nodes){let n;e.each(a=>{a.type==="comment"&&/(!\s*)?autoprefixer:\s*(off|on)/i.test(a.text)&&(typeof n!="undefined"?t.warn("Second Autoprefixer control comment was ignored. Autoprefixer applies control comment to whole block, not to next rules.",{node:a}):n=/on/i.test(a.text))}),n!==void 0&&(r=!n)}if(!e.nodes||r===null)if(e.parent){let n=this.disabled(e.parent,t);e.parent._autoprefixerSelfDisabled===!0?r=!1:r=n}else r=!1;return e._autoprefixerDisabled=r,r}reduceSpaces(e){let t=!1;if(this.prefixes.group(e).up(()=>(t=!0,!0)),t)return;let r=e.raw("before").split(` `),n=r[r.length-1].length,a=!1;this.prefixes.group(e).down(s=>{r=s.raw("before").split(` `);let o=r.length-1;r[o].length>n&&(a===!1&&(a=r[o].length-n),r[o]=r[o].slice(0,-a),s.raws.before=r.join(` `))})}displayType(e){for(let t of e.parent.nodes)if(t.prop==="display"){if(t.value.includes("flex"))return"flex";if(t.value.includes("grid"))return"grid"}return!1}gridStatus(e,t){if(!e)return!1;if(e._autoprefixerGridStatus!==void 0)return e._autoprefixerGridStatus;let r=null;if(e.nodes){let n;e.each(a=>{if(a.type==="comment"&&sA.test(a.text)){let s=/:\s*autoplace/i.test(a.text),o=/no-autoplace/i.test(a.text);typeof n!="undefined"?t.warn("Second Autoprefixer grid control comment was ignored. Autoprefixer applies control comments to the whole block, not to the next rules.",{node:a}):s?n="autoplace":o?n=!0:n=/on/i.test(a.text)}}),n!==void 0&&(r=n)}if(e.type==="atrule"&&e.name==="supports"){let n=e.params;n.includes("grid")&&n.includes("auto")&&(r=!1)}if(!e.nodes||r===null)if(e.parent){let n=this.gridStatus(e.parent,t);e.parent._autoprefixerSelfDisabled===!0?r=!1:r=n}else typeof this.prefixes.options.grid!="undefined"?r=this.prefixes.options.grid:typeof h.env.AUTOPREFIXER_GRID!="undefined"?h.env.AUTOPREFIXER_GRID==="autoplace"?r="autoplace":r=!0:r=!1;return e._autoprefixerGridStatus=r,r}};eg.exports=Zm});var rg=v((b4,tg)=>{l();tg.exports={A:{A:{"2":"K E F G A B JC"},B:{"1":"C L M H N D O P Q R S T U V W X Y Z a b c d e f g h i j n o p q r s t u v w x y z I"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB 0B dB 1B eB fB gB hB iB jB kB lB mB nB oB m pB qB rB sB tB P Q R 2B S T U V W X Y Z a b c d e f g h i j n o p q r s t u v w x y z I uB 3B 4B","2":"0 1 KC zB J K E F G A B C L M H N D O k l LC MC"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB 0B dB 1B eB fB gB hB iB jB kB lB mB nB oB m pB qB rB sB tB P Q R S T U V W X Y Z a b c d e f g h i j n o p q r s t u v w x y z I uB 3B 4B","2":"0 1 2 3 4 5 6 7 J K E F G A B C L M H N D O k l"},E:{"1":"G A B C L M H D RC 6B vB wB 7B SC TC 8B 9B xB AC yB BC CC DC EC FC GC UC","2":"0 J K E F NC 5B OC PC QC"},F:{"1":"1 2 3 4 5 6 7 8 9 H N D O k l AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB m pB qB rB sB tB P Q R 2B S T U V W X Y Z a b c d e f g h i j wB","2":"G B C VC WC XC YC vB HC ZC"},G:{"1":"D fC gC hC iC jC kC lC mC nC oC pC qC rC sC tC 8B 9B xB AC yB BC CC DC EC FC GC","2":"F 5B aC IC bC cC dC eC"},H:{"1":"uC"},I:{"1":"I zC 0C","2":"zB J vC wC xC yC IC"},J:{"2":"E A"},K:{"1":"m","2":"A B C vB HC wB"},L:{"1":"I"},M:{"1":"uB"},N:{"2":"A B"},O:{"1":"xB"},P:{"1":"J k l 1C 2C 3C 4C 5C 6B 6C 7C 8C 9C AD yB BD CD DD"},Q:{"1":"7B"},R:{"1":"ED"},S:{"1":"FD GD"}},B:4,C:"CSS Feature Queries"}});var ag=v((v4,sg)=>{l();function ig(i){return i[i.length-1]}var ng={parse(i){let e=[""],t=[e];for(let r of i){if(r==="("){e=[""],ig(t).push(e),t.push(e);continue}if(r===")"){t.pop(),e=ig(t),e.push("");continue}e[e.length-1]+=r}return t[0]},stringify(i){let e="";for(let t of i){if(typeof t=="object"){e+=`(${ng.stringify(t)})`;continue}e+=t}return e}};sg.exports=ng});var cg=v((x4,fg)=>{l();var lA=rg(),{feature:uA}=($n(),Ln),{parse:fA}=ye(),cA=dt(),tl=ag(),pA=Se(),dA=ue(),og=uA(lA),lg=[];for(let i in og.stats){let e=og.stats[i];for(let t in e){let r=e[t];/y/.test(r)&&lg.push(i+" "+t)}}var ug=class{constructor(e,t){this.Prefixes=e,this.all=t}prefixer(){if(this.prefixerCache)return this.prefixerCache;let e=this.all.browsers.selected.filter(r=>lg.includes(r)),t=new cA(this.all.browsers.data,e,this.all.options);return this.prefixerCache=new this.Prefixes(this.all.data,t,this.all.options),this.prefixerCache}parse(e){let t=e.split(":"),r=t[0],n=t[1];return n||(n=""),[r.trim(),n.trim()]}virtual(e){let[t,r]=this.parse(e),n=fA("a{}").first;return n.append({prop:t,value:r,raws:{before:""}}),n}prefixed(e){let t=this.virtual(e);if(this.disabled(t.first))return t.nodes;let r={warn:()=>null},n=this.prefixer().add[t.first.prop];n&&n.process&&n.process(t.first,r);for(let a of t.nodes){for(let s of this.prefixer().values("add",t.first.prop))s.process(a);pA.save(this.all,a)}return t.nodes}isNot(e){return typeof e=="string"&&/not\s*/i.test(e)}isOr(e){return typeof e=="string"&&/\s*or\s*/i.test(e)}isProp(e){return typeof e=="object"&&e.length===1&&typeof e[0]=="string"}isHack(e,t){return!new RegExp(`(\\(|\\s)${dA.escapeRegexp(t)}:`).test(e)}toRemove(e,t){let[r,n]=this.parse(e),a=this.all.unprefixed(r),s=this.all.cleaner();if(s.remove[r]&&s.remove[r].remove&&!this.isHack(t,a))return!0;for(let o of s.values("remove",a))if(o.check(n))return!0;return!1}remove(e,t){let r=0;for(;rtypeof t!="object"?t:t.length===1&&typeof t[0]=="object"?this.cleanBrackets(t[0]):this.cleanBrackets(t))}convert(e){let t=[""];for(let r of e)t.push([`${r.prop}: ${r.value}`]),t.push(" or ");return t[t.length-1]="",t}normalize(e){if(typeof e!="object")return e;if(e=e.filter(t=>t!==""),typeof e[0]=="string"){let t=e[0].trim();if(t.includes(":")||t==="selector"||t==="not selector")return[tl.stringify(e)]}return e.map(t=>this.normalize(t))}add(e,t){return e.map(r=>{if(this.isProp(r)){let n=this.prefixed(r[0]);return n.length>1?this.convert(n):r}return typeof r=="object"?this.add(r,t):r})}process(e){let t=tl.parse(e.params);t=this.normalize(t),t=this.remove(t,e.params),t=this.add(t,e.params),t=this.cleanBrackets(t),e.params=tl.stringify(t)}disabled(e){if(!this.all.options.grid&&(e.prop==="display"&&e.value.includes("grid")||e.prop.includes("grid")||e.prop==="justify-items"))return!0;if(this.all.options.flexbox===!1){if(e.prop==="display"&&e.value.includes("flex"))return!0;let t=["order","justify-content","align-items","align-content"];if(e.prop.includes("flex")||t.includes(e.prop))return!0}return!1}};fg.exports=ug});var hg=v((k4,dg)=>{l();var pg=class{constructor(e,t){this.prefix=t,this.prefixed=e.prefixed(this.prefix),this.regexp=e.regexp(this.prefix),this.prefixeds=e.possible().map(r=>[e.prefixed(r),e.regexp(r)]),this.unprefixed=e.name,this.nameRegexp=e.regexp()}isHack(e){let t=e.parent.index(e)+1,r=e.parent.nodes;for(;t{l();var{list:hA}=ye(),mA=hg(),gA=Wt(),yA=dt(),wA=ue(),mg=class extends gA{constructor(e,t,r){super(e,t,r);this.regexpCache=new Map}check(e){return e.selector.includes(this.name)?!!e.selector.match(this.regexp()):!1}prefixed(e){return this.name.replace(/^(\W*)/,`$1${e}`)}regexp(e){if(!this.regexpCache.has(e)){let t=e?this.prefixed(e):this.name;this.regexpCache.set(e,new RegExp(`(^|[^:"'=])${wA.escapeRegexp(t)}`,"gi"))}return this.regexpCache.get(e)}possible(){return yA.prefixes()}prefixeds(e){if(e._autoprefixerPrefixeds){if(e._autoprefixerPrefixeds[this.name])return e._autoprefixerPrefixeds}else e._autoprefixerPrefixeds={};let t={};if(e.selector.includes(",")){let n=hA.comma(e.selector).filter(a=>a.includes(this.name));for(let a of this.possible())t[a]=n.map(s=>this.replace(s,a)).join(", ")}else for(let r of this.possible())t[r]=this.replace(e.selector,r);return e._autoprefixerPrefixeds[this.name]=t,e._autoprefixerPrefixeds}already(e,t,r){let n=e.parent.index(e)-1;for(;n>=0;){let a=e.parent.nodes[n];if(a.type!=="rule")return!1;let s=!1;for(let o in t[this.name]){let u=t[this.name][o];if(a.selector===u){if(r===o)return!0;s=!0;break}}if(!s)return!1;n-=1}return!1}replace(e,t){return e.replace(this.regexp(),`$1${this.prefixed(t)}`)}add(e,t){let r=this.prefixeds(e);if(this.already(e,r,t))return;let n=this.clone(e,{selector:r[this.name][t]});e.parent.insertBefore(e,n)}old(e){return new mA(this,e)}};gg.exports=mg});var bg=v((C4,wg)=>{l();var bA=Wt(),yg=class extends bA{add(e,t){let r=t+e.name;if(e.parent.some(s=>s.name===r&&s.params===e.params))return;let a=this.clone(e,{name:r});return e.parent.insertBefore(e,a)}process(e){let t=this.parentPrefix(e);for(let r of this.prefixes)(!t||t===r)&&this.add(e,r)}};wg.exports=yg});var xg=v((A4,vg)=>{l();var vA=Yt(),rl=class extends vA{prefixed(e){return e==="-webkit-"?":-webkit-full-screen":e==="-moz-"?":-moz-full-screen":`:${e}fullscreen`}};rl.names=[":fullscreen"];vg.exports=rl});var Sg=v((_4,kg)=>{l();var xA=Yt(),il=class extends xA{possible(){return super.possible().concat(["-moz- old","-ms- old"])}prefixed(e){return e==="-webkit-"?"::-webkit-input-placeholder":e==="-ms-"?"::-ms-input-placeholder":e==="-ms- old"?":-ms-input-placeholder":e==="-moz- old"?":-moz-placeholder":`::${e}placeholder`}};il.names=["::placeholder"];kg.exports=il});var Ag=v((O4,Cg)=>{l();var kA=Yt(),nl=class extends kA{prefixed(e){return e==="-ms-"?":-ms-input-placeholder":`:${e}placeholder-shown`}};nl.names=[":placeholder-shown"];Cg.exports=nl});var Og=v((E4,_g)=>{l();var SA=Yt(),CA=ue(),sl=class extends SA{constructor(e,t,r){super(e,t,r);this.prefixes&&(this.prefixes=CA.uniq(this.prefixes.map(n=>"-webkit-")))}prefixed(e){return e==="-webkit-"?"::-webkit-file-upload-button":`::${e}file-selector-button`}};sl.names=["::file-selector-button"];_g.exports=sl});var de=v((T4,Eg)=>{l();Eg.exports=function(i){let e;return i==="-webkit- 2009"||i==="-moz-"?e=2009:i==="-ms-"?e=2012:i==="-webkit-"&&(e="final"),i==="-webkit- 2009"&&(i="-webkit-"),[e,i]}});var Ig=v((P4,Dg)=>{l();var Tg=ye().list,Pg=de(),AA=M(),Qt=class extends AA{prefixed(e,t){let r;return[r,t]=Pg(t),r===2009?t+"box-flex":super.prefixed(e,t)}normalize(){return"flex"}set(e,t){let r=Pg(t)[0];if(r===2009)return e.value=Tg.space(e.value)[0],e.value=Qt.oldValues[e.value]||e.value,super.set(e,t);if(r===2012){let n=Tg.space(e.value);n.length===3&&n[2]==="0"&&(e.value=n.slice(0,2).concat("0px").join(" "))}return super.set(e,t)}};Qt.names=["flex","box-flex"];Qt.oldValues={auto:"1",none:"0"};Dg.exports=Qt});var Mg=v((D4,Rg)=>{l();var qg=de(),_A=M(),al=class extends _A{prefixed(e,t){let r;return[r,t]=qg(t),r===2009?t+"box-ordinal-group":r===2012?t+"flex-order":super.prefixed(e,t)}normalize(){return"order"}set(e,t){return qg(t)[0]===2009&&/\d/.test(e.value)?(e.value=(parseInt(e.value)+1).toString(),super.set(e,t)):super.set(e,t)}};al.names=["order","flex-order","box-ordinal-group"];Rg.exports=al});var Fg=v((I4,Bg)=>{l();var OA=M(),ol=class extends OA{check(e){let t=e.value;return!t.toLowerCase().includes("alpha(")&&!t.includes("DXImageTransform.Microsoft")&&!t.includes("data:image/svg+xml")}};ol.names=["filter"];Bg.exports=ol});var Lg=v((q4,Ng)=>{l();var EA=M(),ll=class extends EA{insert(e,t,r,n){if(t!=="-ms-")return super.insert(e,t,r);let a=this.clone(e),s=e.prop.replace(/end$/,"start"),o=t+e.prop.replace(/end$/,"span");if(!e.parent.some(u=>u.prop===o)){if(a.prop=o,e.value.includes("span"))a.value=e.value.replace(/span\s/i,"");else{let u;if(e.parent.walkDecls(s,c=>{u=c}),u){let c=Number(e.value)-Number(u.value)+"";a.value=c}else e.warn(n,`Can not prefix ${e.prop} (${s} is not found)`)}e.cloneBefore(a)}}};ll.names=["grid-row-end","grid-column-end"];Ng.exports=ll});var jg=v((R4,$g)=>{l();var TA=M(),ul=class extends TA{check(e){return!e.value.split(/\s+/).some(t=>{let r=t.toLowerCase();return r==="reverse"||r==="alternate-reverse"})}};ul.names=["animation","animation-direction"];$g.exports=ul});var Vg=v((M4,zg)=>{l();var PA=de(),DA=M(),fl=class extends DA{insert(e,t,r){let n;if([n,t]=PA(t),n!==2009)return super.insert(e,t,r);let a=e.value.split(/\s+/).filter(d=>d!=="wrap"&&d!=="nowrap"&&"wrap-reverse");if(a.length===0||e.parent.some(d=>d.prop===t+"box-orient"||d.prop===t+"box-direction"))return;let o=a[0],u=o.includes("row")?"horizontal":"vertical",c=o.includes("reverse")?"reverse":"normal",f=this.clone(e);return f.prop=t+"box-orient",f.value=u,this.needCascade(e)&&(f.raws.before=this.calcBefore(r,e,t)),e.parent.insertBefore(e,f),f=this.clone(e),f.prop=t+"box-direction",f.value=c,this.needCascade(e)&&(f.raws.before=this.calcBefore(r,e,t)),e.parent.insertBefore(e,f)}};fl.names=["flex-flow","box-direction","box-orient"];zg.exports=fl});var Wg=v((B4,Ug)=>{l();var IA=de(),qA=M(),cl=class extends qA{normalize(){return"flex"}prefixed(e,t){let r;return[r,t]=IA(t),r===2009?t+"box-flex":r===2012?t+"flex-positive":super.prefixed(e,t)}};cl.names=["flex-grow","flex-positive"];Ug.exports=cl});var Hg=v((F4,Gg)=>{l();var RA=de(),MA=M(),pl=class extends MA{set(e,t){if(RA(t)[0]!==2009)return super.set(e,t)}};pl.names=["flex-wrap"];Gg.exports=pl});var Qg=v((N4,Yg)=>{l();var BA=M(),Jt=mt(),dl=class extends BA{insert(e,t,r,n){if(t!=="-ms-")return super.insert(e,t,r);let a=Jt.parse(e),[s,o]=Jt.translate(a,0,2),[u,c]=Jt.translate(a,1,3);[["grid-row",s],["grid-row-span",o],["grid-column",u],["grid-column-span",c]].forEach(([f,d])=>{Jt.insertDecl(e,f,d)}),Jt.warnTemplateSelectorNotFound(e,n),Jt.warnIfGridRowColumnExists(e,n)}};dl.names=["grid-area"];Yg.exports=dl});var Xg=v((L4,Jg)=>{l();var FA=M(),ni=mt(),hl=class extends FA{insert(e,t,r){if(t!=="-ms-")return super.insert(e,t,r);if(e.parent.some(s=>s.prop==="-ms-grid-row-align"))return;let[[n,a]]=ni.parse(e);a?(ni.insertDecl(e,"grid-row-align",n),ni.insertDecl(e,"grid-column-align",a)):(ni.insertDecl(e,"grid-row-align",n),ni.insertDecl(e,"grid-column-align",n))}};hl.names=["place-self"];Jg.exports=hl});var Zg=v(($4,Kg)=>{l();var NA=M(),ml=class extends NA{check(e){let t=e.value;return!t.includes("/")||t.includes("span")}normalize(e){return e.replace("-start","")}prefixed(e,t){let r=super.prefixed(e,t);return t==="-ms-"&&(r=r.replace("-start","")),r}};ml.names=["grid-row-start","grid-column-start"];Kg.exports=ml});var ry=v((j4,ty)=>{l();var ey=de(),LA=M(),Xt=class extends LA{check(e){return e.parent&&!e.parent.some(t=>t.prop&&t.prop.startsWith("grid-"))}prefixed(e,t){let r;return[r,t]=ey(t),r===2012?t+"flex-item-align":super.prefixed(e,t)}normalize(){return"align-self"}set(e,t){let r=ey(t)[0];if(r===2012)return e.value=Xt.oldValues[e.value]||e.value,super.set(e,t);if(r==="final")return super.set(e,t)}};Xt.names=["align-self","flex-item-align"];Xt.oldValues={"flex-end":"end","flex-start":"start"};ty.exports=Xt});var ny=v((z4,iy)=>{l();var $A=M(),jA=ue(),gl=class extends $A{constructor(e,t,r){super(e,t,r);this.prefixes&&(this.prefixes=jA.uniq(this.prefixes.map(n=>n==="-ms-"?"-webkit-":n)))}};gl.names=["appearance"];iy.exports=gl});var oy=v((V4,ay)=>{l();var sy=de(),zA=M(),yl=class extends zA{normalize(){return"flex-basis"}prefixed(e,t){let r;return[r,t]=sy(t),r===2012?t+"flex-preferred-size":super.prefixed(e,t)}set(e,t){let r;if([r,t]=sy(t),r===2012||r==="final")return super.set(e,t)}};yl.names=["flex-basis","flex-preferred-size"];ay.exports=yl});var uy=v((U4,ly)=>{l();var VA=M(),wl=class extends VA{normalize(){return this.name.replace("box-image","border")}prefixed(e,t){let r=super.prefixed(e,t);return t==="-webkit-"&&(r=r.replace("border","box-image")),r}};wl.names=["mask-border","mask-border-source","mask-border-slice","mask-border-width","mask-border-outset","mask-border-repeat","mask-box-image","mask-box-image-source","mask-box-image-slice","mask-box-image-width","mask-box-image-outset","mask-box-image-repeat"];ly.exports=wl});var cy=v((W4,fy)=>{l();var UA=M(),Le=class extends UA{insert(e,t,r){let n=e.prop==="mask-composite",a;n?a=e.value.split(","):a=e.value.match(Le.regexp)||[],a=a.map(c=>c.trim()).filter(c=>c);let s=a.length,o;if(s&&(o=this.clone(e),o.value=a.map(c=>Le.oldValues[c]||c).join(", "),a.includes("intersect")&&(o.value+=", xor"),o.prop=t+"mask-composite"),n)return s?(this.needCascade(e)&&(o.raws.before=this.calcBefore(r,e,t)),e.parent.insertBefore(e,o)):void 0;let u=this.clone(e);return u.prop=t+u.prop,s&&(u.value=u.value.replace(Le.regexp,"")),this.needCascade(e)&&(u.raws.before=this.calcBefore(r,e,t)),e.parent.insertBefore(e,u),s?(this.needCascade(e)&&(o.raws.before=this.calcBefore(r,e,t)),e.parent.insertBefore(e,o)):e}};Le.names=["mask","mask-composite"];Le.oldValues={add:"source-over",subtract:"source-out",intersect:"source-in",exclude:"xor"};Le.regexp=new RegExp(`\\s+(${Object.keys(Le.oldValues).join("|")})\\b(?!\\))\\s*(?=[,])`,"ig");fy.exports=Le});var hy=v((G4,dy)=>{l();var py=de(),WA=M(),Kt=class extends WA{prefixed(e,t){let r;return[r,t]=py(t),r===2009?t+"box-align":r===2012?t+"flex-align":super.prefixed(e,t)}normalize(){return"align-items"}set(e,t){let r=py(t)[0];return(r===2009||r===2012)&&(e.value=Kt.oldValues[e.value]||e.value),super.set(e,t)}};Kt.names=["align-items","flex-align","box-align"];Kt.oldValues={"flex-end":"end","flex-start":"start"};dy.exports=Kt});var gy=v((H4,my)=>{l();var GA=M(),bl=class extends GA{set(e,t){return t==="-ms-"&&e.value==="contain"&&(e.value="element"),super.set(e,t)}insert(e,t,r){if(!(e.value==="all"&&t==="-ms-"))return super.insert(e,t,r)}};bl.names=["user-select"];my.exports=bl});var by=v((Y4,wy)=>{l();var yy=de(),HA=M(),vl=class extends HA{normalize(){return"flex-shrink"}prefixed(e,t){let r;return[r,t]=yy(t),r===2012?t+"flex-negative":super.prefixed(e,t)}set(e,t){let r;if([r,t]=yy(t),r===2012||r==="final")return super.set(e,t)}};vl.names=["flex-shrink","flex-negative"];wy.exports=vl});var xy=v((Q4,vy)=>{l();var YA=M(),xl=class extends YA{prefixed(e,t){return`${t}column-${e}`}normalize(e){return e.includes("inside")?"break-inside":e.includes("before")?"break-before":"break-after"}set(e,t){return(e.prop==="break-inside"&&e.value==="avoid-column"||e.value==="avoid-page")&&(e.value="avoid"),super.set(e,t)}insert(e,t,r){if(e.prop!=="break-inside")return super.insert(e,t,r);if(!(/region/i.test(e.value)||/page/i.test(e.value)))return super.insert(e,t,r)}};xl.names=["break-inside","page-break-inside","column-break-inside","break-before","page-break-before","column-break-before","break-after","page-break-after","column-break-after"];vy.exports=xl});var Sy=v((J4,ky)=>{l();var QA=M(),kl=class extends QA{prefixed(e,t){return t+"print-color-adjust"}normalize(){return"color-adjust"}};kl.names=["color-adjust","print-color-adjust"];ky.exports=kl});var Ay=v((X4,Cy)=>{l();var JA=M(),Zt=class extends JA{insert(e,t,r){if(t==="-ms-"){let n=this.set(this.clone(e),t);this.needCascade(e)&&(n.raws.before=this.calcBefore(r,e,t));let a="ltr";return e.parent.nodes.forEach(s=>{s.prop==="direction"&&(s.value==="rtl"||s.value==="ltr")&&(a=s.value)}),n.value=Zt.msValues[a][e.value]||e.value,e.parent.insertBefore(e,n)}return super.insert(e,t,r)}};Zt.names=["writing-mode"];Zt.msValues={ltr:{"horizontal-tb":"lr-tb","vertical-rl":"tb-rl","vertical-lr":"tb-lr"},rtl:{"horizontal-tb":"rl-tb","vertical-rl":"bt-rl","vertical-lr":"bt-lr"}};Cy.exports=Zt});var Oy=v((K4,_y)=>{l();var XA=M(),Sl=class extends XA{set(e,t){return e.value=e.value.replace(/\s+fill(\s)/,"$1"),super.set(e,t)}};Sl.names=["border-image"];_y.exports=Sl});var Py=v((Z4,Ty)=>{l();var Ey=de(),KA=M(),er=class extends KA{prefixed(e,t){let r;return[r,t]=Ey(t),r===2012?t+"flex-line-pack":super.prefixed(e,t)}normalize(){return"align-content"}set(e,t){let r=Ey(t)[0];if(r===2012)return e.value=er.oldValues[e.value]||e.value,super.set(e,t);if(r==="final")return super.set(e,t)}};er.names=["align-content","flex-line-pack"];er.oldValues={"flex-end":"end","flex-start":"start","space-between":"justify","space-around":"distribute"};Ty.exports=er});var Iy=v((eI,Dy)=>{l();var ZA=M(),Ce=class extends ZA{prefixed(e,t){return t==="-moz-"?t+(Ce.toMozilla[e]||e):super.prefixed(e,t)}normalize(e){return Ce.toNormal[e]||e}};Ce.names=["border-radius"];Ce.toMozilla={};Ce.toNormal={};for(let i of["top","bottom"])for(let e of["left","right"]){let t=`border-${i}-${e}-radius`,r=`border-radius-${i}${e}`;Ce.names.push(t),Ce.names.push(r),Ce.toMozilla[t]=r,Ce.toNormal[r]=t}Dy.exports=Ce});var Ry=v((tI,qy)=>{l();var e_=M(),Cl=class extends e_{prefixed(e,t){return e.includes("-start")?t+e.replace("-block-start","-before"):t+e.replace("-block-end","-after")}normalize(e){return e.includes("-before")?e.replace("-before","-block-start"):e.replace("-after","-block-end")}};Cl.names=["border-block-start","border-block-end","margin-block-start","margin-block-end","padding-block-start","padding-block-end","border-before","border-after","margin-before","margin-after","padding-before","padding-after"];qy.exports=Cl});var By=v((rI,My)=>{l();var t_=M(),{parseTemplate:r_,warnMissedAreas:i_,getGridGap:n_,warnGridGap:s_,inheritGridGap:a_}=mt(),Al=class extends t_{insert(e,t,r,n){if(t!=="-ms-")return super.insert(e,t,r);if(e.parent.some(m=>m.prop==="-ms-grid-rows"))return;let a=n_(e),s=a_(e,a),{rows:o,columns:u,areas:c}=r_({decl:e,gap:s||a}),f=Object.keys(c).length>0,d=Boolean(o),p=Boolean(u);return s_({gap:a,hasColumns:p,decl:e,result:n}),i_(c,e,n),(d&&p||f)&&e.cloneBefore({prop:"-ms-grid-rows",value:o,raws:{}}),p&&e.cloneBefore({prop:"-ms-grid-columns",value:u,raws:{}}),e}};Al.names=["grid-template"];My.exports=Al});var Ny=v((iI,Fy)=>{l();var o_=M(),_l=class extends o_{prefixed(e,t){return t+e.replace("-inline","")}normalize(e){return e.replace(/(margin|padding|border)-(start|end)/,"$1-inline-$2")}};_l.names=["border-inline-start","border-inline-end","margin-inline-start","margin-inline-end","padding-inline-start","padding-inline-end","border-start","border-end","margin-start","margin-end","padding-start","padding-end"];Fy.exports=_l});var $y=v((nI,Ly)=>{l();var l_=M(),Ol=class extends l_{check(e){return!e.value.includes("flex-")&&e.value!=="baseline"}prefixed(e,t){return t+"grid-row-align"}normalize(){return"align-self"}};Ol.names=["grid-row-align"];Ly.exports=Ol});var zy=v((sI,jy)=>{l();var u_=M(),tr=class extends u_{keyframeParents(e){let{parent:t}=e;for(;t;){if(t.type==="atrule"&&t.name==="keyframes")return!0;({parent:t}=t)}return!1}contain3d(e){if(e.prop==="transform-origin")return!1;for(let t of tr.functions3d)if(e.value.includes(`${t}(`))return!0;return!1}set(e,t){return e=super.set(e,t),t==="-ms-"&&(e.value=e.value.replace(/rotatez/gi,"rotate")),e}insert(e,t,r){if(t==="-ms-"){if(!this.contain3d(e)&&!this.keyframeParents(e))return super.insert(e,t,r)}else if(t==="-o-"){if(!this.contain3d(e))return super.insert(e,t,r)}else return super.insert(e,t,r)}};tr.names=["transform","transform-origin"];tr.functions3d=["matrix3d","translate3d","translateZ","scale3d","scaleZ","rotate3d","rotateX","rotateY","perspective"];jy.exports=tr});var Wy=v((aI,Uy)=>{l();var Vy=de(),f_=M(),El=class extends f_{normalize(){return"flex-direction"}insert(e,t,r){let n;if([n,t]=Vy(t),n!==2009)return super.insert(e,t,r);if(e.parent.some(f=>f.prop===t+"box-orient"||f.prop===t+"box-direction"))return;let s=e.value,o,u;s==="inherit"||s==="initial"||s==="unset"?(o=s,u=s):(o=s.includes("row")?"horizontal":"vertical",u=s.includes("reverse")?"reverse":"normal");let c=this.clone(e);return c.prop=t+"box-orient",c.value=o,this.needCascade(e)&&(c.raws.before=this.calcBefore(r,e,t)),e.parent.insertBefore(e,c),c=this.clone(e),c.prop=t+"box-direction",c.value=u,this.needCascade(e)&&(c.raws.before=this.calcBefore(r,e,t)),e.parent.insertBefore(e,c)}old(e,t){let r;return[r,t]=Vy(t),r===2009?[t+"box-orient",t+"box-direction"]:super.old(e,t)}};El.names=["flex-direction","box-direction","box-orient"];Uy.exports=El});var Hy=v((oI,Gy)=>{l();var c_=M(),Tl=class extends c_{check(e){return e.value==="pixelated"}prefixed(e,t){return t==="-ms-"?"-ms-interpolation-mode":super.prefixed(e,t)}set(e,t){return t!=="-ms-"?super.set(e,t):(e.prop="-ms-interpolation-mode",e.value="nearest-neighbor",e)}normalize(){return"image-rendering"}process(e,t){return super.process(e,t)}};Tl.names=["image-rendering","interpolation-mode"];Gy.exports=Tl});var Qy=v((lI,Yy)=>{l();var p_=M(),d_=ue(),Pl=class extends p_{constructor(e,t,r){super(e,t,r);this.prefixes&&(this.prefixes=d_.uniq(this.prefixes.map(n=>n==="-ms-"?"-webkit-":n)))}};Pl.names=["backdrop-filter"];Yy.exports=Pl});var Xy=v((uI,Jy)=>{l();var h_=M(),m_=ue(),Dl=class extends h_{constructor(e,t,r){super(e,t,r);this.prefixes&&(this.prefixes=m_.uniq(this.prefixes.map(n=>n==="-ms-"?"-webkit-":n)))}check(e){return e.value.toLowerCase()==="text"}};Dl.names=["background-clip"];Jy.exports=Dl});var Zy=v((fI,Ky)=>{l();var g_=M(),y_=["none","underline","overline","line-through","blink","inherit","initial","unset"],Il=class extends g_{check(e){return e.value.split(/\s+/).some(t=>!y_.includes(t))}};Il.names=["text-decoration"];Ky.exports=Il});var rw=v((cI,tw)=>{l();var ew=de(),w_=M(),rr=class extends w_{prefixed(e,t){let r;return[r,t]=ew(t),r===2009?t+"box-pack":r===2012?t+"flex-pack":super.prefixed(e,t)}normalize(){return"justify-content"}set(e,t){let r=ew(t)[0];if(r===2009||r===2012){let n=rr.oldValues[e.value]||e.value;if(e.value=n,r!==2009||n!=="distribute")return super.set(e,t)}else if(r==="final")return super.set(e,t)}};rr.names=["justify-content","flex-pack","box-pack"];rr.oldValues={"flex-end":"end","flex-start":"start","space-between":"justify","space-around":"distribute"};tw.exports=rr});var nw=v((pI,iw)=>{l();var b_=M(),ql=class extends b_{set(e,t){let r=e.value.toLowerCase();return t==="-webkit-"&&!r.includes(" ")&&r!=="contain"&&r!=="cover"&&(e.value=e.value+" "+e.value),super.set(e,t)}};ql.names=["background-size"];iw.exports=ql});var aw=v((dI,sw)=>{l();var v_=M(),Rl=mt(),Ml=class extends v_{insert(e,t,r){if(t!=="-ms-")return super.insert(e,t,r);let n=Rl.parse(e),[a,s]=Rl.translate(n,0,1);n[0]&&n[0].includes("span")&&(s=n[0].join("").replace(/\D/g,"")),[[e.prop,a],[`${e.prop}-span`,s]].forEach(([u,c])=>{Rl.insertDecl(e,u,c)})}};Ml.names=["grid-row","grid-column"];sw.exports=Ml});var uw=v((hI,lw)=>{l();var x_=M(),{prefixTrackProp:ow,prefixTrackValue:k_,autoplaceGridItems:S_,getGridGap:C_,inheritGridGap:A_}=mt(),__=el(),Bl=class extends x_{prefixed(e,t){return t==="-ms-"?ow({prop:e,prefix:t}):super.prefixed(e,t)}normalize(e){return e.replace(/^grid-(rows|columns)/,"grid-template-$1")}insert(e,t,r,n){if(t!=="-ms-")return super.insert(e,t,r);let{parent:a,prop:s,value:o}=e,u=s.includes("rows"),c=s.includes("columns"),f=a.some(k=>k.prop==="grid-template"||k.prop==="grid-template-areas");if(f&&u)return!1;let d=new __({options:{}}),p=d.gridStatus(a,n),m=C_(e);m=A_(e,m)||m;let b=u?m.row:m.column;(p==="no-autoplace"||p===!0)&&!f&&(b=null);let x=k_({value:o,gap:b});e.cloneBefore({prop:ow({prop:s,prefix:t}),value:x});let y=a.nodes.find(k=>k.prop==="grid-auto-flow"),w="row";if(y&&!d.disabled(y,n)&&(w=y.value.trim()),p==="autoplace"){let k=a.nodes.find(_=>_.prop==="grid-template-rows");if(!k&&f)return;if(!k&&!f){e.warn(n,"Autoplacement does not work without grid-template-rows property");return}!a.nodes.find(_=>_.prop==="grid-template-columns")&&!f&&e.warn(n,"Autoplacement does not work without grid-template-columns property"),c&&!f&&S_(e,n,m,w)}}};Bl.names=["grid-template-rows","grid-template-columns","grid-rows","grid-columns"];lw.exports=Bl});var cw=v((mI,fw)=>{l();var O_=M(),Fl=class extends O_{check(e){return!e.value.includes("flex-")&&e.value!=="baseline"}prefixed(e,t){return t+"grid-column-align"}normalize(){return"justify-self"}};Fl.names=["grid-column-align"];fw.exports=Fl});var dw=v((gI,pw)=>{l();var E_=M(),Nl=class extends E_{prefixed(e,t){return t+"scroll-chaining"}normalize(){return"overscroll-behavior"}set(e,t){return e.value==="auto"?e.value="chained":(e.value==="none"||e.value==="contain")&&(e.value="none"),super.set(e,t)}};Nl.names=["overscroll-behavior","scroll-chaining"];pw.exports=Nl});var gw=v((yI,mw)=>{l();var T_=M(),{parseGridAreas:P_,warnMissedAreas:D_,prefixTrackProp:I_,prefixTrackValue:hw,getGridGap:q_,warnGridGap:R_,inheritGridGap:M_}=mt();function B_(i){return i.trim().slice(1,-1).split(/["']\s*["']?/g)}var Ll=class extends T_{insert(e,t,r,n){if(t!=="-ms-")return super.insert(e,t,r);let a=!1,s=!1,o=e.parent,u=q_(e);u=M_(e,u)||u,o.walkDecls(/-ms-grid-rows/,d=>d.remove()),o.walkDecls(/grid-template-(rows|columns)/,d=>{if(d.prop==="grid-template-rows"){s=!0;let{prop:p,value:m}=d;d.cloneBefore({prop:I_({prop:p,prefix:t}),value:hw({value:m,gap:u.row})})}else a=!0});let c=B_(e.value);a&&!s&&u.row&&c.length>1&&e.cloneBefore({prop:"-ms-grid-rows",value:hw({value:`repeat(${c.length}, auto)`,gap:u.row}),raws:{}}),R_({gap:u,hasColumns:a,decl:e,result:n});let f=P_({rows:c,gap:u});return D_(f,e,n),e}};Ll.names=["grid-template-areas"];mw.exports=Ll});var ww=v((wI,yw)=>{l();var F_=M(),$l=class extends F_{set(e,t){return t==="-webkit-"&&(e.value=e.value.replace(/\s*(right|left)\s*/i,"")),super.set(e,t)}};$l.names=["text-emphasis-position"];yw.exports=$l});var vw=v((bI,bw)=>{l();var N_=M(),jl=class extends N_{set(e,t){return e.prop==="text-decoration-skip-ink"&&e.value==="auto"?(e.prop=t+"text-decoration-skip",e.value="ink",e):super.set(e,t)}};jl.names=["text-decoration-skip-ink","text-decoration-skip"];bw.exports=jl});var _w=v((vI,Aw)=>{l();"use strict";Aw.exports={wrap:xw,limit:kw,validate:Sw,test:zl,curry:L_,name:Cw};function xw(i,e,t){var r=e-i;return((t-i)%r+r)%r+i}function kw(i,e,t){return Math.max(i,Math.min(e,t))}function Sw(i,e,t,r,n){if(!zl(i,e,t,r,n))throw new Error(t+" is outside of range ["+i+","+e+")");return t}function zl(i,e,t,r,n){return!(te||n&&t===e||r&&t===i)}function Cw(i,e,t,r){return(t?"(":"[")+i+","+e+(r?")":"]")}function L_(i,e,t,r){var n=Cw.bind(null,i,e,t,r);return{wrap:xw.bind(null,i,e),limit:kw.bind(null,i,e),validate:function(a){return Sw(i,e,a,t,r)},test:function(a){return zl(i,e,a,t,r)},toString:n,name:n}}});var Tw=v((xI,Ew)=>{l();var Vl=Gn(),$_=_w(),j_=Ht(),z_=Se(),V_=ue(),Ow=/top|left|right|bottom/gi,Qe=class extends z_{replace(e,t){let r=Vl(e);for(let n of r.nodes)if(n.type==="function"&&n.value===this.name)if(n.nodes=this.newDirection(n.nodes),n.nodes=this.normalize(n.nodes),t==="-webkit- old"){if(!this.oldWebkit(n))return!1}else n.nodes=this.convertDirection(n.nodes),n.value=t+n.value;return r.toString()}replaceFirst(e,...t){return t.map(n=>n===" "?{type:"space",value:n}:{type:"word",value:n}).concat(e.slice(1))}normalizeUnit(e,t){return`${parseFloat(e)/t*360}deg`}normalize(e){if(!e[0])return e;if(/-?\d+(.\d+)?grad/.test(e[0].value))e[0].value=this.normalizeUnit(e[0].value,400);else if(/-?\d+(.\d+)?rad/.test(e[0].value))e[0].value=this.normalizeUnit(e[0].value,2*Math.PI);else if(/-?\d+(.\d+)?turn/.test(e[0].value))e[0].value=this.normalizeUnit(e[0].value,1);else if(e[0].value.includes("deg")){let t=parseFloat(e[0].value);t=$_.wrap(0,360,t),e[0].value=`${t}deg`}return e[0].value==="0deg"?e=this.replaceFirst(e,"to"," ","top"):e[0].value==="90deg"?e=this.replaceFirst(e,"to"," ","right"):e[0].value==="180deg"?e=this.replaceFirst(e,"to"," ","bottom"):e[0].value==="270deg"&&(e=this.replaceFirst(e,"to"," ","left")),e}newDirection(e){if(e[0].value==="to"||(Ow.lastIndex=0,!Ow.test(e[0].value)))return e;e.unshift({type:"word",value:"to"},{type:"space",value:" "});for(let t=2;t0&&(e[0].value==="to"?this.fixDirection(e):e[0].value.includes("deg")?this.fixAngle(e):this.isRadial(e)&&this.fixRadial(e)),e}fixDirection(e){e.splice(0,2);for(let t of e){if(t.type==="div")break;t.type==="word"&&(t.value=this.revertDirection(t.value))}}fixAngle(e){let t=e[0].value;t=parseFloat(t),t=Math.abs(450-t)%360,t=this.roundFloat(t,3),e[0].value=`${t}deg`}fixRadial(e){let t=[],r=[],n,a,s,o,u;for(o=0;o{l();var U_=Ht(),W_=Se();function Pw(i){return new RegExp(`(^|[\\s,(])(${i}($|[\\s),]))`,"gi")}var Ul=class extends W_{regexp(){return this.regexpCache||(this.regexpCache=Pw(this.name)),this.regexpCache}isStretch(){return this.name==="stretch"||this.name==="fill"||this.name==="fill-available"}replace(e,t){return t==="-moz-"&&this.isStretch()?e.replace(this.regexp(),"$1-moz-available$3"):t==="-webkit-"&&this.isStretch()?e.replace(this.regexp(),"$1-webkit-fill-available$3"):super.replace(e,t)}old(e){let t=e+this.name;return this.isStretch()&&(e==="-moz-"?t="-moz-available":e==="-webkit-"&&(t="-webkit-fill-available")),new U_(this.name,t,t,Pw(t))}add(e,t){if(!(e.prop.includes("grid")&&t!=="-webkit-"))return super.add(e,t)}};Ul.names=["max-content","min-content","fit-content","fill","fill-available","stretch"];Dw.exports=Ul});var Mw=v((SI,Rw)=>{l();var qw=Ht(),G_=Se(),Wl=class extends G_{replace(e,t){return t==="-webkit-"?e.replace(this.regexp(),"$1-webkit-optimize-contrast"):t==="-moz-"?e.replace(this.regexp(),"$1-moz-crisp-edges"):super.replace(e,t)}old(e){return e==="-webkit-"?new qw(this.name,"-webkit-optimize-contrast"):e==="-moz-"?new qw(this.name,"-moz-crisp-edges"):super.old(e)}};Wl.names=["pixelated"];Rw.exports=Wl});var Fw=v((CI,Bw)=>{l();var H_=Se(),Gl=class extends H_{replace(e,t){let r=super.replace(e,t);return t==="-webkit-"&&(r=r.replace(/("[^"]+"|'[^']+')(\s+\d+\w)/gi,"url($1)$2")),r}};Gl.names=["image-set"];Bw.exports=Gl});var Lw=v((AI,Nw)=>{l();var Y_=ye().list,Q_=Se(),Hl=class extends Q_{replace(e,t){return Y_.space(e).map(r=>{if(r.slice(0,+this.name.length+1)!==this.name+"(")return r;let n=r.lastIndexOf(")"),a=r.slice(n+1),s=r.slice(this.name.length+1,n);if(t==="-webkit-"){let o=s.match(/\d*.?\d+%?/);o?(s=s.slice(o[0].length).trim(),s+=`, ${o[0]}`):s+=", 0.5"}return t+this.name+"("+s+")"+a}).join(" ")}};Hl.names=["cross-fade"];Nw.exports=Hl});var jw=v((_I,$w)=>{l();var J_=de(),X_=Ht(),K_=Se(),Yl=class extends K_{constructor(e,t){super(e,t);e==="display-flex"&&(this.name="flex")}check(e){return e.prop==="display"&&e.value===this.name}prefixed(e){let t,r;return[t,e]=J_(e),t===2009?this.name==="flex"?r="box":r="inline-box":t===2012?this.name==="flex"?r="flexbox":r="inline-flexbox":t==="final"&&(r=this.name),e+r}replace(e,t){return this.prefixed(t)}old(e){let t=this.prefixed(e);if(!!t)return new X_(this.name,t)}};Yl.names=["display-flex","inline-flex"];$w.exports=Yl});var Vw=v((OI,zw)=>{l();var Z_=Se(),Ql=class extends Z_{constructor(e,t){super(e,t);e==="display-grid"&&(this.name="grid")}check(e){return e.prop==="display"&&e.value===this.name}};Ql.names=["display-grid","inline-grid"];zw.exports=Ql});var Ww=v((EI,Uw)=>{l();var e5=Se(),Jl=class extends e5{constructor(e,t){super(e,t);e==="filter-function"&&(this.name="filter")}};Jl.names=["filter","filter-function"];Uw.exports=Jl});var Qw=v((TI,Yw)=>{l();var Gw=ii(),B=M(),Hw=Em(),t5=Gm(),r5=el(),i5=cg(),Xl=dt(),ir=Yt(),n5=bg(),$e=Se(),nr=ue(),s5=xg(),a5=Sg(),o5=Ag(),l5=Og(),u5=Ig(),f5=Mg(),c5=Fg(),p5=Lg(),d5=jg(),h5=Vg(),m5=Wg(),g5=Hg(),y5=Qg(),w5=Xg(),b5=Zg(),v5=ry(),x5=ny(),k5=oy(),S5=uy(),C5=cy(),A5=hy(),_5=gy(),O5=by(),E5=xy(),T5=Sy(),P5=Ay(),D5=Oy(),I5=Py(),q5=Iy(),R5=Ry(),M5=By(),B5=Ny(),F5=$y(),N5=zy(),L5=Wy(),$5=Hy(),j5=Qy(),z5=Xy(),V5=Zy(),U5=rw(),W5=nw(),G5=aw(),H5=uw(),Y5=cw(),Q5=dw(),J5=gw(),X5=ww(),K5=vw(),Z5=Tw(),eO=Iw(),tO=Mw(),rO=Fw(),iO=Lw(),nO=jw(),sO=Vw(),aO=Ww();ir.hack(s5);ir.hack(a5);ir.hack(o5);ir.hack(l5);B.hack(u5);B.hack(f5);B.hack(c5);B.hack(p5);B.hack(d5);B.hack(h5);B.hack(m5);B.hack(g5);B.hack(y5);B.hack(w5);B.hack(b5);B.hack(v5);B.hack(x5);B.hack(k5);B.hack(S5);B.hack(C5);B.hack(A5);B.hack(_5);B.hack(O5);B.hack(E5);B.hack(T5);B.hack(P5);B.hack(D5);B.hack(I5);B.hack(q5);B.hack(R5);B.hack(M5);B.hack(B5);B.hack(F5);B.hack(N5);B.hack(L5);B.hack($5);B.hack(j5);B.hack(z5);B.hack(V5);B.hack(U5);B.hack(W5);B.hack(G5);B.hack(H5);B.hack(Y5);B.hack(Q5);B.hack(J5);B.hack(X5);B.hack(K5);$e.hack(Z5);$e.hack(eO);$e.hack(tO);$e.hack(rO);$e.hack(iO);$e.hack(nO);$e.hack(sO);$e.hack(aO);var Kl=new Map,si=class{constructor(e,t,r={}){this.data=e,this.browsers=t,this.options=r,[this.add,this.remove]=this.preprocess(this.select(this.data)),this.transition=new t5(this),this.processor=new r5(this)}cleaner(){if(this.cleanerCache)return this.cleanerCache;if(this.browsers.selected.length){let e=new Xl(this.browsers.data,[]);this.cleanerCache=new si(this.data,e,this.options)}else return this;return this.cleanerCache}select(e){let t={add:{},remove:{}};for(let r in e){let n=e[r],a=n.browsers.map(u=>{let c=u.split(" ");return{browser:`${c[0]} ${c[1]}`,note:c[2]}}),s=a.filter(u=>u.note).map(u=>`${this.browsers.prefix(u.browser)} ${u.note}`);s=nr.uniq(s),a=a.filter(u=>this.browsers.isSelected(u.browser)).map(u=>{let c=this.browsers.prefix(u.browser);return u.note?`${c} ${u.note}`:c}),a=this.sort(nr.uniq(a)),this.options.flexbox==="no-2009"&&(a=a.filter(u=>!u.includes("2009")));let o=n.browsers.map(u=>this.browsers.prefix(u));n.mistakes&&(o=o.concat(n.mistakes)),o=o.concat(s),o=nr.uniq(o),a.length?(t.add[r]=a,a.length!a.includes(u)))):t.remove[r]=o}return t}sort(e){return e.sort((t,r)=>{let n=nr.removeNote(t).length,a=nr.removeNote(r).length;return n===a?r.length-t.length:a-n})}preprocess(e){let t={selectors:[],"@supports":new i5(si,this)};for(let n in e.add){let a=e.add[n];if(n==="@keyframes"||n==="@viewport")t[n]=new n5(n,a,this);else if(n==="@resolution")t[n]=new Hw(n,a,this);else if(this.data[n].selector)t.selectors.push(ir.load(n,a,this));else{let s=this.data[n].props;if(s){let o=$e.load(n,a,this);for(let u of s)t[u]||(t[u]={values:[]}),t[u].values.push(o)}else{let o=t[n]&&t[n].values||[];t[n]=B.load(n,a,this),t[n].values=o}}}let r={selectors:[]};for(let n in e.remove){let a=e.remove[n];if(this.data[n].selector){let s=ir.load(n,a);for(let o of a)r.selectors.push(s.old(o))}else if(n==="@keyframes"||n==="@viewport")for(let s of a){let o=`@${s}${n.slice(1)}`;r[o]={remove:!0}}else if(n==="@resolution")r[n]=new Hw(n,a,this);else{let s=this.data[n].props;if(s){let o=$e.load(n,[],this);for(let u of a){let c=o.old(u);if(c)for(let f of s)r[f]||(r[f]={}),r[f].values||(r[f].values=[]),r[f].values.push(c)}}else for(let o of a){let u=this.decl(n).old(n,o);if(n==="align-self"){let c=t[n]&&t[n].prefixes;if(c){if(o==="-webkit- 2009"&&c.includes("-webkit-"))continue;if(o==="-webkit-"&&c.includes("-webkit- 2009"))continue}}for(let c of u)r[c]||(r[c]={}),r[c].remove=!0}}}return[t,r]}decl(e){return Kl.has(e)||Kl.set(e,B.load(e)),Kl.get(e)}unprefixed(e){let t=this.normalize(Gw.unprefixed(e));return t==="flex-direction"&&(t="flex-flow"),t}normalize(e){return this.decl(e).normalize(e)}prefixed(e,t){return e=Gw.unprefixed(e),this.decl(e).prefixed(e,t)}values(e,t){let r=this[e],n=r["*"]&&r["*"].values,a=r[t]&&r[t].values;return n&&a?nr.uniq(n.concat(a)):n||a||[]}group(e){let t=e.parent,r=t.index(e),{length:n}=t.nodes,a=this.unprefixed(e.prop),s=(o,u)=>{for(r+=o;r>=0&&r{l();Jw.exports={"backdrop-filter":{feature:"css-backdrop-filter",browsers:["ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5","safari 16.5"]},element:{props:["background","background-image","border-image","mask","list-style","list-style-image","content","mask-image"],feature:"css-element-function",browsers:["firefox 114"]},"user-select":{mistakes:["-khtml-"],feature:"user-select-none",browsers:["ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5","safari 16.5"]},"background-clip":{feature:"background-clip-text",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},hyphens:{feature:"css-hyphens",browsers:["ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5","safari 16.5"]},fill:{props:["width","min-width","max-width","height","min-height","max-height","inline-size","min-inline-size","max-inline-size","block-size","min-block-size","max-block-size","grid","grid-template","grid-template-rows","grid-template-columns","grid-auto-columns","grid-auto-rows"],feature:"intrinsic-width",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"fill-available":{props:["width","min-width","max-width","height","min-height","max-height","inline-size","min-inline-size","max-inline-size","block-size","min-block-size","max-block-size","grid","grid-template","grid-template-rows","grid-template-columns","grid-auto-columns","grid-auto-rows"],feature:"intrinsic-width",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},stretch:{props:["width","min-width","max-width","height","min-height","max-height","inline-size","min-inline-size","max-inline-size","block-size","min-block-size","max-block-size","grid","grid-template","grid-template-rows","grid-template-columns","grid-auto-columns","grid-auto-rows"],feature:"intrinsic-width",browsers:["firefox 114"]},"fit-content":{props:["width","min-width","max-width","height","min-height","max-height","inline-size","min-inline-size","max-inline-size","block-size","min-block-size","max-block-size","grid","grid-template","grid-template-rows","grid-template-columns","grid-auto-columns","grid-auto-rows"],feature:"intrinsic-width",browsers:["firefox 114"]},"text-decoration-style":{feature:"text-decoration",browsers:["ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5"]},"text-decoration-color":{feature:"text-decoration",browsers:["ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5"]},"text-decoration-line":{feature:"text-decoration",browsers:["ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5"]},"text-decoration":{feature:"text-decoration",browsers:["ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5"]},"text-decoration-skip":{feature:"text-decoration",browsers:["ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5"]},"text-decoration-skip-ink":{feature:"text-decoration",browsers:["ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5"]},"text-size-adjust":{feature:"text-size-adjust",browsers:["ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5"]},"mask-clip":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-composite":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-image":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-origin":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-repeat":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-border-repeat":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-border-source":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},mask:{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-position":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-size":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-border":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-border-outset":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-border-width":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"mask-border-slice":{feature:"css-masks",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},"clip-path":{feature:"css-clip-path",browsers:["samsung 21"]},"box-decoration-break":{feature:"css-boxdecorationbreak",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5","opera 99","safari 16.5","samsung 21"]},appearance:{feature:"css-appearance",browsers:["samsung 21"]},"image-set":{props:["background","background-image","border-image","cursor","mask","mask-image","list-style","list-style-image","content"],feature:"css-image-set",browsers:["and_uc 15.5","chrome 109","samsung 21"]},"cross-fade":{props:["background","background-image","border-image","mask","list-style","list-style-image","content","mask-image"],feature:"css-cross-fade",browsers:["and_chr 114","and_uc 15.5","chrome 109","chrome 113","chrome 114","edge 114","opera 99","samsung 21"]},isolate:{props:["unicode-bidi"],feature:"css-unicode-bidi",browsers:["ios_saf 16.1","ios_saf 16.3","ios_saf 16.4","ios_saf 16.5","safari 16.5"]},"color-adjust":{feature:"css-color-adjust",browsers:["chrome 109","chrome 113","chrome 114","edge 114","opera 99"]}}});var Zw=v((DI,Kw)=>{l();Kw.exports={}});var ib=v((II,rb)=>{l();var oO=zo(),{agents:lO}=($n(),Ln),Zl=hm(),uO=dt(),fO=Qw(),cO=Xw(),pO=Zw(),eb={browsers:lO,prefixes:cO},tb=` Replace Autoprefixer \`browsers\` option to Browserslist config. Use \`browserslist\` key in \`package.json\` or \`.browserslistrc\` file. Using \`browsers\` option can cause errors. Browserslist config can be used for Babel, Autoprefixer, postcss-normalize and other tools. If you really need to use option, rename it to \`overrideBrowserslist\`. Learn more at: https://github.com/browserslist/browserslist#readme https://twitter.com/browserslist `;function dO(i){return Object.prototype.toString.apply(i)==="[object Object]"}var eu=new Map;function hO(i,e){e.browsers.selected.length!==0&&(e.add.selectors.length>0||Object.keys(e.add).length>2||i.warn(`Autoprefixer target browsers do not need any prefixes.You do not need Autoprefixer anymore. Check your Browserslist config to be sure that your targets are set up correctly. Learn more at: https://github.com/postcss/autoprefixer#readme https://github.com/browserslist/browserslist#readme `))}rb.exports=sr;function sr(...i){let e;if(i.length===1&&dO(i[0])?(e=i[0],i=void 0):i.length===0||i.length===1&&!i[0]?i=void 0:i.length<=2&&(Array.isArray(i[0])||!i[0])?(e=i[1],i=i[0]):typeof i[i.length-1]=="object"&&(e=i.pop()),e||(e={}),e.browser)throw new Error("Change `browser` option to `overrideBrowserslist` in Autoprefixer");if(e.browserslist)throw new Error("Change `browserslist` option to `overrideBrowserslist` in Autoprefixer");e.overrideBrowserslist?i=e.overrideBrowserslist:e.browsers&&(typeof console!="undefined"&&console.warn&&(Zl.red?console.warn(Zl.red(tb.replace(/`[^`]+`/g,n=>Zl.yellow(n.slice(1,-1))))):console.warn(tb)),i=e.browsers);let t={ignoreUnknownVersions:e.ignoreUnknownVersions,stats:e.stats,env:e.env};function r(n){let a=eb,s=new uO(a.browsers,i,n,t),o=s.selected.join(", ")+JSON.stringify(e);return eu.has(o)||eu.set(o,new fO(a.prefixes,s,e)),eu.get(o)}return{postcssPlugin:"autoprefixer",prepare(n){let a=r({from:n.opts.from,env:e.env});return{OnceExit(s){hO(n,a),e.remove!==!1&&a.processor.remove(s,n),e.add!==!1&&a.processor.add(s,n)}}},info(n){return n=n||{},n.from=n.from||h.cwd(),pO(r(n))},options:e,browsers:i}}sr.postcss=!0;sr.data=eb;sr.defaults=oO.defaults;sr.info=()=>sr().info()});var nb={};_e(nb,{default:()=>mO});var mO,sb=C(()=>{l();mO=[]});var ob={};_e(ob,{default:()=>gO});var ab,gO,lb=C(()=>{l();hi();ab=X(bi()),gO=Ze(ab.default.theme)});var fb={};_e(fb,{default:()=>yO});var ub,yO,cb=C(()=>{l();hi();ub=X(bi()),yO=Ze(ub.default)});l();"use strict";var wO=Je(pm()),bO=Je(ye()),vO=Je(ib()),xO=Je((sb(),nb)),kO=Je((lb(),ob)),SO=Je((cb(),fb)),CO=Je((Zn(),bu)),AO=Je((mo(),ho)),_O=Je((hs(),Ku));function Je(i){return i&&i.__esModule?i:{default:i}}console.warn("cdn.tailwindcss.com should not be used in production. To use Tailwind CSS in production, install it as a PostCSS plugin or use the Tailwind CLI: https://tailwindcss.com/docs/installation");var Hn="tailwind",tu="text/tailwindcss",pb="/template.html",St,db=!0,hb=0,ru=new Set,iu,mb="",gb=(i=!1)=>({get(e,t){return(!i||t==="config")&&typeof e[t]=="object"&&e[t]!==null?new Proxy(e[t],gb()):e[t]},set(e,t,r){return e[t]=r,(!i||t==="config")&&nu(!0),!0}});window[Hn]=new Proxy({config:{},defaultTheme:kO.default,defaultConfig:SO.default,colors:CO.default,plugin:AO.default,resolveConfig:_O.default},gb(!0));function yb(i){iu.observe(i,{attributes:!0,attributeFilter:["type"],characterData:!0,subtree:!0,childList:!0})}new MutationObserver(async i=>{let e=!1;if(!iu){iu=new MutationObserver(async()=>await nu(!0));for(let t of document.querySelectorAll(`style[type="${tu}"]`))yb(t)}for(let t of i)for(let r of t.addedNodes)r.nodeType===1&&r.tagName==="STYLE"&&r.getAttribute("type")===tu&&(yb(r),e=!0);await nu(e)}).observe(document.documentElement,{attributes:!0,attributeFilter:["class"],childList:!0,subtree:!0});async function nu(i=!1){i&&(hb++,ru.clear());let e="";for(let r of document.querySelectorAll(`style[type="${tu}"]`))e+=r.textContent;let t=new Set;for(let r of document.querySelectorAll("[class]"))for(let n of r.classList)ru.has(n)||t.add(n);if(document.body&&(db||t.size>0||e!==mb||!St||!St.isConnected)){for(let n of t)ru.add(n);db=!1,mb=e,self[pb]=Array.from(t).join(" ");let{css:r}=await(0,bO.default)([(0,wO.default)({...window[Hn].config,_hash:hb,content:{files:[pb],extract:{html:n=>n.split(" ")}},plugins:[...xO.default,...Array.isArray(window[Hn].config.plugins)?window[Hn].config.plugins:[]]}),(0,vO.default)({remove:!1})]).process(`@tailwind base;@tailwind components;@tailwind utilities;${e}`);(!St||!St.isConnected)&&(St=document.createElement("style"),document.head.append(St)),St.textContent=r}}})(); /*! https://mths.be/cssesc v3.0.0 by @mathias */ ================================================ FILE: GoEasyDesigner/frontend/public/font-awesome.css ================================================ /*! * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ .fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-regular,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-brands:before,.fa-regular:before,.fa-solid:before,.fa:before,.fab:before,.far:before,.fas:before{content:var(--fa)}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-name:fa-spin;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)} .fa-0{--fa:"\30"}.fa-1{--fa:"\31"}.fa-2{--fa:"\32"}.fa-3{--fa:"\33"}.fa-4{--fa:"\34"}.fa-5{--fa:"\35"}.fa-6{--fa:"\36"}.fa-7{--fa:"\37"}.fa-8{--fa:"\38"}.fa-9{--fa:"\39"}.fa-fill-drip{--fa:"\f576"}.fa-arrows-to-circle{--fa:"\e4bd"}.fa-chevron-circle-right,.fa-circle-chevron-right{--fa:"\f138"}.fa-at{--fa:"\40"}.fa-trash-alt,.fa-trash-can{--fa:"\f2ed"}.fa-text-height{--fa:"\f034"}.fa-user-times,.fa-user-xmark{--fa:"\f235"}.fa-stethoscope{--fa:"\f0f1"}.fa-comment-alt,.fa-message{--fa:"\f27a"}.fa-info{--fa:"\f129"}.fa-compress-alt,.fa-down-left-and-up-right-to-center{--fa:"\f422"}.fa-explosion{--fa:"\e4e9"}.fa-file-alt,.fa-file-lines,.fa-file-text{--fa:"\f15c"}.fa-wave-square{--fa:"\f83e"}.fa-ring{--fa:"\f70b"}.fa-building-un{--fa:"\e4d9"}.fa-dice-three{--fa:"\f527"}.fa-calendar-alt,.fa-calendar-days{--fa:"\f073"}.fa-anchor-circle-check{--fa:"\e4aa"}.fa-building-circle-arrow-right{--fa:"\e4d1"}.fa-volleyball,.fa-volleyball-ball{--fa:"\f45f"}.fa-arrows-up-to-line{--fa:"\e4c2"}.fa-sort-desc,.fa-sort-down{--fa:"\f0dd"}.fa-circle-minus,.fa-minus-circle{--fa:"\f056"}.fa-door-open{--fa:"\f52b"}.fa-right-from-bracket,.fa-sign-out-alt{--fa:"\f2f5"}.fa-atom{--fa:"\f5d2"}.fa-soap{--fa:"\e06e"}.fa-heart-music-camera-bolt,.fa-icons{--fa:"\f86d"}.fa-microphone-alt-slash,.fa-microphone-lines-slash{--fa:"\f539"}.fa-bridge-circle-check{--fa:"\e4c9"}.fa-pump-medical{--fa:"\e06a"}.fa-fingerprint{--fa:"\f577"}.fa-hand-point-right{--fa:"\f0a4"}.fa-magnifying-glass-location,.fa-search-location{--fa:"\f689"}.fa-forward-step,.fa-step-forward{--fa:"\f051"}.fa-face-smile-beam,.fa-smile-beam{--fa:"\f5b8"}.fa-flag-checkered{--fa:"\f11e"}.fa-football,.fa-football-ball{--fa:"\f44e"}.fa-school-circle-exclamation{--fa:"\e56c"}.fa-crop{--fa:"\f125"}.fa-angle-double-down,.fa-angles-down{--fa:"\f103"}.fa-users-rectangle{--fa:"\e594"}.fa-people-roof{--fa:"\e537"}.fa-people-line{--fa:"\e534"}.fa-beer,.fa-beer-mug-empty{--fa:"\f0fc"}.fa-diagram-predecessor{--fa:"\e477"}.fa-arrow-up-long,.fa-long-arrow-up{--fa:"\f176"}.fa-burn,.fa-fire-flame-simple{--fa:"\f46a"}.fa-male,.fa-person{--fa:"\f183"}.fa-laptop{--fa:"\f109"}.fa-file-csv{--fa:"\f6dd"}.fa-menorah{--fa:"\f676"}.fa-truck-plane{--fa:"\e58f"}.fa-record-vinyl{--fa:"\f8d9"}.fa-face-grin-stars,.fa-grin-stars{--fa:"\f587"}.fa-bong{--fa:"\f55c"}.fa-pastafarianism,.fa-spaghetti-monster-flying{--fa:"\f67b"}.fa-arrow-down-up-across-line{--fa:"\e4af"}.fa-spoon,.fa-utensil-spoon{--fa:"\f2e5"}.fa-jar-wheat{--fa:"\e517"}.fa-envelopes-bulk,.fa-mail-bulk{--fa:"\f674"}.fa-file-circle-exclamation{--fa:"\e4eb"}.fa-circle-h,.fa-hospital-symbol{--fa:"\f47e"}.fa-pager{--fa:"\f815"}.fa-address-book,.fa-contact-book{--fa:"\f2b9"}.fa-strikethrough{--fa:"\f0cc"}.fa-k{--fa:"\4b"}.fa-landmark-flag{--fa:"\e51c"}.fa-pencil,.fa-pencil-alt{--fa:"\f303"}.fa-backward{--fa:"\f04a"}.fa-caret-right{--fa:"\f0da"}.fa-comments{--fa:"\f086"}.fa-file-clipboard,.fa-paste{--fa:"\f0ea"}.fa-code-pull-request{--fa:"\e13c"}.fa-clipboard-list{--fa:"\f46d"}.fa-truck-loading,.fa-truck-ramp-box{--fa:"\f4de"}.fa-user-check{--fa:"\f4fc"}.fa-vial-virus{--fa:"\e597"}.fa-sheet-plastic{--fa:"\e571"}.fa-blog{--fa:"\f781"}.fa-user-ninja{--fa:"\f504"}.fa-person-arrow-up-from-line{--fa:"\e539"}.fa-scroll-torah,.fa-torah{--fa:"\f6a0"}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa:"\f458"}.fa-toggle-off{--fa:"\f204"}.fa-archive,.fa-box-archive{--fa:"\f187"}.fa-person-drowning{--fa:"\e545"}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa:"\f886"}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa:"\f58a"}.fa-spray-can{--fa:"\f5bd"}.fa-truck-monster{--fa:"\f63b"}.fa-w{--fa:"\57"}.fa-earth-africa,.fa-globe-africa{--fa:"\f57c"}.fa-rainbow{--fa:"\f75b"}.fa-circle-notch{--fa:"\f1ce"}.fa-tablet-alt,.fa-tablet-screen-button{--fa:"\f3fa"}.fa-paw{--fa:"\f1b0"}.fa-cloud{--fa:"\f0c2"}.fa-trowel-bricks{--fa:"\e58a"}.fa-face-flushed,.fa-flushed{--fa:"\f579"}.fa-hospital-user{--fa:"\f80d"}.fa-tent-arrow-left-right{--fa:"\e57f"}.fa-gavel,.fa-legal{--fa:"\f0e3"}.fa-binoculars{--fa:"\f1e5"}.fa-microphone-slash{--fa:"\f131"}.fa-box-tissue{--fa:"\e05b"}.fa-motorcycle{--fa:"\f21c"}.fa-bell-concierge,.fa-concierge-bell{--fa:"\f562"}.fa-pen-ruler,.fa-pencil-ruler{--fa:"\f5ae"}.fa-people-arrows,.fa-people-arrows-left-right{--fa:"\e068"}.fa-mars-and-venus-burst{--fa:"\e523"}.fa-caret-square-right,.fa-square-caret-right{--fa:"\f152"}.fa-cut,.fa-scissors{--fa:"\f0c4"}.fa-sun-plant-wilt{--fa:"\e57a"}.fa-toilets-portable{--fa:"\e584"}.fa-hockey-puck{--fa:"\f453"}.fa-table{--fa:"\f0ce"}.fa-magnifying-glass-arrow-right{--fa:"\e521"}.fa-digital-tachograph,.fa-tachograph-digital{--fa:"\f566"}.fa-users-slash{--fa:"\e073"}.fa-clover{--fa:"\e139"}.fa-mail-reply,.fa-reply{--fa:"\f3e5"}.fa-star-and-crescent{--fa:"\f699"}.fa-house-fire{--fa:"\e50c"}.fa-minus-square,.fa-square-minus{--fa:"\f146"}.fa-helicopter{--fa:"\f533"}.fa-compass{--fa:"\f14e"}.fa-caret-square-down,.fa-square-caret-down{--fa:"\f150"}.fa-file-circle-question{--fa:"\e4ef"}.fa-laptop-code{--fa:"\f5fc"}.fa-swatchbook{--fa:"\f5c3"}.fa-prescription-bottle{--fa:"\f485"}.fa-bars,.fa-navicon{--fa:"\f0c9"}.fa-people-group{--fa:"\e533"}.fa-hourglass-3,.fa-hourglass-end{--fa:"\f253"}.fa-heart-broken,.fa-heart-crack{--fa:"\f7a9"}.fa-external-link-square-alt,.fa-square-up-right{--fa:"\f360"}.fa-face-kiss-beam,.fa-kiss-beam{--fa:"\f597"}.fa-film{--fa:"\f008"}.fa-ruler-horizontal{--fa:"\f547"}.fa-people-robbery{--fa:"\e536"}.fa-lightbulb{--fa:"\f0eb"}.fa-caret-left{--fa:"\f0d9"}.fa-circle-exclamation,.fa-exclamation-circle{--fa:"\f06a"}.fa-school-circle-xmark{--fa:"\e56d"}.fa-arrow-right-from-bracket,.fa-sign-out{--fa:"\f08b"}.fa-chevron-circle-down,.fa-circle-chevron-down{--fa:"\f13a"}.fa-unlock-alt,.fa-unlock-keyhole{--fa:"\f13e"}.fa-cloud-showers-heavy{--fa:"\f740"}.fa-headphones-alt,.fa-headphones-simple{--fa:"\f58f"}.fa-sitemap{--fa:"\f0e8"}.fa-circle-dollar-to-slot,.fa-donate{--fa:"\f4b9"}.fa-memory{--fa:"\f538"}.fa-road-spikes{--fa:"\e568"}.fa-fire-burner{--fa:"\e4f1"}.fa-flag{--fa:"\f024"}.fa-hanukiah{--fa:"\f6e6"}.fa-feather{--fa:"\f52d"}.fa-volume-down,.fa-volume-low{--fa:"\f027"}.fa-comment-slash{--fa:"\f4b3"}.fa-cloud-sun-rain{--fa:"\f743"}.fa-compress{--fa:"\f066"}.fa-wheat-alt,.fa-wheat-awn{--fa:"\e2cd"}.fa-ankh{--fa:"\f644"}.fa-hands-holding-child{--fa:"\e4fa"}.fa-asterisk{--fa:"\2a"}.fa-check-square,.fa-square-check{--fa:"\f14a"}.fa-peseta-sign{--fa:"\e221"}.fa-header,.fa-heading{--fa:"\f1dc"}.fa-ghost{--fa:"\f6e2"}.fa-list,.fa-list-squares{--fa:"\f03a"}.fa-phone-square-alt,.fa-square-phone-flip{--fa:"\f87b"}.fa-cart-plus{--fa:"\f217"}.fa-gamepad{--fa:"\f11b"}.fa-circle-dot,.fa-dot-circle{--fa:"\f192"}.fa-dizzy,.fa-face-dizzy{--fa:"\f567"}.fa-egg{--fa:"\f7fb"}.fa-house-medical-circle-xmark{--fa:"\e513"}.fa-campground{--fa:"\f6bb"}.fa-folder-plus{--fa:"\f65e"}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa:"\f1e3"}.fa-paint-brush,.fa-paintbrush{--fa:"\f1fc"}.fa-lock{--fa:"\f023"}.fa-gas-pump{--fa:"\f52f"}.fa-hot-tub,.fa-hot-tub-person{--fa:"\f593"}.fa-map-location,.fa-map-marked{--fa:"\f59f"}.fa-house-flood-water{--fa:"\e50e"}.fa-tree{--fa:"\f1bb"}.fa-bridge-lock{--fa:"\e4cc"}.fa-sack-dollar{--fa:"\f81d"}.fa-edit,.fa-pen-to-square{--fa:"\f044"}.fa-car-side{--fa:"\f5e4"}.fa-share-alt,.fa-share-nodes{--fa:"\f1e0"}.fa-heart-circle-minus{--fa:"\e4ff"}.fa-hourglass-2,.fa-hourglass-half{--fa:"\f252"}.fa-microscope{--fa:"\f610"}.fa-sink{--fa:"\e06d"}.fa-bag-shopping,.fa-shopping-bag{--fa:"\f290"}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa:"\f881"}.fa-mitten{--fa:"\f7b5"}.fa-person-rays{--fa:"\e54d"}.fa-users{--fa:"\f0c0"}.fa-eye-slash{--fa:"\f070"}.fa-flask-vial{--fa:"\e4f3"}.fa-hand,.fa-hand-paper{--fa:"\f256"}.fa-om{--fa:"\f679"}.fa-worm{--fa:"\e599"}.fa-house-circle-xmark{--fa:"\e50b"}.fa-plug{--fa:"\f1e6"}.fa-chevron-up{--fa:"\f077"}.fa-hand-spock{--fa:"\f259"}.fa-stopwatch{--fa:"\f2f2"}.fa-face-kiss,.fa-kiss{--fa:"\f596"}.fa-bridge-circle-xmark{--fa:"\e4cb"}.fa-face-grin-tongue,.fa-grin-tongue{--fa:"\f589"}.fa-chess-bishop{--fa:"\f43a"}.fa-face-grin-wink,.fa-grin-wink{--fa:"\f58c"}.fa-deaf,.fa-deafness,.fa-ear-deaf,.fa-hard-of-hearing{--fa:"\f2a4"}.fa-road-circle-check{--fa:"\e564"}.fa-dice-five{--fa:"\f523"}.fa-rss-square,.fa-square-rss{--fa:"\f143"}.fa-land-mine-on{--fa:"\e51b"}.fa-i-cursor{--fa:"\f246"}.fa-stamp{--fa:"\f5bf"}.fa-stairs{--fa:"\e289"}.fa-i{--fa:"\49"}.fa-hryvnia,.fa-hryvnia-sign{--fa:"\f6f2"}.fa-pills{--fa:"\f484"}.fa-face-grin-wide,.fa-grin-alt{--fa:"\f581"}.fa-tooth{--fa:"\f5c9"}.fa-v{--fa:"\56"}.fa-bangladeshi-taka-sign{--fa:"\e2e6"}.fa-bicycle{--fa:"\f206"}.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius,.fa-staff-snake{--fa:"\e579"}.fa-head-side-cough-slash{--fa:"\e062"}.fa-ambulance,.fa-truck-medical{--fa:"\f0f9"}.fa-wheat-awn-circle-exclamation{--fa:"\e598"}.fa-snowman{--fa:"\f7d0"}.fa-mortar-pestle{--fa:"\f5a7"}.fa-road-barrier{--fa:"\e562"}.fa-school{--fa:"\f549"}.fa-igloo{--fa:"\f7ae"}.fa-joint{--fa:"\f595"}.fa-angle-right{--fa:"\f105"}.fa-horse{--fa:"\f6f0"}.fa-q{--fa:"\51"}.fa-g{--fa:"\47"}.fa-notes-medical{--fa:"\f481"}.fa-temperature-2,.fa-temperature-half,.fa-thermometer-2,.fa-thermometer-half{--fa:"\f2c9"}.fa-dong-sign{--fa:"\e169"}.fa-capsules{--fa:"\f46b"}.fa-poo-bolt,.fa-poo-storm{--fa:"\f75a"}.fa-face-frown-open,.fa-frown-open{--fa:"\f57a"}.fa-hand-point-up{--fa:"\f0a6"}.fa-money-bill{--fa:"\f0d6"}.fa-bookmark{--fa:"\f02e"}.fa-align-justify{--fa:"\f039"}.fa-umbrella-beach{--fa:"\f5ca"}.fa-helmet-un{--fa:"\e503"}.fa-bullseye{--fa:"\f140"}.fa-bacon{--fa:"\f7e5"}.fa-hand-point-down{--fa:"\f0a7"}.fa-arrow-up-from-bracket{--fa:"\e09a"}.fa-folder,.fa-folder-blank{--fa:"\f07b"}.fa-file-medical-alt,.fa-file-waveform{--fa:"\f478"}.fa-radiation{--fa:"\f7b9"}.fa-chart-simple{--fa:"\e473"}.fa-mars-stroke{--fa:"\f229"}.fa-vial{--fa:"\f492"}.fa-dashboard,.fa-gauge,.fa-gauge-med,.fa-tachometer-alt-average{--fa:"\f624"}.fa-magic-wand-sparkles,.fa-wand-magic-sparkles{--fa:"\e2ca"}.fa-e{--fa:"\45"}.fa-pen-alt,.fa-pen-clip{--fa:"\f305"}.fa-bridge-circle-exclamation{--fa:"\e4ca"}.fa-user{--fa:"\f007"}.fa-school-circle-check{--fa:"\e56b"}.fa-dumpster{--fa:"\f793"}.fa-shuttle-van,.fa-van-shuttle{--fa:"\f5b6"}.fa-building-user{--fa:"\e4da"}.fa-caret-square-left,.fa-square-caret-left{--fa:"\f191"}.fa-highlighter{--fa:"\f591"}.fa-key{--fa:"\f084"}.fa-bullhorn{--fa:"\f0a1"}.fa-globe{--fa:"\f0ac"}.fa-synagogue{--fa:"\f69b"}.fa-person-half-dress{--fa:"\e548"}.fa-road-bridge{--fa:"\e563"}.fa-location-arrow{--fa:"\f124"}.fa-c{--fa:"\43"}.fa-tablet-button{--fa:"\f10a"}.fa-building-lock{--fa:"\e4d6"}.fa-pizza-slice{--fa:"\f818"}.fa-money-bill-wave{--fa:"\f53a"}.fa-area-chart,.fa-chart-area{--fa:"\f1fe"}.fa-house-flag{--fa:"\e50d"}.fa-person-circle-minus{--fa:"\e540"}.fa-ban,.fa-cancel{--fa:"\f05e"}.fa-camera-rotate{--fa:"\e0d8"}.fa-air-freshener,.fa-spray-can-sparkles{--fa:"\f5d0"}.fa-star{--fa:"\f005"}.fa-repeat{--fa:"\f363"}.fa-cross{--fa:"\f654"}.fa-box{--fa:"\f466"}.fa-venus-mars{--fa:"\f228"}.fa-arrow-pointer,.fa-mouse-pointer{--fa:"\f245"}.fa-expand-arrows-alt,.fa-maximize{--fa:"\f31e"}.fa-charging-station{--fa:"\f5e7"}.fa-shapes,.fa-triangle-circle-square{--fa:"\f61f"}.fa-random,.fa-shuffle{--fa:"\f074"}.fa-person-running,.fa-running{--fa:"\f70c"}.fa-mobile-retro{--fa:"\e527"}.fa-grip-lines-vertical{--fa:"\f7a5"}.fa-spider{--fa:"\f717"}.fa-hands-bound{--fa:"\e4f9"}.fa-file-invoice-dollar{--fa:"\f571"}.fa-plane-circle-exclamation{--fa:"\e556"}.fa-x-ray{--fa:"\f497"}.fa-spell-check{--fa:"\f891"}.fa-slash{--fa:"\f715"}.fa-computer-mouse,.fa-mouse{--fa:"\f8cc"}.fa-arrow-right-to-bracket,.fa-sign-in{--fa:"\f090"}.fa-shop-slash,.fa-store-alt-slash{--fa:"\e070"}.fa-server{--fa:"\f233"}.fa-virus-covid-slash{--fa:"\e4a9"}.fa-shop-lock{--fa:"\e4a5"}.fa-hourglass-1,.fa-hourglass-start{--fa:"\f251"}.fa-blender-phone{--fa:"\f6b6"}.fa-building-wheat{--fa:"\e4db"}.fa-person-breastfeeding{--fa:"\e53a"}.fa-right-to-bracket,.fa-sign-in-alt{--fa:"\f2f6"}.fa-venus{--fa:"\f221"}.fa-passport{--fa:"\f5ab"}.fa-thumb-tack-slash,.fa-thumbtack-slash{--fa:"\e68f"}.fa-heart-pulse,.fa-heartbeat{--fa:"\f21e"}.fa-people-carry,.fa-people-carry-box{--fa:"\f4ce"}.fa-temperature-high{--fa:"\f769"}.fa-microchip{--fa:"\f2db"}.fa-crown{--fa:"\f521"}.fa-weight-hanging{--fa:"\f5cd"}.fa-xmarks-lines{--fa:"\e59a"}.fa-file-prescription{--fa:"\f572"}.fa-weight,.fa-weight-scale{--fa:"\f496"}.fa-user-friends,.fa-user-group{--fa:"\f500"}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa:"\f15e"}.fa-chess-knight{--fa:"\f441"}.fa-face-laugh-squint,.fa-laugh-squint{--fa:"\f59b"}.fa-wheelchair{--fa:"\f193"}.fa-arrow-circle-up,.fa-circle-arrow-up{--fa:"\f0aa"}.fa-toggle-on{--fa:"\f205"}.fa-person-walking,.fa-walking{--fa:"\f554"}.fa-l{--fa:"\4c"}.fa-fire{--fa:"\f06d"}.fa-bed-pulse,.fa-procedures{--fa:"\f487"}.fa-shuttle-space,.fa-space-shuttle{--fa:"\f197"}.fa-face-laugh,.fa-laugh{--fa:"\f599"}.fa-folder-open{--fa:"\f07c"}.fa-heart-circle-plus{--fa:"\e500"}.fa-code-fork{--fa:"\e13b"}.fa-city{--fa:"\f64f"}.fa-microphone-alt,.fa-microphone-lines{--fa:"\f3c9"}.fa-pepper-hot{--fa:"\f816"}.fa-unlock{--fa:"\f09c"}.fa-colon-sign{--fa:"\e140"}.fa-headset{--fa:"\f590"}.fa-store-slash{--fa:"\e071"}.fa-road-circle-xmark{--fa:"\e566"}.fa-user-minus{--fa:"\f503"}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa:"\f22a"}.fa-champagne-glasses,.fa-glass-cheers{--fa:"\f79f"}.fa-clipboard{--fa:"\f328"}.fa-house-circle-exclamation{--fa:"\e50a"}.fa-file-arrow-up,.fa-file-upload{--fa:"\f574"}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa:"\f1eb"}.fa-bath,.fa-bathtub{--fa:"\f2cd"}.fa-underline{--fa:"\f0cd"}.fa-user-edit,.fa-user-pen{--fa:"\f4ff"}.fa-signature{--fa:"\f5b7"}.fa-stroopwafel{--fa:"\f551"}.fa-bold{--fa:"\f032"}.fa-anchor-lock{--fa:"\e4ad"}.fa-building-ngo{--fa:"\e4d7"}.fa-manat-sign{--fa:"\e1d5"}.fa-not-equal{--fa:"\f53e"}.fa-border-style,.fa-border-top-left{--fa:"\f853"}.fa-map-location-dot,.fa-map-marked-alt{--fa:"\f5a0"}.fa-jedi{--fa:"\f669"}.fa-poll,.fa-square-poll-vertical{--fa:"\f681"}.fa-mug-hot{--fa:"\f7b6"}.fa-battery-car,.fa-car-battery{--fa:"\f5df"}.fa-gift{--fa:"\f06b"}.fa-dice-two{--fa:"\f528"}.fa-chess-queen{--fa:"\f445"}.fa-glasses{--fa:"\f530"}.fa-chess-board{--fa:"\f43c"}.fa-building-circle-check{--fa:"\e4d2"}.fa-person-chalkboard{--fa:"\e53d"}.fa-mars-stroke-h,.fa-mars-stroke-right{--fa:"\f22b"}.fa-hand-back-fist,.fa-hand-rock{--fa:"\f255"}.fa-caret-square-up,.fa-square-caret-up{--fa:"\f151"}.fa-cloud-showers-water{--fa:"\e4e4"}.fa-bar-chart,.fa-chart-bar{--fa:"\f080"}.fa-hands-bubbles,.fa-hands-wash{--fa:"\e05e"}.fa-less-than-equal{--fa:"\f537"}.fa-train{--fa:"\f238"}.fa-eye-low-vision,.fa-low-vision{--fa:"\f2a8"}.fa-crow{--fa:"\f520"}.fa-sailboat{--fa:"\e445"}.fa-window-restore{--fa:"\f2d2"}.fa-plus-square,.fa-square-plus{--fa:"\f0fe"}.fa-torii-gate{--fa:"\f6a1"}.fa-frog{--fa:"\f52e"}.fa-bucket{--fa:"\e4cf"}.fa-image{--fa:"\f03e"}.fa-microphone{--fa:"\f130"}.fa-cow{--fa:"\f6c8"}.fa-caret-up{--fa:"\f0d8"}.fa-screwdriver{--fa:"\f54a"}.fa-folder-closed{--fa:"\e185"}.fa-house-tsunami{--fa:"\e515"}.fa-square-nfi{--fa:"\e576"}.fa-arrow-up-from-ground-water{--fa:"\e4b5"}.fa-glass-martini-alt,.fa-martini-glass{--fa:"\f57b"}.fa-square-binary{--fa:"\e69b"}.fa-rotate-back,.fa-rotate-backward,.fa-rotate-left,.fa-undo-alt{--fa:"\f2ea"}.fa-columns,.fa-table-columns{--fa:"\f0db"}.fa-lemon{--fa:"\f094"}.fa-head-side-mask{--fa:"\e063"}.fa-handshake{--fa:"\f2b5"}.fa-gem{--fa:"\f3a5"}.fa-dolly,.fa-dolly-box{--fa:"\f472"}.fa-smoking{--fa:"\f48d"}.fa-compress-arrows-alt,.fa-minimize{--fa:"\f78c"}.fa-monument{--fa:"\f5a6"}.fa-snowplow{--fa:"\f7d2"}.fa-angle-double-right,.fa-angles-right{--fa:"\f101"}.fa-cannabis{--fa:"\f55f"}.fa-circle-play,.fa-play-circle{--fa:"\f144"}.fa-tablets{--fa:"\f490"}.fa-ethernet{--fa:"\f796"}.fa-eur,.fa-euro,.fa-euro-sign{--fa:"\f153"}.fa-chair{--fa:"\f6c0"}.fa-check-circle,.fa-circle-check{--fa:"\f058"}.fa-circle-stop,.fa-stop-circle{--fa:"\f28d"}.fa-compass-drafting,.fa-drafting-compass{--fa:"\f568"}.fa-plate-wheat{--fa:"\e55a"}.fa-icicles{--fa:"\f7ad"}.fa-person-shelter{--fa:"\e54f"}.fa-neuter{--fa:"\f22c"}.fa-id-badge{--fa:"\f2c1"}.fa-marker{--fa:"\f5a1"}.fa-face-laugh-beam,.fa-laugh-beam{--fa:"\f59a"}.fa-helicopter-symbol{--fa:"\e502"}.fa-universal-access{--fa:"\f29a"}.fa-chevron-circle-up,.fa-circle-chevron-up{--fa:"\f139"}.fa-lari-sign{--fa:"\e1c8"}.fa-volcano{--fa:"\f770"}.fa-person-walking-dashed-line-arrow-right{--fa:"\e553"}.fa-gbp,.fa-pound-sign,.fa-sterling-sign{--fa:"\f154"}.fa-viruses{--fa:"\e076"}.fa-square-person-confined{--fa:"\e577"}.fa-user-tie{--fa:"\f508"}.fa-arrow-down-long,.fa-long-arrow-down{--fa:"\f175"}.fa-tent-arrow-down-to-line{--fa:"\e57e"}.fa-certificate{--fa:"\f0a3"}.fa-mail-reply-all,.fa-reply-all{--fa:"\f122"}.fa-suitcase{--fa:"\f0f2"}.fa-person-skating,.fa-skating{--fa:"\f7c5"}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa:"\f662"}.fa-camera-retro{--fa:"\f083"}.fa-arrow-circle-down,.fa-circle-arrow-down{--fa:"\f0ab"}.fa-arrow-right-to-file,.fa-file-import{--fa:"\f56f"}.fa-external-link-square,.fa-square-arrow-up-right{--fa:"\f14c"}.fa-box-open{--fa:"\f49e"}.fa-scroll{--fa:"\f70e"}.fa-spa{--fa:"\f5bb"}.fa-location-pin-lock{--fa:"\e51f"}.fa-pause{--fa:"\f04c"}.fa-hill-avalanche{--fa:"\e507"}.fa-temperature-0,.fa-temperature-empty,.fa-thermometer-0,.fa-thermometer-empty{--fa:"\f2cb"}.fa-bomb{--fa:"\f1e2"}.fa-registered{--fa:"\f25d"}.fa-address-card,.fa-contact-card,.fa-vcard{--fa:"\f2bb"}.fa-balance-scale-right,.fa-scale-unbalanced-flip{--fa:"\f516"}.fa-subscript{--fa:"\f12c"}.fa-diamond-turn-right,.fa-directions{--fa:"\f5eb"}.fa-burst{--fa:"\e4dc"}.fa-house-laptop,.fa-laptop-house{--fa:"\e066"}.fa-face-tired,.fa-tired{--fa:"\f5c8"}.fa-money-bills{--fa:"\e1f3"}.fa-smog{--fa:"\f75f"}.fa-crutch{--fa:"\f7f7"}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa:"\f0ee"}.fa-palette{--fa:"\f53f"}.fa-arrows-turn-right{--fa:"\e4c0"}.fa-vest{--fa:"\e085"}.fa-ferry{--fa:"\e4ea"}.fa-arrows-down-to-people{--fa:"\e4b9"}.fa-seedling,.fa-sprout{--fa:"\f4d8"}.fa-arrows-alt-h,.fa-left-right{--fa:"\f337"}.fa-boxes-packing{--fa:"\e4c7"}.fa-arrow-circle-left,.fa-circle-arrow-left{--fa:"\f0a8"}.fa-group-arrows-rotate{--fa:"\e4f6"}.fa-bowl-food{--fa:"\e4c6"}.fa-candy-cane{--fa:"\f786"}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa:"\f160"}.fa-cloud-bolt,.fa-thunderstorm{--fa:"\f76c"}.fa-remove-format,.fa-text-slash{--fa:"\f87d"}.fa-face-smile-wink,.fa-smile-wink{--fa:"\f4da"}.fa-file-word{--fa:"\f1c2"}.fa-file-powerpoint{--fa:"\f1c4"}.fa-arrows-h,.fa-arrows-left-right{--fa:"\f07e"}.fa-house-lock{--fa:"\e510"}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa:"\f0ed"}.fa-children{--fa:"\e4e1"}.fa-blackboard,.fa-chalkboard{--fa:"\f51b"}.fa-user-alt-slash,.fa-user-large-slash{--fa:"\f4fa"}.fa-envelope-open{--fa:"\f2b6"}.fa-handshake-alt-slash,.fa-handshake-simple-slash{--fa:"\e05f"}.fa-mattress-pillow{--fa:"\e525"}.fa-guarani-sign{--fa:"\e19a"}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa:"\f021"}.fa-fire-extinguisher{--fa:"\f134"}.fa-cruzeiro-sign{--fa:"\e152"}.fa-greater-than-equal{--fa:"\f532"}.fa-shield-alt,.fa-shield-halved{--fa:"\f3ed"}.fa-atlas,.fa-book-atlas{--fa:"\f558"}.fa-virus{--fa:"\e074"}.fa-envelope-circle-check{--fa:"\e4e8"}.fa-layer-group{--fa:"\f5fd"}.fa-arrows-to-dot{--fa:"\e4be"}.fa-archway{--fa:"\f557"}.fa-heart-circle-check{--fa:"\e4fd"}.fa-house-chimney-crack,.fa-house-damage{--fa:"\f6f1"}.fa-file-archive,.fa-file-zipper{--fa:"\f1c6"}.fa-square{--fa:"\f0c8"}.fa-glass-martini,.fa-martini-glass-empty{--fa:"\f000"}.fa-couch{--fa:"\f4b8"}.fa-cedi-sign{--fa:"\e0df"}.fa-italic{--fa:"\f033"}.fa-table-cells-column-lock{--fa:"\e678"}.fa-church{--fa:"\f51d"}.fa-comments-dollar{--fa:"\f653"}.fa-democrat{--fa:"\f747"}.fa-z{--fa:"\5a"}.fa-person-skiing,.fa-skiing{--fa:"\f7c9"}.fa-road-lock{--fa:"\e567"}.fa-a{--fa:"\41"}.fa-temperature-arrow-down,.fa-temperature-down{--fa:"\e03f"}.fa-feather-alt,.fa-feather-pointed{--fa:"\f56b"}.fa-p{--fa:"\50"}.fa-snowflake{--fa:"\f2dc"}.fa-newspaper{--fa:"\f1ea"}.fa-ad,.fa-rectangle-ad{--fa:"\f641"}.fa-arrow-circle-right,.fa-circle-arrow-right{--fa:"\f0a9"}.fa-filter-circle-xmark{--fa:"\e17b"}.fa-locust{--fa:"\e520"}.fa-sort,.fa-unsorted{--fa:"\f0dc"}.fa-list-1-2,.fa-list-numeric,.fa-list-ol{--fa:"\f0cb"}.fa-person-dress-burst{--fa:"\e544"}.fa-money-check-alt,.fa-money-check-dollar{--fa:"\f53d"}.fa-vector-square{--fa:"\f5cb"}.fa-bread-slice{--fa:"\f7ec"}.fa-language{--fa:"\f1ab"}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa:"\f598"}.fa-filter{--fa:"\f0b0"}.fa-question{--fa:"\3f"}.fa-file-signature{--fa:"\f573"}.fa-arrows-alt,.fa-up-down-left-right{--fa:"\f0b2"}.fa-house-chimney-user{--fa:"\e065"}.fa-hand-holding-heart{--fa:"\f4be"}.fa-puzzle-piece{--fa:"\f12e"}.fa-money-check{--fa:"\f53c"}.fa-star-half-alt,.fa-star-half-stroke{--fa:"\f5c0"}.fa-code{--fa:"\f121"}.fa-glass-whiskey,.fa-whiskey-glass{--fa:"\f7a0"}.fa-building-circle-exclamation{--fa:"\e4d3"}.fa-magnifying-glass-chart{--fa:"\e522"}.fa-arrow-up-right-from-square,.fa-external-link{--fa:"\f08e"}.fa-cubes-stacked{--fa:"\e4e6"}.fa-krw,.fa-won,.fa-won-sign{--fa:"\f159"}.fa-virus-covid{--fa:"\e4a8"}.fa-austral-sign{--fa:"\e0a9"}.fa-f{--fa:"\46"}.fa-leaf{--fa:"\f06c"}.fa-road{--fa:"\f018"}.fa-cab,.fa-taxi{--fa:"\f1ba"}.fa-person-circle-plus{--fa:"\e541"}.fa-chart-pie,.fa-pie-chart{--fa:"\f200"}.fa-bolt-lightning{--fa:"\e0b7"}.fa-sack-xmark{--fa:"\e56a"}.fa-file-excel{--fa:"\f1c3"}.fa-file-contract{--fa:"\f56c"}.fa-fish-fins{--fa:"\e4f2"}.fa-building-flag{--fa:"\e4d5"}.fa-face-grin-beam,.fa-grin-beam{--fa:"\f582"}.fa-object-ungroup{--fa:"\f248"}.fa-poop{--fa:"\f619"}.fa-location-pin,.fa-map-marker{--fa:"\f041"}.fa-kaaba{--fa:"\f66b"}.fa-toilet-paper{--fa:"\f71e"}.fa-hard-hat,.fa-hat-hard,.fa-helmet-safety{--fa:"\f807"}.fa-eject{--fa:"\f052"}.fa-arrow-alt-circle-right,.fa-circle-right{--fa:"\f35a"}.fa-plane-circle-check{--fa:"\e555"}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa:"\f5a5"}.fa-object-group{--fa:"\f247"}.fa-chart-line,.fa-line-chart{--fa:"\f201"}.fa-mask-ventilator{--fa:"\e524"}.fa-arrow-right{--fa:"\f061"}.fa-map-signs,.fa-signs-post{--fa:"\f277"}.fa-cash-register{--fa:"\f788"}.fa-person-circle-question{--fa:"\e542"}.fa-h{--fa:"\48"}.fa-tarp{--fa:"\e57b"}.fa-screwdriver-wrench,.fa-tools{--fa:"\f7d9"}.fa-arrows-to-eye{--fa:"\e4bf"}.fa-plug-circle-bolt{--fa:"\e55b"}.fa-heart{--fa:"\f004"}.fa-mars-and-venus{--fa:"\f224"}.fa-home-user,.fa-house-user{--fa:"\e1b0"}.fa-dumpster-fire{--fa:"\f794"}.fa-house-crack{--fa:"\e3b1"}.fa-cocktail,.fa-martini-glass-citrus{--fa:"\f561"}.fa-face-surprise,.fa-surprise{--fa:"\f5c2"}.fa-bottle-water{--fa:"\e4c5"}.fa-circle-pause,.fa-pause-circle{--fa:"\f28b"}.fa-toilet-paper-slash{--fa:"\e072"}.fa-apple-alt,.fa-apple-whole{--fa:"\f5d1"}.fa-kitchen-set{--fa:"\e51a"}.fa-r{--fa:"\52"}.fa-temperature-1,.fa-temperature-quarter,.fa-thermometer-1,.fa-thermometer-quarter{--fa:"\f2ca"}.fa-cube{--fa:"\f1b2"}.fa-bitcoin-sign{--fa:"\e0b4"}.fa-shield-dog{--fa:"\e573"}.fa-solar-panel{--fa:"\f5ba"}.fa-lock-open{--fa:"\f3c1"}.fa-elevator{--fa:"\e16d"}.fa-money-bill-transfer{--fa:"\e528"}.fa-money-bill-trend-up{--fa:"\e529"}.fa-house-flood-water-circle-arrow-right{--fa:"\e50f"}.fa-poll-h,.fa-square-poll-horizontal{--fa:"\f682"}.fa-circle{--fa:"\f111"}.fa-backward-fast,.fa-fast-backward{--fa:"\f049"}.fa-recycle{--fa:"\f1b8"}.fa-user-astronaut{--fa:"\f4fb"}.fa-plane-slash{--fa:"\e069"}.fa-trademark{--fa:"\f25c"}.fa-basketball,.fa-basketball-ball{--fa:"\f434"}.fa-satellite-dish{--fa:"\f7c0"}.fa-arrow-alt-circle-up,.fa-circle-up{--fa:"\f35b"}.fa-mobile-alt,.fa-mobile-screen-button{--fa:"\f3cd"}.fa-volume-high,.fa-volume-up{--fa:"\f028"}.fa-users-rays{--fa:"\e593"}.fa-wallet{--fa:"\f555"}.fa-clipboard-check{--fa:"\f46c"}.fa-file-audio{--fa:"\f1c7"}.fa-burger,.fa-hamburger{--fa:"\f805"}.fa-wrench{--fa:"\f0ad"}.fa-bugs{--fa:"\e4d0"}.fa-rupee,.fa-rupee-sign{--fa:"\f156"}.fa-file-image{--fa:"\f1c5"}.fa-circle-question,.fa-question-circle{--fa:"\f059"}.fa-plane-departure{--fa:"\f5b0"}.fa-handshake-slash{--fa:"\e060"}.fa-book-bookmark{--fa:"\e0bb"}.fa-code-branch{--fa:"\f126"}.fa-hat-cowboy{--fa:"\f8c0"}.fa-bridge{--fa:"\e4c8"}.fa-phone-alt,.fa-phone-flip{--fa:"\f879"}.fa-truck-front{--fa:"\e2b7"}.fa-cat{--fa:"\f6be"}.fa-anchor-circle-exclamation{--fa:"\e4ab"}.fa-truck-field{--fa:"\e58d"}.fa-route{--fa:"\f4d7"}.fa-clipboard-question{--fa:"\e4e3"}.fa-panorama{--fa:"\e209"}.fa-comment-medical{--fa:"\f7f5"}.fa-teeth-open{--fa:"\f62f"}.fa-file-circle-minus{--fa:"\e4ed"}.fa-tags{--fa:"\f02c"}.fa-wine-glass{--fa:"\f4e3"}.fa-fast-forward,.fa-forward-fast{--fa:"\f050"}.fa-face-meh-blank,.fa-meh-blank{--fa:"\f5a4"}.fa-parking,.fa-square-parking{--fa:"\f540"}.fa-house-signal{--fa:"\e012"}.fa-bars-progress,.fa-tasks-alt{--fa:"\f828"}.fa-faucet-drip{--fa:"\e006"}.fa-cart-flatbed,.fa-dolly-flatbed{--fa:"\f474"}.fa-ban-smoking,.fa-smoking-ban{--fa:"\f54d"}.fa-terminal{--fa:"\f120"}.fa-mobile-button{--fa:"\f10b"}.fa-house-medical-flag{--fa:"\e514"}.fa-basket-shopping,.fa-shopping-basket{--fa:"\f291"}.fa-tape{--fa:"\f4db"}.fa-bus-alt,.fa-bus-simple{--fa:"\f55e"}.fa-eye{--fa:"\f06e"}.fa-face-sad-cry,.fa-sad-cry{--fa:"\f5b3"}.fa-audio-description{--fa:"\f29e"}.fa-person-military-to-person{--fa:"\e54c"}.fa-file-shield{--fa:"\e4f0"}.fa-user-slash{--fa:"\f506"}.fa-pen{--fa:"\f304"}.fa-tower-observation{--fa:"\e586"}.fa-file-code{--fa:"\f1c9"}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa:"\f012"}.fa-bus{--fa:"\f207"}.fa-heart-circle-xmark{--fa:"\e501"}.fa-home-lg,.fa-house-chimney{--fa:"\e3af"}.fa-window-maximize{--fa:"\f2d0"}.fa-face-frown,.fa-frown{--fa:"\f119"}.fa-prescription{--fa:"\f5b1"}.fa-shop,.fa-store-alt{--fa:"\f54f"}.fa-floppy-disk,.fa-save{--fa:"\f0c7"}.fa-vihara{--fa:"\f6a7"}.fa-balance-scale-left,.fa-scale-unbalanced{--fa:"\f515"}.fa-sort-asc,.fa-sort-up{--fa:"\f0de"}.fa-comment-dots,.fa-commenting{--fa:"\f4ad"}.fa-plant-wilt{--fa:"\e5aa"}.fa-diamond{--fa:"\f219"}.fa-face-grin-squint,.fa-grin-squint{--fa:"\f585"}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa:"\f4c0"}.fa-chart-diagram{--fa:"\e695"}.fa-bacterium{--fa:"\e05a"}.fa-hand-pointer{--fa:"\f25a"}.fa-drum-steelpan{--fa:"\f56a"}.fa-hand-scissors{--fa:"\f257"}.fa-hands-praying,.fa-praying-hands{--fa:"\f684"}.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-arrow-rotate-right,.fa-redo{--fa:"\f01e"}.fa-biohazard{--fa:"\f780"}.fa-location,.fa-location-crosshairs{--fa:"\f601"}.fa-mars-double{--fa:"\f227"}.fa-child-dress{--fa:"\e59c"}.fa-users-between-lines{--fa:"\e591"}.fa-lungs-virus{--fa:"\e067"}.fa-face-grin-tears,.fa-grin-tears{--fa:"\f588"}.fa-phone{--fa:"\f095"}.fa-calendar-times,.fa-calendar-xmark{--fa:"\f273"}.fa-child-reaching{--fa:"\e59d"}.fa-head-side-virus{--fa:"\e064"}.fa-user-cog,.fa-user-gear{--fa:"\f4fe"}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa:"\f163"}.fa-door-closed{--fa:"\f52a"}.fa-shield-virus{--fa:"\e06c"}.fa-dice-six{--fa:"\f526"}.fa-mosquito-net{--fa:"\e52c"}.fa-file-fragment{--fa:"\e697"}.fa-bridge-water{--fa:"\e4ce"}.fa-person-booth{--fa:"\f756"}.fa-text-width{--fa:"\f035"}.fa-hat-wizard{--fa:"\f6e8"}.fa-pen-fancy{--fa:"\f5ac"}.fa-digging,.fa-person-digging{--fa:"\f85e"}.fa-trash{--fa:"\f1f8"}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa:"\f629"}.fa-book-medical{--fa:"\f7e6"}.fa-poo{--fa:"\f2fe"}.fa-quote-right,.fa-quote-right-alt{--fa:"\f10e"}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa:"\f553"}.fa-cubes{--fa:"\f1b3"}.fa-divide{--fa:"\f529"}.fa-tenge,.fa-tenge-sign{--fa:"\f7d7"}.fa-headphones{--fa:"\f025"}.fa-hands-holding{--fa:"\f4c2"}.fa-hands-clapping{--fa:"\e1a8"}.fa-republican{--fa:"\f75e"}.fa-arrow-left{--fa:"\f060"}.fa-person-circle-xmark{--fa:"\e543"}.fa-ruler{--fa:"\f545"}.fa-align-left{--fa:"\f036"}.fa-dice-d6{--fa:"\f6d1"}.fa-restroom{--fa:"\f7bd"}.fa-j{--fa:"\4a"}.fa-users-viewfinder{--fa:"\e595"}.fa-file-video{--fa:"\f1c8"}.fa-external-link-alt,.fa-up-right-from-square{--fa:"\f35d"}.fa-table-cells,.fa-th{--fa:"\f00a"}.fa-file-pdf{--fa:"\f1c1"}.fa-bible,.fa-book-bible{--fa:"\f647"}.fa-o{--fa:"\4f"}.fa-medkit,.fa-suitcase-medical{--fa:"\f0fa"}.fa-user-secret{--fa:"\f21b"}.fa-otter{--fa:"\f700"}.fa-female,.fa-person-dress{--fa:"\f182"}.fa-comment-dollar{--fa:"\f651"}.fa-briefcase-clock,.fa-business-time{--fa:"\f64a"}.fa-table-cells-large,.fa-th-large{--fa:"\f009"}.fa-book-tanakh,.fa-tanakh{--fa:"\f827"}.fa-phone-volume,.fa-volume-control-phone{--fa:"\f2a0"}.fa-hat-cowboy-side{--fa:"\f8c1"}.fa-clipboard-user{--fa:"\f7f3"}.fa-child{--fa:"\f1ae"}.fa-lira-sign{--fa:"\f195"}.fa-satellite{--fa:"\f7bf"}.fa-plane-lock{--fa:"\e558"}.fa-tag{--fa:"\f02b"}.fa-comment{--fa:"\f075"}.fa-birthday-cake,.fa-cake,.fa-cake-candles{--fa:"\f1fd"}.fa-envelope{--fa:"\f0e0"}.fa-angle-double-up,.fa-angles-up{--fa:"\f102"}.fa-paperclip{--fa:"\f0c6"}.fa-arrow-right-to-city{--fa:"\e4b3"}.fa-ribbon{--fa:"\f4d6"}.fa-lungs{--fa:"\f604"}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa:"\f887"}.fa-litecoin-sign{--fa:"\e1d3"}.fa-border-none{--fa:"\f850"}.fa-circle-nodes{--fa:"\e4e2"}.fa-parachute-box{--fa:"\f4cd"}.fa-indent{--fa:"\f03c"}.fa-truck-field-un{--fa:"\e58e"}.fa-hourglass,.fa-hourglass-empty{--fa:"\f254"}.fa-mountain{--fa:"\f6fc"}.fa-user-doctor,.fa-user-md{--fa:"\f0f0"}.fa-circle-info,.fa-info-circle{--fa:"\f05a"}.fa-cloud-meatball{--fa:"\f73b"}.fa-camera,.fa-camera-alt{--fa:"\f030"}.fa-square-virus{--fa:"\e578"}.fa-meteor{--fa:"\f753"}.fa-car-on{--fa:"\e4dd"}.fa-sleigh{--fa:"\f7cc"}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa:"\f162"}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa:"\f4c1"}.fa-water{--fa:"\f773"}.fa-calendar-check{--fa:"\f274"}.fa-braille{--fa:"\f2a1"}.fa-prescription-bottle-alt,.fa-prescription-bottle-medical{--fa:"\f486"}.fa-landmark{--fa:"\f66f"}.fa-truck{--fa:"\f0d1"}.fa-crosshairs{--fa:"\f05b"}.fa-person-cane{--fa:"\e53c"}.fa-tent{--fa:"\e57d"}.fa-vest-patches{--fa:"\e086"}.fa-check-double{--fa:"\f560"}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa:"\f15d"}.fa-money-bill-wheat{--fa:"\e52a"}.fa-cookie{--fa:"\f563"}.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-arrow-rotate-left,.fa-undo{--fa:"\f0e2"}.fa-hard-drive,.fa-hdd{--fa:"\f0a0"}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa:"\f586"}.fa-dumbbell{--fa:"\f44b"}.fa-list-alt,.fa-rectangle-list{--fa:"\f022"}.fa-tarp-droplet{--fa:"\e57c"}.fa-house-medical-circle-check{--fa:"\e511"}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa:"\f7ca"}.fa-calendar-plus{--fa:"\f271"}.fa-plane-arrival{--fa:"\f5af"}.fa-arrow-alt-circle-left,.fa-circle-left{--fa:"\f359"}.fa-subway,.fa-train-subway{--fa:"\f239"}.fa-chart-gantt{--fa:"\e0e4"}.fa-indian-rupee,.fa-indian-rupee-sign,.fa-inr{--fa:"\e1bc"}.fa-crop-alt,.fa-crop-simple{--fa:"\f565"}.fa-money-bill-1,.fa-money-bill-alt{--fa:"\f3d1"}.fa-left-long,.fa-long-arrow-alt-left{--fa:"\f30a"}.fa-dna{--fa:"\f471"}.fa-virus-slash{--fa:"\e075"}.fa-minus,.fa-subtract{--fa:"\f068"}.fa-chess{--fa:"\f439"}.fa-arrow-left-long,.fa-long-arrow-left{--fa:"\f177"}.fa-plug-circle-check{--fa:"\e55c"}.fa-street-view{--fa:"\f21d"}.fa-franc-sign{--fa:"\e18f"}.fa-volume-off{--fa:"\f026"}.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting,.fa-hands-asl-interpreting{--fa:"\f2a3"}.fa-cog,.fa-gear{--fa:"\f013"}.fa-droplet-slash,.fa-tint-slash{--fa:"\f5c7"}.fa-mosque{--fa:"\f678"}.fa-mosquito{--fa:"\e52b"}.fa-star-of-david{--fa:"\f69a"}.fa-person-military-rifle{--fa:"\e54b"}.fa-cart-shopping,.fa-shopping-cart{--fa:"\f07a"}.fa-vials{--fa:"\f493"}.fa-plug-circle-plus{--fa:"\e55f"}.fa-place-of-worship{--fa:"\f67f"}.fa-grip-vertical{--fa:"\f58e"}.fa-hexagon-nodes{--fa:"\e699"}.fa-arrow-turn-up,.fa-level-up{--fa:"\f148"}.fa-u{--fa:"\55"}.fa-square-root-alt,.fa-square-root-variable{--fa:"\f698"}.fa-clock,.fa-clock-four{--fa:"\f017"}.fa-backward-step,.fa-step-backward{--fa:"\f048"}.fa-pallet{--fa:"\f482"}.fa-faucet{--fa:"\e005"}.fa-baseball-bat-ball{--fa:"\f432"}.fa-s{--fa:"\53"}.fa-timeline{--fa:"\e29c"}.fa-keyboard{--fa:"\f11c"}.fa-caret-down{--fa:"\f0d7"}.fa-clinic-medical,.fa-house-chimney-medical{--fa:"\f7f2"}.fa-temperature-3,.fa-temperature-three-quarters,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa:"\f2c8"}.fa-mobile-android-alt,.fa-mobile-screen{--fa:"\f3cf"}.fa-plane-up{--fa:"\e22d"}.fa-piggy-bank{--fa:"\f4d3"}.fa-battery-3,.fa-battery-half{--fa:"\f242"}.fa-mountain-city{--fa:"\e52e"}.fa-coins{--fa:"\f51e"}.fa-khanda{--fa:"\f66d"}.fa-sliders,.fa-sliders-h{--fa:"\f1de"}.fa-folder-tree{--fa:"\f802"}.fa-network-wired{--fa:"\f6ff"}.fa-map-pin{--fa:"\f276"}.fa-hamsa{--fa:"\f665"}.fa-cent-sign{--fa:"\e3f5"}.fa-flask{--fa:"\f0c3"}.fa-person-pregnant{--fa:"\e31e"}.fa-wand-sparkles{--fa:"\f72b"}.fa-ellipsis-v,.fa-ellipsis-vertical{--fa:"\f142"}.fa-ticket{--fa:"\f145"}.fa-power-off{--fa:"\f011"}.fa-long-arrow-alt-right,.fa-right-long{--fa:"\f30b"}.fa-flag-usa{--fa:"\f74d"}.fa-laptop-file{--fa:"\e51d"}.fa-teletype,.fa-tty{--fa:"\f1e4"}.fa-diagram-next{--fa:"\e476"}.fa-person-rifle{--fa:"\e54e"}.fa-house-medical-circle-exclamation{--fa:"\e512"}.fa-closed-captioning{--fa:"\f20a"}.fa-hiking,.fa-person-hiking{--fa:"\f6ec"}.fa-venus-double{--fa:"\f226"}.fa-images{--fa:"\f302"}.fa-calculator{--fa:"\f1ec"}.fa-people-pulling{--fa:"\e535"}.fa-n{--fa:"\4e"}.fa-cable-car,.fa-tram{--fa:"\f7da"}.fa-cloud-rain{--fa:"\f73d"}.fa-building-circle-xmark{--fa:"\e4d4"}.fa-ship{--fa:"\f21a"}.fa-arrows-down-to-line{--fa:"\e4b8"}.fa-download{--fa:"\f019"}.fa-face-grin,.fa-grin{--fa:"\f580"}.fa-backspace,.fa-delete-left{--fa:"\f55a"}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa:"\f1fb"}.fa-file-circle-check{--fa:"\e5a0"}.fa-forward{--fa:"\f04e"}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa:"\f3ce"}.fa-face-meh,.fa-meh{--fa:"\f11a"}.fa-align-center{--fa:"\f037"}.fa-book-dead,.fa-book-skull{--fa:"\f6b7"}.fa-drivers-license,.fa-id-card{--fa:"\f2c2"}.fa-dedent,.fa-outdent{--fa:"\f03b"}.fa-heart-circle-exclamation{--fa:"\e4fe"}.fa-home,.fa-home-alt,.fa-home-lg-alt,.fa-house{--fa:"\f015"}.fa-calendar-week{--fa:"\f784"}.fa-laptop-medical{--fa:"\f812"}.fa-b{--fa:"\42"}.fa-file-medical{--fa:"\f477"}.fa-dice-one{--fa:"\f525"}.fa-kiwi-bird{--fa:"\f535"}.fa-arrow-right-arrow-left,.fa-exchange{--fa:"\f0ec"}.fa-redo-alt,.fa-rotate-forward,.fa-rotate-right{--fa:"\f2f9"}.fa-cutlery,.fa-utensils{--fa:"\f2e7"}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa:"\f161"}.fa-mill-sign{--fa:"\e1ed"}.fa-bowl-rice{--fa:"\e2eb"}.fa-skull{--fa:"\f54c"}.fa-broadcast-tower,.fa-tower-broadcast{--fa:"\f519"}.fa-truck-pickup{--fa:"\f63c"}.fa-long-arrow-alt-up,.fa-up-long{--fa:"\f30c"}.fa-stop{--fa:"\f04d"}.fa-code-merge{--fa:"\f387"}.fa-upload{--fa:"\f093"}.fa-hurricane{--fa:"\f751"}.fa-mound{--fa:"\e52d"}.fa-toilet-portable{--fa:"\e583"}.fa-compact-disc{--fa:"\f51f"}.fa-file-arrow-down,.fa-file-download{--fa:"\f56d"}.fa-caravan{--fa:"\f8ff"}.fa-shield-cat{--fa:"\e572"}.fa-bolt,.fa-zap{--fa:"\f0e7"}.fa-glass-water{--fa:"\e4f4"}.fa-oil-well{--fa:"\e532"}.fa-vault{--fa:"\e2c5"}.fa-mars{--fa:"\f222"}.fa-toilet{--fa:"\f7d8"}.fa-plane-circle-xmark{--fa:"\e557"}.fa-cny,.fa-jpy,.fa-rmb,.fa-yen,.fa-yen-sign{--fa:"\f157"}.fa-rouble,.fa-rub,.fa-ruble,.fa-ruble-sign{--fa:"\f158"}.fa-sun{--fa:"\f185"}.fa-guitar{--fa:"\f7a6"}.fa-face-laugh-wink,.fa-laugh-wink{--fa:"\f59c"}.fa-horse-head{--fa:"\f7ab"}.fa-bore-hole{--fa:"\e4c3"}.fa-industry{--fa:"\f275"}.fa-arrow-alt-circle-down,.fa-circle-down{--fa:"\f358"}.fa-arrows-turn-to-dots{--fa:"\e4c1"}.fa-florin-sign{--fa:"\e184"}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa:"\f884"}.fa-less-than{--fa:"\3c"}.fa-angle-down{--fa:"\f107"}.fa-car-tunnel{--fa:"\e4de"}.fa-head-side-cough{--fa:"\e061"}.fa-grip-lines{--fa:"\f7a4"}.fa-thumbs-down{--fa:"\f165"}.fa-user-lock{--fa:"\f502"}.fa-arrow-right-long,.fa-long-arrow-right{--fa:"\f178"}.fa-anchor-circle-xmark{--fa:"\e4ac"}.fa-ellipsis,.fa-ellipsis-h{--fa:"\f141"}.fa-chess-pawn{--fa:"\f443"}.fa-first-aid,.fa-kit-medical{--fa:"\f479"}.fa-person-through-window{--fa:"\e5a9"}.fa-toolbox{--fa:"\f552"}.fa-hands-holding-circle{--fa:"\e4fb"}.fa-bug{--fa:"\f188"}.fa-credit-card,.fa-credit-card-alt{--fa:"\f09d"}.fa-automobile,.fa-car{--fa:"\f1b9"}.fa-hand-holding-hand{--fa:"\e4f7"}.fa-book-open-reader,.fa-book-reader{--fa:"\f5da"}.fa-mountain-sun{--fa:"\e52f"}.fa-arrows-left-right-to-line{--fa:"\e4ba"}.fa-dice-d20{--fa:"\f6cf"}.fa-truck-droplet{--fa:"\e58c"}.fa-file-circle-xmark{--fa:"\e5a1"}.fa-temperature-arrow-up,.fa-temperature-up{--fa:"\e040"}.fa-medal{--fa:"\f5a2"}.fa-bed{--fa:"\f236"}.fa-h-square,.fa-square-h{--fa:"\f0fd"}.fa-podcast{--fa:"\f2ce"}.fa-temperature-4,.fa-temperature-full,.fa-thermometer-4,.fa-thermometer-full{--fa:"\f2c7"}.fa-bell{--fa:"\f0f3"}.fa-superscript{--fa:"\f12b"}.fa-plug-circle-xmark{--fa:"\e560"}.fa-star-of-life{--fa:"\f621"}.fa-phone-slash{--fa:"\f3dd"}.fa-paint-roller{--fa:"\f5aa"}.fa-hands-helping,.fa-handshake-angle{--fa:"\f4c4"}.fa-location-dot,.fa-map-marker-alt{--fa:"\f3c5"}.fa-file{--fa:"\f15b"}.fa-greater-than{--fa:"\3e"}.fa-person-swimming,.fa-swimmer{--fa:"\f5c4"}.fa-arrow-down{--fa:"\f063"}.fa-droplet,.fa-tint{--fa:"\f043"}.fa-eraser{--fa:"\f12d"}.fa-earth,.fa-earth-america,.fa-earth-americas,.fa-globe-americas{--fa:"\f57d"}.fa-person-burst{--fa:"\e53b"}.fa-dove{--fa:"\f4ba"}.fa-battery-0,.fa-battery-empty{--fa:"\f244"}.fa-socks{--fa:"\f696"}.fa-inbox{--fa:"\f01c"}.fa-section{--fa:"\e447"}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa:"\f625"}.fa-envelope-open-text{--fa:"\f658"}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa:"\f0f8"}.fa-wine-bottle{--fa:"\f72f"}.fa-chess-rook{--fa:"\f447"}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa:"\f550"}.fa-dharmachakra{--fa:"\f655"}.fa-hotdog{--fa:"\f80f"}.fa-blind,.fa-person-walking-with-cane{--fa:"\f29d"}.fa-drum{--fa:"\f569"}.fa-ice-cream{--fa:"\f810"}.fa-heart-circle-bolt{--fa:"\e4fc"}.fa-fax{--fa:"\f1ac"}.fa-paragraph{--fa:"\f1dd"}.fa-check-to-slot,.fa-vote-yea{--fa:"\f772"}.fa-star-half{--fa:"\f089"}.fa-boxes,.fa-boxes-alt,.fa-boxes-stacked{--fa:"\f468"}.fa-chain,.fa-link{--fa:"\f0c1"}.fa-assistive-listening-systems,.fa-ear-listen{--fa:"\f2a2"}.fa-tree-city{--fa:"\e587"}.fa-play{--fa:"\f04b"}.fa-font{--fa:"\f031"}.fa-table-cells-row-lock{--fa:"\e67a"}.fa-rupiah-sign{--fa:"\e23d"}.fa-magnifying-glass,.fa-search{--fa:"\f002"}.fa-ping-pong-paddle-ball,.fa-table-tennis,.fa-table-tennis-paddle-ball{--fa:"\f45d"}.fa-diagnoses,.fa-person-dots-from-line{--fa:"\f470"}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa:"\f82a"}.fa-naira-sign{--fa:"\e1f6"}.fa-cart-arrow-down{--fa:"\f218"}.fa-walkie-talkie{--fa:"\f8ef"}.fa-file-edit,.fa-file-pen{--fa:"\f31c"}.fa-receipt{--fa:"\f543"}.fa-pen-square,.fa-pencil-square,.fa-square-pen{--fa:"\f14b"}.fa-suitcase-rolling{--fa:"\f5c1"}.fa-person-circle-exclamation{--fa:"\e53f"}.fa-chevron-down{--fa:"\f078"}.fa-battery,.fa-battery-5,.fa-battery-full{--fa:"\f240"}.fa-skull-crossbones{--fa:"\f714"}.fa-code-compare{--fa:"\e13a"}.fa-list-dots,.fa-list-ul{--fa:"\f0ca"}.fa-school-lock{--fa:"\e56f"}.fa-tower-cell{--fa:"\e585"}.fa-down-long,.fa-long-arrow-alt-down{--fa:"\f309"}.fa-ranking-star{--fa:"\e561"}.fa-chess-king{--fa:"\f43f"}.fa-person-harassing{--fa:"\e549"}.fa-brazilian-real-sign{--fa:"\e46c"}.fa-landmark-alt,.fa-landmark-dome{--fa:"\f752"}.fa-arrow-up{--fa:"\f062"}.fa-television,.fa-tv,.fa-tv-alt{--fa:"\f26c"}.fa-shrimp{--fa:"\e448"}.fa-list-check,.fa-tasks{--fa:"\f0ae"}.fa-jug-detergent{--fa:"\e519"}.fa-circle-user,.fa-user-circle{--fa:"\f2bd"}.fa-user-shield{--fa:"\f505"}.fa-wind{--fa:"\f72e"}.fa-car-burst,.fa-car-crash{--fa:"\f5e1"}.fa-y{--fa:"\59"}.fa-person-snowboarding,.fa-snowboarding{--fa:"\f7ce"}.fa-shipping-fast,.fa-truck-fast{--fa:"\f48b"}.fa-fish{--fa:"\f578"}.fa-user-graduate{--fa:"\f501"}.fa-adjust,.fa-circle-half-stroke{--fa:"\f042"}.fa-clapperboard{--fa:"\e131"}.fa-circle-radiation,.fa-radiation-alt{--fa:"\f7ba"}.fa-baseball,.fa-baseball-ball{--fa:"\f433"}.fa-jet-fighter-up{--fa:"\e518"}.fa-diagram-project,.fa-project-diagram{--fa:"\f542"}.fa-copy{--fa:"\f0c5"}.fa-volume-mute,.fa-volume-times,.fa-volume-xmark{--fa:"\f6a9"}.fa-hand-sparkles{--fa:"\e05d"}.fa-grip,.fa-grip-horizontal{--fa:"\f58d"}.fa-share-from-square,.fa-share-square{--fa:"\f14d"}.fa-child-combatant,.fa-child-rifle{--fa:"\e4e0"}.fa-gun{--fa:"\e19b"}.fa-phone-square,.fa-square-phone{--fa:"\f098"}.fa-add,.fa-plus{--fa:"\2b"}.fa-expand{--fa:"\f065"}.fa-computer{--fa:"\e4e5"}.fa-close,.fa-multiply,.fa-remove,.fa-times,.fa-xmark{--fa:"\f00d"}.fa-arrows,.fa-arrows-up-down-left-right{--fa:"\f047"}.fa-chalkboard-teacher,.fa-chalkboard-user{--fa:"\f51c"}.fa-peso-sign{--fa:"\e222"}.fa-building-shield{--fa:"\e4d8"}.fa-baby{--fa:"\f77c"}.fa-users-line{--fa:"\e592"}.fa-quote-left,.fa-quote-left-alt{--fa:"\f10d"}.fa-tractor{--fa:"\f722"}.fa-trash-arrow-up,.fa-trash-restore{--fa:"\f829"}.fa-arrow-down-up-lock{--fa:"\e4b0"}.fa-lines-leaning{--fa:"\e51e"}.fa-ruler-combined{--fa:"\f546"}.fa-copyright{--fa:"\f1f9"}.fa-equals{--fa:"\3d"}.fa-blender{--fa:"\f517"}.fa-teeth{--fa:"\f62e"}.fa-ils,.fa-shekel,.fa-shekel-sign,.fa-sheqel,.fa-sheqel-sign{--fa:"\f20b"}.fa-map{--fa:"\f279"}.fa-rocket{--fa:"\f135"}.fa-photo-film,.fa-photo-video{--fa:"\f87c"}.fa-folder-minus{--fa:"\f65d"}.fa-hexagon-nodes-bolt{--fa:"\e69a"}.fa-store{--fa:"\f54e"}.fa-arrow-trend-up{--fa:"\e098"}.fa-plug-circle-minus{--fa:"\e55e"}.fa-sign,.fa-sign-hanging{--fa:"\f4d9"}.fa-bezier-curve{--fa:"\f55b"}.fa-bell-slash{--fa:"\f1f6"}.fa-tablet,.fa-tablet-android{--fa:"\f3fb"}.fa-school-flag{--fa:"\e56e"}.fa-fill{--fa:"\f575"}.fa-angle-up{--fa:"\f106"}.fa-drumstick-bite{--fa:"\f6d7"}.fa-holly-berry{--fa:"\f7aa"}.fa-chevron-left{--fa:"\f053"}.fa-bacteria{--fa:"\e059"}.fa-hand-lizard{--fa:"\f258"}.fa-notdef{--fa:"\e1fe"}.fa-disease{--fa:"\f7fa"}.fa-briefcase-medical{--fa:"\f469"}.fa-genderless{--fa:"\f22d"}.fa-chevron-right{--fa:"\f054"}.fa-retweet{--fa:"\f079"}.fa-car-alt,.fa-car-rear{--fa:"\f5de"}.fa-pump-soap{--fa:"\e06b"}.fa-video-slash{--fa:"\f4e2"}.fa-battery-2,.fa-battery-quarter{--fa:"\f243"}.fa-radio{--fa:"\f8d7"}.fa-baby-carriage,.fa-carriage-baby{--fa:"\f77d"}.fa-traffic-light{--fa:"\f637"}.fa-thermometer{--fa:"\f491"}.fa-vr-cardboard{--fa:"\f729"}.fa-hand-middle-finger{--fa:"\f806"}.fa-percent,.fa-percentage{--fa:"\25"}.fa-truck-moving{--fa:"\f4df"}.fa-glass-water-droplet{--fa:"\e4f5"}.fa-display{--fa:"\e163"}.fa-face-smile,.fa-smile{--fa:"\f118"}.fa-thumb-tack,.fa-thumbtack{--fa:"\f08d"}.fa-trophy{--fa:"\f091"}.fa-person-praying,.fa-pray{--fa:"\f683"}.fa-hammer{--fa:"\f6e3"}.fa-hand-peace{--fa:"\f25b"}.fa-rotate,.fa-sync-alt{--fa:"\f2f1"}.fa-spinner{--fa:"\f110"}.fa-robot{--fa:"\f544"}.fa-peace{--fa:"\f67c"}.fa-cogs,.fa-gears{--fa:"\f085"}.fa-warehouse{--fa:"\f494"}.fa-arrow-up-right-dots{--fa:"\e4b7"}.fa-splotch{--fa:"\f5bc"}.fa-face-grin-hearts,.fa-grin-hearts{--fa:"\f584"}.fa-dice-four{--fa:"\f524"}.fa-sim-card{--fa:"\f7c4"}.fa-transgender,.fa-transgender-alt{--fa:"\f225"}.fa-mercury{--fa:"\f223"}.fa-arrow-turn-down,.fa-level-down{--fa:"\f149"}.fa-person-falling-burst{--fa:"\e547"}.fa-award{--fa:"\f559"}.fa-ticket-alt,.fa-ticket-simple{--fa:"\f3ff"}.fa-building{--fa:"\f1ad"}.fa-angle-double-left,.fa-angles-left{--fa:"\f100"}.fa-qrcode{--fa:"\f029"}.fa-clock-rotate-left,.fa-history{--fa:"\f1da"}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa:"\f583"}.fa-arrow-right-from-file,.fa-file-export{--fa:"\f56e"}.fa-shield,.fa-shield-blank{--fa:"\f132"}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa:"\f885"}.fa-comment-nodes{--fa:"\e696"}.fa-house-medical{--fa:"\e3b2"}.fa-golf-ball,.fa-golf-ball-tee{--fa:"\f450"}.fa-chevron-circle-left,.fa-circle-chevron-left{--fa:"\f137"}.fa-house-chimney-window{--fa:"\e00d"}.fa-pen-nib{--fa:"\f5ad"}.fa-tent-arrow-turn-left{--fa:"\e580"}.fa-tents{--fa:"\e582"}.fa-magic,.fa-wand-magic{--fa:"\f0d0"}.fa-dog{--fa:"\f6d3"}.fa-carrot{--fa:"\f787"}.fa-moon{--fa:"\f186"}.fa-wine-glass-alt,.fa-wine-glass-empty{--fa:"\f5ce"}.fa-cheese{--fa:"\f7ef"}.fa-yin-yang{--fa:"\f6ad"}.fa-music{--fa:"\f001"}.fa-code-commit{--fa:"\f386"}.fa-temperature-low{--fa:"\f76b"}.fa-biking,.fa-person-biking{--fa:"\f84a"}.fa-broom{--fa:"\f51a"}.fa-shield-heart{--fa:"\e574"}.fa-gopuram{--fa:"\f664"}.fa-earth-oceania,.fa-globe-oceania{--fa:"\e47b"}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa:"\f2d3"}.fa-hashtag{--fa:"\23"}.fa-expand-alt,.fa-up-right-and-down-left-from-center{--fa:"\f424"}.fa-oil-can{--fa:"\f613"}.fa-t{--fa:"\54"}.fa-hippo{--fa:"\f6ed"}.fa-chart-column{--fa:"\e0e3"}.fa-infinity{--fa:"\f534"}.fa-vial-circle-check{--fa:"\e596"}.fa-person-arrow-down-to-line{--fa:"\e538"}.fa-voicemail{--fa:"\f897"}.fa-fan{--fa:"\f863"}.fa-person-walking-luggage{--fa:"\e554"}.fa-arrows-alt-v,.fa-up-down{--fa:"\f338"}.fa-cloud-moon-rain{--fa:"\f73c"}.fa-calendar{--fa:"\f133"}.fa-trailer{--fa:"\e041"}.fa-bahai,.fa-haykal{--fa:"\f666"}.fa-sd-card{--fa:"\f7c2"}.fa-dragon{--fa:"\f6d5"}.fa-shoe-prints{--fa:"\f54b"}.fa-circle-plus,.fa-plus-circle{--fa:"\f055"}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa:"\f58b"}.fa-hand-holding{--fa:"\f4bd"}.fa-plug-circle-exclamation{--fa:"\e55d"}.fa-chain-broken,.fa-chain-slash,.fa-link-slash,.fa-unlink{--fa:"\f127"}.fa-clone{--fa:"\f24d"}.fa-person-walking-arrow-loop-left{--fa:"\e551"}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa:"\f882"}.fa-fire-alt,.fa-fire-flame-curved{--fa:"\f7e4"}.fa-tornado{--fa:"\f76f"}.fa-file-circle-plus{--fa:"\e494"}.fa-book-quran,.fa-quran{--fa:"\f687"}.fa-anchor{--fa:"\f13d"}.fa-border-all{--fa:"\f84c"}.fa-angry,.fa-face-angry{--fa:"\f556"}.fa-cookie-bite{--fa:"\f564"}.fa-arrow-trend-down{--fa:"\e097"}.fa-feed,.fa-rss{--fa:"\f09e"}.fa-draw-polygon{--fa:"\f5ee"}.fa-balance-scale,.fa-scale-balanced{--fa:"\f24e"}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa:"\f62a"}.fa-shower{--fa:"\f2cc"}.fa-desktop,.fa-desktop-alt{--fa:"\f390"}.fa-m{--fa:"\4d"}.fa-table-list,.fa-th-list{--fa:"\f00b"}.fa-comment-sms,.fa-sms{--fa:"\f7cd"}.fa-book{--fa:"\f02d"}.fa-user-plus{--fa:"\f234"}.fa-check{--fa:"\f00c"}.fa-battery-4,.fa-battery-three-quarters{--fa:"\f241"}.fa-house-circle-check{--fa:"\e509"}.fa-angle-left{--fa:"\f104"}.fa-diagram-successor{--fa:"\e47a"}.fa-truck-arrow-right{--fa:"\e58b"}.fa-arrows-split-up-and-left{--fa:"\e4bc"}.fa-fist-raised,.fa-hand-fist{--fa:"\f6de"}.fa-cloud-moon{--fa:"\f6c3"}.fa-briefcase{--fa:"\f0b1"}.fa-person-falling{--fa:"\e546"}.fa-image-portrait,.fa-portrait{--fa:"\f3e0"}.fa-user-tag{--fa:"\f507"}.fa-rug{--fa:"\e569"}.fa-earth-europe,.fa-globe-europe{--fa:"\f7a2"}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa:"\f59d"}.fa-rectangle-times,.fa-rectangle-xmark,.fa-times-rectangle,.fa-window-close{--fa:"\f410"}.fa-baht-sign{--fa:"\e0ac"}.fa-book-open{--fa:"\f518"}.fa-book-journal-whills,.fa-journal-whills{--fa:"\f66a"}.fa-handcuffs{--fa:"\e4f8"}.fa-exclamation-triangle,.fa-triangle-exclamation,.fa-warning{--fa:"\f071"}.fa-database{--fa:"\f1c0"}.fa-mail-forward,.fa-share{--fa:"\f064"}.fa-bottle-droplet{--fa:"\e4c4"}.fa-mask-face{--fa:"\e1d7"}.fa-hill-rockslide{--fa:"\e508"}.fa-exchange-alt,.fa-right-left{--fa:"\f362"}.fa-paper-plane{--fa:"\f1d8"}.fa-road-circle-exclamation{--fa:"\e565"}.fa-dungeon{--fa:"\f6d9"}.fa-align-right{--fa:"\f038"}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa:"\f53b"}.fa-life-ring{--fa:"\f1cd"}.fa-hands,.fa-sign-language,.fa-signing{--fa:"\f2a7"}.fa-calendar-day{--fa:"\f783"}.fa-ladder-water,.fa-swimming-pool,.fa-water-ladder{--fa:"\f5c5"}.fa-arrows-up-down,.fa-arrows-v{--fa:"\f07d"}.fa-face-grimace,.fa-grimace{--fa:"\f57f"}.fa-wheelchair-alt,.fa-wheelchair-move{--fa:"\e2ce"}.fa-level-down-alt,.fa-turn-down{--fa:"\f3be"}.fa-person-walking-arrow-right{--fa:"\e552"}.fa-envelope-square,.fa-square-envelope{--fa:"\f199"}.fa-dice{--fa:"\f522"}.fa-bowling-ball{--fa:"\f436"}.fa-brain{--fa:"\f5dc"}.fa-band-aid,.fa-bandage{--fa:"\f462"}.fa-calendar-minus{--fa:"\f272"}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa:"\f057"}.fa-gifts{--fa:"\f79c"}.fa-hotel{--fa:"\f594"}.fa-earth-asia,.fa-globe-asia{--fa:"\f57e"}.fa-id-card-alt,.fa-id-card-clip{--fa:"\f47f"}.fa-magnifying-glass-plus,.fa-search-plus{--fa:"\f00e"}.fa-thumbs-up{--fa:"\f164"}.fa-user-clock{--fa:"\f4fd"}.fa-allergies,.fa-hand-dots{--fa:"\f461"}.fa-file-invoice{--fa:"\f570"}.fa-window-minimize{--fa:"\f2d1"}.fa-coffee,.fa-mug-saucer{--fa:"\f0f4"}.fa-brush{--fa:"\f55d"}.fa-file-half-dashed{--fa:"\e698"}.fa-mask{--fa:"\f6fa"}.fa-magnifying-glass-minus,.fa-search-minus{--fa:"\f010"}.fa-ruler-vertical{--fa:"\f548"}.fa-user-alt,.fa-user-large{--fa:"\f406"}.fa-train-tram{--fa:"\e5b4"}.fa-user-nurse{--fa:"\f82f"}.fa-syringe{--fa:"\f48e"}.fa-cloud-sun{--fa:"\f6c4"}.fa-stopwatch-20{--fa:"\e06f"}.fa-square-full{--fa:"\f45c"}.fa-magnet{--fa:"\f076"}.fa-jar{--fa:"\e516"}.fa-note-sticky,.fa-sticky-note{--fa:"\f249"}.fa-bug-slash{--fa:"\e490"}.fa-arrow-up-from-water-pump{--fa:"\e4b6"}.fa-bone{--fa:"\f5d7"}.fa-table-cells-row-unlock{--fa:"\e691"}.fa-user-injured{--fa:"\f728"}.fa-face-sad-tear,.fa-sad-tear{--fa:"\f5b4"}.fa-plane{--fa:"\f072"}.fa-tent-arrows-down{--fa:"\e581"}.fa-exclamation{--fa:"\21"}.fa-arrows-spin{--fa:"\e4bb"}.fa-print{--fa:"\f02f"}.fa-try,.fa-turkish-lira,.fa-turkish-lira-sign{--fa:"\e2bb"}.fa-dollar,.fa-dollar-sign,.fa-usd{--fa:"\24"}.fa-x{--fa:"\58"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa:"\f688"}.fa-users-cog,.fa-users-gear{--fa:"\f509"}.fa-person-military-pointing{--fa:"\e54a"}.fa-bank,.fa-building-columns,.fa-institution,.fa-museum,.fa-university{--fa:"\f19c"}.fa-umbrella{--fa:"\f0e9"}.fa-trowel{--fa:"\e589"}.fa-d{--fa:"\44"}.fa-stapler{--fa:"\e5af"}.fa-masks-theater,.fa-theater-masks{--fa:"\f630"}.fa-kip-sign{--fa:"\e1c4"}.fa-hand-point-left{--fa:"\f0a5"}.fa-handshake-alt,.fa-handshake-simple{--fa:"\f4c6"}.fa-fighter-jet,.fa-jet-fighter{--fa:"\f0fb"}.fa-share-alt-square,.fa-square-share-nodes{--fa:"\f1e1"}.fa-barcode{--fa:"\f02a"}.fa-plus-minus{--fa:"\e43c"}.fa-video,.fa-video-camera{--fa:"\f03d"}.fa-graduation-cap,.fa-mortar-board{--fa:"\f19d"}.fa-hand-holding-medical{--fa:"\e05c"}.fa-person-circle-check{--fa:"\e53e"}.fa-level-up-alt,.fa-turn-up{--fa:"\f3bf"} .fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero{--fa:"\f3d0"}.fa-hooli{--fa:"\f427"}.fa-yelp{--fa:"\f1e9"}.fa-cc-visa{--fa:"\f1f0"}.fa-lastfm{--fa:"\f202"}.fa-shopware{--fa:"\f5b5"}.fa-creative-commons-nc{--fa:"\f4e8"}.fa-aws{--fa:"\f375"}.fa-redhat{--fa:"\f7bc"}.fa-yoast{--fa:"\f2b1"}.fa-cloudflare{--fa:"\e07d"}.fa-ups{--fa:"\f7e0"}.fa-pixiv{--fa:"\e640"}.fa-wpexplorer{--fa:"\f2de"}.fa-dyalog{--fa:"\f399"}.fa-bity{--fa:"\f37a"}.fa-stackpath{--fa:"\f842"}.fa-buysellads{--fa:"\f20d"}.fa-first-order{--fa:"\f2b0"}.fa-modx{--fa:"\f285"}.fa-guilded{--fa:"\e07e"}.fa-vnv{--fa:"\f40b"}.fa-js-square,.fa-square-js{--fa:"\f3b9"}.fa-microsoft{--fa:"\f3ca"}.fa-qq{--fa:"\f1d6"}.fa-orcid{--fa:"\f8d2"}.fa-java{--fa:"\f4e4"}.fa-invision{--fa:"\f7b0"}.fa-creative-commons-pd-alt{--fa:"\f4ed"}.fa-centercode{--fa:"\f380"}.fa-glide-g{--fa:"\f2a6"}.fa-drupal{--fa:"\f1a9"}.fa-jxl{--fa:"\e67b"}.fa-dart-lang{--fa:"\e693"}.fa-hire-a-helper{--fa:"\f3b0"}.fa-creative-commons-by{--fa:"\f4e7"}.fa-unity{--fa:"\e049"}.fa-whmcs{--fa:"\f40d"}.fa-rocketchat{--fa:"\f3e8"}.fa-vk{--fa:"\f189"}.fa-untappd{--fa:"\f405"}.fa-mailchimp{--fa:"\f59e"}.fa-css3-alt{--fa:"\f38b"}.fa-reddit-square,.fa-square-reddit{--fa:"\f1a2"}.fa-vimeo-v{--fa:"\f27d"}.fa-contao{--fa:"\f26d"}.fa-square-font-awesome{--fa:"\e5ad"}.fa-deskpro{--fa:"\f38f"}.fa-brave{--fa:"\e63c"}.fa-sistrix{--fa:"\f3ee"}.fa-instagram-square,.fa-square-instagram{--fa:"\e055"}.fa-battle-net{--fa:"\f835"}.fa-the-red-yeti{--fa:"\f69d"}.fa-hacker-news-square,.fa-square-hacker-news{--fa:"\f3af"}.fa-edge{--fa:"\f282"}.fa-threads{--fa:"\e618"}.fa-napster{--fa:"\f3d2"}.fa-snapchat-square,.fa-square-snapchat{--fa:"\f2ad"}.fa-google-plus-g{--fa:"\f0d5"}.fa-artstation{--fa:"\f77a"}.fa-markdown{--fa:"\f60f"}.fa-sourcetree{--fa:"\f7d3"}.fa-google-plus{--fa:"\f2b3"}.fa-diaspora{--fa:"\f791"}.fa-foursquare{--fa:"\f180"}.fa-stack-overflow{--fa:"\f16c"}.fa-github-alt{--fa:"\f113"}.fa-phoenix-squadron{--fa:"\f511"}.fa-pagelines{--fa:"\f18c"}.fa-algolia{--fa:"\f36c"}.fa-red-river{--fa:"\f3e3"}.fa-creative-commons-sa{--fa:"\f4ef"}.fa-safari{--fa:"\f267"}.fa-google{--fa:"\f1a0"}.fa-font-awesome-alt,.fa-square-font-awesome-stroke{--fa:"\f35c"}.fa-atlassian{--fa:"\f77b"}.fa-linkedin-in{--fa:"\f0e1"}.fa-digital-ocean{--fa:"\f391"}.fa-nimblr{--fa:"\f5a8"}.fa-chromecast{--fa:"\f838"}.fa-evernote{--fa:"\f839"}.fa-hacker-news{--fa:"\f1d4"}.fa-creative-commons-sampling{--fa:"\f4f0"}.fa-adversal{--fa:"\f36a"}.fa-creative-commons{--fa:"\f25e"}.fa-watchman-monitoring{--fa:"\e087"}.fa-fonticons{--fa:"\f280"}.fa-weixin{--fa:"\f1d7"}.fa-shirtsinbulk{--fa:"\f214"}.fa-codepen{--fa:"\f1cb"}.fa-git-alt{--fa:"\f841"}.fa-lyft{--fa:"\f3c3"}.fa-rev{--fa:"\f5b2"}.fa-windows{--fa:"\f17a"}.fa-wizards-of-the-coast{--fa:"\f730"}.fa-square-viadeo,.fa-viadeo-square{--fa:"\f2aa"}.fa-meetup{--fa:"\f2e0"}.fa-centos{--fa:"\f789"}.fa-adn{--fa:"\f170"}.fa-cloudsmith{--fa:"\f384"}.fa-opensuse{--fa:"\e62b"}.fa-pied-piper-alt{--fa:"\f1a8"}.fa-dribbble-square,.fa-square-dribbble{--fa:"\f397"}.fa-codiepie{--fa:"\f284"}.fa-node{--fa:"\f419"}.fa-mix{--fa:"\f3cb"}.fa-steam{--fa:"\f1b6"}.fa-cc-apple-pay{--fa:"\f416"}.fa-scribd{--fa:"\f28a"}.fa-debian{--fa:"\e60b"}.fa-openid{--fa:"\f19b"}.fa-instalod{--fa:"\e081"}.fa-files-pinwheel{--fa:"\e69f"}.fa-expeditedssl{--fa:"\f23e"}.fa-sellcast{--fa:"\f2da"}.fa-square-twitter,.fa-twitter-square{--fa:"\f081"}.fa-r-project{--fa:"\f4f7"}.fa-delicious{--fa:"\f1a5"}.fa-freebsd{--fa:"\f3a4"}.fa-vuejs{--fa:"\f41f"}.fa-accusoft{--fa:"\f369"}.fa-ioxhost{--fa:"\f208"}.fa-fonticons-fi{--fa:"\f3a2"}.fa-app-store{--fa:"\f36f"}.fa-cc-mastercard{--fa:"\f1f1"}.fa-itunes-note{--fa:"\f3b5"}.fa-golang{--fa:"\e40f"}.fa-kickstarter,.fa-square-kickstarter{--fa:"\f3bb"}.fa-grav{--fa:"\f2d6"}.fa-weibo{--fa:"\f18a"}.fa-uncharted{--fa:"\e084"}.fa-firstdraft{--fa:"\f3a1"}.fa-square-youtube,.fa-youtube-square{--fa:"\f431"}.fa-wikipedia-w{--fa:"\f266"}.fa-rendact,.fa-wpressr{--fa:"\f3e4"}.fa-angellist{--fa:"\f209"}.fa-galactic-republic{--fa:"\f50c"}.fa-nfc-directional{--fa:"\e530"}.fa-skype{--fa:"\f17e"}.fa-joget{--fa:"\f3b7"}.fa-fedora{--fa:"\f798"}.fa-stripe-s{--fa:"\f42a"}.fa-meta{--fa:"\e49b"}.fa-laravel{--fa:"\f3bd"}.fa-hotjar{--fa:"\f3b1"}.fa-bluetooth-b{--fa:"\f294"}.fa-square-letterboxd{--fa:"\e62e"}.fa-sticker-mule{--fa:"\f3f7"}.fa-creative-commons-zero{--fa:"\f4f3"}.fa-hips{--fa:"\f452"}.fa-css{--fa:"\e6a2"}.fa-behance{--fa:"\f1b4"}.fa-reddit{--fa:"\f1a1"}.fa-discord{--fa:"\f392"}.fa-chrome{--fa:"\f268"}.fa-app-store-ios{--fa:"\f370"}.fa-cc-discover{--fa:"\f1f2"}.fa-wpbeginner{--fa:"\f297"}.fa-confluence{--fa:"\f78d"}.fa-shoelace{--fa:"\e60c"}.fa-mdb{--fa:"\f8ca"}.fa-dochub{--fa:"\f394"}.fa-accessible-icon{--fa:"\f368"}.fa-ebay{--fa:"\f4f4"}.fa-amazon{--fa:"\f270"}.fa-unsplash{--fa:"\e07c"}.fa-yarn{--fa:"\f7e3"}.fa-square-steam,.fa-steam-square{--fa:"\f1b7"}.fa-500px{--fa:"\f26e"}.fa-square-vimeo,.fa-vimeo-square{--fa:"\f194"}.fa-asymmetrik{--fa:"\f372"}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa:"\f2b4"}.fa-gratipay{--fa:"\f184"}.fa-apple{--fa:"\f179"}.fa-hive{--fa:"\e07f"}.fa-gitkraken{--fa:"\f3a6"}.fa-keybase{--fa:"\f4f5"}.fa-apple-pay{--fa:"\f415"}.fa-padlet{--fa:"\e4a0"}.fa-amazon-pay{--fa:"\f42c"}.fa-github-square,.fa-square-github{--fa:"\f092"}.fa-stumbleupon{--fa:"\f1a4"}.fa-fedex{--fa:"\f797"}.fa-phoenix-framework{--fa:"\f3dc"}.fa-shopify{--fa:"\e057"}.fa-neos{--fa:"\f612"}.fa-square-threads{--fa:"\e619"}.fa-hackerrank{--fa:"\f5f7"}.fa-researchgate{--fa:"\f4f8"}.fa-swift{--fa:"\f8e1"}.fa-angular{--fa:"\f420"}.fa-speakap{--fa:"\f3f3"}.fa-angrycreative{--fa:"\f36e"}.fa-y-combinator{--fa:"\f23b"}.fa-empire{--fa:"\f1d1"}.fa-envira{--fa:"\f299"}.fa-google-scholar{--fa:"\e63b"}.fa-gitlab-square,.fa-square-gitlab{--fa:"\e5ae"}.fa-studiovinari{--fa:"\f3f8"}.fa-pied-piper{--fa:"\f2ae"}.fa-wordpress{--fa:"\f19a"}.fa-product-hunt{--fa:"\f288"}.fa-firefox{--fa:"\f269"}.fa-linode{--fa:"\f2b8"}.fa-goodreads{--fa:"\f3a8"}.fa-odnoklassniki-square,.fa-square-odnoklassniki{--fa:"\f264"}.fa-jsfiddle{--fa:"\f1cc"}.fa-sith{--fa:"\f512"}.fa-themeisle{--fa:"\f2b2"}.fa-page4{--fa:"\f3d7"}.fa-hashnode{--fa:"\e499"}.fa-react{--fa:"\f41b"}.fa-cc-paypal{--fa:"\f1f4"}.fa-squarespace{--fa:"\f5be"}.fa-cc-stripe{--fa:"\f1f5"}.fa-creative-commons-share{--fa:"\f4f2"}.fa-bitcoin{--fa:"\f379"}.fa-keycdn{--fa:"\f3ba"}.fa-opera{--fa:"\f26a"}.fa-itch-io{--fa:"\f83a"}.fa-umbraco{--fa:"\f8e8"}.fa-galactic-senate{--fa:"\f50d"}.fa-ubuntu{--fa:"\f7df"}.fa-draft2digital{--fa:"\f396"}.fa-stripe{--fa:"\f429"}.fa-houzz{--fa:"\f27c"}.fa-gg{--fa:"\f260"}.fa-dhl{--fa:"\f790"}.fa-pinterest-square,.fa-square-pinterest{--fa:"\f0d3"}.fa-xing{--fa:"\f168"}.fa-blackberry{--fa:"\f37b"}.fa-creative-commons-pd{--fa:"\f4ec"}.fa-playstation{--fa:"\f3df"}.fa-quinscape{--fa:"\f459"}.fa-less{--fa:"\f41d"}.fa-blogger-b{--fa:"\f37d"}.fa-opencart{--fa:"\f23d"}.fa-vine{--fa:"\f1ca"}.fa-signal-messenger{--fa:"\e663"}.fa-paypal{--fa:"\f1ed"}.fa-gitlab{--fa:"\f296"}.fa-typo3{--fa:"\f42b"}.fa-reddit-alien{--fa:"\f281"}.fa-yahoo{--fa:"\f19e"}.fa-dailymotion{--fa:"\e052"}.fa-affiliatetheme{--fa:"\f36b"}.fa-pied-piper-pp{--fa:"\f1a7"}.fa-bootstrap{--fa:"\f836"}.fa-odnoklassniki{--fa:"\f263"}.fa-nfc-symbol{--fa:"\e531"}.fa-mintbit{--fa:"\e62f"}.fa-ethereum{--fa:"\f42e"}.fa-speaker-deck{--fa:"\f83c"}.fa-creative-commons-nc-eu{--fa:"\f4e9"}.fa-patreon{--fa:"\f3d9"}.fa-avianex{--fa:"\f374"}.fa-ello{--fa:"\f5f1"}.fa-gofore{--fa:"\f3a7"}.fa-bimobject{--fa:"\f378"}.fa-brave-reverse{--fa:"\e63d"}.fa-facebook-f{--fa:"\f39e"}.fa-google-plus-square,.fa-square-google-plus{--fa:"\f0d4"}.fa-web-awesome{--fa:"\e682"}.fa-mandalorian{--fa:"\f50f"}.fa-first-order-alt{--fa:"\f50a"}.fa-osi{--fa:"\f41a"}.fa-google-wallet{--fa:"\f1ee"}.fa-d-and-d-beyond{--fa:"\f6ca"}.fa-periscope{--fa:"\f3da"}.fa-fulcrum{--fa:"\f50b"}.fa-cloudscale{--fa:"\f383"}.fa-forumbee{--fa:"\f211"}.fa-mizuni{--fa:"\f3cc"}.fa-schlix{--fa:"\f3ea"}.fa-square-xing,.fa-xing-square{--fa:"\f169"}.fa-bandcamp{--fa:"\f2d5"}.fa-wpforms{--fa:"\f298"}.fa-cloudversify{--fa:"\f385"}.fa-usps{--fa:"\f7e1"}.fa-megaport{--fa:"\f5a3"}.fa-magento{--fa:"\f3c4"}.fa-spotify{--fa:"\f1bc"}.fa-optin-monster{--fa:"\f23c"}.fa-fly{--fa:"\f417"}.fa-square-bluesky{--fa:"\e6a3"}.fa-aviato{--fa:"\f421"}.fa-itunes{--fa:"\f3b4"}.fa-cuttlefish{--fa:"\f38c"}.fa-blogger{--fa:"\f37c"}.fa-flickr{--fa:"\f16e"}.fa-viber{--fa:"\f409"}.fa-soundcloud{--fa:"\f1be"}.fa-digg{--fa:"\f1a6"}.fa-tencent-weibo{--fa:"\f1d5"}.fa-letterboxd{--fa:"\e62d"}.fa-symfony{--fa:"\f83d"}.fa-maxcdn{--fa:"\f136"}.fa-etsy{--fa:"\f2d7"}.fa-facebook-messenger{--fa:"\f39f"}.fa-audible{--fa:"\f373"}.fa-think-peaks{--fa:"\f731"}.fa-bilibili{--fa:"\e3d9"}.fa-erlang{--fa:"\f39d"}.fa-x-twitter{--fa:"\e61b"}.fa-cotton-bureau{--fa:"\f89e"}.fa-dashcube{--fa:"\f210"}.fa-42-group,.fa-innosoft{--fa:"\e080"}.fa-stack-exchange{--fa:"\f18d"}.fa-elementor{--fa:"\f430"}.fa-pied-piper-square,.fa-square-pied-piper{--fa:"\e01e"}.fa-creative-commons-nd{--fa:"\f4eb"}.fa-palfed{--fa:"\f3d8"}.fa-superpowers{--fa:"\f2dd"}.fa-resolving{--fa:"\f3e7"}.fa-xbox{--fa:"\f412"}.fa-square-web-awesome-stroke{--fa:"\e684"}.fa-searchengin{--fa:"\f3eb"}.fa-tiktok{--fa:"\e07b"}.fa-facebook-square,.fa-square-facebook{--fa:"\f082"}.fa-renren{--fa:"\f18b"}.fa-linux{--fa:"\f17c"}.fa-glide{--fa:"\f2a5"}.fa-linkedin{--fa:"\f08c"}.fa-hubspot{--fa:"\f3b2"}.fa-deploydog{--fa:"\f38e"}.fa-twitch{--fa:"\f1e8"}.fa-flutter{--fa:"\e694"}.fa-ravelry{--fa:"\f2d9"}.fa-mixer{--fa:"\e056"}.fa-lastfm-square,.fa-square-lastfm{--fa:"\f203"}.fa-vimeo{--fa:"\f40a"}.fa-mendeley{--fa:"\f7b3"}.fa-uniregistry{--fa:"\f404"}.fa-figma{--fa:"\f799"}.fa-creative-commons-remix{--fa:"\f4ee"}.fa-cc-amazon-pay{--fa:"\f42d"}.fa-dropbox{--fa:"\f16b"}.fa-instagram{--fa:"\f16d"}.fa-cmplid{--fa:"\e360"}.fa-upwork{--fa:"\e641"}.fa-facebook{--fa:"\f09a"}.fa-gripfire{--fa:"\f3ac"}.fa-jedi-order{--fa:"\f50e"}.fa-uikit{--fa:"\f403"}.fa-fort-awesome-alt{--fa:"\f3a3"}.fa-phabricator{--fa:"\f3db"}.fa-ussunnah{--fa:"\f407"}.fa-earlybirds{--fa:"\f39a"}.fa-trade-federation{--fa:"\f513"}.fa-autoprefixer{--fa:"\f41c"}.fa-whatsapp{--fa:"\f232"}.fa-square-upwork{--fa:"\e67c"}.fa-slideshare{--fa:"\f1e7"}.fa-google-play{--fa:"\f3ab"}.fa-viadeo{--fa:"\f2a9"}.fa-line{--fa:"\f3c0"}.fa-google-drive{--fa:"\f3aa"}.fa-servicestack{--fa:"\f3ec"}.fa-simplybuilt{--fa:"\f215"}.fa-bitbucket{--fa:"\f171"}.fa-imdb{--fa:"\f2d8"}.fa-deezer{--fa:"\e077"}.fa-raspberry-pi{--fa:"\f7bb"}.fa-jira{--fa:"\f7b1"}.fa-docker{--fa:"\f395"}.fa-screenpal{--fa:"\e570"}.fa-bluetooth{--fa:"\f293"}.fa-gitter{--fa:"\f426"}.fa-d-and-d{--fa:"\f38d"}.fa-microblog{--fa:"\e01a"}.fa-cc-diners-club{--fa:"\f24c"}.fa-gg-circle{--fa:"\f261"}.fa-pied-piper-hat{--fa:"\f4e5"}.fa-kickstarter-k{--fa:"\f3bc"}.fa-yandex{--fa:"\f413"}.fa-readme{--fa:"\f4d5"}.fa-html5{--fa:"\f13b"}.fa-sellsy{--fa:"\f213"}.fa-square-web-awesome{--fa:"\e683"}.fa-sass{--fa:"\f41e"}.fa-wirsindhandwerk,.fa-wsh{--fa:"\e2d0"}.fa-buromobelexperte{--fa:"\f37f"}.fa-salesforce{--fa:"\f83b"}.fa-octopus-deploy{--fa:"\e082"}.fa-medapps{--fa:"\f3c6"}.fa-ns8{--fa:"\f3d5"}.fa-pinterest-p{--fa:"\f231"}.fa-apper{--fa:"\f371"}.fa-fort-awesome{--fa:"\f286"}.fa-waze{--fa:"\f83f"}.fa-bluesky{--fa:"\e671"}.fa-cc-jcb{--fa:"\f24b"}.fa-snapchat,.fa-snapchat-ghost{--fa:"\f2ab"}.fa-fantasy-flight-games{--fa:"\f6dc"}.fa-rust{--fa:"\e07a"}.fa-wix{--fa:"\f5cf"}.fa-behance-square,.fa-square-behance{--fa:"\f1b5"}.fa-supple{--fa:"\f3f9"}.fa-webflow{--fa:"\e65c"}.fa-rebel{--fa:"\f1d0"}.fa-css3{--fa:"\f13c"}.fa-staylinked{--fa:"\f3f5"}.fa-kaggle{--fa:"\f5fa"}.fa-space-awesome{--fa:"\e5ac"}.fa-deviantart{--fa:"\f1bd"}.fa-cpanel{--fa:"\f388"}.fa-goodreads-g{--fa:"\f3a9"}.fa-git-square,.fa-square-git{--fa:"\f1d2"}.fa-square-tumblr,.fa-tumblr-square{--fa:"\f174"}.fa-trello{--fa:"\f181"}.fa-creative-commons-nc-jp{--fa:"\f4ea"}.fa-get-pocket{--fa:"\f265"}.fa-perbyte{--fa:"\e083"}.fa-grunt{--fa:"\f3ad"}.fa-weebly{--fa:"\f5cc"}.fa-connectdevelop{--fa:"\f20e"}.fa-leanpub{--fa:"\f212"}.fa-black-tie{--fa:"\f27e"}.fa-themeco{--fa:"\f5c6"}.fa-python{--fa:"\f3e2"}.fa-android{--fa:"\f17b"}.fa-bots{--fa:"\e340"}.fa-free-code-camp{--fa:"\f2c5"}.fa-hornbill{--fa:"\f592"}.fa-js{--fa:"\f3b8"}.fa-ideal{--fa:"\e013"}.fa-git{--fa:"\f1d3"}.fa-dev{--fa:"\f6cc"}.fa-sketch{--fa:"\f7c6"}.fa-yandex-international{--fa:"\f414"}.fa-cc-amex{--fa:"\f1f3"}.fa-uber{--fa:"\f402"}.fa-github{--fa:"\f09b"}.fa-php{--fa:"\f457"}.fa-alipay{--fa:"\f642"}.fa-youtube{--fa:"\f167"}.fa-skyatlas{--fa:"\f216"}.fa-firefox-browser{--fa:"\e007"}.fa-replyd{--fa:"\f3e6"}.fa-suse{--fa:"\f7d6"}.fa-jenkins{--fa:"\f3b6"}.fa-twitter{--fa:"\f099"}.fa-rockrms{--fa:"\f3e9"}.fa-pinterest{--fa:"\f0d2"}.fa-buffer{--fa:"\f837"}.fa-npm{--fa:"\f3d4"}.fa-yammer{--fa:"\f840"}.fa-btc{--fa:"\f15a"}.fa-dribbble{--fa:"\f17d"}.fa-stumbleupon-circle{--fa:"\f1a3"}.fa-internet-explorer{--fa:"\f26b"}.fa-stubber{--fa:"\e5c7"}.fa-telegram,.fa-telegram-plane{--fa:"\f2c6"}.fa-old-republic{--fa:"\f510"}.fa-odysee{--fa:"\e5c6"}.fa-square-whatsapp,.fa-whatsapp-square{--fa:"\f40c"}.fa-node-js{--fa:"\f3d3"}.fa-edge-legacy{--fa:"\e078"}.fa-slack,.fa-slack-hash{--fa:"\f198"}.fa-medrt{--fa:"\f3c8"}.fa-usb{--fa:"\f287"}.fa-tumblr{--fa:"\f173"}.fa-vaadin{--fa:"\f408"}.fa-quora{--fa:"\f2c4"}.fa-square-x-twitter{--fa:"\e61a"}.fa-reacteurope{--fa:"\f75d"}.fa-medium,.fa-medium-m{--fa:"\f23a"}.fa-amilia{--fa:"\f36d"}.fa-mixcloud{--fa:"\f289"}.fa-flipboard{--fa:"\f44d"}.fa-viacoin{--fa:"\f237"}.fa-critical-role{--fa:"\f6c9"}.fa-sitrox{--fa:"\e44a"}.fa-discourse{--fa:"\f393"}.fa-joomla{--fa:"\f1aa"}.fa-mastodon{--fa:"\f4f6"}.fa-airbnb{--fa:"\f834"}.fa-wolf-pack-battalion{--fa:"\f514"}.fa-buy-n-large{--fa:"\f8a6"}.fa-gulp{--fa:"\f3ae"}.fa-creative-commons-sampling-plus{--fa:"\f4f1"}.fa-strava{--fa:"\f428"}.fa-ember{--fa:"\f423"}.fa-canadian-maple-leaf{--fa:"\f785"}.fa-teamspeak{--fa:"\f4f9"}.fa-pushed{--fa:"\f3e1"}.fa-wordpress-simple{--fa:"\f411"}.fa-nutritionix{--fa:"\f3d6"}.fa-wodu{--fa:"\e088"}.fa-google-pay{--fa:"\e079"}.fa-intercom{--fa:"\f7af"}.fa-zhihu{--fa:"\f63f"}.fa-korvue{--fa:"\f42f"}.fa-pix{--fa:"\e43a"}.fa-steam-symbol{--fa:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} ================================================ FILE: GoEasyDesigner/frontend/public/releases_latest.json ================================================ [ { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/126361665", "assets_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/126361665/assets", "upload_url": "https://uploads.github.com/repos/duolabmeng6/GoEasyDesigner/releases/126361665/assets{?name,label}", "html_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/tag/v0.1.19", "id": 126361665, "author": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "node_id": "RE_kwDOKGTsf84HiCBB", "tag_name": "v0.1.19", "target_commitish": "refs/heads/main", "name": "v0.1.19", "draft": false, "prerelease": false, "created_at": "2023-10-24T06:07:51Z", "published_at": "2023-10-24T06:20:42Z", "assets": [ { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/132065511", "id": 132065511, "node_id": "RA_kwDOKGTsf84H3yjn", "name": "GoEasyDesigner-v0.1.19.dmg", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 9907503, "download_count": 4, "created_at": "2023-10-24T06:20:45Z", "updated_at": "2023-10-24T06:20:45Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.19/GoEasyDesigner-v0.1.19.dmg" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/132065514", "id": 132065514, "node_id": "RA_kwDOKGTsf84H3yjq", "name": "GoEasyDesigner.exe", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 9083392, "download_count": 18, "created_at": "2023-10-24T06:20:46Z", "updated_at": "2023-10-24T06:20:47Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.19/GoEasyDesigner.exe" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/132065508", "id": 132065508, "node_id": "RA_kwDOKGTsf84H3yjk", "name": "GoEasyDesigner_MacOS.zip", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 8610259, "download_count": 0, "created_at": "2023-10-24T06:20:43Z", "updated_at": "2023-10-24T06:20:44Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.19/GoEasyDesigner_MacOS.zip" } ], "tarball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/tarball/v0.1.19", "zipball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/zipball/v0.1.19", "body": "# GoEasyDesigner 窗口设计师\n* 基于 go 语言 使用 wails框架, 支持 window macos linux 等系统.\n\n快下载体验~" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/126235359", "assets_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/126235359/assets", "upload_url": "https://uploads.github.com/repos/duolabmeng6/GoEasyDesigner/releases/126235359/assets{?name,label}", "html_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/tag/v0.1.18", "id": 126235359, "author": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "node_id": "RE_kwDOKGTsf84HhjLf", "tag_name": "v0.1.18", "target_commitish": "refs/heads/main", "name": "v0.1.18", "draft": false, "prerelease": false, "created_at": "2023-10-23T13:03:04Z", "published_at": "2023-10-23T13:12:41Z", "assets": [ { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/131948863", "id": 131948863, "node_id": "RA_kwDOKGTsf84H3WE_", "name": "GoEasyDesigner-v0.1.18.dmg", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 9413892, "download_count": 3, "created_at": "2023-10-23T13:12:43Z", "updated_at": "2023-10-23T13:12:44Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.18/GoEasyDesigner-v0.1.18.dmg" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/131948864", "id": 131948864, "node_id": "RA_kwDOKGTsf84H3WFA", "name": "GoEasyDesigner.exe", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 8703488, "download_count": 9, "created_at": "2023-10-23T13:12:44Z", "updated_at": "2023-10-23T13:12:45Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.18/GoEasyDesigner.exe" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/131948861", "id": 131948861, "node_id": "RA_kwDOKGTsf84H3WE9", "name": "GoEasyDesigner_MacOS.zip", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 8189728, "download_count": 0, "created_at": "2023-10-23T13:12:42Z", "updated_at": "2023-10-23T13:12:43Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.18/GoEasyDesigner_MacOS.zip" } ], "tarball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/tarball/v0.1.18", "zipball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/zipball/v0.1.18", "body": "# GoEasyDesigner 窗口设计师\n* 基于 go 语言 使用 wails框架, 支持 window macos linux 等系统.\n\n快下载体验~" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/126140306", "assets_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/126140306/assets", "upload_url": "https://uploads.github.com/repos/duolabmeng6/GoEasyDesigner/releases/126140306/assets{?name,label}", "html_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/tag/v0.1.17", "id": 126140306, "author": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "node_id": "RE_kwDOKGTsf84HhL-S", "tag_name": "v0.1.17", "target_commitish": "refs/heads/main", "name": "v0.1.17", "draft": false, "prerelease": false, "created_at": "2023-10-22T06:35:52Z", "published_at": "2023-10-22T06:39:36Z", "assets": [ { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/131778341", "id": 131778341, "node_id": "RA_kwDOKGTsf84H2scl", "name": "GoEasyDesigner-v0.1.17.dmg", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 9420738, "download_count": 2, "created_at": "2023-10-22T06:39:38Z", "updated_at": "2023-10-22T06:39:39Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.17/GoEasyDesigner-v0.1.17.dmg" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/131778343", "id": 131778343, "node_id": "RA_kwDOKGTsf84H2scn", "name": "GoEasyDesigner.exe", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 8554496, "download_count": 15, "created_at": "2023-10-22T06:39:40Z", "updated_at": "2023-10-22T06:39:41Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.17/GoEasyDesigner.exe" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/131778336", "id": 131778336, "node_id": "RA_kwDOKGTsf84H2scg", "name": "GoEasyDesigner_MacOS.zip", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 8190560, "download_count": 0, "created_at": "2023-10-22T06:39:37Z", "updated_at": "2023-10-22T06:39:38Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.17/GoEasyDesigner_MacOS.zip" } ], "tarball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/tarball/v0.1.17", "zipball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/zipball/v0.1.17", "body": "# GoEasyDesigner 窗口设计师\n* 基于 go 语言 使用 wails框架, 支持 window macos linux 等系统.\n\n快下载体验~" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/125922073", "assets_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/125922073/assets", "upload_url": "https://uploads.github.com/repos/duolabmeng6/GoEasyDesigner/releases/125922073/assets{?name,label}", "html_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/tag/v0.1.16", "id": 125922073, "author": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "node_id": "RE_kwDOKGTsf84HgWsZ", "tag_name": "v0.1.16", "target_commitish": "refs/heads/main", "name": "v0.1.16", "draft": false, "prerelease": false, "created_at": "2023-10-22T06:10:22Z", "published_at": "2023-10-22T06:22:33Z", "assets": [ { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/131776941", "id": 131776941, "node_id": "RA_kwDOKGTsf84H2sGt", "name": "GoEasyDesigner-v0.1.16.dmg", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 9405427, "download_count": 0, "created_at": "2023-10-22T06:22:35Z", "updated_at": "2023-10-22T06:22:36Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.16/GoEasyDesigner-v0.1.16.dmg" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/131776944", "id": 131776944, "node_id": "RA_kwDOKGTsf84H2sGw", "name": "GoEasyDesigner.exe", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 8552960, "download_count": 12, "created_at": "2023-10-22T06:22:36Z", "updated_at": "2023-10-22T06:22:37Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.16/GoEasyDesigner.exe" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/131776936", "id": 131776936, "node_id": "RA_kwDOKGTsf84H2sGo", "name": "GoEasyDesigner_MacOS.zip", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 8188419, "download_count": 0, "created_at": "2023-10-22T06:22:34Z", "updated_at": "2023-10-22T06:22:35Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.16/GoEasyDesigner_MacOS.zip" } ], "tarball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/tarball/v0.1.16", "zipball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/zipball/v0.1.16", "body": "# GoEasyDesigner 窗口设计师\n* 基于 go 语言 使用 wails框架, 支持 window macos linux 等系统.\n\n快下载体验~" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/124931121", "assets_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/124931121/assets", "upload_url": "https://uploads.github.com/repos/duolabmeng6/GoEasyDesigner/releases/124931121/assets{?name,label}", "html_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/tag/v0.1.15", "id": 124931121, "author": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "node_id": "RE_kwDOKGTsf84Hckwx", "tag_name": "v0.1.15", "target_commitish": "refs/heads/main", "name": "v0.1.15", "draft": false, "prerelease": false, "created_at": "2023-10-13T05:51:24Z", "published_at": "2023-10-13T06:03:00Z", "assets": [ { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/130377811", "id": 130377811, "node_id": "RA_kwDOKGTsf84HxWhT", "name": "GoEasyDesigner-v0.1.15.dmg", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 9399658, "download_count": 15, "created_at": "2023-10-13T06:03:03Z", "updated_at": "2023-10-13T06:03:04Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.15/GoEasyDesigner-v0.1.15.dmg" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/130377813", "id": 130377813, "node_id": "RA_kwDOKGTsf84HxWhV", "name": "GoEasyDesigner.exe", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 8522240, "download_count": 80, "created_at": "2023-10-13T06:03:04Z", "updated_at": "2023-10-13T06:03:05Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.15/GoEasyDesigner.exe" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/130377809", "id": 130377809, "node_id": "RA_kwDOKGTsf84HxWhR", "name": "GoEasyDesigner_MacOS.zip", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 8183676, "download_count": 1, "created_at": "2023-10-13T06:03:01Z", "updated_at": "2023-10-13T06:03:02Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.15/GoEasyDesigner_MacOS.zip" } ], "tarball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/tarball/v0.1.15", "zipball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/zipball/v0.1.15", "body": "# GoEasyDesigner 窗口设计师\n* 基于 go 语言 使用 wails框架, 支持 window macos linux 等系统.\n\n快下载体验~" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/124875116", "assets_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/124875116/assets", "upload_url": "https://uploads.github.com/repos/duolabmeng6/GoEasyDesigner/releases/124875116/assets{?name,label}", "html_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/tag/v0.1.14", "id": 124875116, "author": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "node_id": "RE_kwDOKGTsf84HcXFs", "tag_name": "v0.1.14", "target_commitish": "refs/heads/main", "name": "v0.1.14", "draft": false, "prerelease": false, "created_at": "2023-10-12T18:29:30Z", "published_at": "2023-10-12T18:41:13Z", "assets": [ { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/130303931", "id": 130303931, "node_id": "RA_kwDOKGTsf84HxEe7", "name": "GoEasyDesigner-v0.1.14.dmg", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 9399639, "download_count": 0, "created_at": "2023-10-12T18:41:17Z", "updated_at": "2023-10-12T18:41:18Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.14/GoEasyDesigner-v0.1.14.dmg" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/130303932", "id": 130303932, "node_id": "RA_kwDOKGTsf84HxEe8", "name": "GoEasyDesigner.exe", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 8522240, "download_count": 9, "created_at": "2023-10-12T18:41:19Z", "updated_at": "2023-10-12T18:41:19Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.14/GoEasyDesigner.exe" }, { "url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/assets/130303924", "id": 130303924, "node_id": "RA_kwDOKGTsf84HxEe0", "name": "GoEasyDesigner_MacOS.zip", "label": "", "uploader": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "html_url": "https://github.com/apps/github-actions", "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", "type": "Bot", "site_admin": false }, "content_type": "raw", "state": "uploaded", "size": 8183400, "download_count": 0, "created_at": "2023-10-12T18:41:14Z", "updated_at": "2023-10-12T18:41:17Z", "browser_download_url": "https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.1.14/GoEasyDesigner_MacOS.zip" } ], "tarball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/tarball/v0.1.14", "zipball_url": "https://api.github.com/repos/duolabmeng6/GoEasyDesigner/zipball/v0.1.14", "body": "# GoEasyDesigner 窗口设计师\n* 基于 go 语言 使用 wails框架, 支持 window macos linux 等系统.\n\n快下载体验~" } ] ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/ColorfulText/ColorfulText.js ================================================ export default { top: "150", left: "440", width: "400", height: "80", no_place: true, visible: true, disable: false, zIndex: 0, customListening:true, fontSize: "48px", data:{ title: "Go Easy Designer", }, html:"" } ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/ColorfulText/ColorfulText.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/ColorfulText/ColorfulTextAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/TimeProgressBar/TimeProgressBar.js ================================================ export default { top: "0", left: "0", width: "200", height: "30", noPlace: true, visible: true, disable: false, size: "custom", zIndex: 0, min: 0, max: 100, step: 1, n: 0, } ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/TimeProgressBar/TimeProgressBar.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/TimeProgressBar/TimeProgressBarAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/components.json ================================================ { "components": [ { "componentName": "流光边框", "组件路径": "/自定义组件/流光边框/流光边框.vue", "组件默认属性": "/自定义组件/流光边框/流光边框.js", "组件属性框": "/自定义组件/流光边框/流光边框属性.vue" }, { "componentName": "登录框", "组件路径": "/自定义组件/登录框/登录框.vue", "组件默认属性": "/自定义组件/登录框/登录框.js", "组件属性框": "/自定义组件/登录框/登录框属性.vue" }, { "componentName": "TimeProgressBar", "组件路径": "/自定义组件/TimeProgressBar/TimeProgressBar.vue", "组件默认属性": "/自定义组件/TimeProgressBar/TimeProgressBar.js", "组件属性框": "/自定义组件/TimeProgressBar/TimeProgressBarAttr.vue" }, { "componentName": "ColorfulText", "组件路径": "/自定义组件/ColorfulText/ColorfulText.vue", "组件默认属性": "/自定义组件/ColorfulText/ColorfulText.js", "组件属性框": "/自定义组件/ColorfulText/ColorfulTextAttr.vue" } ] } ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/流光边框/流光边框.js ================================================ export default { top: "150", left: "440", width: "240", height: "80", no_place: true, visible: true, disable: false, zIndex: 0, customListening:true, fontSize: "24px", data:{ background: '#000000', title: "流光边框", }, html:"" } ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/流光边框/流光边框.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/流光边框/流光边框属性.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/登录框/登录框.js ================================================ export default { top: "150", left: "440", width: "350", height: "350", no_place: true, visible: true, disable: false, zIndex: 0, customListening:true, HTML: "", data: { username: 'admin', password: 'admin', password_error_msg: '', username_error_msg: '', }, } ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/登录框/登录框.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/public/自定义组件/登录框/登录框属性.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/Helper.js ================================================ function registerBoxComponentNames(app, uiName, meta) { let ComponentNames = [] const componentsContext = meta; const keys = Object.keys(componentsContext).map((path) => { const name = path.split('/').pop().replace(/\.\w+$/, ''); const module = componentsContext[path]; //如果名称后面是 属性 或者是 Attr 就不要加入 if (!(name.endsWith("属性") || name.endsWith("Attr"))) { ComponentNames.push(name) } // console.log("注册组件", uiName, name) app.component(uiName + name, module.default); // app.component(name, module.default); return name; }); return ComponentNames; } function registerBoxComponentDefaultValue(app, uiName, meta) { let ComponentDefaultValue = {} const componentsContext = meta; const keys = Object.keys(componentsContext).map((path) => { const name = path.split('/').pop().replace(/\.\w+$/, ''); const module = componentsContext[path]; ComponentDefaultValue[name] = module.default; return name; }); return ComponentDefaultValue; } export default { registerBoxComponentNames, registerBoxComponentDefaultValue } ================================================ FILE: GoEasyDesigner/frontend/src/action/app.js ================================================ import {useAppStore} from '@/stores/appStore.js' import * as goFc from "../../wailsjs/go/main/App"; import { E保存, E保存件对话框, E停止命令, E取文件修改时间, E打开文件对话框, E检查更新, E读入文件, E运行命令 } from "../../wailsjs/go/main/App"; import {取父目录, 生成辅助代码} from "@/public"; import {ElMessage} from "element-plus"; import {BrowserOpenURL, EventsOn} from "../../wailsjs/runtime"; // 使用 $refs 来引用滚动容器 import {useI18n} from "vue-i18n"; export const appAction = {}; let store = {}; // 我想在这里作类型标注 useAppStore()怎么处理怎么写 let t = {} const 代码编辑器类 = {}; try { EventsOn("文件被修改", function (data) { console.log("文件被修改", data) setTimeout(function () { appAction.检查代码编辑器的内容是否为最新的() }, 500) }) } catch (e) { } 代码编辑器类.打开 = async function (文件路径) { store.代码编辑器.路径 = 文件路径 store.代码编辑器.内容 = await E读入文件(文件路径) store.代码编辑器.文件时间 = await E取文件修改时间(文件路径) console.log("代码编辑器.文件时间", store.代码编辑器.文件时间) console.log("代码编辑器.路径", store.代码编辑器.路径) goFc.E添加文件监视(文件路径) return store.代码编辑器.内容 } appAction.代码编辑器操作 = 代码编辑器类 appAction.init = function () { appAction.store = useAppStore() store = useAppStore() t = useI18n().t } appAction.新建项目 = function () { store.显示新建项目对话框 = true } appAction.打开项目 = async function () { const result = await goFc.E打开选择文件夹对话框(); if (result === "") { //弹出饿了么信息框 提示创建失败 ElMessage({ message: '未选择项目目录', type: 'error', }); return false } let files = await goFc.E搜索文件(result,"design.json") if (files.length === 0){ //弹出饿了么信息框 提示创建失败 ElMessage({ message: '项目目录下没有找到design.json文件', type: 'error', }); return false } console.log("搜索文件",files) appAction._打开文件加载界面(files[0]) return true } appAction.新建 = function () { function 创建窗口() { return { "id": "1", "name": t('componentName.Window'), "componentName": 'Window', "text": t('componentName.Window'), "top": "0", "left": "0", "width": "500", "height": "400", "background": "rgba(0, 0, 0, 0.05)", "noPlace": false, "noDrag": true, "disable": false, "visible": true, "zIndex": 0, "childComponents": [] } } appAction.store.list = [创建窗口()] appAction.store.indexMap = {} appAction.store.代码编辑器.内容 = "" } appAction.打开 = async function () { if (appAction.store.客户端模式 == false) { const input = document.createElement('input') input.type = 'file' input.accept = '.json' input.onchange = e => { const file = e.target.files[0] const reader = new FileReader() reader.readAsText(file) reader.onload = () => { const data = reader.result console.log(data) // 初始化界面(data) store.list = JSON.parse(data) store.取组件列表() } } input.click() return } console.log("打开") let 文件路径 = await E打开文件对话框(); if (文件路径 === "") { return } appAction._打开文件加载界面(文件路径) } appAction._打开项目设计文件 = function (filepath) { store.项目信息.设计文件路径 = filepath store.项目信息.窗口事件文件路径 = 取父目录(filepath) + "/event.js" store.项目信息.辅助代码文件路径 = 取父目录(filepath) + "/__aux_code.js" store.项目信息.项目管理目录 = 取父目录(filepath) //检查路径设计文件路径是否包含 renderer if (store.项目信息.设计文件路径.indexOf("renderer") == -1){ store.项目信息.项目根目录 = 取父目录(取父目录(取父目录(取父目录(filepath)))) }else{ store.项目信息.项目根目录 = 取父目录(取父目录(取父目录(取父目录(取父目录(filepath))))) } } appAction._打开文件加载界面 = async function (filepath) { appAction._打开项目设计文件(filepath) console.log("设计文件路径", store.项目信息.设计文件路径) console.log("窗口事件文件路径", store.项目信息.窗口事件文件路径) let 文件内容 = await E读入文件(store.项目信息.设计文件路径) // console.log(文件内容) store.list = JSON.parse(文件内容) // await nextTick(); store.取组件列表() store.当前拖拽组件数据 = store.组件通过id查找结构("1") await appAction.代码编辑器操作.打开(store.项目信息.窗口事件文件路径) store.项目管理刷新() } try { EventsOn("运行命令", function (data) { console.log("运行命令", data) store.调试信息 = store.调试信息 + "
" + data store.scrollContainer.scrollTop = store.scrollContainer.scrollHeight; if (data == "命令已完成") { store.运行按钮文本 = t("app.run"); store.编译按钮文本 = t("app.compile"); } }) } catch (e) { console.log('非客户端模式') } function 键盘按下(event, index) { console.log("键盘按下", event.key, index) if (event.key == 'Delete') { } } appAction.保存设计文件 = async function () { let njson = JSON.stringify(store.list, null, 2) console.log("保存设计文件", store) let 辅助代码 = 生成辅助代码(store.list[0].childComponents) console.log("辅助代码", 辅助代码) if (store.客户端模式 == false) { //浏览器打开就发起保存 const blob = new Blob([njson], {type: 'application/json'}) const link = document.createElement('a') link.href = URL.createObjectURL(blob) link.download = 'design.json' link.click() const blob2 = new Blob([辅助代码], {type: 'application/json'}) const link2 = document.createElement('a') link2.href = URL.createObjectURL(blob2) link2.download = '__aux_code.js' link2.click() return; } // 客户端直接保存 async function _保存(p, d) { d = String(d) p = String(p) await E保存(p, d) } if (store.项目信息.设计文件路径 == "") { let 设计文件路径 = await E保存件对话框() if (设计文件路径 === "") { ElMessage({message: "未选择文件", type: 'success', duration: 3000}); return } appAction._打开项目设计文件(设计文件路径) } if (store.代码编辑器.内容 !== "") { if (store.代码编辑器.路径 === store.项目信息.窗口事件文件路径) { await _保存(store.项目信息.窗口事件文件路径, store.代码编辑器.内容) store.代码编辑器.文件时间 = await E取文件修改时间(store.项目信息.窗口事件文件路径) console.log("保存后 代码编辑器.文件时间", store.代码编辑器.文件时间) } await _保存(store.项目信息.辅助代码文件路径, 辅助代码) } await _保存(store.项目信息.设计文件路径, njson) } appAction.检查代码编辑器的内容是否为最新的 = async function () { if (store.代码编辑器.内容 !== "") { let 文件时间 = await E取文件修改时间(store.项目信息.窗口事件文件路径) console.log("文件时间", 文件时间) console.log("store.代码编辑器.文件时间", store.代码编辑器.文件时间) if (文件时间 > store.代码编辑器.文件时间) { console.log("发现变化代码已更新") appAction.代码编辑器操作.打开(store.项目信息.窗口事件文件路径) } else { console.log("不需要更新") } } } appAction.设计区域被改变 = function () { // console.log("设计区域被改变",store.选择夹_中间现行选中项 ) // if(store.选择夹_中间现行选中项 == "1"){ // appAction.检查代码编辑器的内容是否为最新的() // // } } appAction.运行 = async function () { if (store.客户端模式 == false) { //弹出提示 ElMessage({ message: "当前为浏览器模式 不能运行 请自行在项目根目录运行 wails dev", type: 'success', duration: 3000, // 设置显示时间为5秒,单位为毫秒 }); return } if (store.项目信息.项目根目录 == "") { ElMessage({ message: "请先保存", type: 'success', duration: 3000, // 设置显示时间为5秒,单位为毫秒 }); return } if (store.运行按钮文本 == t("app.run")) { store.运行按钮文本 = t("app.stop") store.调试信息 = t("app.inOperation") store.选择夹_底部现行选中项 = "1" let ptext = await E读入文件(store.项目信息.项目根目录+"/package.json") // console.log("ptext",ptext) // console.log("store.项目信息.项目根目录",store.项目信息.项目根目录) let devShell = "wails dev -nocolour" try{ let pjson = JSON.parse(ptext) if (pjson.scripts.dev !== undefined){ devShell = 'npm run dev' } }catch (e) { } console.log("devShell",devShell) console.log("项目根目录",store.项目信息.项目根目录) E运行命令(store.项目信息.项目根目录, devShell) // E运行命令(store.项目信息.项目根目录, "wails dev -nocolour") } else { store.调试信息 = t('app.stopped') store.运行按钮文本 = t("app.run") // E停止命令() } } appAction.编译 = function () { if (store.客户端模式 == false) { //弹出提示 ElMessage({ message: "当前为浏览器模式 不能编译 请自行在项目根目录运行 wails build", type: 'success', duration: 3000, // 设置显示时间为5秒,单位为毫秒 }); return } if (store.项目信息.项目根目录 == "") { ElMessage({ message: "请先保存", type: 'success', duration: 3000, // 设置显示时间为5秒,单位为毫秒 }); return } if (store.编译按钮文本 == t("app.compile")) { store.编译按钮文本 = t("app.stop") store.调试信息 = t("app.inCompile") store.选择夹_底部现行选中项 = "1" E运行命令(store.项目信息.项目根目录, "wails build") } else { store.调试信息 = "已停止 ..." store.编译按钮文本 = t("app.compile") E停止命令() } } appAction.帮助 = function () { if (store.客户端模式) { BrowserOpenURL("https://github.com/duolabmeng6/GoEasyDesigner") } else { //浏览器打开新页面 window.open("https://github.com/duolabmeng6/GoEasyDesigner") } } appAction.下载客户端 = function () { if (store.是否为window系统) { window.open(store.window下载地址) } else { window.open(store.mac下载地址) } } appAction.运行环境检测 = function () { if (store.客户端模式 == false) { //弹出提示 ElMessage({ message: "当前为浏览器模式 不能运行 请自行在项目根目录运行 wails doctor", type: 'success', duration: 3000, // 设置显示时间为5秒,单位为毫秒 }); return } store.选择夹_底部现行选中项 = "1" store.调试信息 = "运行环境检测 ..." let 结果; 结果 = E运行命令(store.项目信息.项目根目录, "wails doctor") console.log("结果") // 检查node是否安装 } appAction.检查更新 = function () { E检查更新() } export default { appAction, } ================================================ FILE: GoEasyDesigner/frontend/src/app10.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/app11.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/assets/base.css ================================================ @tailwind base; @tailwind components; @tailwind utilities; ================================================ FILE: GoEasyDesigner/frontend/src/assets/main.css ================================================ html, body{ margin: 0; padding: 0; overflow: hidden; } .clear-select{ user-select: none; -webkit-user-select: none; /* Safari */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer / Edge */ } .app { width: 100% !important; display: grid; grid-template-columns: auto 1fr 1fr 1fr auto; grid-template-rows: 0fr 1fr 1fr 1fr 1fr; gap: 12px 12px; grid-auto-flow: row; height: 100vh; overflow: hidden; padding-bottom: 26px; padding-right: 16px; padding-left: 8px; padding-top: 12px } .绘制的组件 * { pointer-events: none; } .头部 { grid-area: 1 / 1 / 2 / 6; } .属性框 { grid-area: 2 / 1 / 5 / 2; width: 280px; min-width: 280px; box-shadow: 5px 5px 10px #dddfe5; } .设计区域 { grid-area: 2 / 2 / 5 / 5; box-shadow: 5px 5px 10px #dddfe5; } .工具箱 { grid-area: 2 / 5 / 5 / 6; width: 160px; min-width: 160px; box-shadow: 5px 5px 10px #dddfe5; } .调试信息 { box-shadow: 5px 5px 10px #dddfe5; grid-area: 5 / 1 / 6 / 6; } .标题 { grid-area: 1 / 1 / 2 / 2; display: flex; justify-content: center; align-items: center; } .工具条 { grid-area: 1 / 2 / 2 / 6; padding: 6px; } .属性框 .el-tabs__content { height: 100%; padding: 4px; } .工具箱 .el-tabs__content { height: 90% !important; overflow-y: auto; } .app2 { display: grid; grid-template-columns: 1fr; grid-template-rows: 0.1fr 2.6fr 0.1fr; gap: 10px 0px; grid-auto-flow: row; grid-template-areas: "组件列表" "属性表格" "添加组件事件"; justify-content: space-between; height: 91%; } .组件列表 { grid-area: 组件列表; } .属性表格 { grid-area: 属性表格; overflow-y: auto; padding-left: 6px; padding-right: 4px; } .添加组件事件 { grid-area: 添加组件事件; } .el-form-item { margin-bottom: 8px; } .画布 { background: rgb(240, 240, 240); position: relative; overflow: hidden; } .app2 .el-form-item { margin-bottom: 8px; } #pane-1{ height: 100%; } .调试信息 .el-tab-pane{ padding: 8px; } /* 修改滚动条轨道的宽度 */ ::-webkit-scrollbar { width: 4px; /* 调整滚动条宽度为8像素 */ height: 4px; /* 调整滚动条高度为2像素 */ } /* 修改滚动条轨道的背景颜色 */ ::-webkit-scrollbar-track { background-color: #f1f1f1; /* 设置轨道的背景颜色 */ } /* 修改滚动条的滑块(拖动条)颜色 */ ::-webkit-scrollbar-thumb { background-color: #c4c4c4; /* 设置滑块的颜色 */ } /* 修改滚动条的边框颜色 */ ::-webkit-scrollbar-thumb:hover { background-color: #a9a9a9; /* 设置滑块的悬停颜色 */ } * { box-sizing: border-box; } .el-tree-node__children{ width: 500px !important; } ================================================ FILE: GoEasyDesigner/frontend/src/components/RenderDesignComponent.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/RenderDesignComponentPreview.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/RenderDesignComponentWin.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/Shape.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Button/Button.js ================================================ export default { top: "0", left: "0", width: "76", height: "40", noPlace: true, buttonType: "default", visible: true, disable: false, size: "custom", zIndex: 0, text: "Button", } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Button/Button.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Button/ButtonAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/CheckBox/CheckBox.js ================================================ export default { top: "0", left: "0", width: "250", height: "80", noPlace: true, visible: true, disable: false, zIndex: 0, size: "default", currentSelected: [], options:[ {"label": "Default", "value": "default"}, {"label": "Large", "value": "large"}, {"label": "Small", "value": "small"}, ], buttonGroup: false, withBorder: false } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/CheckBox/CheckBox.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/CheckBox/CheckBoxAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/CommonLayout/CommonLayout.js ================================================ export default { top: "150", left: "440", width: "300", height: "200", value: "0", noPlace: true, visible: true, disable: false, zIndex: 0, layoutMethod: "header-main", childComponents: [ { componentName: "elContainer", name: "ContentAreaHeader", area: "header", top: "0", left: "0", width: "100%", height: "100%", // background: "#fff", position: "relative", noPlace: false, noDrag: true, visible: true, disable: false, pid: 0, zIndex: 0, childComponents: [] }, { componentName: "elContainer", name: "ContentAreaMain", area: "main", top: "0", left: "0", width: "100%", height: "100%", // background: "red", position: "relative", noPlace: false, noDrag: true, visible: true, disable: false, zIndex: 0, pid: 0, childComponents: [] }, { componentName: "elContainer", name: "ContentAreaFooter", area: "footer", top: "0", left: "0", width: "100%", height: "100%", // background: "green", position: "relative", noPlace: false, noDrag: true, visible: true, disable: false, zIndex: 0, pid: 0, childComponents: [] }, { componentName: "elContainer", name: "ContentAreaAside", area: "aside", top: "0", left: "0", width: "100px", height: "100%", // background: "green", position: "relative", noPlace: false, noDrag: true, visible: true, disable: false, zIndex: 0, pid: 0, childComponents: [] }, ] } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/CommonLayout/CommonLayout.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/CommonLayout/CommonLayoutAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Container/Container.js ================================================ export default { noPlace: false, visible: true, disable: false, top: "0", left: "0", width: "200", height: "200", background: "#fff", zIndex: 0, overflowY: "visible", overflowX: "visible", childComponents: [] } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Container/ContainerAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/ControlButton/ControlButton.js ================================================ export default { top: "inherit", left: "inherit", width: "146", height: "32", right: "0", bottom: "inherit", noPlace: true, visible: true, disable: false, zIndex: 0, block: true, ghost: false, loading: false, shape: "rectangle", size: "medium", theme: "primary", variant: "base", text:"按钮", } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/ControlButton/ControlButton.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/ControlButton/ControlButtonAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/CustomComponent/CustomComponent.js ================================================ import {defineEmits} from "vue"; export default { top: "150", left: "440", width: "300", height: "300", noPlace: true, visible: true, disable: false, zIndex: 0, customListening:true, data:{ username: 'admin', password: 'admin', }, HTML: ` ` } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/CustomComponent/CustomComponent.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/CustomComponent/CustomComponentAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/FlexLayout/FlexLayout.js ================================================ export default { top: "150", left: "440", width: "300", height: "200", noPlace: true, visible: true, disable: false, zIndex: 0, type: "border-card", tagPosition: "top", gutter: 10, justify: "start", childComponents: [ { componentName: "elContainer", name: "ContentArea", top: "0", left: "0", width: "100%", height: "100%", // background: "#fff", position: "relative", noPlace: false, noDrag: true, visible: true, disable: false, pid: 0, zIndex: 0, span: 8, childComponents: [] }, { componentName: "elContainer", name: "ContentArea", top: "0", left: "0", width: "100%", height: "100%", // background: "#fff", position: "relative", noPlace: false, noDrag: true, visible: true, disable: false, pid: 0, zIndex: 0, span: 8, childComponents: [] }, { componentName: "elContainer", name: "ContentArea", top: "0", left: "0", width: "100%", height: "100%", // background: "#fff", position: "relative", noPlace: false, noDrag: true, visible: true, disable: false, pid: 0, zIndex: 0, span: 8, childComponents: [] } ] } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/FlexLayout/FlexLayout.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/FlexLayout/FlexLayoutAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Label/Label.js ================================================ export default { top: "0", left: "0", width: "120", height: "40", noPlace: true, visible: true, disable: false, zIndex: 0, size: "default", truncated: false, tag: "p", tagPosition: "text-center", corlor: "#606266", text: "标签" } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Label/Label.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Label/LabelAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Menu/Menu.js ================================================ export default { top: "150", left: "440", width: "600", height: "100", noPlace: true, visible: true, disable: false, zIndex: 0, mode: "horizontal", collapse : false, menuOption:[ { id: 1, label: '菜单 1', children: [ { id: 4, label: '二级菜单 1-1', children: [ { id: 9, label: '三级菜单 1-1-1', }, { id: 10, label: '三级菜单 1-1-2', }, ], }, ], }, { id: 2, label: '菜单 2', children: [ { id: 5, label: '二级菜单 2-1', }, { id: 6, label: '二级菜单 2-2', }, ], }, { id: 3, label: '菜单 3', children: [ { id: 7, label: '二级菜单 3-1', }, { id: 8, label: '二级菜单 3-2', }, ], }, { id: 4, label: '菜单 4', }, ] } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Menu/Menu.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Menu/MenuAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/ProgressBar/ProgressBar.js ================================================ export default { top: "0", left: "0", width: "200", height: "30", noPlace: true, visible: true, disable: false, size: "custom", zIndex: 0, min: 0, max: 100, step: 1, n: 0, } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/ProgressBar/ProgressBar.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/ProgressBar/ProgressBarAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/RadioButton/RadioButton.js ================================================ export default { top: "0", left: "0", width: "250", height: "80", noPlace: true, visible: true, disable: false, zIndex: 0, size: "default", value: "", options:[ {"label": "默认", "value": "default"}, {"label": "大号", "value": "large"}, {"label": "小号", "value": "small"}, ], buttonGroup:false, border:false } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/RadioButton/RadioButton.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/RadioButton/RadioButtonAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Switch/Switch.js ================================================ export default { top: "0", left: "0", width: "50", height: "40", noPlace: true, visible: true, disable: false, zIndex: 0, size: "default", value: false, activeText: "开", inactiveText: "关", inlinePrompt: true, } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Switch/Switch.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Switch/SwitchAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Table/Table.js ================================================ export default { top: "150", left: "440", width: "300", height: "200", noPlace: true, visible: true, disable: false, zIndex: 0, stripe: false, border: false, select: false, value: [], tableLayout: "fixed", header:[ { "label":"日期","prop":"date","width":"180","fixed":true }, { "label":"名称","prop":"name","width":"180","fixed":false }, { "label":"地址","prop":"address","width":"180","fixed":false }, ], data:[ { date: '2016-05-03', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', }, { date: '2016-05-02', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', }, { date: '2016-05-04', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', }, { date: '2016-05-01', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', }, ] } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Table/Table.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Table/TableAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Tabs/Tabs.js ================================================ export default { top: "150", left: "440", width: "300", height: "300", value: "0", noPlace: true, visible: true, disable: false, zIndex: 0, overflowY: "hidden", overflowX: "hidden", type: "border-card", tagPosition: "top", childComponents: [ { componentName: "elContainer", name: "ContentArea", text: "tab", top: "0", left: "0", width: "100%", height: "100%", noPlace: false, noDrag: true, visible: true, disable: false, pid: 0, zIndex: 0, childComponents: [] }, { componentName: "elContainer", name: "ContentArea", text: "tab", top: "0", left: "0", width: "100%", height: "100%", noPlace: false, noDrag: true, visible: true, disable: false, pid: 0, zIndex: 0, childComponents: [] }, ] } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Tabs/Tabs.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Tabs/TabsAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/TabsTW/TabsTW.js ================================================ export default { top: "150", left: "440", width: "300", height: "300", value: "0", noPlace: true, visible: true, disable: false, zIndex: 0, overflowY: "hidden", overflowX: "hidden", type: "border-card", tagPosition: "top", childComponents: [ { componentName: "elContainer", name: "ContentArea", text: "tab", 图标: "fa fa-server", top: "0", left: "0", width: "100%", height: "100%", noPlace: false, noDrag: true, visible: true, disable: false, pid: 0, zIndex: 0, childComponents: [] }, { componentName: "elContainer", name: "ContentArea", text: "tab", 图标: "fa fa-cog", top: "0", left: "0", width: "100%", height: "100%", noPlace: false, noDrag: true, visible: true, disable: false, pid: 0, zIndex: 0, childComponents: [] }, ] } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/TabsTW/TabsTW.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/TabsTW/TabsTWAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/TabsTW/fontawesome_free_icon_names.js ================================================ const iconNames = ["fa-brands fa-42-group", "fa-brands fa-500px", "fa-brands fa-accessible-icon", "fa-brands fa-accusoft", "fa-brands fa-adn", "fa-brands fa-adversal", "fa-brands fa-affiliatetheme", "fa-brands fa-airbnb", "fa-brands fa-algolia", "fa-brands fa-alipay", "fa-brands fa-amazon", "fa-brands fa-amazon-pay", "fa-brands fa-amilia", "fa-brands fa-android", "fa-brands fa-angellist", "fa-brands fa-angrycreative", "fa-brands fa-angular", "fa-brands fa-app-store", "fa-brands fa-app-store-ios", "fa-brands fa-apper", "fa-brands fa-apple", "fa-brands fa-apple-pay", "fa-brands fa-artstation", "fa-brands fa-asymmetrik", "fa-brands fa-atlassian", "fa-brands fa-audible", "fa-brands fa-autoprefixer", "fa-brands fa-avianex", "fa-brands fa-aviato", "fa-brands fa-aws", "fa-brands fa-bandcamp", "fa-brands fa-battle-net", "fa-brands fa-behance", "fa-brands fa-bilibili", "fa-brands fa-bimobject", "fa-brands fa-bitbucket", "fa-brands fa-bitcoin", "fa-brands fa-bity", "fa-brands fa-black-tie", "fa-brands fa-blackberry", "fa-brands fa-blogger", "fa-brands fa-blogger-b", "fa-brands fa-bluesky", "fa-brands fa-bluetooth", "fa-brands fa-bluetooth-b", "fa-brands fa-bootstrap", "fa-brands fa-bots", "fa-brands fa-brave", "fa-brands fa-brave-reverse", "fa-brands fa-btc", "fa-brands fa-buffer", "fa-brands fa-buromobelexperte", "fa-brands fa-buy-n-large", "fa-brands fa-buysellads", "fa-brands fa-canadian-maple-leaf", "fa-brands fa-cc-amazon-pay", "fa-brands fa-cc-amex", "fa-brands fa-cc-apple-pay", "fa-brands fa-cc-diners-club", "fa-brands fa-cc-discover", "fa-brands fa-cc-jcb", "fa-brands fa-cc-mastercard", "fa-brands fa-cc-paypal", "fa-brands fa-cc-stripe", "fa-brands fa-cc-visa", "fa-brands fa-centercode", "fa-brands fa-centos", "fa-brands fa-chrome", "fa-brands fa-chromecast", "fa-brands fa-cloudflare", "fa-brands fa-cloudscale", "fa-brands fa-cloudsmith", "fa-brands fa-cloudversify", "fa-brands fa-cmplid", "fa-brands fa-codepen", "fa-brands fa-codiepie", "fa-brands fa-confluence", "fa-brands fa-connectdevelop", "fa-brands fa-contao", "fa-brands fa-cotton-bureau", "fa-brands fa-cpanel", "fa-brands fa-creative-commons", "fa-brands fa-creative-commons-by", "fa-brands fa-creative-commons-nc", "fa-brands fa-creative-commons-nc-eu", "fa-brands fa-creative-commons-nc-jp", "fa-brands fa-creative-commons-nd", "fa-brands fa-creative-commons-pd", "fa-brands fa-creative-commons-pd-alt", "fa-brands fa-creative-commons-remix", "fa-brands fa-creative-commons-sa", "fa-brands fa-creative-commons-sampling", "fa-brands fa-creative-commons-sampling-plus", "fa-brands fa-creative-commons-share", "fa-brands fa-creative-commons-zero", "fa-brands fa-critical-role", "fa-brands fa-css", "fa-brands fa-css3", "fa-brands fa-css3-alt", "fa-brands fa-cuttlefish", "fa-brands fa-d-and-d", "fa-brands fa-d-and-d-beyond", "fa-brands fa-dailymotion", "fa-brands fa-dart-lang", "fa-brands fa-dashcube", "fa-brands fa-debian", "fa-brands fa-deezer", "fa-brands fa-delicious", "fa-brands fa-deploydog", "fa-brands fa-deskpro", "fa-brands fa-dev", "fa-brands fa-deviantart", "fa-brands fa-dhl", "fa-brands fa-diaspora", "fa-brands fa-digg", "fa-brands fa-digital-ocean", "fa-brands fa-discord", "fa-brands fa-discourse", "fa-brands fa-dochub", "fa-brands fa-docker", "fa-brands fa-draft2digital", "fa-brands fa-dribbble", "fa-brands fa-dropbox", "fa-brands fa-drupal", "fa-brands fa-dyalog", "fa-brands fa-earlybirds", "fa-brands fa-ebay", "fa-brands fa-edge", "fa-brands fa-edge-legacy", "fa-brands fa-elementor", "fa-brands fa-ello", "fa-brands fa-ember", "fa-brands fa-empire", "fa-brands fa-envira", "fa-brands fa-erlang", "fa-brands fa-ethereum", "fa-brands fa-etsy", "fa-brands fa-evernote", "fa-brands fa-expeditedssl", "fa-brands fa-facebook", "fa-brands fa-facebook-f", "fa-brands fa-facebook-messenger", "fa-brands fa-fantasy-flight-games", "fa-brands fa-fedex", "fa-brands fa-fedora", "fa-brands fa-figma", "fa-brands fa-files-pinwheel", "fa-brands fa-firefox", "fa-brands fa-firefox-browser", "fa-brands fa-first-order", "fa-brands fa-first-order-alt", "fa-brands fa-firstdraft", "fa-brands fa-flickr", "fa-brands fa-flipboard", "fa-brands fa-flutter", "fa-brands fa-fly", "fa-brands fa-font-awesome", "fa-brands fa-fonticons", "fa-brands fa-fonticons-fi", "fa-brands fa-fort-awesome", "fa-brands fa-fort-awesome-alt", "fa-brands fa-forumbee", "fa-brands fa-foursquare", "fa-brands fa-free-code-camp", "fa-brands fa-freebsd", "fa-brands fa-fulcrum", "fa-brands fa-galactic-republic", "fa-brands fa-galactic-senate", "fa-brands fa-get-pocket", "fa-brands fa-gg", "fa-brands fa-gg-circle", "fa-brands fa-git", "fa-brands fa-git-alt", "fa-brands fa-github", "fa-brands fa-github-alt", "fa-brands fa-gitkraken", "fa-brands fa-gitlab", "fa-brands fa-gitter", "fa-brands fa-glide", "fa-brands fa-glide-g", "fa-brands fa-gofore", "fa-brands fa-golang", "fa-brands fa-goodreads", "fa-brands fa-goodreads-g", "fa-brands fa-google", "fa-brands fa-google-drive", "fa-brands fa-google-pay", "fa-brands fa-google-play", "fa-brands fa-google-plus", "fa-brands fa-google-plus-g", "fa-brands fa-google-scholar", "fa-brands fa-google-wallet", "fa-brands fa-gratipay", "fa-brands fa-grav", "fa-brands fa-gripfire", "fa-brands fa-grunt", "fa-brands fa-guilded", "fa-brands fa-gulp", "fa-brands fa-hacker-news", "fa-brands fa-hackerrank", "fa-brands fa-hashnode", "fa-brands fa-hips", "fa-brands fa-hire-a-helper", "fa-brands fa-hive", "fa-brands fa-hooli", "fa-brands fa-hornbill", "fa-brands fa-hotjar", "fa-brands fa-houzz", "fa-brands fa-html5", "fa-brands fa-hubspot", "fa-brands fa-ideal", "fa-brands fa-imdb", "fa-brands fa-instagram", "fa-brands fa-instalod", "fa-brands fa-intercom", "fa-brands fa-internet-explorer", "fa-brands fa-invision", "fa-brands fa-ioxhost", "fa-brands fa-itch-io", "fa-brands fa-itunes", "fa-brands fa-itunes-note", "fa-brands fa-java", "fa-brands fa-jedi-order", "fa-brands fa-jenkins", "fa-brands fa-jira", "fa-brands fa-joget", "fa-brands fa-joomla", "fa-brands fa-js", "fa-brands fa-jsfiddle", "fa-brands fa-jxl", "fa-brands fa-kaggle", "fa-brands fa-keybase", "fa-brands fa-keycdn", "fa-brands fa-kickstarter", "fa-brands fa-kickstarter-k", "fa-brands fa-korvue", "fa-brands fa-laravel", "fa-brands fa-lastfm", "fa-brands fa-leanpub", "fa-brands fa-less", "fa-brands fa-letterboxd", "fa-brands fa-line", "fa-brands fa-linkedin", "fa-brands fa-linkedin-in", "fa-brands fa-linode", "fa-brands fa-linux", "fa-brands fa-lyft", "fa-brands fa-magento", "fa-brands fa-mailchimp", "fa-brands fa-mandalorian", "fa-brands fa-markdown", "fa-brands fa-mastodon", "fa-brands fa-maxcdn", "fa-brands fa-mdb", "fa-brands fa-medapps", "fa-brands fa-medium", "fa-brands fa-medrt", "fa-brands fa-meetup", "fa-brands fa-megaport", "fa-brands fa-mendeley", "fa-brands fa-meta", "fa-brands fa-microblog", "fa-brands fa-microsoft", "fa-brands fa-mintbit", "fa-brands fa-mix", "fa-brands fa-mixcloud", "fa-brands fa-mixer", "fa-brands fa-mizuni", "fa-brands fa-modx", "fa-brands fa-monero", "fa-brands fa-napster", "fa-brands fa-neos", "fa-brands fa-nfc-directional", "fa-brands fa-nfc-symbol", "fa-brands fa-nimblr", "fa-brands fa-node", "fa-brands fa-node-js", "fa-brands fa-npm", "fa-brands fa-ns8", "fa-brands fa-nutritionix", "fa-brands fa-octopus-deploy", "fa-brands fa-odnoklassniki", "fa-brands fa-odysee", "fa-brands fa-old-republic", "fa-brands fa-opencart", "fa-brands fa-openid", "fa-brands fa-opensuse", "fa-brands fa-opera", "fa-brands fa-optin-monster", "fa-brands fa-orcid", "fa-brands fa-osi", "fa-brands fa-padlet", "fa-brands fa-page4", "fa-brands fa-pagelines", "fa-brands fa-palfed", "fa-brands fa-patreon", "fa-brands fa-paypal", "fa-brands fa-perbyte", "fa-brands fa-periscope", "fa-brands fa-phabricator", "fa-brands fa-phoenix-framework", "fa-brands fa-phoenix-squadron", "fa-brands fa-php", "fa-brands fa-pied-piper", "fa-brands fa-pied-piper-alt", "fa-brands fa-pied-piper-hat", "fa-brands fa-pied-piper-pp", "fa-brands fa-pinterest", "fa-brands fa-pinterest-p", "fa-brands fa-pix", "fa-brands fa-pixiv", "fa-brands fa-playstation", "fa-brands fa-product-hunt", "fa-brands fa-pushed", "fa-brands fa-python", "fa-brands fa-qq", "fa-brands fa-quinscape", "fa-brands fa-quora", "fa-brands fa-r-project", "fa-brands fa-raspberry-pi", "fa-brands fa-ravelry", "fa-brands fa-react", "fa-brands fa-reacteurope", "fa-brands fa-readme", "fa-brands fa-rebel", "fa-brands fa-red-river", "fa-brands fa-reddit", "fa-brands fa-reddit-alien", "fa-brands fa-redhat", "fa-brands fa-renren", "fa-brands fa-replyd", "fa-brands fa-researchgate", "fa-brands fa-resolving", "fa-brands fa-rev", "fa-brands fa-rocketchat", "fa-brands fa-rockrms", "fa-brands fa-rust", "fa-brands fa-safari", "fa-brands fa-salesforce", "fa-brands fa-sass", "fa-brands fa-schlix", "fa-brands fa-screenpal", "fa-brands fa-scribd", "fa-brands fa-searchengin", "fa-brands fa-sellcast", "fa-brands fa-sellsy", "fa-brands fa-servicestack", "fa-brands fa-shirtsinbulk", "fa-brands fa-shoelace", "fa-brands fa-shopify", "fa-brands fa-shopware", "fa-brands fa-signal-messenger", "fa-brands fa-simplybuilt", "fa-brands fa-sistrix", "fa-brands fa-sith", "fa-brands fa-sitrox", "fa-brands fa-sketch", "fa-brands fa-skyatlas", "fa-brands fa-skype", "fa-brands fa-slack", "fa-brands fa-slideshare", "fa-brands fa-snapchat", "fa-brands fa-soundcloud", "fa-brands fa-sourcetree", "fa-brands fa-space-awesome", "fa-brands fa-speakap", "fa-brands fa-speaker-deck", "fa-brands fa-spotify", "fa-brands fa-square-behance", "fa-brands fa-square-bluesky", "fa-brands fa-square-dribbble", "fa-brands fa-square-facebook", "fa-brands fa-square-font-awesome", "fa-brands fa-square-font-awesome-stroke", "fa-brands fa-square-git", "fa-brands fa-square-github", "fa-brands fa-square-gitlab", "fa-brands fa-square-google-plus", "fa-brands fa-square-hacker-news", "fa-brands fa-square-instagram", "fa-brands fa-square-js", "fa-brands fa-square-lastfm", "fa-brands fa-square-letterboxd", "fa-brands fa-square-odnoklassniki", "fa-brands fa-square-pied-piper", "fa-brands fa-square-pinterest", "fa-brands fa-square-reddit", "fa-brands fa-square-snapchat", "fa-brands fa-square-steam", "fa-brands fa-square-threads", "fa-brands fa-square-tumblr", "fa-brands fa-square-twitter", "fa-brands fa-square-upwork", "fa-brands fa-square-viadeo", "fa-brands fa-square-vimeo", "fa-brands fa-square-web-awesome", "fa-brands fa-square-web-awesome-stroke", "fa-brands fa-square-whatsapp", "fa-brands fa-square-x-twitter", "fa-brands fa-square-xing", "fa-brands fa-square-youtube", "fa-brands fa-squarespace", "fa-brands fa-stack-exchange", "fa-brands fa-stack-overflow", "fa-brands fa-stackpath", "fa-brands fa-staylinked", "fa-brands fa-steam", "fa-brands fa-steam-symbol", "fa-brands fa-sticker-mule", "fa-brands fa-strava", "fa-brands fa-stripe", "fa-brands fa-stripe-s", "fa-brands fa-stubber", "fa-brands fa-studiovinari", "fa-brands fa-stumbleupon", "fa-brands fa-stumbleupon-circle", "fa-brands fa-superpowers", "fa-brands fa-supple", "fa-brands fa-suse", "fa-brands fa-swift", "fa-brands fa-symfony", "fa-brands fa-teamspeak", "fa-brands fa-telegram", "fa-brands fa-tencent-weibo", "fa-brands fa-the-red-yeti", "fa-brands fa-themeco", "fa-brands fa-themeisle", "fa-brands fa-think-peaks", "fa-brands fa-threads", "fa-brands fa-tiktok", "fa-brands fa-trade-federation", "fa-brands fa-trello", "fa-brands fa-tumblr", "fa-brands fa-twitch", "fa-brands fa-twitter", "fa-brands fa-typo3", "fa-brands fa-uber", "fa-brands fa-ubuntu", "fa-brands fa-uikit", "fa-brands fa-umbraco", "fa-brands fa-uncharted", "fa-brands fa-uniregistry", "fa-brands fa-unity", "fa-brands fa-unsplash", "fa-brands fa-untappd", "fa-brands fa-ups", "fa-brands fa-upwork", "fa-brands fa-usb", "fa-brands fa-usps", "fa-brands fa-ussunnah", "fa-brands fa-vaadin", "fa-brands fa-viacoin", "fa-brands fa-viadeo", "fa-brands fa-viber", "fa-brands fa-vimeo", "fa-brands fa-vimeo-v", "fa-brands fa-vine", "fa-brands fa-vk", "fa-brands fa-vnv", "fa-brands fa-vuejs", "fa-brands fa-watchman-monitoring", "fa-brands fa-waze", "fa-brands fa-web-awesome", "fa-brands fa-webflow", "fa-brands fa-weebly", "fa-brands fa-weibo", "fa-brands fa-weixin", "fa-brands fa-whatsapp", "fa-brands fa-whmcs", "fa-brands fa-wikipedia-w", "fa-brands fa-windows", "fa-brands fa-wirsindhandwerk", "fa-brands fa-wix", "fa-brands fa-wizards-of-the-coast", "fa-brands fa-wodu", "fa-brands fa-wolf-pack-battalion", "fa-brands fa-wordpress", "fa-brands fa-wordpress-simple", "fa-brands fa-wpbeginner", "fa-brands fa-wpexplorer", "fa-brands fa-wpforms", "fa-brands fa-wpressr", "fa-brands fa-x-twitter", "fa-brands fa-xbox", "fa-brands fa-xing", "fa-brands fa-y-combinator", "fa-brands fa-yahoo", "fa-brands fa-yammer", "fa-brands fa-yandex", "fa-brands fa-yandex-international", "fa-brands fa-yarn", "fa-brands fa-yelp", "fa-brands fa-yoast", "fa-brands fa-youtube", "fa-brands fa-zhihu", "fa-regular fa-address-book", "fa-regular fa-address-card", "fa-regular fa-bell", "fa-regular fa-bell-slash", "fa-regular fa-bookmark", "fa-regular fa-building", "fa-regular fa-calendar", "fa-regular fa-calendar-check", "fa-regular fa-calendar-days", "fa-regular fa-calendar-minus", "fa-regular fa-calendar-plus", "fa-regular fa-calendar-xmark", "fa-regular fa-chart-bar", "fa-regular fa-chess-bishop", "fa-regular fa-chess-king", "fa-regular fa-chess-knight", "fa-regular fa-chess-pawn", "fa-regular fa-chess-queen", "fa-regular fa-chess-rook", "fa-regular fa-circle", "fa-regular fa-circle-check", "fa-regular fa-circle-dot", "fa-regular fa-circle-down", "fa-regular fa-circle-left", "fa-regular fa-circle-pause", "fa-regular fa-circle-play", "fa-regular fa-circle-question", "fa-regular fa-circle-right", "fa-regular fa-circle-stop", "fa-regular fa-circle-up", "fa-regular fa-circle-user", "fa-regular fa-circle-xmark", "fa-regular fa-clipboard", "fa-regular fa-clock", "fa-regular fa-clone", "fa-regular fa-closed-captioning", "fa-regular fa-comment", "fa-regular fa-comment-dots", "fa-regular fa-comments", "fa-regular fa-compass", "fa-regular fa-copy", "fa-regular fa-copyright", "fa-regular fa-credit-card", "fa-regular fa-envelope", "fa-regular fa-envelope-open", "fa-regular fa-eye", "fa-regular fa-eye-slash", "fa-regular fa-face-angry", "fa-regular fa-face-dizzy", "fa-regular fa-face-flushed", "fa-regular fa-face-frown", "fa-regular fa-face-frown-open", "fa-regular fa-face-grimace", "fa-regular fa-face-grin", "fa-regular fa-face-grin-beam", "fa-regular fa-face-grin-beam-sweat", "fa-regular fa-face-grin-hearts", "fa-regular fa-face-grin-squint", "fa-regular fa-face-grin-squint-tears", "fa-regular fa-face-grin-stars", "fa-regular fa-face-grin-tears", "fa-regular fa-face-grin-tongue", "fa-regular fa-face-grin-tongue-squint", "fa-regular fa-face-grin-tongue-wink", "fa-regular fa-face-grin-wide", "fa-regular fa-face-grin-wink", "fa-regular fa-face-kiss", "fa-regular fa-face-kiss-beam", "fa-regular fa-face-kiss-wink-heart", "fa-regular fa-face-laugh", "fa-regular fa-face-laugh-beam", "fa-regular fa-face-laugh-squint", "fa-regular fa-face-laugh-wink", "fa-regular fa-face-meh", "fa-regular fa-face-meh-blank", "fa-regular fa-face-rolling-eyes", "fa-regular fa-face-sad-cry", "fa-regular fa-face-sad-tear", "fa-regular fa-face-smile", "fa-regular fa-face-smile-beam", "fa-regular fa-face-smile-wink", "fa-regular fa-face-surprise", "fa-regular fa-face-tired", "fa-regular fa-file", "fa-regular fa-file-audio", "fa-regular fa-file-code", "fa-regular fa-file-excel", "fa-regular fa-file-image", "fa-regular fa-file-lines", "fa-regular fa-file-pdf", "fa-regular fa-file-powerpoint", "fa-regular fa-file-video", "fa-regular fa-file-word", "fa-regular fa-file-zipper", "fa-regular fa-flag", "fa-regular fa-floppy-disk", "fa-regular fa-folder", "fa-regular fa-folder-closed", "fa-regular fa-folder-open", "fa-regular fa-font-awesome", "fa-regular fa-futbol", "fa-regular fa-gem", "fa-regular fa-hand", "fa-regular fa-hand-back-fist", "fa-regular fa-hand-lizard", "fa-regular fa-hand-peace", "fa-regular fa-hand-point-down", "fa-regular fa-hand-point-left", "fa-regular fa-hand-point-right", "fa-regular fa-hand-point-up", "fa-regular fa-hand-pointer", "fa-regular fa-hand-scissors", "fa-regular fa-hand-spock", "fa-regular fa-handshake", "fa-regular fa-hard-drive", "fa-regular fa-heart", "fa-regular fa-hospital", "fa-regular fa-hourglass", "fa-regular fa-hourglass-half", "fa-regular fa-id-badge", "fa-regular fa-id-card", "fa-regular fa-image", "fa-regular fa-images", "fa-regular fa-keyboard", "fa-regular fa-lemon", "fa-regular fa-life-ring", "fa-regular fa-lightbulb", "fa-regular fa-map", "fa-regular fa-message", "fa-regular fa-money-bill-1", "fa-regular fa-moon", "fa-regular fa-newspaper", "fa-regular fa-note-sticky", "fa-regular fa-object-group", "fa-regular fa-object-ungroup", "fa-regular fa-paper-plane", "fa-regular fa-paste", "fa-regular fa-pen-to-square", "fa-regular fa-rectangle-list", "fa-regular fa-rectangle-xmark", "fa-regular fa-registered", "fa-regular fa-share-from-square", "fa-regular fa-snowflake", "fa-regular fa-square", "fa-regular fa-square-caret-down", "fa-regular fa-square-caret-left", "fa-regular fa-square-caret-right", "fa-regular fa-square-caret-up", "fa-regular fa-square-check", "fa-regular fa-square-full", "fa-regular fa-square-minus", "fa-regular fa-square-plus", "fa-regular fa-star", "fa-regular fa-star-half", "fa-regular fa-star-half-stroke", "fa-regular fa-sun", "fa-regular fa-thumbs-down", "fa-regular fa-thumbs-up", "fa-regular fa-trash-can", "fa-regular fa-user", "fa-regular fa-window-maximize", "fa-regular fa-window-minimize", "fa-regular fa-window-restore", "fa-solid fa-0", "fa-solid fa-1", "fa-solid fa-2", "fa-solid fa-3", "fa-solid fa-4", "fa-solid fa-5", "fa-solid fa-6", "fa-solid fa-7", "fa-solid fa-8", "fa-solid fa-9", "fa-solid fa-a", "fa-solid fa-address-book", "fa-solid fa-address-card", "fa-solid fa-align-center", "fa-solid fa-align-justify", "fa-solid fa-align-left", "fa-solid fa-align-right", "fa-solid fa-anchor", "fa-solid fa-anchor-circle-check", "fa-solid fa-anchor-circle-exclamation", "fa-solid fa-anchor-circle-xmark", "fa-solid fa-anchor-lock", "fa-solid fa-angle-down", "fa-solid fa-angle-left", "fa-solid fa-angle-right", "fa-solid fa-angle-up", "fa-solid fa-angles-down", "fa-solid fa-angles-left", "fa-solid fa-angles-right", "fa-solid fa-angles-up", "fa-solid fa-ankh", "fa-solid fa-apple-whole", "fa-solid fa-archway", "fa-solid fa-arrow-down", "fa-solid fa-arrow-down-1-9", "fa-solid fa-arrow-down-9-1", "fa-solid fa-arrow-down-a-z", "fa-solid fa-arrow-down-long", "fa-solid fa-arrow-down-short-wide", "fa-solid fa-arrow-down-up-across-line", "fa-solid fa-arrow-down-up-lock", "fa-solid fa-arrow-down-wide-short", "fa-solid fa-arrow-down-z-a", "fa-solid fa-arrow-left", "fa-solid fa-arrow-left-long", "fa-solid fa-arrow-pointer", "fa-solid fa-arrow-right", "fa-solid fa-arrow-right-arrow-left", "fa-solid fa-arrow-right-from-bracket", "fa-solid fa-arrow-right-long", "fa-solid fa-arrow-right-to-bracket", "fa-solid fa-arrow-right-to-city", "fa-solid fa-arrow-rotate-left", "fa-solid fa-arrow-rotate-right", "fa-solid fa-arrow-trend-down", "fa-solid fa-arrow-trend-up", "fa-solid fa-arrow-turn-down", "fa-solid fa-arrow-turn-up", "fa-solid fa-arrow-up", "fa-solid fa-arrow-up-1-9", "fa-solid fa-arrow-up-9-1", "fa-solid fa-arrow-up-a-z", "fa-solid fa-arrow-up-from-bracket", "fa-solid fa-arrow-up-from-ground-water", "fa-solid fa-arrow-up-from-water-pump", "fa-solid fa-arrow-up-long", "fa-solid fa-arrow-up-right-dots", "fa-solid fa-arrow-up-right-from-square", "fa-solid fa-arrow-up-short-wide", "fa-solid fa-arrow-up-wide-short", "fa-solid fa-arrow-up-z-a", "fa-solid fa-arrows-down-to-line", "fa-solid fa-arrows-down-to-people", "fa-solid fa-arrows-left-right", "fa-solid fa-arrows-left-right-to-line", "fa-solid fa-arrows-rotate", "fa-solid fa-arrows-spin", "fa-solid fa-arrows-split-up-and-left", "fa-solid fa-arrows-to-circle", "fa-solid fa-arrows-to-dot", "fa-solid fa-arrows-to-eye", "fa-solid fa-arrows-turn-right", "fa-solid fa-arrows-turn-to-dots", "fa-solid fa-arrows-up-down", "fa-solid fa-arrows-up-down-left-right", "fa-solid fa-arrows-up-to-line", "fa-solid fa-asterisk", "fa-solid fa-at", "fa-solid fa-atom", "fa-solid fa-audio-description", "fa-solid fa-austral-sign", "fa-solid fa-award", "fa-solid fa-b", "fa-solid fa-baby", "fa-solid fa-baby-carriage", "fa-solid fa-backward", "fa-solid fa-backward-fast", "fa-solid fa-backward-step", "fa-solid fa-bacon", "fa-solid fa-bacteria", "fa-solid fa-bacterium", "fa-solid fa-bag-shopping", "fa-solid fa-bahai", "fa-solid fa-baht-sign", "fa-solid fa-ban", "fa-solid fa-ban-smoking", "fa-solid fa-bandage", "fa-solid fa-bangladeshi-taka-sign", "fa-solid fa-barcode", "fa-solid fa-bars", "fa-solid fa-bars-progress", "fa-solid fa-bars-staggered", "fa-solid fa-baseball", "fa-solid fa-baseball-bat-ball", "fa-solid fa-basket-shopping", "fa-solid fa-basketball", "fa-solid fa-bath", "fa-solid fa-battery-empty", "fa-solid fa-battery-full", "fa-solid fa-battery-half", "fa-solid fa-battery-quarter", "fa-solid fa-battery-three-quarters", "fa-solid fa-bed", "fa-solid fa-bed-pulse", "fa-solid fa-beer-mug-empty", "fa-solid fa-bell", "fa-solid fa-bell-concierge", "fa-solid fa-bell-slash", "fa-solid fa-bezier-curve", "fa-solid fa-bicycle", "fa-solid fa-binoculars", "fa-solid fa-biohazard", "fa-solid fa-bitcoin-sign", "fa-solid fa-blender", "fa-solid fa-blender-phone", "fa-solid fa-blog", "fa-solid fa-bold", "fa-solid fa-bolt", "fa-solid fa-bolt-lightning", "fa-solid fa-bomb", "fa-solid fa-bone", "fa-solid fa-bong", "fa-solid fa-book", "fa-solid fa-book-atlas", "fa-solid fa-book-bible", "fa-solid fa-book-bookmark", "fa-solid fa-book-journal-whills", "fa-solid fa-book-medical", "fa-solid fa-book-open", "fa-solid fa-book-open-reader", "fa-solid fa-book-quran", "fa-solid fa-book-skull", "fa-solid fa-book-tanakh", "fa-solid fa-bookmark", "fa-solid fa-border-all", "fa-solid fa-border-none", "fa-solid fa-border-top-left", "fa-solid fa-bore-hole", "fa-solid fa-bottle-droplet", "fa-solid fa-bottle-water", "fa-solid fa-bowl-food", "fa-solid fa-bowl-rice", "fa-solid fa-bowling-ball", "fa-solid fa-box", "fa-solid fa-box-archive", "fa-solid fa-box-open", "fa-solid fa-box-tissue", "fa-solid fa-boxes-packing", "fa-solid fa-boxes-stacked", "fa-solid fa-braille", "fa-solid fa-brain", "fa-solid fa-brazilian-real-sign", "fa-solid fa-bread-slice", "fa-solid fa-bridge", "fa-solid fa-bridge-circle-check", "fa-solid fa-bridge-circle-exclamation", "fa-solid fa-bridge-circle-xmark", "fa-solid fa-bridge-lock", "fa-solid fa-bridge-water", "fa-solid fa-briefcase", "fa-solid fa-briefcase-medical", "fa-solid fa-broom", "fa-solid fa-broom-ball", "fa-solid fa-brush", "fa-solid fa-bucket", "fa-solid fa-bug", "fa-solid fa-bug-slash", "fa-solid fa-bugs", "fa-solid fa-building", "fa-solid fa-building-circle-arrow-right", "fa-solid fa-building-circle-check", "fa-solid fa-building-circle-exclamation", "fa-solid fa-building-circle-xmark", "fa-solid fa-building-columns", "fa-solid fa-building-flag", "fa-solid fa-building-lock", "fa-solid fa-building-ngo", "fa-solid fa-building-shield", "fa-solid fa-building-un", "fa-solid fa-building-user", "fa-solid fa-building-wheat", "fa-solid fa-bullhorn", "fa-solid fa-bullseye", "fa-solid fa-burger", "fa-solid fa-burst", "fa-solid fa-bus", "fa-solid fa-bus-simple", "fa-solid fa-business-time", "fa-solid fa-c", "fa-solid fa-cable-car", "fa-solid fa-cake-candles", "fa-solid fa-calculator", "fa-solid fa-calendar", "fa-solid fa-calendar-check", "fa-solid fa-calendar-day", "fa-solid fa-calendar-days", "fa-solid fa-calendar-minus", "fa-solid fa-calendar-plus", "fa-solid fa-calendar-week", "fa-solid fa-calendar-xmark", "fa-solid fa-camera", "fa-solid fa-camera-retro", "fa-solid fa-camera-rotate", "fa-solid fa-campground", "fa-solid fa-candy-cane", "fa-solid fa-cannabis", "fa-solid fa-capsules", "fa-solid fa-car", "fa-solid fa-car-battery", "fa-solid fa-car-burst", "fa-solid fa-car-on", "fa-solid fa-car-rear", "fa-solid fa-car-side", "fa-solid fa-car-tunnel", "fa-solid fa-caravan", "fa-solid fa-caret-down", "fa-solid fa-caret-left", "fa-solid fa-caret-right", "fa-solid fa-caret-up", "fa-solid fa-carrot", "fa-solid fa-cart-arrow-down", "fa-solid fa-cart-flatbed", "fa-solid fa-cart-flatbed-suitcase", "fa-solid fa-cart-plus", "fa-solid fa-cart-shopping", "fa-solid fa-cash-register", "fa-solid fa-cat", "fa-solid fa-cedi-sign", "fa-solid fa-cent-sign", "fa-solid fa-certificate", "fa-solid fa-chair", "fa-solid fa-chalkboard", "fa-solid fa-chalkboard-user", "fa-solid fa-champagne-glasses", "fa-solid fa-charging-station", "fa-solid fa-chart-area", "fa-solid fa-chart-bar", "fa-solid fa-chart-column", "fa-solid fa-chart-diagram", "fa-solid fa-chart-gantt", "fa-solid fa-chart-line", "fa-solid fa-chart-pie", "fa-solid fa-chart-simple", "fa-solid fa-check", "fa-solid fa-check-double", "fa-solid fa-check-to-slot", "fa-solid fa-cheese", "fa-solid fa-chess", "fa-solid fa-chess-bishop", "fa-solid fa-chess-board", "fa-solid fa-chess-king", "fa-solid fa-chess-knight", "fa-solid fa-chess-pawn", "fa-solid fa-chess-queen", "fa-solid fa-chess-rook", "fa-solid fa-chevron-down", "fa-solid fa-chevron-left", "fa-solid fa-chevron-right", "fa-solid fa-chevron-up", "fa-solid fa-child", "fa-solid fa-child-combatant", "fa-solid fa-child-dress", "fa-solid fa-child-reaching", "fa-solid fa-children", "fa-solid fa-church", "fa-solid fa-circle", "fa-solid fa-circle-arrow-down", "fa-solid fa-circle-arrow-left", "fa-solid fa-circle-arrow-right", "fa-solid fa-circle-arrow-up", "fa-solid fa-circle-check", "fa-solid fa-circle-chevron-down", "fa-solid fa-circle-chevron-left", "fa-solid fa-circle-chevron-right", "fa-solid fa-circle-chevron-up", "fa-solid fa-circle-dollar-to-slot", "fa-solid fa-circle-dot", "fa-solid fa-circle-down", "fa-solid fa-circle-exclamation", "fa-solid fa-circle-h", "fa-solid fa-circle-half-stroke", "fa-solid fa-circle-info", "fa-solid fa-circle-left", "fa-solid fa-circle-minus", "fa-solid fa-circle-nodes", "fa-solid fa-circle-notch", "fa-solid fa-circle-pause", "fa-solid fa-circle-play", "fa-solid fa-circle-plus", "fa-solid fa-circle-question", "fa-solid fa-circle-radiation", "fa-solid fa-circle-right", "fa-solid fa-circle-stop", "fa-solid fa-circle-up", "fa-solid fa-circle-user", "fa-solid fa-circle-xmark", "fa-solid fa-city", "fa-solid fa-clapperboard", "fa-solid fa-clipboard", "fa-solid fa-clipboard-check", "fa-solid fa-clipboard-list", "fa-solid fa-clipboard-question", "fa-solid fa-clipboard-user", "fa-solid fa-clock", "fa-solid fa-clock-rotate-left", "fa-solid fa-clone", "fa-solid fa-closed-captioning", "fa-solid fa-cloud", "fa-solid fa-cloud-arrow-down", "fa-solid fa-cloud-arrow-up", "fa-solid fa-cloud-bolt", "fa-solid fa-cloud-meatball", "fa-solid fa-cloud-moon", "fa-solid fa-cloud-moon-rain", "fa-solid fa-cloud-rain", "fa-solid fa-cloud-showers-heavy", "fa-solid fa-cloud-showers-water", "fa-solid fa-cloud-sun", "fa-solid fa-cloud-sun-rain", "fa-solid fa-clover", "fa-solid fa-code", "fa-solid fa-code-branch", "fa-solid fa-code-commit", "fa-solid fa-code-compare", "fa-solid fa-code-fork", "fa-solid fa-code-merge", "fa-solid fa-code-pull-request", "fa-solid fa-coins", "fa-solid fa-colon-sign", "fa-solid fa-comment", "fa-solid fa-comment-dollar", "fa-solid fa-comment-dots", "fa-solid fa-comment-medical", "fa-solid fa-comment-nodes", "fa-solid fa-comment-slash", "fa-solid fa-comment-sms", "fa-solid fa-comments", "fa-solid fa-comments-dollar", "fa-solid fa-compact-disc", "fa-solid fa-compass", "fa-solid fa-compass-drafting", "fa-solid fa-compress", "fa-solid fa-computer", "fa-solid fa-computer-mouse", "fa-solid fa-cookie", "fa-solid fa-cookie-bite", "fa-solid fa-copy", "fa-solid fa-copyright", "fa-solid fa-couch", "fa-solid fa-cow", "fa-solid fa-credit-card", "fa-solid fa-crop", "fa-solid fa-crop-simple", "fa-solid fa-cross", "fa-solid fa-crosshairs", "fa-solid fa-crow", "fa-solid fa-crown", "fa-solid fa-crutch", "fa-solid fa-cruzeiro-sign", "fa-solid fa-cube", "fa-solid fa-cubes", "fa-solid fa-cubes-stacked", "fa-solid fa-d", "fa-solid fa-database", "fa-solid fa-delete-left", "fa-solid fa-democrat", "fa-solid fa-desktop", "fa-solid fa-dharmachakra", "fa-solid fa-diagram-next", "fa-solid fa-diagram-predecessor", "fa-solid fa-diagram-project", "fa-solid fa-diagram-successor", "fa-solid fa-diamond", "fa-solid fa-diamond-turn-right", "fa-solid fa-dice", "fa-solid fa-dice-d20", "fa-solid fa-dice-d6", "fa-solid fa-dice-five", "fa-solid fa-dice-four", "fa-solid fa-dice-one", "fa-solid fa-dice-six", "fa-solid fa-dice-three", "fa-solid fa-dice-two", "fa-solid fa-disease", "fa-solid fa-display", "fa-solid fa-divide", "fa-solid fa-dna", "fa-solid fa-dog", "fa-solid fa-dollar-sign", "fa-solid fa-dolly", "fa-solid fa-dong-sign", "fa-solid fa-door-closed", "fa-solid fa-door-open", "fa-solid fa-dove", "fa-solid fa-down-left-and-up-right-to-center", "fa-solid fa-down-long", "fa-solid fa-download", "fa-solid fa-dragon", "fa-solid fa-draw-polygon", "fa-solid fa-droplet", "fa-solid fa-droplet-slash", "fa-solid fa-drum", "fa-solid fa-drum-steelpan", "fa-solid fa-drumstick-bite", "fa-solid fa-dumbbell", "fa-solid fa-dumpster", "fa-solid fa-dumpster-fire", "fa-solid fa-dungeon", "fa-solid fa-e", "fa-solid fa-ear-deaf", "fa-solid fa-ear-listen", "fa-solid fa-earth-africa", "fa-solid fa-earth-americas", "fa-solid fa-earth-asia", "fa-solid fa-earth-europe", "fa-solid fa-earth-oceania", "fa-solid fa-egg", "fa-solid fa-eject", "fa-solid fa-elevator", "fa-solid fa-ellipsis", "fa-solid fa-ellipsis-vertical", "fa-solid fa-envelope", "fa-solid fa-envelope-circle-check", "fa-solid fa-envelope-open", "fa-solid fa-envelope-open-text", "fa-solid fa-envelopes-bulk", "fa-solid fa-equals", "fa-solid fa-eraser", "fa-solid fa-ethernet", "fa-solid fa-euro-sign", "fa-solid fa-exclamation", "fa-solid fa-expand", "fa-solid fa-explosion", "fa-solid fa-eye", "fa-solid fa-eye-dropper", "fa-solid fa-eye-low-vision", "fa-solid fa-eye-slash", "fa-solid fa-f", "fa-solid fa-face-angry", "fa-solid fa-face-dizzy", "fa-solid fa-face-flushed", "fa-solid fa-face-frown", "fa-solid fa-face-frown-open", "fa-solid fa-face-grimace", "fa-solid fa-face-grin", "fa-solid fa-face-grin-beam", "fa-solid fa-face-grin-beam-sweat", "fa-solid fa-face-grin-hearts", "fa-solid fa-face-grin-squint", "fa-solid fa-face-grin-squint-tears", "fa-solid fa-face-grin-stars", "fa-solid fa-face-grin-tears", "fa-solid fa-face-grin-tongue", "fa-solid fa-face-grin-tongue-squint", "fa-solid fa-face-grin-tongue-wink", "fa-solid fa-face-grin-wide", "fa-solid fa-face-grin-wink", "fa-solid fa-face-kiss", "fa-solid fa-face-kiss-beam", "fa-solid fa-face-kiss-wink-heart", "fa-solid fa-face-laugh", "fa-solid fa-face-laugh-beam", "fa-solid fa-face-laugh-squint", "fa-solid fa-face-laugh-wink", "fa-solid fa-face-meh", "fa-solid fa-face-meh-blank", "fa-solid fa-face-rolling-eyes", "fa-solid fa-face-sad-cry", "fa-solid fa-face-sad-tear", "fa-solid fa-face-smile", "fa-solid fa-face-smile-beam", "fa-solid fa-face-smile-wink", "fa-solid fa-face-surprise", "fa-solid fa-face-tired", "fa-solid fa-fan", "fa-solid fa-faucet", "fa-solid fa-faucet-drip", "fa-solid fa-fax", "fa-solid fa-feather", "fa-solid fa-feather-pointed", "fa-solid fa-ferry", "fa-solid fa-file", "fa-solid fa-file-arrow-down", "fa-solid fa-file-arrow-up", "fa-solid fa-file-audio", "fa-solid fa-file-circle-check", "fa-solid fa-file-circle-exclamation", "fa-solid fa-file-circle-minus", "fa-solid fa-file-circle-plus", "fa-solid fa-file-circle-question", "fa-solid fa-file-circle-xmark", "fa-solid fa-file-code", "fa-solid fa-file-contract", "fa-solid fa-file-csv", "fa-solid fa-file-excel", "fa-solid fa-file-export", "fa-solid fa-file-fragment", "fa-solid fa-file-half-dashed", "fa-solid fa-file-image", "fa-solid fa-file-import", "fa-solid fa-file-invoice", "fa-solid fa-file-invoice-dollar", "fa-solid fa-file-lines", "fa-solid fa-file-medical", "fa-solid fa-file-pdf", "fa-solid fa-file-pen", "fa-solid fa-file-powerpoint", "fa-solid fa-file-prescription", "fa-solid fa-file-shield", "fa-solid fa-file-signature", "fa-solid fa-file-video", "fa-solid fa-file-waveform", "fa-solid fa-file-word", "fa-solid fa-file-zipper", "fa-solid fa-fill", "fa-solid fa-fill-drip", "fa-solid fa-film", "fa-solid fa-filter", "fa-solid fa-filter-circle-dollar", "fa-solid fa-filter-circle-xmark", "fa-solid fa-fingerprint", "fa-solid fa-fire", "fa-solid fa-fire-burner", "fa-solid fa-fire-extinguisher", "fa-solid fa-fire-flame-curved", "fa-solid fa-fire-flame-simple", "fa-solid fa-fish", "fa-solid fa-fish-fins", "fa-solid fa-flag", "fa-solid fa-flag-checkered", "fa-solid fa-flag-usa", "fa-solid fa-flask", "fa-solid fa-flask-vial", "fa-solid fa-floppy-disk", "fa-solid fa-florin-sign", "fa-solid fa-folder", "fa-solid fa-folder-closed", "fa-solid fa-folder-minus", "fa-solid fa-folder-open", "fa-solid fa-folder-plus", "fa-solid fa-folder-tree", "fa-solid fa-font", "fa-solid fa-font-awesome", "fa-solid fa-football", "fa-solid fa-forward", "fa-solid fa-forward-fast", "fa-solid fa-forward-step", "fa-solid fa-franc-sign", "fa-solid fa-frog", "fa-solid fa-futbol", "fa-solid fa-g", "fa-solid fa-gamepad", "fa-solid fa-gas-pump", "fa-solid fa-gauge", "fa-solid fa-gauge-high", "fa-solid fa-gauge-simple", "fa-solid fa-gauge-simple-high", "fa-solid fa-gavel", "fa-solid fa-gear", "fa-solid fa-gears", "fa-solid fa-gem", "fa-solid fa-genderless", "fa-solid fa-ghost", "fa-solid fa-gift", "fa-solid fa-gifts", "fa-solid fa-glass-water", "fa-solid fa-glass-water-droplet", "fa-solid fa-glasses", "fa-solid fa-globe", "fa-solid fa-golf-ball-tee", "fa-solid fa-gopuram", "fa-solid fa-graduation-cap", "fa-solid fa-greater-than", "fa-solid fa-greater-than-equal", "fa-solid fa-grip", "fa-solid fa-grip-lines", "fa-solid fa-grip-lines-vertical", "fa-solid fa-grip-vertical", "fa-solid fa-group-arrows-rotate", "fa-solid fa-guarani-sign", "fa-solid fa-guitar", "fa-solid fa-gun", "fa-solid fa-h", "fa-solid fa-hammer", "fa-solid fa-hamsa", "fa-solid fa-hand", "fa-solid fa-hand-back-fist", "fa-solid fa-hand-dots", "fa-solid fa-hand-fist", "fa-solid fa-hand-holding", "fa-solid fa-hand-holding-dollar", "fa-solid fa-hand-holding-droplet", "fa-solid fa-hand-holding-hand", "fa-solid fa-hand-holding-heart", "fa-solid fa-hand-holding-medical", "fa-solid fa-hand-lizard", "fa-solid fa-hand-middle-finger", "fa-solid fa-hand-peace", "fa-solid fa-hand-point-down", "fa-solid fa-hand-point-left", "fa-solid fa-hand-point-right", "fa-solid fa-hand-point-up", "fa-solid fa-hand-pointer", "fa-solid fa-hand-scissors", "fa-solid fa-hand-sparkles", "fa-solid fa-hand-spock", "fa-solid fa-handcuffs", "fa-solid fa-hands", "fa-solid fa-hands-asl-interpreting", "fa-solid fa-hands-bound", "fa-solid fa-hands-bubbles", "fa-solid fa-hands-clapping", "fa-solid fa-hands-holding", "fa-solid fa-hands-holding-child", "fa-solid fa-hands-holding-circle", "fa-solid fa-hands-praying", "fa-solid fa-handshake", "fa-solid fa-handshake-angle", "fa-solid fa-handshake-simple", "fa-solid fa-handshake-simple-slash", "fa-solid fa-handshake-slash", "fa-solid fa-hanukiah", "fa-solid fa-hard-drive", "fa-solid fa-hashtag", "fa-solid fa-hat-cowboy", "fa-solid fa-hat-cowboy-side", "fa-solid fa-hat-wizard", "fa-solid fa-head-side-cough", "fa-solid fa-head-side-cough-slash", "fa-solid fa-head-side-mask", "fa-solid fa-head-side-virus", "fa-solid fa-heading", "fa-solid fa-headphones", "fa-solid fa-headphones-simple", "fa-solid fa-headset", "fa-solid fa-heart", "fa-solid fa-heart-circle-bolt", "fa-solid fa-heart-circle-check", "fa-solid fa-heart-circle-exclamation", "fa-solid fa-heart-circle-minus", "fa-solid fa-heart-circle-plus", "fa-solid fa-heart-circle-xmark", "fa-solid fa-heart-crack", "fa-solid fa-heart-pulse", "fa-solid fa-helicopter", "fa-solid fa-helicopter-symbol", "fa-solid fa-helmet-safety", "fa-solid fa-helmet-un", "fa-solid fa-hexagon-nodes", "fa-solid fa-hexagon-nodes-bolt", "fa-solid fa-highlighter", "fa-solid fa-hill-avalanche", "fa-solid fa-hill-rockslide", "fa-solid fa-hippo", "fa-solid fa-hockey-puck", "fa-solid fa-holly-berry", "fa-solid fa-horse", "fa-solid fa-horse-head", "fa-solid fa-hospital", "fa-solid fa-hospital-user", "fa-solid fa-hot-tub-person", "fa-solid fa-hotdog", "fa-solid fa-hotel", "fa-solid fa-hourglass", "fa-solid fa-hourglass-end", "fa-solid fa-hourglass-half", "fa-solid fa-hourglass-start", "fa-solid fa-house", "fa-solid fa-house-chimney", "fa-solid fa-house-chimney-crack", "fa-solid fa-house-chimney-medical", "fa-solid fa-house-chimney-user", "fa-solid fa-house-chimney-window", "fa-solid fa-house-circle-check", "fa-solid fa-house-circle-exclamation", "fa-solid fa-house-circle-xmark", "fa-solid fa-house-crack", "fa-solid fa-house-fire", "fa-solid fa-house-flag", "fa-solid fa-house-flood-water", "fa-solid fa-house-flood-water-circle-arrow-right", "fa-solid fa-house-laptop", "fa-solid fa-house-lock", "fa-solid fa-house-medical", "fa-solid fa-house-medical-circle-check", "fa-solid fa-house-medical-circle-exclamation", "fa-solid fa-house-medical-circle-xmark", "fa-solid fa-house-medical-flag", "fa-solid fa-house-signal", "fa-solid fa-house-tsunami", "fa-solid fa-house-user", "fa-solid fa-hryvnia-sign", "fa-solid fa-hurricane", "fa-solid fa-i", "fa-solid fa-i-cursor", "fa-solid fa-ice-cream", "fa-solid fa-icicles", "fa-solid fa-icons", "fa-solid fa-id-badge", "fa-solid fa-id-card", "fa-solid fa-id-card-clip", "fa-solid fa-igloo", "fa-solid fa-image", "fa-solid fa-image-portrait", "fa-solid fa-images", "fa-solid fa-inbox", "fa-solid fa-indent", "fa-solid fa-indian-rupee-sign", "fa-solid fa-industry", "fa-solid fa-infinity", "fa-solid fa-info", "fa-solid fa-italic", "fa-solid fa-j", "fa-solid fa-jar", "fa-solid fa-jar-wheat", "fa-solid fa-jedi", "fa-solid fa-jet-fighter", "fa-solid fa-jet-fighter-up", "fa-solid fa-joint", "fa-solid fa-jug-detergent", "fa-solid fa-k", "fa-solid fa-kaaba", "fa-solid fa-key", "fa-solid fa-keyboard", "fa-solid fa-khanda", "fa-solid fa-kip-sign", "fa-solid fa-kit-medical", "fa-solid fa-kitchen-set", "fa-solid fa-kiwi-bird", "fa-solid fa-l", "fa-solid fa-land-mine-on", "fa-solid fa-landmark", "fa-solid fa-landmark-dome", "fa-solid fa-landmark-flag", "fa-solid fa-language", "fa-solid fa-laptop", "fa-solid fa-laptop-code", "fa-solid fa-laptop-file", "fa-solid fa-laptop-medical", "fa-solid fa-lari-sign", "fa-solid fa-layer-group", "fa-solid fa-leaf", "fa-solid fa-left-long", "fa-solid fa-left-right", "fa-solid fa-lemon", "fa-solid fa-less-than", "fa-solid fa-less-than-equal", "fa-solid fa-life-ring", "fa-solid fa-lightbulb", "fa-solid fa-lines-leaning", "fa-solid fa-link", "fa-solid fa-link-slash", "fa-solid fa-lira-sign", "fa-solid fa-list", "fa-solid fa-list-check", "fa-solid fa-list-ol", "fa-solid fa-list-ul", "fa-solid fa-litecoin-sign", "fa-solid fa-location-arrow", "fa-solid fa-location-crosshairs", "fa-solid fa-location-dot", "fa-solid fa-location-pin", "fa-solid fa-location-pin-lock", "fa-solid fa-lock", "fa-solid fa-lock-open", "fa-solid fa-locust", "fa-solid fa-lungs", "fa-solid fa-lungs-virus", "fa-solid fa-m", "fa-solid fa-magnet", "fa-solid fa-magnifying-glass", "fa-solid fa-magnifying-glass-arrow-right", "fa-solid fa-magnifying-glass-chart", "fa-solid fa-magnifying-glass-dollar", "fa-solid fa-magnifying-glass-location", "fa-solid fa-magnifying-glass-minus", "fa-solid fa-magnifying-glass-plus", "fa-solid fa-manat-sign", "fa-solid fa-map", "fa-solid fa-map-location", "fa-solid fa-map-location-dot", "fa-solid fa-map-pin", "fa-solid fa-marker", "fa-solid fa-mars", "fa-solid fa-mars-and-venus", "fa-solid fa-mars-and-venus-burst", "fa-solid fa-mars-double", "fa-solid fa-mars-stroke", "fa-solid fa-mars-stroke-right", "fa-solid fa-mars-stroke-up", "fa-solid fa-martini-glass", "fa-solid fa-martini-glass-citrus", "fa-solid fa-martini-glass-empty", "fa-solid fa-mask", "fa-solid fa-mask-face", "fa-solid fa-mask-ventilator", "fa-solid fa-masks-theater", "fa-solid fa-mattress-pillow", "fa-solid fa-maximize", "fa-solid fa-medal", "fa-solid fa-memory", "fa-solid fa-menorah", "fa-solid fa-mercury", "fa-solid fa-message", "fa-solid fa-meteor", "fa-solid fa-microchip", "fa-solid fa-microphone", "fa-solid fa-microphone-lines", "fa-solid fa-microphone-lines-slash", "fa-solid fa-microphone-slash", "fa-solid fa-microscope", "fa-solid fa-mill-sign", "fa-solid fa-minimize", "fa-solid fa-minus", "fa-solid fa-mitten", "fa-solid fa-mobile", "fa-solid fa-mobile-button", "fa-solid fa-mobile-retro", "fa-solid fa-mobile-screen", "fa-solid fa-mobile-screen-button", "fa-solid fa-money-bill", "fa-solid fa-money-bill-1", "fa-solid fa-money-bill-1-wave", "fa-solid fa-money-bill-transfer", "fa-solid fa-money-bill-trend-up", "fa-solid fa-money-bill-wave", "fa-solid fa-money-bill-wheat", "fa-solid fa-money-bills", "fa-solid fa-money-check", "fa-solid fa-money-check-dollar", "fa-solid fa-monument", "fa-solid fa-moon", "fa-solid fa-mortar-pestle", "fa-solid fa-mosque", "fa-solid fa-mosquito", "fa-solid fa-mosquito-net", "fa-solid fa-motorcycle", "fa-solid fa-mound", "fa-solid fa-mountain", "fa-solid fa-mountain-city", "fa-solid fa-mountain-sun", "fa-solid fa-mug-hot", "fa-solid fa-mug-saucer", "fa-solid fa-music", "fa-solid fa-n", "fa-solid fa-naira-sign", "fa-solid fa-network-wired", "fa-solid fa-neuter", "fa-solid fa-newspaper", "fa-solid fa-not-equal", "fa-solid fa-notdef", "fa-solid fa-note-sticky", "fa-solid fa-notes-medical", "fa-solid fa-o", "fa-solid fa-object-group", "fa-solid fa-object-ungroup", "fa-solid fa-oil-can", "fa-solid fa-oil-well", "fa-solid fa-om", "fa-solid fa-otter", "fa-solid fa-outdent", "fa-solid fa-p", "fa-solid fa-pager", "fa-solid fa-paint-roller", "fa-solid fa-paintbrush", "fa-solid fa-palette", "fa-solid fa-pallet", "fa-solid fa-panorama", "fa-solid fa-paper-plane", "fa-solid fa-paperclip", "fa-solid fa-parachute-box", "fa-solid fa-paragraph", "fa-solid fa-passport", "fa-solid fa-paste", "fa-solid fa-pause", "fa-solid fa-paw", "fa-solid fa-peace", "fa-solid fa-pen", "fa-solid fa-pen-clip", "fa-solid fa-pen-fancy", "fa-solid fa-pen-nib", "fa-solid fa-pen-ruler", "fa-solid fa-pen-to-square", "fa-solid fa-pencil", "fa-solid fa-people-arrows", "fa-solid fa-people-carry-box", "fa-solid fa-people-group", "fa-solid fa-people-line", "fa-solid fa-people-pulling", "fa-solid fa-people-robbery", "fa-solid fa-people-roof", "fa-solid fa-pepper-hot", "fa-solid fa-percent", "fa-solid fa-person", "fa-solid fa-person-arrow-down-to-line", "fa-solid fa-person-arrow-up-from-line", "fa-solid fa-person-biking", "fa-solid fa-person-booth", "fa-solid fa-person-breastfeeding", "fa-solid fa-person-burst", "fa-solid fa-person-cane", "fa-solid fa-person-chalkboard", "fa-solid fa-person-circle-check", "fa-solid fa-person-circle-exclamation", "fa-solid fa-person-circle-minus", "fa-solid fa-person-circle-plus", "fa-solid fa-person-circle-question", "fa-solid fa-person-circle-xmark", "fa-solid fa-person-digging", "fa-solid fa-person-dots-from-line", "fa-solid fa-person-dress", "fa-solid fa-person-dress-burst", "fa-solid fa-person-drowning", "fa-solid fa-person-falling", "fa-solid fa-person-falling-burst", "fa-solid fa-person-half-dress", "fa-solid fa-person-harassing", "fa-solid fa-person-hiking", "fa-solid fa-person-military-pointing", "fa-solid fa-person-military-rifle", "fa-solid fa-person-military-to-person", "fa-solid fa-person-praying", "fa-solid fa-person-pregnant", "fa-solid fa-person-rays", "fa-solid fa-person-rifle", "fa-solid fa-person-running", "fa-solid fa-person-shelter", "fa-solid fa-person-skating", "fa-solid fa-person-skiing", "fa-solid fa-person-skiing-nordic", "fa-solid fa-person-snowboarding", "fa-solid fa-person-swimming", "fa-solid fa-person-through-window", "fa-solid fa-person-walking", "fa-solid fa-person-walking-arrow-loop-left", "fa-solid fa-person-walking-arrow-right", "fa-solid fa-person-walking-dashed-line-arrow-right", "fa-solid fa-person-walking-luggage", "fa-solid fa-person-walking-with-cane", "fa-solid fa-peseta-sign", "fa-solid fa-peso-sign", "fa-solid fa-phone", "fa-solid fa-phone-flip", "fa-solid fa-phone-slash", "fa-solid fa-phone-volume", "fa-solid fa-photo-film", "fa-solid fa-piggy-bank", "fa-solid fa-pills", "fa-solid fa-pizza-slice", "fa-solid fa-place-of-worship", "fa-solid fa-plane", "fa-solid fa-plane-arrival", "fa-solid fa-plane-circle-check", "fa-solid fa-plane-circle-exclamation", "fa-solid fa-plane-circle-xmark", "fa-solid fa-plane-departure", "fa-solid fa-plane-lock", "fa-solid fa-plane-slash", "fa-solid fa-plane-up", "fa-solid fa-plant-wilt", "fa-solid fa-plate-wheat", "fa-solid fa-play", "fa-solid fa-plug", "fa-solid fa-plug-circle-bolt", "fa-solid fa-plug-circle-check", "fa-solid fa-plug-circle-exclamation", "fa-solid fa-plug-circle-minus", "fa-solid fa-plug-circle-plus", "fa-solid fa-plug-circle-xmark", "fa-solid fa-plus", "fa-solid fa-plus-minus", "fa-solid fa-podcast", "fa-solid fa-poo", "fa-solid fa-poo-storm", "fa-solid fa-poop", "fa-solid fa-power-off", "fa-solid fa-prescription", "fa-solid fa-prescription-bottle", "fa-solid fa-prescription-bottle-medical", "fa-solid fa-print", "fa-solid fa-pump-medical", "fa-solid fa-pump-soap", "fa-solid fa-puzzle-piece", "fa-solid fa-q", "fa-solid fa-qrcode", "fa-solid fa-question", "fa-solid fa-quote-left", "fa-solid fa-quote-right", "fa-solid fa-r", "fa-solid fa-radiation", "fa-solid fa-radio", "fa-solid fa-rainbow", "fa-solid fa-ranking-star", "fa-solid fa-receipt", "fa-solid fa-record-vinyl", "fa-solid fa-rectangle-ad", "fa-solid fa-rectangle-list", "fa-solid fa-rectangle-xmark", "fa-solid fa-recycle", "fa-solid fa-registered", "fa-solid fa-repeat", "fa-solid fa-reply", "fa-solid fa-reply-all", "fa-solid fa-republican", "fa-solid fa-restroom", "fa-solid fa-retweet", "fa-solid fa-ribbon", "fa-solid fa-right-from-bracket", "fa-solid fa-right-left", "fa-solid fa-right-long", "fa-solid fa-right-to-bracket", "fa-solid fa-ring", "fa-solid fa-road", "fa-solid fa-road-barrier", "fa-solid fa-road-bridge", "fa-solid fa-road-circle-check", "fa-solid fa-road-circle-exclamation", "fa-solid fa-road-circle-xmark", "fa-solid fa-road-lock", "fa-solid fa-road-spikes", "fa-solid fa-robot", "fa-solid fa-rocket", "fa-solid fa-rotate", "fa-solid fa-rotate-left", "fa-solid fa-rotate-right", "fa-solid fa-route", "fa-solid fa-rss", "fa-solid fa-ruble-sign", "fa-solid fa-rug", "fa-solid fa-ruler", "fa-solid fa-ruler-combined", "fa-solid fa-ruler-horizontal", "fa-solid fa-ruler-vertical", "fa-solid fa-rupee-sign", "fa-solid fa-rupiah-sign", "fa-solid fa-s", "fa-solid fa-sack-dollar", "fa-solid fa-sack-xmark", "fa-solid fa-sailboat", "fa-solid fa-satellite", "fa-solid fa-satellite-dish", "fa-solid fa-scale-balanced", "fa-solid fa-scale-unbalanced", "fa-solid fa-scale-unbalanced-flip", "fa-solid fa-school", "fa-solid fa-school-circle-check", "fa-solid fa-school-circle-exclamation", "fa-solid fa-school-circle-xmark", "fa-solid fa-school-flag", "fa-solid fa-school-lock", "fa-solid fa-scissors", "fa-solid fa-screwdriver", "fa-solid fa-screwdriver-wrench", "fa-solid fa-scroll", "fa-solid fa-scroll-torah", "fa-solid fa-sd-card", "fa-solid fa-section", "fa-solid fa-seedling", "fa-solid fa-server", "fa-solid fa-shapes", "fa-solid fa-share", "fa-solid fa-share-from-square", "fa-solid fa-share-nodes", "fa-solid fa-sheet-plastic", "fa-solid fa-shekel-sign", "fa-solid fa-shield", "fa-solid fa-shield-cat", "fa-solid fa-shield-dog", "fa-solid fa-shield-halved", "fa-solid fa-shield-heart", "fa-solid fa-shield-virus", "fa-solid fa-ship", "fa-solid fa-shirt", "fa-solid fa-shoe-prints", "fa-solid fa-shop", "fa-solid fa-shop-lock", "fa-solid fa-shop-slash", "fa-solid fa-shower", "fa-solid fa-shrimp", "fa-solid fa-shuffle", "fa-solid fa-shuttle-space", "fa-solid fa-sign-hanging", "fa-solid fa-signal", "fa-solid fa-signature", "fa-solid fa-signs-post", "fa-solid fa-sim-card", "fa-solid fa-sink", "fa-solid fa-sitemap", "fa-solid fa-skull", "fa-solid fa-skull-crossbones", "fa-solid fa-slash", "fa-solid fa-sleigh", "fa-solid fa-sliders", "fa-solid fa-smog", "fa-solid fa-smoking", "fa-solid fa-snowflake", "fa-solid fa-snowman", "fa-solid fa-snowplow", "fa-solid fa-soap", "fa-solid fa-socks", "fa-solid fa-solar-panel", "fa-solid fa-sort", "fa-solid fa-sort-down", "fa-solid fa-sort-up", "fa-solid fa-spa", "fa-solid fa-spaghetti-monster-flying", "fa-solid fa-spell-check", "fa-solid fa-spider", "fa-solid fa-spinner", "fa-solid fa-splotch", "fa-solid fa-spoon", "fa-solid fa-spray-can", "fa-solid fa-spray-can-sparkles", "fa-solid fa-square", "fa-solid fa-square-arrow-up-right", "fa-solid fa-square-binary", "fa-solid fa-square-caret-down", "fa-solid fa-square-caret-left", "fa-solid fa-square-caret-right", "fa-solid fa-square-caret-up", "fa-solid fa-square-check", "fa-solid fa-square-envelope", "fa-solid fa-square-full", "fa-solid fa-square-h", "fa-solid fa-square-minus", "fa-solid fa-square-nfi", "fa-solid fa-square-parking", "fa-solid fa-square-pen", "fa-solid fa-square-person-confined", "fa-solid fa-square-phone", "fa-solid fa-square-phone-flip", "fa-solid fa-square-plus", "fa-solid fa-square-poll-horizontal", "fa-solid fa-square-poll-vertical", "fa-solid fa-square-root-variable", "fa-solid fa-square-rss", "fa-solid fa-square-share-nodes", "fa-solid fa-square-up-right", "fa-solid fa-square-virus", "fa-solid fa-square-xmark", "fa-solid fa-staff-snake", "fa-solid fa-stairs", "fa-solid fa-stamp", "fa-solid fa-stapler", "fa-solid fa-star", "fa-solid fa-star-and-crescent", "fa-solid fa-star-half", "fa-solid fa-star-half-stroke", "fa-solid fa-star-of-david", "fa-solid fa-star-of-life", "fa-solid fa-sterling-sign", "fa-solid fa-stethoscope", "fa-solid fa-stop", "fa-solid fa-stopwatch", "fa-solid fa-stopwatch-20", "fa-solid fa-store", "fa-solid fa-store-slash", "fa-solid fa-street-view", "fa-solid fa-strikethrough", "fa-solid fa-stroopwafel", "fa-solid fa-subscript", "fa-solid fa-suitcase", "fa-solid fa-suitcase-medical", "fa-solid fa-suitcase-rolling", "fa-solid fa-sun", "fa-solid fa-sun-plant-wilt", "fa-solid fa-superscript", "fa-solid fa-swatchbook", "fa-solid fa-synagogue", "fa-solid fa-syringe", "fa-solid fa-t", "fa-solid fa-table", "fa-solid fa-table-cells", "fa-solid fa-table-cells-column-lock", "fa-solid fa-table-cells-large", "fa-solid fa-table-cells-row-lock", "fa-solid fa-table-cells-row-unlock", "fa-solid fa-table-columns", "fa-solid fa-table-list", "fa-solid fa-table-tennis-paddle-ball", "fa-solid fa-tablet", "fa-solid fa-tablet-button", "fa-solid fa-tablet-screen-button", "fa-solid fa-tablets", "fa-solid fa-tachograph-digital", "fa-solid fa-tag", "fa-solid fa-tags", "fa-solid fa-tape", "fa-solid fa-tarp", "fa-solid fa-tarp-droplet", "fa-solid fa-taxi", "fa-solid fa-teeth", "fa-solid fa-teeth-open", "fa-solid fa-temperature-arrow-down", "fa-solid fa-temperature-arrow-up", "fa-solid fa-temperature-empty", "fa-solid fa-temperature-full", "fa-solid fa-temperature-half", "fa-solid fa-temperature-high", "fa-solid fa-temperature-low", "fa-solid fa-temperature-quarter", "fa-solid fa-temperature-three-quarters", "fa-solid fa-tenge-sign", "fa-solid fa-tent", "fa-solid fa-tent-arrow-down-to-line", "fa-solid fa-tent-arrow-left-right", "fa-solid fa-tent-arrow-turn-left", "fa-solid fa-tent-arrows-down", "fa-solid fa-tents", "fa-solid fa-terminal", "fa-solid fa-text-height", "fa-solid fa-text-slash", "fa-solid fa-text-width", "fa-solid fa-thermometer", "fa-solid fa-thumbs-down", "fa-solid fa-thumbs-up", "fa-solid fa-thumbtack", "fa-solid fa-thumbtack-slash", "fa-solid fa-ticket", "fa-solid fa-ticket-simple", "fa-solid fa-timeline", "fa-solid fa-toggle-off", "fa-solid fa-toggle-on", "fa-solid fa-toilet", "fa-solid fa-toilet-paper", "fa-solid fa-toilet-paper-slash", "fa-solid fa-toilet-portable", "fa-solid fa-toilets-portable", "fa-solid fa-toolbox", "fa-solid fa-tooth", "fa-solid fa-torii-gate", "fa-solid fa-tornado", "fa-solid fa-tower-broadcast", "fa-solid fa-tower-cell", "fa-solid fa-tower-observation", "fa-solid fa-tractor", "fa-solid fa-trademark", "fa-solid fa-traffic-light", "fa-solid fa-trailer", "fa-solid fa-train", "fa-solid fa-train-subway", "fa-solid fa-train-tram", "fa-solid fa-transgender", "fa-solid fa-trash", "fa-solid fa-trash-arrow-up", "fa-solid fa-trash-can", "fa-solid fa-trash-can-arrow-up", "fa-solid fa-tree", "fa-solid fa-tree-city", "fa-solid fa-triangle-exclamation", "fa-solid fa-trophy", "fa-solid fa-trowel", "fa-solid fa-trowel-bricks", "fa-solid fa-truck", "fa-solid fa-truck-arrow-right", "fa-solid fa-truck-droplet", "fa-solid fa-truck-fast", "fa-solid fa-truck-field", "fa-solid fa-truck-field-un", "fa-solid fa-truck-front", "fa-solid fa-truck-medical", "fa-solid fa-truck-monster", "fa-solid fa-truck-moving", "fa-solid fa-truck-pickup", "fa-solid fa-truck-plane", "fa-solid fa-truck-ramp-box", "fa-solid fa-tty", "fa-solid fa-turkish-lira-sign", "fa-solid fa-turn-down", "fa-solid fa-turn-up", "fa-solid fa-tv", "fa-solid fa-u", "fa-solid fa-umbrella", "fa-solid fa-umbrella-beach", "fa-solid fa-underline", "fa-solid fa-universal-access", "fa-solid fa-unlock", "fa-solid fa-unlock-keyhole", "fa-solid fa-up-down", "fa-solid fa-up-down-left-right", "fa-solid fa-up-long", "fa-solid fa-up-right-and-down-left-from-center", "fa-solid fa-up-right-from-square", "fa-solid fa-upload", "fa-solid fa-user", "fa-solid fa-user-astronaut", "fa-solid fa-user-check", "fa-solid fa-user-clock", "fa-solid fa-user-doctor", "fa-solid fa-user-gear", "fa-solid fa-user-graduate", "fa-solid fa-user-group", "fa-solid fa-user-injured", "fa-solid fa-user-large", "fa-solid fa-user-large-slash", "fa-solid fa-user-lock", "fa-solid fa-user-minus", "fa-solid fa-user-ninja", "fa-solid fa-user-nurse", "fa-solid fa-user-pen", "fa-solid fa-user-plus", "fa-solid fa-user-secret", "fa-solid fa-user-shield", "fa-solid fa-user-slash", "fa-solid fa-user-tag", "fa-solid fa-user-tie", "fa-solid fa-user-xmark", "fa-solid fa-users", "fa-solid fa-users-between-lines", "fa-solid fa-users-gear", "fa-solid fa-users-line", "fa-solid fa-users-rays", "fa-solid fa-users-rectangle", "fa-solid fa-users-slash", "fa-solid fa-users-viewfinder", "fa-solid fa-utensils", "fa-solid fa-v", "fa-solid fa-van-shuttle", "fa-solid fa-vault", "fa-solid fa-vector-square", "fa-solid fa-venus", "fa-solid fa-venus-double", "fa-solid fa-venus-mars", "fa-solid fa-vest", "fa-solid fa-vest-patches", "fa-solid fa-vial", "fa-solid fa-vial-circle-check", "fa-solid fa-vial-virus", "fa-solid fa-vials", "fa-solid fa-video", "fa-solid fa-video-slash", "fa-solid fa-vihara", "fa-solid fa-virus", "fa-solid fa-virus-covid", "fa-solid fa-virus-covid-slash", "fa-solid fa-virus-slash", "fa-solid fa-viruses", "fa-solid fa-voicemail", "fa-solid fa-volcano", "fa-solid fa-volleyball", "fa-solid fa-volume-high", "fa-solid fa-volume-low", "fa-solid fa-volume-off", "fa-solid fa-volume-xmark", "fa-solid fa-vr-cardboard", "fa-solid fa-w", "fa-solid fa-walkie-talkie", "fa-solid fa-wallet", "fa-solid fa-wand-magic", "fa-solid fa-wand-magic-sparkles", "fa-solid fa-wand-sparkles", "fa-solid fa-warehouse", "fa-solid fa-water", "fa-solid fa-water-ladder", "fa-solid fa-wave-square", "fa-solid fa-web-awesome", "fa-solid fa-weight-hanging", "fa-solid fa-weight-scale", "fa-solid fa-wheat-awn", "fa-solid fa-wheat-awn-circle-exclamation", "fa-solid fa-wheelchair", "fa-solid fa-wheelchair-move", "fa-solid fa-whiskey-glass", "fa-solid fa-wifi", "fa-solid fa-wind", "fa-solid fa-window-maximize", "fa-solid fa-window-minimize", "fa-solid fa-window-restore", "fa-solid fa-wine-bottle", "fa-solid fa-wine-glass", "fa-solid fa-wine-glass-empty", "fa-solid fa-won-sign", "fa-solid fa-worm", "fa-solid fa-wrench", "fa-solid fa-x", "fa-solid fa-x-ray", "fa-solid fa-xmark", "fa-solid fa-xmarks-lines", "fa-solid fa-y", "fa-solid fa-yen-sign", "fa-solid fa-yin-yang", "fa-solid fa-z"] export default iconNames; ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/TextEdit/TextEdit.js ================================================ export default { top: "0", left: "0", width: "120", height: "40", noPlace: true, visible: true, disable: false, zIndex: 0, size: "custom", 内容: "", type: "text", placeholder: "请输入..", maxlength:-1, } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/TextEdit/TextEdit.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/TextEdit/TextEditAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Tooltip/Tooltip.js ================================================ export default { top: "0", left: "0", width: "240", height: "60", noPlace: true, visible: true, disable: false, zIndex: 0, type: "success", text:"text", description:"", center: true, closable: false, } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Tooltip/Tooltip.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Tooltip/TooltipAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Tree/Tree.js ================================================ export default { top: "150", left: "440", width: "300", height: "200", noPlace: true, visible: true, disable: false, zIndex: 0, select: false, 选中项: [], data:[ { label: 'Level one 1', children: [ { label: 'Level two 1-1', children: [ { label: 'Level three 1-1-1', }, ], }, ], }, { label: 'Level one 2', children: [ { label: 'Level two 2-1', children: [ { label: 'Level three 2-1-1', }, ], }, { label: 'Level two 2-2', children: [ { label: 'Level three 2-2-1', }, ], }, ], }, { label: 'Level one 3', children: [ { label: 'Level two 3-1', children: [ { label: 'Level three 3-1-1', }, ], }, { label: 'Level two 3-2', children: [ { label: 'Level three 3-2-1', }, ], }, ], }, ] } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Tree/Tree.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/el/Tree/TreeAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Button/Button.js ================================================ export default { top: "0", left: "0", width: "80", height: "32", noPlace: true, visible: true, disable: false, zIndex: 0, block: true, ghost: false, loading: false, shape: "rectangle", size: "medium", theme: "primary", variant: "base", text:"按钮", } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Button/Button.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Button/ButtonAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Link/Link.js ================================================ export default { top: "0", left: "0", width: "80", height: "32", noPlace: true, visible: true, disable: false, zIndex: 0, text:"Link", download: "", hover: "underline", href: "", prefixIcon: "", size: "medium", suffixIcon: "", target: "", theme: "default", underline: false, } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Link/Link.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Link/LinkAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Progress/Progress.js ================================================ export default { top: "0", left: "0", width: "200", height: "32", noPlace: true, visible: true, disable: false, zIndex: 0, color: '', label: true, percentage: 50, size: 'medium', status: '', strokeWidth: '', theme: 'line', trackColor: '', } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Progress/Progress.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Progress/ProgressAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Select/Select.js ================================================ export default { top: "0", left: "0", width: "80", height: "32", noPlace: true, visible: true, disable: false, zIndex: 0, value: "small", options:[ {"label": "默认", "value": "default"}, {"label": "大号", "value": "large"}, {"label": "小号", "value": "small"}, ], multiple: false, autoWidth: false, } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Select/Select.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Select/SelectAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Switch/Switch.js ================================================ export default { top: "0", left: "0", width: "80", height: "32", noPlace: true, visible: true, disable: false, zIndex: 0, customListening:true, label: ['yes','no'], loading: false, size: "medium", value: false, } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Switch/Switch.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/td/Switch/SwitchAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/tw/Button/Button.js ================================================ export default { top: "0", left: "0", width: "120", height: "40", noPlace: true, visible: true, disable: false, zIndex: 0, block: true, ghost: false, loading: false, shape: "rectangle", size: "medium", theme: "primary", variant: "base", text: "按钮", } ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/tw/Button/Button.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/boxs/tw/Button/ButtonAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/common/IconSelector.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/PreviewDialog.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/header/ToolBtn.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/left/ComponentLeft.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/left/PropertyTable.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/left/TreeSelectBox.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/public/DraggableDivider.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/public/WindowAttr.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/public/common-event-component.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/public/common-properties.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/public/代码编辑器.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/public/支持库.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/public/新建项目对话框.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/public/项目管理.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/components/designer/public/项目配置对话框.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/helpDoc/systemFcDoc.json ================================================ [ { "label": "BrowserOpenURL", "help": "systemFc.BrowserOpenURL(url)", "doc": "浏览器打开URL 在系统默认浏览器打开给定的 URL。" }, { "label": "ClipboardGetText", "help": "systemFc.ClipboardGetText()", "doc": "剪贴板获取文本 从剪切板读取当前存储的文本。" }, { "label": "ClipboardSetText", "help": "systemFc.ClipboardSetText(text)", "doc": "剪贴板设置文本 将文本写入剪切板。" }, { "label": "Environment", "help": "systemFc.Environment()", "doc": "环境 返回当前环境的详细信息。" }, { "label": "EventsEmit", "help": "systemFc.EventsEmit(eventName)", "doc": "触发事件 触发指定的事件。可选数据可以与事件一起传递。" }, { "label": "EventsOff", "help": "systemFc.EventsOff(eventName, ...additionalEventNames)", "doc": "移除事件监听器 移除给定事件名称的监听器,可以移除多个。" }, { "label": "EventsOn", "help": "systemFc.EventsOn(eventName, callback)", "doc": "添加事件监听器 为给定的事件名称设置一个监听器。" }, { "label": "EventsOnMultiple", "help": "systemFc.EventsOnMultiple(eventName, callback, maxCallbacks)", "doc": "添加限次数事件监听器 为给定的事件名称设置一个最多只能触发指定次数的监听器。" }, { "label": "EventsOnce", "help": "systemFc.EventsOnce(eventName, callback)", "doc": "添加一次性事件监听器 为给定的事件名称设置一个只会触发一次的监听器。" }, { "label": "Hide", "help": "systemFc.Hide()", "doc": "隐藏 隐藏应用程序。" }, { "label": "LogDebug", "help": "systemFc.LogDebug(message)", "doc": "Debug日志 在Debug日志级别记录给定的消息。" }, { "label": "LogError", "help": "systemFc.LogError(message)", "doc": "Error日志 在Error日志级别记录给定的消息。" }, { "label": "LogFatal", "help": "systemFc.LogFatal(message)", "doc": "Fatal日志 在Fatal日志级别记录给定的消息。" }, { "label": "LogInfo", "help": "systemFc.LogInfo(message)", "doc": "Info日志 在Info日志级别记录给定的消息。" }, { "label": "LogPrint", "help": "systemFc.LogPrint(message)", "doc": "打印日志 将给定的消息记录为原始消息。" }, { "label": "LogTrace", "help": "systemFc.LogTrace(message)", "doc": "Trace日志 在Trace日志级别记录给定的消息。" }, { "label": "LogWarning", "help": "systemFc.LogWarning(message)", "doc": "Warning日志 在Warning日志级别记录给定的消息。" }, { "label": "Quit", "help": "systemFc.Quit()", "doc": "退出 退出应用程序。" }, { "label": "ScreenGetAll", "help": "systemFc.ScreenGetAll()", "doc": "获取屏幕 返回当前连接的屏幕列表。" }, { "label": "Show", "help": "systemFc.Show()", "doc": "显示 显示应用程序。" }, { "label": "WindowCenter", "help": "systemFc.WindowCenter()", "doc": "窗口居中 使窗口在当前窗口所在的监视器上居中。" }, { "label": "WindowFullscreen", "help": "systemFc.WindowFullscreen()", "doc": "窗口全屏 使窗口全屏。" }, { "label": "WindowGetPosition", "help": "systemFc.WindowGetPosition()", "doc": "获取窗口位置 获取窗口相对于当前监视器的位置。" }, { "label": "WindowGetSize", "help": "systemFc.WindowGetSize()", "doc": "获取窗口大小 获取窗口的宽度和高度。" }, { "label": "WindowHide", "help": "systemFc.WindowHide()", "doc": "隐藏窗口 如果可见,则隐藏窗口。" }, { "label": "WindowIsFullscreen", "help": "systemFc.WindowIsFullscreen()", "doc": "窗口是否全屏 如果窗口是全屏,则返回true。" }, { "label": "WindowIsMaximised", "help": "systemFc.WindowIsMaximised()", "doc": "窗口是否最大化 如果窗口最大化,则返回true。" }, { "label": "WindowIsMinimised", "help": "systemFc.WindowIsMinimised()", "doc": "窗口是否最小化 如果窗口最小化,则返回true。" }, { "label": "WindowIsNormal", "help": "systemFc.WindowIsNormal()", "doc": "窗口是否正常 如果窗口未最小化、最大化或全屏,则返回true。" }, { "label": "WindowMaximise", "help": "systemFc.WindowMaximise()", "doc": "窗口最大化 最大化窗口以填满屏幕。" }, { "label": "WindowMinimise", "help": "systemFc.WindowMinimise()", "doc": "窗口最小化 最小化窗口。" }, { "label": "WindowReload", "help": "systemFc.WindowReload()", "doc": "窗口重载 重新加载当前页面。" }, { "label": "WindowReloadApp", "help": "systemFc.WindowReloadApp()", "doc": "重载应用前端 重新加载应用程序前端。" }, { "label": "WindowSetAlwaysOnTop", "help": "systemFc.WindowSetAlwaysOnTop(b)", "doc": "设置置顶 设置窗口置顶或取消置顶。" }, { "label": "WindowSetBackgroundColour", "help": "systemFc.WindowSetBackgroundColour(R, G, B, A)", "doc": "设置背景色 将窗口的背景颜色设置为给定的RGBA颜色。" }, { "label": "WindowSetDarkTheme", "help": "systemFc.WindowSetDarkTheme()", "doc": "设置深色主题 将窗口主题设置为深色。" }, { "label": "WindowSetLightTheme", "help": "systemFc.WindowSetLightTheme()", "doc": "设置浅色主题 将窗口主题设置为浅色。" }, { "label": "WindowSetMaxSize", "help": "systemFc.WindowSetMaxSize(width, height)", "doc": "设置最大尺寸 设置窗口最大尺寸。如果当前大于设置值,则调整窗口大小。" }, { "label": "WindowSetMinSize", "help": "systemFc.WindowSetMinSize(width, height)", "doc": "设置最小尺寸 设置窗口最小尺寸。如果当前小于设置值,则调整窗口大小。" }, { "label": "WindowSetPosition", "help": "systemFc.WindowSetPosition(x, y)", "doc": "设置窗口位置 设置窗口相对于当前监视器的位置。" }, { "label": "WindowSetSize", "help": "systemFc.WindowSetSize(width, height)", "doc": "设置窗口大小 设置窗口的宽度和高度。" }, { "label": "WindowSetSystemDefaultTheme", "help": "systemFc.WindowSetSystemDefaultTheme()", "doc": "设置系统默认主题 设置窗口主题为系统默认值。" }, { "label": "WindowSetTitle", "help": "systemFc.WindowSetTitle(title)", "doc": "设置窗口标题 设置窗口标题栏中的文本。" }, { "label": "WindowShow", "help": "systemFc.WindowShow()", "doc": "显示窗口 显示窗口,如果它当前是隐藏的。" }, { "label": "WindowToggleMaximise", "help": "systemFc.WindowToggleMaximise()", "doc": "切换窗口最大化 在最大化和未最大化之间切换。" }, { "label": "WindowUnfullscreen", "help": "systemFc.WindowUnfullscreen()", "doc": "取消全屏 恢复全屏之前的窗口尺寸和位置。" }, { "label": "WindowUnmaximise", "help": "systemFc.WindowUnmaximise()", "doc": "取消最大化 将窗口恢复到最大化之前的尺寸和位置。" }, { "label": "WindowUnminimise", "help": "systemFc.WindowUnminimise()", "doc": "取消最小化 将窗口恢复到最小化之前的尺寸和位置。" } ] ================================================ FILE: GoEasyDesigner/frontend/src/i18n/index.js ================================================ import { createI18n } from "vue-i18n"; import zhHans from "./locales/zh-Hans.json"; import en from "./locales/en.json"; // 实例化I18n const i18n = createI18n({ locale: "English", globalInjection: true, fallbackLocale: "English", legacy: false, messages: { "简体中文": zhHans, "English": en, }, }) export default i18n ================================================ FILE: GoEasyDesigner/frontend/src/i18n/locales/en.json ================================================ { "app": { "NewProject": "NewProject", "OpenProject": "OpenProject", "Attribute": "Attribute", "Custom": "Custom", "File": "File", "ReleaseAndPlace": "Release and place", "clear": "clear", "compile": "Compile", "components": "Components", "debug_info": "Debug info", "design": "Design", "downloadClient": "Download Client", "edit_code": "Code", "environmentCheck": "Environment Check", "help": "Help", "helpDesc": "Window projects need to be created manually.\n wails init -n \"go-easy-demo\" -t https://github.com/duolabmeng6/wails-template-vue-go-easy \n
\n\nOnly the design interface can be saved in the browser.\n\n
\n\nIt is recommended to use the client to save it more simply. At present, you still need to install the go and node environment by yourself.", "help_info": "Help info", "inCompile": "in compile...", "inOperation": "in operation...", "language": "language", "name": "GoEasyDesigner", "new": "New", "open": "Open", "projectConfig": "Project Config", "project_management": "Project", "run": "Run", "save": "Save", "selectImage": "select Image", "stop": "stop", "stopped": "stopped", "support_library": "Library", "system_components": "System", "td_components": "T Design", "tw_components": "tailwindcss", "updateCheck": "Check Update" }, "attr": { "addEvent": "add event function", "backgroundColor": "backgroundColor", "backgroundImage": "backgroundImage", "border": "border", "bottom": "bottom", "disable": "disable", "fontSize": "fontSize", "height": "height", "left": "left", "name": "name", "right": "right", "title": "title", "top": "top", "visible": "visible", "width": "width", "xAxisRollingMode": "xAxis Rolling Mode", "yAxisRollingMode": "yAxis Rolling Mode", "zIndex": "zIndex" }, "componentName": { "Button": "Button", "CheckBox": "CheckBox", "CommonLayout": "CommonLayout", "CustomComponent": "CustomComponent", "FlexLayout": "FlexLayout", "Label": "Label", "Menu": "Menu", "ProgressBar": "ProgressBar", "RadioButton": "RadioButton", "Switch": "Switch", "Table": "Table", "Tabs": "Tabs", "TabsTW": "TabsTW", "TextEdit": "TextEdit", "Tooltip": "Tooltip", "Tree": "Tree", "Window": "Win" }, "eventName": { "blur": "blur", "click": "click", "contextmenu": "contextmenu", "created": "created", "dblclick": "dblclick", "focus": "focus", "keydown": "keydown", "keyup": "keyup", "mousedown": "mousedown", "mousemove": "mousemove", "mouseup": "mouseup", "mousewheel": "mousewheel" } } ================================================ FILE: GoEasyDesigner/frontend/src/i18n/locales/zh-Hans.json ================================================ { "app": { "NewProject": "新建项目", "OpenProject": "打开项目", "Attribute": "属性", "Custom": "自定义组件", "File": "文件", "ReleaseAndPlace": "松开放置", "clear": "清除", "compile": "编译", "components": "组件", "debug_info": "调试信息", "design": "界面设计", "downloadClient": "下载客户端", "edit_code": "编辑代码", "environmentCheck": "运行环境检测", "help": "帮助", "helpDesc": "窗口项目需要手动创建\n wails init -n \"go-easy-demo\" -t https://github.com/duolabmeng6/wails-template-vue-go-easy
\n 在浏览器中仅可保存设计界面\n
\n 建议使用客户端保存更简单 目前仍需自行安装 go 和 node 环境", "help_info": "帮助信息", "inCompile": "编译中...", "inOperation": "运行中...", "language": "语言", "name": "窗口设计师", "new": "新建", "open": "打开", "projectConfig": "项目配置", "project_management": "项目管理", "run": "运行", "save": "保存", "selectImage": "选择图片", "stop": "停止", "stopped": "已停止...", "support_library": "支持库", "system_components": "系统组件", "td_components": "T Design", "tw_components": "tailwindcss", "updateCheck": "检查更新", "preview": "预览" }, "attr": { "addEvent": "在此处选择加入事件处理函数", "backgroundColor": "背景颜色", "backgroundImage": "背景图片", "border": "边框", "bottom": "底边", "disable": "禁用", "fontSize": "字体大小", "height": "高度", "left": "左边", "name": "名称", "right": "右边", "title": "标题", "top": "顶边", "visible": "可视", "width": "宽度", "xAxisRollingMode": "x轴滚动模式", "yAxisRollingMode": "y轴滚动模式", "zIndex": "层级" }, "componentName": { "Button": "按钮", "CheckBox": "多选框", "CommonLayout": "常用布局", "ControlButton": "窗口控制按钮", "CustomComponent": "自定义组件", "FlexLayout": "弹性布局", "Label": "标签", "Menu": "菜单", "ProgressBar": "进度条", "RadioButton": "单选框", "Switch": "开关", "Table": "表格", "Tabs": "选择夹", "TabsTW": "选择夹tw", "TextEdit": "编辑框", "Tooltip": "提示框", "Tree": "树形框", "Window": "窗口" }, "eventName": { "blur": "失去焦点", "click": "被单击", "contextmenu": "鼠标右键被按下", "created": "创建完毕", "dblclick": "被双击", "focus": "获得焦点", "keydown": "按下某键", "keyup": "放开某键", "mousedown": "鼠标左键被按下", "mousemove": "鼠标位置被移动", "mouseup": "鼠标左键被放开", "mousewheel": "滚轮被滚动" } } ================================================ FILE: GoEasyDesigner/frontend/src/main.js ================================================ import './assets/main.css' import {createApp} from 'vue' import {createPinia} from 'pinia' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' import Menus from 'vue3-menus'; // import TDesign from 'tdesign-vue-next' import 'tdesign-vue-next/es/style/index.css' import Helper from "./Helper.js" import i18n from './i18n/index.js' import App from './app11.vue' // import App from './components/designer/public/支持库.vue' import {useAppStore} from '@/stores/appStore' import RenderDesignComponent from "./components/RenderDesignComponent.vue" import RenderDesignComponentWin from "./components/RenderDesignComponentWin.vue" import * as ElementPlusIconsVue from '@element-plus/icons-vue' import {install as VueMonacoEditorPlugin, loader} from '@guolao/vue-monaco-editor' import * as monaco from "monaco-editor" import editorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker" import jsonWorker from "monaco-editor/esm/vs/language/json/json.worker?worker" import cssWorker from "monaco-editor/esm/vs/language/css/css.worker?worker" import htmlWorker from "monaco-editor/esm/vs/language/html/html.worker?worker" import tsWorker from "monaco-editor/esm/vs/language/typescript/ts.worker?worker" import 编辑器数据 from './编辑器/编辑器提示数据.js' import ldf from './编辑器/编辑器语法文件.js' import systemFcDoc from "@/helpDoc/systemFcDoc.json" const app = createApp(App) app.use(createPinia()) const store = useAppStore() store.是否为window系统 = navigator.platform.includes("Win") app.component('RenderDesignComponent', RenderDesignComponent) app.component('RenderDesignComponentWin', RenderDesignComponentWin) for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) } // 检索自定义组件 let 自定义组件名称列表 = [] async function load自定义组件() { try { const response = await fetch('/自定义组件/components.json'); const data = await response.json(); 自定义组件名称列表 = data.components; console.log("加载到的组件列表:", 自定义组件名称列表); // 将组件列表添加到全局配置中 app.config.globalProperties.自定义组件名称列表 = 自定义组件名称列表; } catch (error) { console.error("加载组件列表失败:", error); } } // 在创建应用后立即加载组件 load自定义组件(); function loadEidtCode() { app.use(VueMonacoEditorPlugin, { paths: { // The default CDN config // vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.36.0/min/vs' vs: '' }, }) self.MonacoEnvironment = { getWorker(_, label) { if (label === "json") { return new jsonWorker() } if (label === "css" || label === "scss" || label === "less") { return new cssWorker() } if (label === "html" || label === "handlebars" || label === "razor") { return new htmlWorker() } if (label === "typescript" || label === "javascript") { return new tsWorker() } return new editorWorker() } } function createCustomProposal(range, insertText, label) { return { label: label, kind: monaco.languages.CompletionItemKind.Function, documentation: "", insertText: insertText, range: range, }; } const systemFcDocQuickTipQuickTip = {}; systemFcDoc.forEach(item => { let l = JSON.parse(JSON.stringify(item)); try { const extractedContent = item.doc.split(' ')[0]; l.label = item.help + " " + extractedContent; } catch (e) { } systemFcDocQuickTipQuickTip[item.help] = { "insertText": item.help, "label": l.label } }); store.keywordMappings = 编辑器数据 monaco.languages.register({id: 'javascript'}); monaco.languages.setMonarchTokensProvider('javascript', ldf); monaco.languages.registerCompletionItemProvider("javascript", { provideCompletionItems: function (model, position) { var word = model.getWordUntilPosition(position); var range = { startLineNumber: position.lineNumber, endLineNumber: position.lineNumber, startColumn: word.startColumn, endColumn: word.endColumn, }; // 检查用户输入的关键词是否在映射中 var suggestions = []; Object.keys(store.keywordMappings).forEach(function (keyword) { var regex = new RegExp("^" + word.word, "i"); if (regex.test(keyword)) { var {insertText, label} = store.keywordMappings[keyword]; suggestions.push(createCustomProposal(range, insertText, label)); } }); Object.keys(systemFcDocQuickTipQuickTip).forEach(function (keyword) { var regex = new RegExp("^" + word.word, "i"); if (regex.test(keyword)) { var {insertText, label} = systemFcDocQuickTipQuickTip[keyword]; suggestions.push(createCustomProposal(range, insertText, label)); } }); //这里设置排序对输入提示没有影响 // suggestions.sort((a, b) => { // return a.label.localeCompare(b.label, undefined, { sensitivity: 'base' }); // }); // console.log(JSON.stringify(suggestions, null, 2)) return {suggestions: suggestions}; }, }); loader.config({monaco}) } loadEidtCode() app.config.warnHandler = function (msg, vm, trace) { // 自定义处理警告的逻辑,或者什么都不做以屏蔽 }; //注册公用组件 Helper.registerBoxComponentNames(app, '', import.meta.glob('./components/designer/public/*.vue', {eager: true})) //注册饿了么组件 const BoxComponentNames_el = Helper.registerBoxComponentNames(app, 'el', import.meta.glob('./components/boxs/el/**/*.vue', {eager: true})) console.log("饿了么组件", BoxComponentNames_el) let ComponentNameOrder = ['Button', 'TextEdit', 'Label'] ComponentNameOrder = [...new Set([...ComponentNameOrder, ...BoxComponentNames_el])] ComponentNameOrder = ComponentNameOrder.filter(item => item !== "Container") app.config.globalProperties.BoxComponentNames_el = ComponentNameOrder //注册组件默认属性 const BoxComponentDefaultValue = { 'el': Helper.registerBoxComponentDefaultValue(app, 'el', import.meta.glob('./components/boxs/el/**/*.js', {eager: true})), 'td': Helper.registerBoxComponentDefaultValue(app, 'td', import.meta.glob('./components/boxs/td/**/*.js', {eager: true})), 'tw': Helper.registerBoxComponentDefaultValue(app, 'tw', import.meta.glob('./components/boxs/tw/**/*.js', {eager: true})) } app.provide('BoxComponentDefaultValue', BoxComponentDefaultValue) const BoxComponentNames_td = Helper.registerBoxComponentNames(app, 'td', import.meta.glob('./components/boxs/td/**/*.vue', {eager: true})) const BoxComponentNames_tw = Helper.registerBoxComponentNames(app, 'tw', import.meta.glob('./components/boxs/tw/**/*.vue', {eager: true})) const BoxComponentNames = { 'system': ComponentNameOrder, 'tdesign': BoxComponentNames_td, 'tailwindcss': BoxComponentNames_tw, } app.provide('BoxComponentNames', BoxComponentNames) // 把i18n挂在到全局 app.config.globalProperties.t = i18n.global.t //设置全局变量 用于判断是否为设计模式 app.config.globalProperties.designMode = true app.use(i18n) // app.use(TDesign) app.use(ElementPlus) app.use(Menus); app.mount('#app') ================================================ FILE: GoEasyDesigner/frontend/src/public.js ================================================ const parseDimension = (value) => { //检查是否包含 vw vh % 等单位 if (typeof value === 'string') { if(value === "inherit" || value === "auto"){ return value; } if(value.includes('v') || value.includes('%')){ return value; } } return `${parseInt(value)}px`; }; const getItemStyle = (item) => { const style = { top: parseDimension(item.top), left: parseDimension(item.left), width: parseDimension(item.width), height: parseDimension(item.height), border: item.border, background: item.background, zIndex: item.zIndex, color: item.corlor, }; return style; }; const getItemStyle2 = (item) => { // console.log("??"); let style = { top: parseDimension(item.top), left: parseDimension(item.left), width: parseDimension(item.width), height: parseDimension(item.height), }; // const element窗口 = document.getElementById("窗口"); // if (element窗口) { // const rect = element窗口.getBoundingClientRect(); // // style.top = parseInt(style.top) + rect.top + "px"; // // style.left = parseInt(style.left) + rect.left + "px"; // } const designer = document.getElementById("designer"); let rect_designer = {} if (designer) { rect_designer = designer.getBoundingClientRect(); } else { return style } const element = document.querySelector(`[data-id="${item.data_id}"]`); if (element) { //获取元素在浏览器中的绝对位置 const rect = element.getBoundingClientRect(); style.top = `${rect.top - rect_designer.top}px`; style.left = `${rect.left - rect_designer.left}px`; style.width = `${rect.width}px`; style.height = `${rect.height}px`; } else { style.display = "none" return style; } if (style.top == "0px" && style.left == "0px" && style.width == "0px" && style.height == "0px") { style.display = "none" return style; } style.display = "block" return style; }; const getItemStyleShape = (item) => { const style = { top: parseDimension(item.top), left: parseDimension(item.left), right: parseDimension(item.right), bottom: parseDimension(item.bottom), width: parseDimension(item.width), height: parseDimension(item.height), border: item.border, background: item.background, zIndex: item.zIndex, position: 'absolute', overflowY: item.overflowY || 'visible', overflowX: item.overflowX || 'visible' }; if (item.position !== undefined) { style.position = item.position; } if (item.图片 !== undefined) { if (item.backgroundSize !== undefined) { style.backgroundSize = '100% 100%'; } if (item.backgroundRepeat !== undefined) { style.backgroundRepeat = 'no-repeat'; } if (item.backgroundPosition !== undefined) { style.backgroundPosition = 'center'; } if (item.backgroundAttachment !== undefined) { style.backgroundAttachment = 'scroll'; } style.backgroundImage = `url(${item.图片})`; style.backgroundSize = item.backgroundSize style.backgroundRepeat = item.backgroundRepeat style.backgroundPosition = item.backgroundPosition style.backgroundAttachment = item.backgroundAttachment } if (item.fontSize !== undefined) { item.fontSize = item.fontSize || 12; } return style; }; /* 生成组件对应关系方便ide 提示 */ function generateComponentCode(components, parentPath = '') { const codeLines = []; let k = 0; let codeLine; for (const component of components) { let componentName = component["name"]; const componentPath = `${parentPath}.childComponents[${k}]`; const componentPath2 = `${parentPath}`; k = k + 1; // componentName 如果带有空格 删除空格 并且把后面1个字母大写 if (componentName) { if (componentName.includes(" ")) { const arr = componentName.split(" "); let newName = ""; for (let i = 0; i < arr.length; i++) { newName = newName + arr[i].charAt(0).toUpperCase() + arr[i].slice(1); } componentName = newName; } } codeLine = `${componentName} : designData[0]${componentPath}`; if (componentName == "" || componentName == undefined) { } else { codeLines.push(codeLine); } if (component["childComponents"] && component["childComponents"].length > 0) { const childCodeLines = generateComponentCode(component["childComponents"], componentPath); codeLines.push(...childCodeLines); } } return codeLines; } function 生成辅助代码(obj) { const codeLines = generateComponentCode(obj); let code = " Win : designData[0],\r\n" for (const codeLine of codeLines) { code = code + " " + codeLine + ",\r\n" } let codeTpl = ` import designData from './design.json'; function __aux_code() { return { ${code} } } export default __aux_code ` return codeTpl } // const jsonData = require('./design.json'); // console.log(生成辅助代码(jsonData[0].childComponents)) function 取父目录(path) { // 将所有的反斜杠 \ 替换为斜杠 / var convertedPath = path.replace(/\\/g, '/'); // 使用正则表达式获取父目录 var parentDirectory = convertedPath.replace(/\/[^/]*$/, ''); return parentDirectory; } function InsertCode(jscode, insertionCode) { // 获取函数名称 窗口.按钮3被点击 = function () { 截取 按钮3被点击 const 函数名称 = insertionCode.substring(insertionCode.indexOf(".") + 1, insertionCode.indexOf("=")).trim(); // 检查是否已经存在 if (jscode.includes(函数名称)) { return jscode; } // Define the regular expression pattern const pattern = `(\\/\\/Don't delete the event function flag[^\\n]*)`; // Compile the regular expression const re = new RegExp(pattern); // Replace the matching pattern with the insertion code const result = jscode.replace(re, `${insertionCode}$1`); return result; } export {getItemStyle, getItemStyle2, getItemStyleShape, 生成辅助代码, 取父目录, InsertCode}; ================================================ FILE: GoEasyDesigner/frontend/src/stores/HistoryManager.js ================================================ class HistoryManager { constructor() { this.historicalRecord = []; this.currentPosition = -1; } // 记录最新数据到最新的一条(内容){ // console.log("记录最新数据到最新的一条=========") // console.log("历史currentPosition",this.currentPosition) // console.log("查看当前历史所有记录",this.查看当前历史所有记录()) // this.historicalRecord[this.currentPosition]=内容 // } 记录(内容) { this.historicalRecord = this.historicalRecord.slice(0, this.currentPosition + 1); this.historicalRecord.push(内容); this.currentPosition = this.historicalRecord.length - 1; // console.log("记录=========") // console.log("历史currentPosition",this.currentPosition) // console.log("查看当前历史所有记录",this.查看当前历史所有记录()) } 撤销(内容) { if (内容){ this.historicalRecord[this.currentPosition]=内容 } // console.log("撤销=========")Ï // console.log("历史currentPosition",this.currentPosition) // console.log("查看当前历史所有记录",this.查看当前历史所有记录()) if (this.currentPosition > 0) { // 移动到前一个historicalRecord this.currentPosition--; return this.historicalRecord[this.currentPosition]; } else { // 已经没有historicalRecord可以撤销了 return null; } } 恢复(内容) { // console.log("恢复=========") // console.log("历史currentPosition",this.currentPosition) // console.log("查看当前历史所有记录",this.查看当前历史所有记录()) if (this.currentPosition < this.historicalRecord.length - 1) { if (内容){ this.historicalRecord[this.currentPosition]=内容 } // 移动到后一个historicalRecord this.currentPosition++; return this.historicalRecord[this.currentPosition]; } else { // 已经到达最新historicalRecord return null; } } 查看当前历史所有记录() { return this.historicalRecord; } } const HistoryManagerLiving = new HistoryManager(); export {HistoryManagerLiving} // 示例使用 // // 记录 // HistoryManager.记录("第一步操作"); // HistoryManager.记录("第二步操作"); // // console.log("当前历史所有记录:", HistoryManager.查看当前历史所有记录()); // // // 撤销 // const 撤销结果 = HistoryManager.撤销(); // console.log("撤销结果:", 撤销结果); // 输出:撤销结果: 第一步操作 // // console.log("当前历史所有记录:", HistoryManager.查看当前历史所有记录()); // // // // 恢复 // // const 恢复结果 = HistoryManager.恢复(); // // console.log("恢复结果:", 恢复结果); // 输出:恢复结果: 第二步操作 // // // // console.log("当前历史所有记录:", HistoryManager.查看当前历史所有记录()); // // // 记录新操作 // HistoryManager.记录("第三步操作"); // // console.log("当前历史所有记录:", HistoryManager.查看当前历史所有记录()); // // // 清除后续历史 // HistoryManager.已修改清除后续历史(); // console.log("当前历史所有记录:", HistoryManager.查看当前历史所有记录()); // // // // // 恢复 // const 恢复结果 = HistoryManager.恢复(); // console.log("恢复结果:", 恢复结果); // 输出:恢复结果: 第二步操作 // // console.log("当前历史所有记录:", HistoryManager.查看当前历史所有记录()); ================================================ FILE: GoEasyDesigner/frontend/src/stores/appStore.js ================================================ import {ref} from 'vue' import {defineStore} from 'pinia' import {WindowGetSize} from "../../wailsjs/runtime"; import {E发送跳转代码到ide, E发送跳转代码到ide_命令行方式, E文件枚举} from "../../wailsjs/go/main/App"; import {生成提示辅助代码} from "@/提示语法生成器.js"; import {窗口事件代码模板} from "@/编辑器/窗口事件代码模板.js"; import {ElMessage} from "element-plus"; import {InsertCode} from "@/public.js"; import {appAction} from '@/action/app.js'; import {HistoryManagerLiving} from '@/stores/HistoryManager.js'; import {useI18n} from "vue-i18n"; import i18n from "../i18n"; import * as systemFc from "@/../wailsjs/runtime"; // 写一个延迟函数 async/await的 function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)) } export const useAppStore = defineStore('AppStore', { state: () => { return { bodyLoaded: ref(false), hoveredDiv: ref(null), 当前组件索引: ref("1"), 组件列表: ref([]), 项目信息: ref({ 项目根目录: "", 设计文件路径: "",//"win\\design.json", 窗口事件文件路径: "",//"win\\event.js", 辅助代码文件路径: "",//"win\\__aux_code.js", 项目管理目录: "",//"win\\", IDE插件地址: "http://127.0.0.1:17810", 双击事件成功后最小化窗口: true, 选择的IDE: "goland", 命令行方式跳转至IDE: true }), 代码编辑器: ref({ 路径: "", 文件时间: "", 内容: "", }), 客户端模式: ref(false), list: ref(null), 当前拖拽组件数据: ref(null), 当前多选组件ID: ref([]), start_x: ref(0), start_y: ref(0), indexMap: ref({}), 显示项目配置对话框: ref(false), 显示新建项目对话框: ref(false), 显示预览对话框: ref(false), 项目文件列表: ref([]), 选择夹_中间现行选中项: ref("0"), 支持库列表: ref([]), 帮助信息: ref("Welcome to use GoEasyDesigner"), keywordMappings: ref(""), 全局_事件名称列表: ref([]), 代码编写模式: ref(1),//1:网页内代码编辑器 2:代码跳转至IDE 运行按钮文本: ref("运行"), 编译按钮文本: ref("编译"), 调试信息: ref(""), 选择夹_底部现行选中项: ref("0"), 组件列表tree现行选中项: ref(""), 组件列表tree: ref([]), scrollContainer: ref(null), releases_latest: {},//github的文件信息 window下载地址: "",//github的文件信息 mac下载地址: "",//github的文件信息 版本号: "",//github的文件信息 是否为window系统: true,//github的文件信息 HistoryManager: HistoryManagerLiving, putPosition: {}, rightClickMenus: ref({}), } }, actions: { 添加事件被选择: async function (事件名称, 函数名称, item, extData) { let dthis = this; if (this.代码编辑器.内容 == "") { this.代码编辑器.内容 = 窗口事件代码模板 } let rawName = item[`event_${事件名称}`] if (rawName != undefined) { this.跳转代码(rawName) return } let code = `item.event_${事件名称} = "${函数名称}"` eval(code) let ncode = ''; if (extData == undefined) { ncode = ` c.${函数名称} = async function () { console.log("${函数名称}") } `; } else { ncode = ` c.${函数名称} = async function ` + extData + ` { console.log("${函数名称}") } `; } ncode = ncode.replace(/{事件名称}/g, item.name + 事件名称) console.log(ncode) if (this.项目信息.窗口事件文件路径 == "") { ElMessage({ message: "当前无法自动保存代码请注意...", type: 'success', duration: 3000, // 设置显示时间为5秒,单位为毫秒 }); this.代码编辑器.内容 = InsertCode(this.代码编辑器.内容, ncode) this.选择夹_中间现行选中项 = "1" this.putPosition(ncode) return; } //读入 窗口事件 文件内容 dthis.代码编辑器.内容 = InsertCode(this.代码编辑器.内容, ncode) dthis.选择夹_中间现行选中项 = "1" this.putPosition(ncode) await appAction.保存设计文件() rawName = item[`event_${事件名称}`] this.跳转代码(rawName) }, 跳转代码: async function (函数名称) { let dthis = this; let 跳转位置 = this.代码编辑器.内容.indexOf(函数名称) if (跳转位置 != -1) { if (this.项目信息.窗口事件文件路径 == "") { this.选择夹_中间现行选中项 = "1" this.putPosition(函数名称) return } this.选择夹_中间现行选中项 = "1" this.putPosition(函数名称) let ret; //已存在事件 if(this.项目信息.命令行方式跳转至IDE){ ret = await E发送跳转代码到ide_命令行方式( this.项目信息.选择的IDE, this.项目信息.窗口事件文件路径, 函数名称 ) return } //循环2次 for (let i = 0; i < 2; i++) { ret = await E发送跳转代码到ide( this.项目信息.IDE插件地址, this.项目信息.窗口事件文件路径, 跳转位置 ) console.log("跳转位置", 跳转位置, ret) if (ret) { if (dthis.项目信息.双击事件成功后最小化窗口) { systemFc.WindowMinimise() } return } await delay(300) } return } }, 组件双击事件(组件数据) { // console.log(this.全局_事件名称列表,this.全局_事件名称列表[1].value) let 事件名称 = this.全局_事件名称列表[0].value let ext_data = this.全局_事件名称列表[0].ext_data let nowSelectItem = this.全局_事件名称列表[0] let 函数名称; if (i18n.global.locale.value === "简体中文") { 函数名称 = 组件数据.name + nowSelectItem.label } else { let 新事件名称 = nowSelectItem.value.toLowerCase().replace(/\b(\w)|\s(\w)/g, function (m) { return m.toUpperCase(); }); 函数名称 = 组件数据.name + 新事件名称 } this.添加事件被选择(事件名称, 函数名称, 组件数据, ext_data) let dthis; dthis = this 生成提示辅助代码(this.list, function (res) { console.log("提示辅助代码", res) dthis.keywordMappings = res }) }, init() { let dthis = this const {t} = useI18n() // 解构出t方法 this.运行按钮文本 = t("app.run"); this.编译按钮文本 = t("app.compile"); try { WindowGetSize().then(function (size) { }) dthis.客户端模式 = true } catch (e) { dthis.客户端模式 = false } console.log("当前客户端模式", this.客户端模式) }, 项目管理刷新() { if (this.项目信息.项目管理目录 == "" && this.项目信息.项目管理目录 == undefined) { return } let dthis; dthis = this E文件枚举(this.项目信息.项目管理目录).then((res) => { console.log(res) res.forEach((v, i) => { //获取文件名 let 文件名 = v.split("/") 文件名 = 文件名[文件名.length - 1] dthis.项目文件列表.push({ label: 文件名, path: v, }) }) }) console.log("项目文件列表", this.项目文件列表) }, 当前组件名称() { console.log("当前组件索引", this.当前组件索引) if (this.当前组件索引 == -1) { return "画布属性" } return this.组件列表[this.当前组件索引].componentName + "属性" }, 当前组件名称2() { const {t} = useI18n() // 解构出t方法 if (this.当前拖拽组件数据.componentName == t('componentName.Window')) { return "WindowAttr" } return this.当前拖拽组件数据.componentName + "Attr" }, 获取索引(组件名称) { let k = this._获取索引(组件名称) console.log("获取索引", k) //避免名称重复导致后续代码出问题 for (let i = 0; i < 100; i++) { let 名称是否存在 = this.递归查找名称(this.list, k) console.log("名称是否存在", 名称是否存在,组件名称,k) if (名称是否存在) { k = this._获取索引(组件名称) } else { break } } return k }, _获取索引(名称) { // console.log(this.indexMap[名称]) if (this.indexMap[名称] === undefined) { this.indexMap[名称] = 1; } else { this.indexMap[名称]++; } // console.log("获取索引", 名称, this.indexMap[名称], this.indexMap) return 名称 + this.indexMap[名称]; }, 获取随机id() { //生成6为随机数 let random = Math.floor(Math.random() * 1000000); // 保留6位字符串 return ("id-" + random).substring(0, 8); }, 递归删除id(源数据, id) { // this.HistoryManager.记录(JSON.stringify(this.list)) this.HistoryManager.记录(JSON.stringify(this.list)) //检查id是否为数组 if (id instanceof Array) { id.forEach((v, i) => { this.__递归删除id(源数据, v) }) } else { this.__递归删除id(源数据, id) } this.当前组件索引 = "1" this.当前拖拽组件数据 = this.组件通过id查找结构("1") this.取组件列表() }, __递归删除id(源数据, id) { if (id == 1) { console.log("不能把自己窗口删除了") return } // console.log("递归删除", 源数据, id) 源数据.forEach((item, index) => { if (item.id == id) { 源数据.splice(index, 1); return } if (item.childComponents == undefined) { } else { this.递归删除id(item.childComponents, id) } }); }, 递归查找名称(源数据, 名称) { return 源数据.some(item => { if (item.name === 名称) { return true; } if (item.childComponents) { return this.递归查找名称(item.childComponents, 名称); } return false; }); }, 递归查找名称数量(源数据, 名称) { let 数量 = 0 源数据.forEach(item => { if (item.name === 名称) { 数量++ } if (item.childComponents) { 数量 += this.递归查找名称数量(item.childComponents, 名称); } }); return 数量; }, 新增childComponents(id) { let 插入数据 = { id: this.获取随机id(), name: this.获取索引("ContentArea"), text: this.获取索引("tabs"), componentName: "elContainer", top: "0", left: "0", width: "100%", height: "100%", noPlace: false, noDrag: true, visible: true, disable: false, pid: id, childComponents: [] } this.递归添加(this.list, 插入数据, id) }, 新增childComponents2(id) { let 插入数据 = { id: this.获取随机id(), componentName: "elContainer", name: this.获取索引("ContentArea"), top: "0", left: "0", width: "100%", height: "100%", // background: "#fff", position: "relative", noPlace: false, noDrag: true, visible: true, disable: false, pid: id, zIndex: 0, 占比: 8, childComponents: [], 复制组件: [], } this.递归添加(this.list, 插入数据, id) }, 递归添加(源数据, 插入数据, id) { // console.log("递归添加", 源数据, 插入数据, id) 源数据.forEach((item, index) => { if (item.childComponents == undefined) { } else { if (item.id == id) { item.childComponents = [...item.childComponents, 插入数据] return true } else { this.递归添加(item.childComponents, 插入数据, id) } } }); return false }, 组件通过id查找结构(id) { console.log("组件通过id查找结构", id); return this.__组件通过id查找结构_递归(this.list, id); }, __组件通过id查找结构_递归(源数据, id) { for (const item of 源数据) { if (item.id === id) { return item; } else if (item.childComponents) { const 子结果 = this.__组件通过id查找结构_递归(item.childComponents, id); if (子结果) { return 子结果; } } } return null; }, transformData(jsonData) { function transform(item) { let 名称; 名称 = item.name if (名称 == undefined || 名称 == null || 名称 == "") { 名称 = item.text } const newItem = { id: item.id, value: item.id, label: 名称, children: [] }; if (item.childComponents) { item.childComponents.forEach(child => { let 名称; 名称 = child.name if (名称 == undefined || 名称 == null || 名称 == "") { 名称 = child.text } if (名称) { const childItem = transform(child); newItem.children.push(childItem); } }); } return newItem; } const result = jsonData.map(item => transform(item)); return result; }, 取组件列表() { this.组件列表 = []; this.组件列表tree = []; this.__取组件列表_递归(this.list); // console.log("取组件列表", this.组件列表) const testlist = this.transformData(this.list); // console.log("取组件列表", JSON.stringify(testlist, null, 2)) this.组件列表tree = testlist // console.log("组件列表tree现行选中项", this.组件列表tree现行选中项) return this.组件列表 }, __取组件列表_递归(源数据) { for (const item of 源数据) { const 组件数据 = { label: item.name, id: item.id } if (item.name !== undefined && item.name !== null && item.name !== "") { this.组件列表.push(组件数据) } // console.log("组件列表", this.组件列表) if (item.childComponents) { this.__取组件列表_递归(item.childComponents); } } } }, }) ================================================ FILE: GoEasyDesigner/frontend/src/update_github_latest_releases.sh ================================================ #!/bin/bash # 访问 https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/latest 保存为 releases_latest.json #curl -o releases_latest.json https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases/latest # 检查 releases_latest.json 的修改时间,如果超过 1 天,则重新下载 #!/bin/bash #!/bin/bash JSON_FILE="../public/releases_latest.json" URL="https://api.github.com/repos/duolabmeng6/GoEasyDesigner/releases" echo "正在下载最新的releases..." curl -o "$JSON_FILE" "$URL" cat $JSON_FILE ================================================ FILE: GoEasyDesigner/frontend/src/提示语法生成器.js ================================================ function 提取key(components) { const codeLines = []; for (const component of components) { // 遍历 component 所有的 key for (const key in component) { // console.log("component", component) let name = component["name"]; if (name == "" || name == undefined) { continue } // console.log("name", name, key) // if (检查是否全部为数字或者字母(name)) { // continue // } // if (检查是否全部为数字或者字母(key)) { // continue // } codeLines.push(key); codeLines.push(name); // console.log("加入自动补全列表",component,name) } if (component["childComponents"] && component["childComponents"].length > 0) { const childCodeLines = 提取key(component["childComponents"]); codeLines.push(...childCodeLines); } } // console.log("提取的key", codeLines) return codeLines; } function 检查是否全部为数字或者字母(str) { var reg = /^[0-9a-zA-Z]+$/; return reg.test(str); } function 检查是否存在中文(str) { //检查str中是否包含中文字符 不含 数字字母 如果有汉字返回 真 如果没有汉字返回假 var reg = /[\u4e00-\u9fa5]/; return reg.test(str); } const 生成提示词 = async (keys, fn) => { // const pinyin = require('pinyin-pro') return import('pinyin-pro').then((exports) => { // exports.pinyin('汉语拼音'); // 'hàn yǔ pīn yīn' // console.log(exports.pinyin('汉语拼音')) let res = 查询返回(exports) if (fn !== undefined) { fn(res) } return res }); // import { pinyin } from 'pinyin-pro'; // const { pinyin } = require('pinyin-pro'); function 查询返回(pinyin) { const keywordMappings = { // "bjk": { insertText: "编辑框", label: "bjk编辑框" }, }; for (const key of keys) { const pinyinArray = pinyin.pinyin(key, { toneType: 'none', type: 'array', pattern: 'first', }); const abbreviation = pinyinArray.join('').toLowerCase(); let newNmae = abbreviation // console.log("abbreviation", abbreviation, key,检查是否存在中文(key)) if (检查是否存在中文(key)) { newNmae = abbreviation + key }else{ newNmae = key } keywordMappings[abbreviation] = { insertText: key, label: newNmae, } } // console.log(keywordMappings) return keywordMappings } } const 生成提示辅助代码 = async (obj, fn) => { let kyes = 提取key(obj); // console.log("提取key",JSON.stringify(kyes, null, 4)) // let 额外keys = ["组件"] let 额外keys = ["组件"] kyes = [...kyes, ...额外keys] //过滤重复的值 kyes = [...new Set(kyes)] kyes = await 生成提示词(kyes, fn) // console.log("提取key2",JSON.stringify(kyes, null, 4)) return JSON.stringify(kyes, null, 4); } // const jsonData = require('/Users/ll/Documents/GitHub/GoEasyDesigner/go-easy-demo/frontend/src/窗口/设计文件.json'); // const test = async () => { // let data = await 生成提示辅助代码(jsonData) // console.log('data', data) // } // test() export {生成提示辅助代码} ================================================ FILE: GoEasyDesigner/frontend/src/测试代码编辑器.vue ================================================ ================================================ FILE: GoEasyDesigner/frontend/src/编辑器/窗口事件代码模板.js ================================================ export const 窗口事件代码模板 =`import * as systemFc from "../../wailsjs/runtime"; import * as goFc from "../../wailsjs/go/main/App"; import {__load_data} from './__load_data' export function BindWindowEvent() { const c = __load_data() let comps = c.comps //Don't delete the event function flag }` ================================================ FILE: GoEasyDesigner/frontend/src/编辑器/编辑器提示数据.js ================================================ const keywordMappings = { "nr": { "insertText": "text", "label": "nrtext" }, } export default keywordMappings ================================================ FILE: GoEasyDesigner/frontend/src/编辑器/编辑器语法文件.js ================================================ export default { // Set defaultToken to invalid to see what you do not tokenize yet defaultToken: 'invalid', tokenPostfix: '.js', keywords: [ 'break', 'case', 'catch', 'class', 'continue', 'const', 'constructor', 'debugger', 'default', 'delete', 'do', 'else', 'export', 'extends', 'false', 'finally', 'for', 'from', 'function', 'get', 'if', 'import', 'in', 'instanceof', 'let', 'new', 'null', 'return', 'set', 'super', 'switch', 'symbol', 'this', 'throw', 'true', 'try', 'typeof', 'undefined', 'var', 'void', 'while', 'with', 'yield', 'async', 'await', 'of' ], typeKeywords: [ 'any', 'boolean', 'number', 'object', 'string', 'undefined' ], operators: [ '<=', '>=', '==', '!=', '===', '!==', '=>', '+', '-', '**', '*', '/', '%', '++', '--', '<<', '>', '>>>', '&', '|', '^', '!', '~', '&&', '||', '?', ':', '=', '+=', '-=', '*=', '**=', '/=', '%=', '<<=', '>>=', '>>>=', '&=', '|=', '^=', '@', ], // we include these common regular expressions symbols: /[=>](?!@symbols)/, '@brackets'], [/@symbols/, { cases: { '@operators': 'delimiter', '@default': '' } }], // numbers [/(@digits)[eE]([\-+]?(@digits))?/, 'number.float'], [/(@digits)\.(@digits)([eE][\-+]?(@digits))?/, 'number.float'], [/0[xX](@hexdigits)/, 'number.hex'], [/0[oO]?(@octaldigits)/, 'number.octal'], [/0[bB](@binarydigits)/, 'number.binary'], [/(@digits)/, 'number'], // delimiter: after number because of .\d floats [/[;,.]/, 'delimiter'], // strings [/"([^"\\]|\\.)*$/, 'string.invalid'], // non-terminated string [/'([^'\\]|\\.)*$/, 'string.invalid'], // non-terminated string [/"/, 'string', '@string_double'], [/'/, 'string', '@string_single'], [/`/, 'string', '@string_backtick'], ], whitespace: [ [/[ \t\r\n]+/, ''], [/\/\*\*(?!\/)/, 'comment.doc', '@jsdoc'], [/\/\*/, 'comment', '@comment'], [/\/\/.*$/, 'comment'], ], comment: [ [/[^\/*]+/, 'comment'], [/\*\//, 'comment', '@pop'], [/\*|[\/]/, 'comment'] ], jsdoc: [ [/[^\/*]+/, 'comment.doc'], [/\*\//, 'comment.doc', '@pop'], [/\*|[\/]/, 'comment.doc'] ], // We match regular expression quite precisely regexp: [ [/(\{)(\d+(?:,\d*)?)(\})/, ['regexp.escape.control', 'regexp.escape.control', 'regexp.escape.control']], [/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/, ['regexp.escape.control', { token: 'regexp.escape.control', next: '@regexrange' }]], [/(\\)(\?:|\?=|\?!)/, ['regexp.escape.control', 'regexp.escape.control']], [/[()]/, 'regexp.escape.control'], [/@regexpctl/, 'regexp.escape.control'], [/[^\\\/]/, 'regexp'], [/@regexpesc/, 'regexp.escape'], [/\\\./, 'regexp.invalid'], [/(\/)([gimsuy]*)/, [{ token: 'regexp', bracket: '@close', next: '@pop' }, 'keyword.other']], ], regexrange: [ [/-/, 'regexp.escape.control'], [/\^/, 'regexp.invalid'], [/@regexpesc/, 'regexp.escape'], [/[^\]]/, 'regexp'], [/\]/, { token: 'regexp.escape.control', next: '@pop', bracket: '@close' }], ], string_double: [ [/[\u4e00-\u9fa5\w$]+/, 'string'], [/[^\\"]+/, 'string'], [/@escapes/, 'string.escape'], [/\\./, 'string.escape.invalid'], [/"/, 'string', '@pop'] ], string_single: [ [/[^\\']+/, 'string'], [/@escapes/, 'string.escape'], [/\\./, 'string.escape.invalid'], [/'/, 'string', '@pop'], [/[\u4e00-\u9fa5\w$]+/, 'string'], ], string_backtick: [ [/\$\{/, { token: 'delimiter.bracket', next: '@bracketCounting' }], [/[^\\`$]+/, 'string'], [/@escapes/, 'string.escape'], [/\\./, 'string.escape.invalid'], [/`/, 'string', '@pop'] ], bracketCounting: [ [/\{/, 'delimiter.bracket', '@bracketCounting'], [/\}/, 'delimiter.bracket', '@pop'], { include: 'common' } ], }, }; ================================================ FILE: GoEasyDesigner/frontend/src/编辑的语法提示.js ================================================ function createCustomProposal(range, insertText, label) { return { label: label, kind: monaco.languages.CompletionItemKind.Function, documentation: "", insertText: insertText, range: range, }; } monaco.languages.registerCompletionItemProvider("javascript", { provideCompletionItems: function (model, position) { var word = model.getWordUntilPosition(position); var range = { startLineNumber: position.lineNumber, endLineNumber: position.lineNumber, startColumn: word.startColumn, endColumn: word.endColumn, }; var keywordMappings = { "bjk": { insertText: "编辑框", label: "bjk编辑框" }, "zj": { insertText: "组件", label: "zj组件" }, "nr": { insertText: "内容", label: "nr内容" }, }; // 检查用户输入的关键词是否在映射中 var suggestions = []; Object.keys(keywordMappings).forEach(function (keyword) { var regex = new RegExp("^" + word.word, "i"); if (regex.test(keyword)) { var { insertText, label } = keywordMappings[keyword]; suggestions.push(createCustomProposal(range, insertText, label)); } }); return { suggestions: suggestions }; }, }); monaco.editor.create(document.getElementById("container"), { value: `export function 绑定窗口事件(c, 组件) { c.窗口创建完毕 = function () { console.log("窗口创建完毕") } c.按钮1被单击 = function () { console.log("按钮1被单击") 组件.编辑框1text = "祖国,您好!" } //事件函数位置不要删除 }`, language: "javascript", }); ================================================ FILE: GoEasyDesigner/frontend/tailwind.config.js ================================================ /** @type {import('tailwindcss').Config} */ module.exports = { content: [ "./index.html", "./src/**/*.{js,ts,jsx,tsx}", ], theme: { extend: {}, }, plugins: [], } ================================================ FILE: GoEasyDesigner/frontend/vite.config.js ================================================ import {fileURLToPath, URL} from 'node:url' import {defineConfig} from 'vite' import vue from '@vitejs/plugin-vue' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import {ElementPlusResolver, TDesignResolver} from 'unplugin-vue-components/resolvers' import IconsResolver from 'unplugin-icons/resolver' import vueJsx from '@vitejs/plugin-vue-jsx' // https://vitejs.dev/config/ export default defineConfig({ server: { host: "0.0.0.0", hmr: { host: 'localhost', protocol: 'ws', } }, preview: { host: "0.0.0.0", port: 3000, }, publicDir: "public", plugins: [ vue(), vueJsx(), AutoImport({ imports: ['vue'], resolvers: [ ElementPlusResolver(), // Auto import icon components // 自动导入图标组件 IconsResolver({ prefix: 'Icon', }), TDesignResolver({ library: 'vue-next' }) ], }), Components({ resolvers: [ // Auto register icon components // 自动注册图标组件 IconsResolver({ enabledCollections: ['ep'], }), // Auto register Element Plus components // 自动导入 Element Plus 组件 ElementPlusResolver(), TDesignResolver({ library: 'vue-next' }) ], }), ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } }, esbuild: { jsxFactory: 'h', jsxFragment: 'Fragment', // jsxInject: `import React from 'react'`, }, }) ================================================ FILE: GoEasyDesigner/frontend/wailsjs/go/main/App.d.ts ================================================ // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL // This file is automatically generated. DO NOT EDIT export function E下载github项目(arg1:string,arg2:string):Promise; export function E保存(arg1:string,arg2:string):Promise; export function E保存件对话框():Promise; export function E停止命令():Promise; export function E创建函数(arg1:string,arg2:string,arg3:string):Promise; export function E发送跳转代码到ide(arg1:string,arg2:string,arg3:number):Promise; export function E发送跳转代码到ide_命令行方式(arg1:string,arg2:string,arg3:string):Promise; export function E取当前目录():Promise; export function E取文件修改时间(arg1:string):Promise; export function E取运行目录():Promise; export function E取配置信息():Promise; export function E打开文件对话框():Promise; export function E打开选择文件夹对话框():Promise; export function E搜索文件(arg1:string,arg2:string):Promise>; export function E文件是否存在(arg1:string):Promise; export function E文件枚举(arg1:string):Promise>; export function E检查更新():Promise; export function E添加文件监视(arg1:string):Promise; export function E清空文件监视():Promise; export function E读入文件(arg1:string):Promise; export function E运行命令(arg1:string,arg2:string):Promise; export function Greet(arg1:string):Promise; ================================================ FILE: GoEasyDesigner/frontend/wailsjs/go/main/App.js ================================================ // @ts-check // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL // This file is automatically generated. DO NOT EDIT export function E下载github项目(arg1, arg2) { return window['go']['main']['App']['E下载github项目'](arg1, arg2); } export function E保存(arg1, arg2) { return window['go']['main']['App']['E保存'](arg1, arg2); } export function E保存件对话框() { return window['go']['main']['App']['E保存件对话框'](); } export function E停止命令() { return window['go']['main']['App']['E停止命令'](); } export function E创建函数(arg1, arg2, arg3) { return window['go']['main']['App']['E创建函数'](arg1, arg2, arg3); } export function E发送跳转代码到ide(arg1, arg2, arg3) { return window['go']['main']['App']['E发送跳转代码到ide'](arg1, arg2, arg3); } export function E发送跳转代码到ide_命令行方式(arg1, arg2, arg3) { return window['go']['main']['App']['E发送跳转代码到ide_命令行方式'](arg1, arg2, arg3); } export function E取当前目录() { return window['go']['main']['App']['E取当前目录'](); } export function E取文件修改时间(arg1) { return window['go']['main']['App']['E取文件修改时间'](arg1); } export function E取运行目录() { return window['go']['main']['App']['E取运行目录'](); } export function E取配置信息() { return window['go']['main']['App']['E取配置信息'](); } export function E打开文件对话框() { return window['go']['main']['App']['E打开文件对话框'](); } export function E打开选择文件夹对话框() { return window['go']['main']['App']['E打开选择文件夹对话框'](); } export function E搜索文件(arg1, arg2) { return window['go']['main']['App']['E搜索文件'](arg1, arg2); } export function E文件是否存在(arg1) { return window['go']['main']['App']['E文件是否存在'](arg1); } export function E文件枚举(arg1) { return window['go']['main']['App']['E文件枚举'](arg1); } export function E检查更新() { return window['go']['main']['App']['E检查更新'](); } export function E添加文件监视(arg1) { return window['go']['main']['App']['E添加文件监视'](arg1); } export function E清空文件监视() { return window['go']['main']['App']['E清空文件监视'](); } export function E读入文件(arg1) { return window['go']['main']['App']['E读入文件'](arg1); } export function E运行命令(arg1, arg2) { return window['go']['main']['App']['E运行命令'](arg1, arg2); } export function Greet(arg1) { return window['go']['main']['App']['Greet'](arg1); } ================================================ FILE: GoEasyDesigner/frontend/wailsjs/runtime/package.json ================================================ { "name": "@wailsapp/runtime", "version": "2.0.0", "description": "Wails Javascript runtime library", "main": "runtime.js", "types": "runtime.d.ts", "scripts": { }, "repository": { "type": "git", "url": "git+https://github.com/wailsapp/wails.git" }, "keywords": [ "Wails", "Javascript", "Go" ], "author": "Lea Anthony ", "license": "MIT", "bugs": { "url": "https://github.com/wailsapp/wails/issues" }, "homepage": "https://github.com/wailsapp/wails#readme" } ================================================ FILE: GoEasyDesigner/frontend/wailsjs/runtime/runtime.d.ts ================================================ /* _ __ _ __ | | / /___ _(_) /____ | | /| / / __ `/ / / ___/ | |/ |/ / /_/ / / (__ ) |__/|__/\__,_/_/_/____/ The electron alternative for Go (c) Lea Anthony 2019-present */ export interface Position { x: number; y: number; } export interface Size { w: number; h: number; } export interface Screen { isCurrent: boolean; isPrimary: boolean; width : number height : number } // Environment information such as platform, buildtype, ... export interface EnvironmentInfo { buildType: string; platform: string; arch: string; } // [EventsEmit](https://wails.io/docs/reference/runtime/events#eventsemit) // emits the given event. Optional data may be passed with the event. // This will trigger any event listeners. export function EventsEmit(eventName: string, ...data: any): void; // [EventsOn](https://wails.io/docs/reference/runtime/events#eventson) sets up a listener for the given event name. export function EventsOn(eventName: string, callback: (...data: any) => void): () => void; // [EventsOnMultiple](https://wails.io/docs/reference/runtime/events#eventsonmultiple) // sets up a listener for the given event name, but will only trigger a given number times. export function EventsOnMultiple(eventName: string, callback: (...data: any) => void, maxCallbacks: number): () => void; // [EventsOnce](https://wails.io/docs/reference/runtime/events#eventsonce) // sets up a listener for the given event name, but will only trigger once. export function EventsOnce(eventName: string, callback: (...data: any) => void): () => void; // [EventsOff](https://wails.io/docs/reference/runtime/events#eventsoff) // unregisters the listener for the given event name. export function EventsOff(eventName: string, ...additionalEventNames: string[]): void; // [EventsOffAll](https://wails.io/docs/reference/runtime/events#eventsoffall) // unregisters all listeners. export function EventsOffAll(): void; // [LogPrint](https://wails.io/docs/reference/runtime/log#logprint) // logs the given message as a raw message export function LogPrint(message: string): void; // [LogTrace](https://wails.io/docs/reference/runtime/log#logtrace) // logs the given message at the `trace` log level. export function LogTrace(message: string): void; // [LogDebug](https://wails.io/docs/reference/runtime/log#logdebug) // logs the given message at the `debug` log level. export function LogDebug(message: string): void; // [LogError](https://wails.io/docs/reference/runtime/log#logerror) // logs the given message at the `error` log level. export function LogError(message: string): void; // [LogFatal](https://wails.io/docs/reference/runtime/log#logfatal) // logs the given message at the `fatal` log level. // The application will quit after calling this method. export function LogFatal(message: string): void; // [LogInfo](https://wails.io/docs/reference/runtime/log#loginfo) // logs the given message at the `info` log level. export function LogInfo(message: string): void; // [LogWarning](https://wails.io/docs/reference/runtime/log#logwarning) // logs the given message at the `warning` log level. export function LogWarning(message: string): void; // [WindowReload](https://wails.io/docs/reference/runtime/window#windowreload) // Forces a reload by the main application as well as connected browsers. export function WindowReload(): void; // [WindowReloadApp](https://wails.io/docs/reference/runtime/window#windowreloadapp) // Reloads the application frontend. export function WindowReloadApp(): void; // [WindowSetAlwaysOnTop](https://wails.io/docs/reference/runtime/window#windowsetalwaysontop) // Sets the window AlwaysOnTop or not on top. export function WindowSetAlwaysOnTop(b: boolean): void; // [WindowSetSystemDefaultTheme](https://wails.io/docs/next/reference/runtime/window#windowsetsystemdefaulttheme) // *Windows only* // Sets window theme to system default (dark/light). export function WindowSetSystemDefaultTheme(): void; // [WindowSetLightTheme](https://wails.io/docs/next/reference/runtime/window#windowsetlighttheme) // *Windows only* // Sets window to light theme. export function WindowSetLightTheme(): void; // [WindowSetDarkTheme](https://wails.io/docs/next/reference/runtime/window#windowsetdarktheme) // *Windows only* // Sets window to dark theme. export function WindowSetDarkTheme(): void; // [WindowCenter](https://wails.io/docs/reference/runtime/window#windowcenter) // Centers the window on the monitor the window is currently on. export function WindowCenter(): void; // [WindowSetTitle](https://wails.io/docs/reference/runtime/window#windowsettitle) // Sets the text in the window title bar. export function WindowSetTitle(title: string): void; // [WindowFullscreen](https://wails.io/docs/reference/runtime/window#windowfullscreen) // Makes the window full screen. export function WindowFullscreen(): void; // [WindowUnfullscreen](https://wails.io/docs/reference/runtime/window#windowunfullscreen) // Restores the previous window dimensions and position prior to full screen. export function WindowUnfullscreen(): void; // [WindowIsFullscreen](https://wails.io/docs/reference/runtime/window#windowisfullscreen) // Returns the state of the window, i.e. whether the window is in full screen mode or not. export function WindowIsFullscreen(): Promise; // [WindowSetSize](https://wails.io/docs/reference/runtime/window#windowsetsize) // Sets the width and height of the window. export function WindowSetSize(width: number, height: number): void; // [WindowGetSize](https://wails.io/docs/reference/runtime/window#windowgetsize) // Gets the width and height of the window. export function WindowGetSize(): Promise; // [WindowSetMaxSize](https://wails.io/docs/reference/runtime/window#windowsetmaxsize) // Sets the maximum window size. Will resize the window if the window is currently larger than the given dimensions. // Setting a size of 0,0 will disable this constraint. export function WindowSetMaxSize(width: number, height: number): void; // [WindowSetMinSize](https://wails.io/docs/reference/runtime/window#windowsetminsize) // Sets the minimum window size. Will resize the window if the window is currently smaller than the given dimensions. // Setting a size of 0,0 will disable this constraint. export function WindowSetMinSize(width: number, height: number): void; // [WindowSetPosition](https://wails.io/docs/reference/runtime/window#windowsetposition) // Sets the window position relative to the monitor the window is currently on. export function WindowSetPosition(x: number, y: number): void; // [WindowGetPosition](https://wails.io/docs/reference/runtime/window#windowgetposition) // Gets the window position relative to the monitor the window is currently on. export function WindowGetPosition(): Promise; // [WindowHide](https://wails.io/docs/reference/runtime/window#windowhide) // Hides the window. export function WindowHide(): void; // [WindowShow](https://wails.io/docs/reference/runtime/window#windowshow) // Shows the window, if it is currently hidden. export function WindowShow(): void; // [WindowMaximise](https://wails.io/docs/reference/runtime/window#windowmaximise) // Maximises the window to fill the screen. export function WindowMaximise(): void; // [WindowToggleMaximise](https://wails.io/docs/reference/runtime/window#windowtogglemaximise) // Toggles between Maximised and UnMaximised. export function WindowToggleMaximise(): void; // [WindowUnmaximise](https://wails.io/docs/reference/runtime/window#windowunmaximise) // Restores the window to the dimensions and position prior to maximising. export function WindowUnmaximise(): void; // [WindowIsMaximised](https://wails.io/docs/reference/runtime/window#windowismaximised) // Returns the state of the window, i.e. whether the window is maximised or not. export function WindowIsMaximised(): Promise; // [WindowMinimise](https://wails.io/docs/reference/runtime/window#windowminimise) // Minimises the window. export function WindowMinimise(): void; // [WindowUnminimise](https://wails.io/docs/reference/runtime/window#windowunminimise) // Restores the window to the dimensions and position prior to minimising. export function WindowUnminimise(): void; // [WindowIsMinimised](https://wails.io/docs/reference/runtime/window#windowisminimised) // Returns the state of the window, i.e. whether the window is minimised or not. export function WindowIsMinimised(): Promise; // [WindowIsNormal](https://wails.io/docs/reference/runtime/window#windowisnormal) // Returns the state of the window, i.e. whether the window is normal or not. export function WindowIsNormal(): Promise; // [WindowSetBackgroundColour](https://wails.io/docs/reference/runtime/window#windowsetbackgroundcolour) // Sets the background colour of the window to the given RGBA colour definition. This colour will show through for all transparent pixels. export function WindowSetBackgroundColour(R: number, G: number, B: number, A: number): void; // [ScreenGetAll](https://wails.io/docs/reference/runtime/window#screengetall) // Gets the all screens. Call this anew each time you want to refresh data from the underlying windowing system. export function ScreenGetAll(): Promise; // [BrowserOpenURL](https://wails.io/docs/reference/runtime/browser#browseropenurl) // Opens the given URL in the system browser. export function BrowserOpenURL(url: string): void; // [Environment](https://wails.io/docs/reference/runtime/intro#environment) // Returns information about the environment export function Environment(): Promise; // [Quit](https://wails.io/docs/reference/runtime/intro#quit) // Quits the application. export function Quit(): void; // [Hide](https://wails.io/docs/reference/runtime/intro#hide) // Hides the application. export function Hide(): void; // [Show](https://wails.io/docs/reference/runtime/intro#show) // Shows the application. export function Show(): void; // [ClipboardGetText](https://wails.io/docs/reference/runtime/clipboard#clipboardgettext) // Returns the current text stored on clipboard export function ClipboardGetText(): Promise; // [ClipboardSetText](https://wails.io/docs/reference/runtime/clipboard#clipboardsettext) // Sets a text on the clipboard export function ClipboardSetText(text: string): Promise; // [OnFileDrop](https://wails.io/docs/reference/runtime/draganddrop#onfiledrop) // OnFileDrop listens to drag and drop events and calls the callback with the coordinates of the drop and an array of path strings. export function OnFileDrop(callback: (x: number, y: number ,paths: string[]) => void, useDropTarget: boolean) :void // [OnFileDropOff](https://wails.io/docs/reference/runtime/draganddrop#dragandddropoff) // OnFileDropOff removes the drag and drop listeners and handlers. export function OnFileDropOff() :void // Check if the file path resolver is available export function CanResolveFilePaths(): boolean; // Resolves file paths for an array of files export function ResolveFilePaths(files: File[]): void ================================================ FILE: GoEasyDesigner/frontend/wailsjs/runtime/runtime.js ================================================ /* _ __ _ __ | | / /___ _(_) /____ | | /| / / __ `/ / / ___/ | |/ |/ / /_/ / / (__ ) |__/|__/\__,_/_/_/____/ The electron alternative for Go (c) Lea Anthony 2019-present */ export function LogPrint(message) { window.runtime.LogPrint(message); } export function LogTrace(message) { window.runtime.LogTrace(message); } export function LogDebug(message) { window.runtime.LogDebug(message); } export function LogInfo(message) { window.runtime.LogInfo(message); } export function LogWarning(message) { window.runtime.LogWarning(message); } export function LogError(message) { window.runtime.LogError(message); } export function LogFatal(message) { window.runtime.LogFatal(message); } export function EventsOnMultiple(eventName, callback, maxCallbacks) { return window.runtime.EventsOnMultiple(eventName, callback, maxCallbacks); } export function EventsOn(eventName, callback) { return EventsOnMultiple(eventName, callback, -1); } export function EventsOff(eventName, ...additionalEventNames) { return window.runtime.EventsOff(eventName, ...additionalEventNames); } export function EventsOnce(eventName, callback) { return EventsOnMultiple(eventName, callback, 1); } export function EventsEmit(eventName) { let args = [eventName].slice.call(arguments); return window.runtime.EventsEmit.apply(null, args); } export function WindowReload() { window.runtime.WindowReload(); } export function WindowReloadApp() { window.runtime.WindowReloadApp(); } export function WindowSetAlwaysOnTop(b) { window.runtime.WindowSetAlwaysOnTop(b); } export function WindowSetSystemDefaultTheme() { window.runtime.WindowSetSystemDefaultTheme(); } export function WindowSetLightTheme() { window.runtime.WindowSetLightTheme(); } export function WindowSetDarkTheme() { window.runtime.WindowSetDarkTheme(); } export function WindowCenter() { window.runtime.WindowCenter(); } export function WindowSetTitle(title) { window.runtime.WindowSetTitle(title); } export function WindowFullscreen() { window.runtime.WindowFullscreen(); } export function WindowUnfullscreen() { window.runtime.WindowUnfullscreen(); } export function WindowIsFullscreen() { return window.runtime.WindowIsFullscreen(); } export function WindowGetSize() { return window.runtime.WindowGetSize(); } export function WindowSetSize(width, height) { window.runtime.WindowSetSize(width, height); } export function WindowSetMaxSize(width, height) { window.runtime.WindowSetMaxSize(width, height); } export function WindowSetMinSize(width, height) { window.runtime.WindowSetMinSize(width, height); } export function WindowSetPosition(x, y) { window.runtime.WindowSetPosition(x, y); } export function WindowGetPosition() { return window.runtime.WindowGetPosition(); } export function WindowHide() { window.runtime.WindowHide(); } export function WindowShow() { window.runtime.WindowShow(); } export function WindowMaximise() { window.runtime.WindowMaximise(); } export function WindowToggleMaximise() { window.runtime.WindowToggleMaximise(); } export function WindowUnmaximise() { window.runtime.WindowUnmaximise(); } export function WindowIsMaximised() { return window.runtime.WindowIsMaximised(); } export function WindowMinimise() { window.runtime.WindowMinimise(); } export function WindowUnminimise() { window.runtime.WindowUnminimise(); } export function WindowSetBackgroundColour(R, G, B, A) { window.runtime.WindowSetBackgroundColour(R, G, B, A); } export function ScreenGetAll() { return window.runtime.ScreenGetAll(); } export function WindowIsMinimised() { return window.runtime.WindowIsMinimised(); } export function WindowIsNormal() { return window.runtime.WindowIsNormal(); } export function BrowserOpenURL(url) { window.runtime.BrowserOpenURL(url); } export function Environment() { return window.runtime.Environment(); } export function Quit() { window.runtime.Quit(); } export function Hide() { window.runtime.Hide(); } export function Show() { window.runtime.Show(); } export function ClipboardGetText() { return window.runtime.ClipboardGetText(); } export function ClipboardSetText(text) { return window.runtime.ClipboardSetText(text); } /** * Callback for OnFileDrop returns a slice of file path strings when a drop is finished. * * @export * @callback OnFileDropCallback * @param {number} x - x coordinate of the drop * @param {number} y - y coordinate of the drop * @param {string[]} paths - A list of file paths. */ /** * OnFileDrop listens to drag and drop events and calls the callback with the coordinates of the drop and an array of path strings. * * @export * @param {OnFileDropCallback} callback - Callback for OnFileDrop returns a slice of file path strings when a drop is finished. * @param {boolean} [useDropTarget=true] - Only call the callback when the drop finished on an element that has the drop target style. (--wails-drop-target) */ export function OnFileDrop(callback, useDropTarget) { return window.runtime.OnFileDrop(callback, useDropTarget); } /** * OnFileDropOff removes the drag and drop listeners and handlers. */ export function OnFileDropOff() { return window.runtime.OnFileDropOff(); } export function CanResolveFilePaths() { return window.runtime.CanResolveFilePaths(); } export function ResolveFilePaths(files) { return window.runtime.ResolveFilePaths(files); } ================================================ FILE: GoEasyDesigner/go.mod ================================================ module changeme go 1.22.0 toolchain go1.23.8 require ( github.com/duolabmeng6/goefun v1.3.6 github.com/fsnotify/fsnotify v1.8.0 github.com/ncruces/zenity v0.10.10 github.com/wailsapp/wails/v2 v2.10.1 ) require ( github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible // indirect github.com/akavel/rsrc v0.10.2 // indirect github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 // indirect github.com/bep/debounce v1.2.1 // indirect github.com/dchest/jsmin v0.0.0-20220218165748-59f39799265f // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gogf/gf/v2 v2.4.1 // indirect github.com/google/go-cmp v0.5.8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect github.com/joho/godotenv v1.5.1 // indirect github.com/josephspurrier/goversioninfo v1.4.0 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/kr/text v0.2.0 // indirect github.com/labstack/echo/v4 v4.13.3 // indirect github.com/labstack/gommon v0.4.2 // indirect github.com/leaanthony/go-ansi-parser v1.6.1 // indirect github.com/leaanthony/gosod v1.0.4 // indirect github.com/leaanthony/slicer v1.6.0 // indirect github.com/leaanthony/u v1.1.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.8.0 // indirect github.com/samber/lo v1.49.1 // indirect github.com/tkrajina/go-reflector v0.5.8 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect github.com/wailsapp/go-webview2 v1.0.19 // indirect github.com/wailsapp/mimetype v1.4.1 // indirect go.opentelemetry.io/otel v1.7.0 // indirect go.opentelemetry.io/otel/trace v1.7.0 // indirect golang.org/x/crypto v0.33.0 // indirect golang.org/x/image v0.12.0 // indirect golang.org/x/net v0.35.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect ) ================================================ FILE: GoEasyDesigner/go.sum ================================================ github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I= github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw= github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 h1:OYA+5W64v3OgClL+IrOD63t4i/RW7RqrAVl9LTZ9UqQ= github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394/go.mod h1:Q8n74mJTIgjX4RBBcHnJ05h//6/k6foqmgE45jTQtxg= github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY= github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= github.com/clbanning/mxj/v2 v2.5.5 h1:oT81vUeEiQQ/DcHbzSytRngP6Ky9O+L+0Bw0zSJag9E= github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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/dchest/jsmin v0.0.0-20220218165748-59f39799265f h1:OGqDDftRTwrvUoL6pOG7rYTmWsTCvyEWFsMjg+HcOaA= github.com/dchest/jsmin v0.0.0-20220218165748-59f39799265f/go.mod h1:Dv9D0NUlAsaQcGQZa5kc5mqR9ua72SmA8VXi4cd+cBw= github.com/duolabmeng6/goefun v1.3.6 h1:ljjoYtr6P1TxEwPwNFYmya3FHXCJqwdYBayDGV1CL+k= github.com/duolabmeng6/goefun v1.3.6/go.mod h1:mg175FgUQ0tWPSfuobtIIaL7el8ZOYyLmJJi28dXOTg= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= github.com/ganlvtech/go-exportable-cookiejar v0.0.0-20181231191301-34af33d7487e h1:zF8BCigEVAtW07yhpupU1FQ8DEzINaJ6HVfPUQY/uqY= github.com/ganlvtech/go-exportable-cookiejar v0.0.0-20181231191301-34af33d7487e/go.mod h1:EdkZC5tfJxfNZYtycwAG0adNOJRpGUyIhLcG6DvhyU0= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogf/gf/v2 v2.4.1 h1:snsuvDhNFiRoAuWBbKfIIng0KyMaRA87Qr03GLir5j8= github.com/gogf/gf/v2 v2.4.1/go.mod h1:tsbmtwcAl2chcYoq/fP9W2FZf06aw4i89X34nbSHo9Y= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grokify/html-strip-tags-go v0.0.1 h1:0fThFwLbW7P/kOiTBs03FsJSV9RM2M/Q/MOnCQxKMo0= github.com/grokify/html-strip-tags-go v0.0.1/go.mod h1:2Su6romC5/1VXOQMaWL2yb618ARB8iVo6/DR99A6d78= 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/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/josephspurrier/goversioninfo v1.4.0 h1:Puhl12NSHUSALHSuzYwPYQkqa2E1+7SrtAPJorKK0C8= github.com/josephspurrier/goversioninfo v1.4.0/go.mod h1:JWzv5rKQr+MmW+LvM412ToT/IkYDZjaclF2pKDss8IY= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labstack/echo/v4 v4.13.3 h1:pwhpCPrTl5qry5HRdM5FwdXnhXSLSY+WE+YQSeCaafY= github.com/labstack/echo/v4 v4.13.3/go.mod h1:o90YNEeQWjDozo584l7AwhJMHN0bOC4tAfg+Xox9q5g= github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= 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.6.1 h1:xd8bzARK3dErqkPFtoF9F3/HgN8UQk0ed1YDKpEz01A= github.com/leaanthony/go-ansi-parser v1.6.1/go.mod h1:+vva/2y4alzVmmIEpk9QDhA7vLC5zKDTRwfZGOp3IWU= github.com/leaanthony/gosod v1.0.4 h1:YLAbVyd591MRffDgxUOU1NwLhT9T1/YiwjKZpkNFeaI= github.com/leaanthony/gosod v1.0.4/go.mod h1:GKuIL0zzPj3O1SdWQOdgURSuhkF+Urizzxh26t9f1cw= 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/leaanthony/u v1.1.1 h1:TUFjwDGlNX+WuwVEzDqQwC2lOv0P4uhTQw7CMFdiK7M= github.com/leaanthony/u v1.1.1/go.mod h1:9+o6hejoRljvZ3BzdYlVL0JYCwtnAsVuN9pVTQcaRfI= github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/matryer/is v1.4.1 h1:55ehd8zaGABKLXQUe2awZ99BD/PTc2ls+KV/dXphgEQ= github.com/matryer/is v1.4.1/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= 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.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/ncruces/zenity v0.10.10 h1:V/rtAhr5QLdDThahOkm7EYlnw4RuEsf7oN+Xb6lz1j0= github.com/ncruces/zenity v0.10.10/go.mod h1:k3k4hJ4Wt1MUbeV48y+Gbl7Fp9skfGszN/xtKmuvhZk= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= 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/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844 h1:GranzK4hv1/pqTIhMTXt2X8MmMOuH3hMeUR0o9SP5yc= github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844/go.mod h1:T1TLSfyWVBRXVGzWd0o9BI4kfoO9InEgfQe4NV3mLz8= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew= github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tkrajina/go-reflector v0.5.8 h1:yPADHrwmUbMq4RGEyaOUpz2H90sRsETNVpjzo3DLVQQ= github.com/tkrajina/go-reflector v0.5.8/go.mod h1:ECbqLgccecY5kPmPmXg1MrHW585yMcDkVl6IvJe64T4= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= 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.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/wailsapp/go-webview2 v1.0.19 h1:7U3QcDj1PrBPaxJNCui2k1SkWml+Q5kvFUFyTImA6NU= github.com/wailsapp/go-webview2 v1.0.19/go.mod h1:qJmWAmAmaniuKGZPWwne+uor3AHMB5PFhqiK0Bbj8kc= 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.10.1 h1:QWHvWMXII2nI/nXz77gpPG8P3ehl6zKe+u4su5BWIns= github.com/wailsapp/wails/v2 v2.10.1/go.mod h1:zrebnFV6MQf9kx8HI4iAv63vsR5v67oS7GTEZ7Pz1TY= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM= go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0= go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o= go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/image v0.12.0 h1:w13vZbU4o5rKOFFR8y7M+c4A5jXDC0uXTdHYRP8X2DQ= golang.org/x/image v0.12.0/go.mod h1:Lu90jvHG7GfemOIcldsh9A2hS01ocl6oNO7ype5mEnk= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/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= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8-0.20211105212822-18b340fc7af2/go.mod h1:EFNZuWvGYxIRUEX+K8UmCFwYmZjqcrnq15ZuVldZkZ0= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= ================================================ FILE: GoEasyDesigner/main.go ================================================ package main import ( "changeme/mymodel" "embed" "fmt" "os" "strings" "github.com/wailsapp/wails/v2" "github.com/wailsapp/wails/v2/pkg/options" "github.com/wailsapp/wails/v2/pkg/options/assetserver" ) //go:embed all:frontend/dist var assets embed.FS func main() { //获取传入的命令行参数 args := os.Args // Create an instance of the app structure app := NewApp() if len(args) > 2 { 设计文件路径 := args[1] 插件端口号 := args[2] app.S设计文件路径 = strings.Replace(设计文件路径, "文件路径=", "", 1) app.IDE插件端口号 = strings.Replace(插件端口号, "port=", "", 1) fmt.Println("设计文件路径", 设计文件路径) fmt.Println("插件端口号", 插件端口号) } version := mymodel.Version // Create application with options err := wails.Run(&options.App{ Title: "GoEasyDesigner 窗口设计师 " + version, Width: 1280, Height: 768, AssetServer: &assetserver.Options{ Assets: assets, }, BackgroundColour: &options.RGBA{R: 255, G: 255, B: 255, A: 1}, OnStartup: app.startup, Bind: []interface{}{ app, }, }) if err != nil { println("Error:", err.Error()) } } ================================================ FILE: GoEasyDesigner/myfunc/myfunc.go ================================================ package myfunc import ( "fmt" "github.com/duolabmeng6/goefun/ecore" . "github.com/duolabmeng6/goefun/ehttp" "regexp" "runtime" "strings" ) func InsertCode(jscode string, insertionCode string) string { // 获取函数名称 窗口.按钮3被点击 = function () { 截取 按钮3被点击 函数名称 := insertionCode[strings.Index(insertionCode, ".")+1 : strings.Index(insertionCode, "=")] // 检查是否已经存在 if strings.Contains(jscode, 函数名称) { return jscode } // Define the regular expression pattern pattern := `(//事件函数位置不要删除[^\n]*)` // Compile the regular expression re := regexp.MustCompile(pattern) // Replace the matching pattern with the insertion code result := re.ReplaceAllString(jscode, insertionCode+"$1") return result } func E发送跳转代码到ide(插件URL地址 string, 文件路径 string, 跳转位置 int) bool { 文件名 := ecore.E文件取文件名(文件路径, true) 文件名 = ecore.URL编码(文件名) 跳转URL := 插件URL地址 + "/myserver?type=target&file=" + 文件名 + "&def=" + ecore.E到文本(跳转位置) ecore.E调试输出("调用pycharm代码跳转", 跳转URL) eh := NewHttp() 返回文本, err := eh.Get(跳转URL) println("调用pycharm代码跳转", 返回文本) if err != nil { println("调用pycharm代码跳转", err.Error()) return false } return true } // 计算跳转位置 func 计算跳转位置(文件内容 string, 跳转字符串 string) (int, int, bool) { 跳转位置行 := 0 跳转位置列 := 0 if 文件内容 != "" && 跳转字符串 != "" { index := strings.Index(文件内容, 跳转字符串) if index != -1 { lines := strings.Split(文件内容, "\n") current := 0 for i, line := range lines { lineLength := len(line) + 1 // 加 1 是为了算上换行符 if current+lineLength > index { 跳转位置行 = i + 1 // 行号从 1 开始 跳转位置列 = index - current // 列号从 0 开始 return 跳转位置行, 跳转位置列, true } current += lineLength } } else { ecore.E调试输出("未找到跳转字符串", 跳转字符串) return 0, 0, false } } else { ecore.E调试输出("文件内容或跳转字符串为空", 跳转字符串) return 0, 0, false } return 0, 0, false } func E发送跳转代码到ide_命令行方式(ide string, 文件路径 string, 跳转字符串 string) bool { 文件内容 := ecore.E读入文本(文件路径) 跳转位置行, 跳转位置列, 成功 := 计算跳转位置(文件内容, 跳转字符串) if !成功 { return false } 跳转URL := "" if ide == "vscode" { 跳转URL = fmt.Sprintf("code -g %s:%d:%d", 文件路径, 跳转位置行, 跳转位置列) } else if ide == "goland" { 跳转URL = fmt.Sprintf("goland --line %d %s", 跳转位置行, 文件路径) } else if ide == "webstorm" { 跳转URL = fmt.Sprintf("webstorm --line %d %s", 跳转位置行, 文件路径) } else if ide == "cursor" { 跳转URL = fmt.Sprintf("cursor -g %s:%d:%d", 文件路径, 跳转位置行, 跳转位置列) } else { ecore.E调试输出("未知的IDE", ide) } ecore.E调试输出("调用代码跳转", 跳转URL) ecore.E运行_mac(跳转URL, true, func(line string) { println(line) }) return true } func E运行命令(执行目录 string, 执行命令 string, 回调函数 func(回显内容 string)) string { 命令 := "cd " + 执行目录 + " && " + 执行命令 println("执行命令", 命令) return ecore.E运行_mac(命令, true, func(line string) { //println(line) 回调函数(line) }) } func E是否为window系统() bool { return runtime.GOOS == "windows" } func E是否为macOS系统() bool { return runtime.GOOS == "darwin" } func E是否为UbuntuLinux系统() bool { return runtime.GOOS == "linux" } ================================================ FILE: GoEasyDesigner/myfunc/myfunc_test.go ================================================ package myfunc import ( "fmt" "regexp" "testing" ) func TestInsertCode(t *testing.T) { jscode := ` export function 绑定窗口事件(窗口) { 窗口.窗口创建完毕 = function () { console.log("窗口创建完毕") } 窗口.按钮1被点击 = function () { console.log("按钮1被点击了") 窗口.组件.按钮1.标题 = "祖国你好222" } //事件函数位置不要删除 窗口.按钮1被点击xxx = function () { console.log("按钮1被点击了") 窗口.组件.按钮1.标题 = "祖国你好222" } } ` insertionCode := ` 窗口.按钮2被点击 = function () { console.log("按钮2被点击") } ` result := InsertCode(jscode, insertionCode) fmt.Println(result) insertionCode2 := ` 窗口.按钮3被点击 = function () { console.log("按钮3被点击") } ` result2 := InsertCode(result, insertionCode2) fmt.Println(result2) } func TestE发送跳转代码到ide(t *testing.T) { 插件URL地址 := "http://127.0.0.1:13403" 文件路径 := "C:\\eview\\v2\\wails-demo\\frontend\\src\\event.js" 跳转位置 := 1 E发送跳转代码到ide(插件URL地址, 文件路径, 跳转位置) } func TestE发送跳转代码到ide_命令行方式(t *testing.T) { 文件路径 := "/Users/ll/Documents/GitHub/GoEasyDesigner/GoEasyDesigner/myfunc/myfunc_test.go" //E发送跳转代码到ide_vscode("code",文件路径, "wails dev") E发送跳转代码到ide_命令行方式("cursor", 文件路径, "wails dev") } func TestE运行命令(t *testing.T) { 项目根目录 := "/Users/ll/Documents/GitHub/GoEasyDesigner/wails-demo" 执行命令 := "wails dev" E运行命令(项目根目录, 执行命令, func(回显内容 string) { regex := regexp.MustCompile("\x1b\\[[0-9;]*m") cleaned := regex.ReplaceAllString(回显内容, "") println("回显内容", cleaned) }) } func TestE运行命令2(t *testing.T) { //mymodel.E检查更新() } ================================================ FILE: GoEasyDesigner/mymodel/Version.go ================================================ package mymodel var Version = `v0.0.1` ================================================ FILE: GoEasyDesigner/mymodel/git项目操作.go ================================================ package mymodel import ( "fmt" "github.com/duolabmeng6/goefun/ecore" "github.com/ncruces/zenity" ) func E下载github项目(github项目地址, 保存目录 string) error { // github项目地址 = https://github.com/duolabmeng6/wails-template-vue-go-easy // 保存目录 = d:/test // 我希望通过https下载github的项目到指定的目录上 //修改 GitHub 项目地址以指向 ZIP 压缩包 //检查github项目地址 是否包含https:// fmt.Println("下载URL", github项目地址) name := ecore.E文件取文件名(github项目地址, false) savePath := 保存目录 + "/" + name + "_project.zip" 删除文件 := false if ecore.E判断文本(github项目地址, "https://") { zipURL := github项目地址 + "/archive/refs/heads/main.zip" progress, _ := zenity.Progress( zenity.Title("下载项目中..."), zenity.MaxValue(100), // 设置最大进度值为100 ) progress.Text("正在下载...") err := E下载带进度回调(zipURL, savePath, func(进度 float64) { fmt.Println("正在下载...", 进度) progress.Text("正在下载..." + fmt.Sprintf("%.2f", 进度) + "%") progress.Value(int(进度)) }) if err != nil { fmt.Println("下载出错:", err) zenity.Info("下载错误,检查你的网络") progress.Close() return err } progress.Text("下载完成 即将完成更新") if progress.Close() != nil { fmt.Println("点击了取消") return nil } fmt.Println("下载完成了") 删除文件 = true } else { //检查文件是否存在 if !ecore.E文件是否存在(github项目地址) { fmt.Println("文件不存在") return nil } savePath = github项目地址 } if !zip解压2(savePath, 保存目录, nil, func(解压路径 string) string { println("解压路径", 解压路径) //wails-template-vue-go-easy-main/.gitignore // 删除前面的文件夹 解压路径 = ecore.StrCut(解压路径, "/$") return 解压路径 }) { fmt.Println("解压失败") return nil } if 删除文件 { ecore.E删除文件(savePath) } return nil } ================================================ FILE: GoEasyDesigner/mymodel/git项目操作_test.go ================================================ package mymodel import ( "github.com/duolabmeng6/goefun/ecore" "testing" ) func TestE下载github项目(t *testing.T) { E下载github项目("https://github.com/duolabmeng6/wails-template-vue-go-easy", "d:/test/app") //https://github.com/duolabmeng6/wails-template-vue-go-easy/archive/refs/heads/main.zip } func TestE搜索design文件(t *testing.T) { //func E文件枚举(欲寻找的目录 string, 欲寻找的文件名 string, files *[]string, 是否带路径 bool, 是否遍历子目录 bool) error { var files []string ecore.E文件枚举("C:\\eview\\project\\myporject", "design.json", &files, true, true) for _, v := range files { println(v) } } ================================================ FILE: GoEasyDesigner/mymodel/文件监视模块.go ================================================ package mymodel import ( "fmt" "github.com/fsnotify/fsnotify" "sync" ) type E文件监视模块接口 interface { 开始() error 停止() error 清空() error 添加监视文件(文件路径 string, 处理函数 func(文件路径 string)) error 删除监视文件(文件路径 string) error } type E文件监视模块 struct { watcher *fsnotify.Watcher 监视文件列表 map[string]func(文件路径 string) mutex sync.Mutex } func New文件监视模块() (*E文件监视模块, error) { watcher, err := fsnotify.NewWatcher() if err != nil { return nil, err } m := &E文件监视模块{ watcher: watcher, 监视文件列表: make(map[string]func(文件路径 string)), } return m, nil } func (m *E文件监视模块) E开始() error { done := make(chan bool) go func() { for { select { case event, ok := <-m.watcher.Events: if !ok { return } if event.Op&fsnotify.Write == fsnotify.Write { m.mutex.Lock() 处理函数, 存在 := m.监视文件列表[event.Name] m.mutex.Unlock() if 存在 { fmt.Println("文件被修改:", event.Name) 处理函数(event.Name) } } case err, ok := <-m.watcher.Errors: if !ok { return } fmt.Println("错误:", err) } } }() //err := m.watcher.Add("/path/to/default/file.txt") // 可以添加默认监视的文件路径 //if err != nil { // return err //} <-done return nil } func (m *E文件监视模块) E停止() error { return m.watcher.Close() } func (m *E文件监视模块) E清空() error { m.mutex.Lock() defer m.mutex.Unlock() for 文件路径 := range m.监视文件列表 { err := m.watcher.Remove(文件路径) if err != nil { return err } } m.监视文件列表 = make(map[string]func(文件路径 string)) return nil } func (m *E文件监视模块) E添加监视文件(文件路径 string, 处理函数 func(文件路径 string)) error { m.mutex.Lock() defer m.mutex.Unlock() //检查是否已经添加过 _, 存在 := m.监视文件列表[文件路径] if 存在 { return nil } err := m.watcher.Add(文件路径) if err != nil { return err } m.监视文件列表[文件路径] = 处理函数 return nil } func (m *E文件监视模块) E删除监视文件(文件路径 string) error { m.mutex.Lock() defer m.mutex.Unlock() err := m.watcher.Remove(文件路径) if err != nil { return err } delete(m.监视文件列表, 文件路径) return nil } ================================================ FILE: GoEasyDesigner/mymodel/文件监视模块_test.go ================================================ package mymodel import ( "fmt" "testing" "time" ) func TestE文件监视模块(t *testing.T) { 文件监视, _ := New文件监视模块() go func() { 文件监视.E开始() }() 文件监视.E添加监视文件("/Users/ll/Documents/GitHub/projection_screen_tv/easyToTV/frontend/src/win/event.js", func(文件路径 string) { fmt.Println("文件被修改,触发处理函数:", 文件路径) // 在这里可以添加通知你的程序的逻辑 }) 文件监视.E添加监视文件("/Users/ll/Documents/GitHub/projection_screen_tv/easyToTV/frontend/src/App.vue", func(文件路径 string) { fmt.Println("文件被修改,触发处理函数:", 文件路径) }) time.Sleep(10 * time.Second) println("删除监视") 文件监视.E删除监视文件("/Users/ll/Documents/GitHub/projection_screen_tv/easyToTV/frontend/src/App.vue") time.Sleep(60 * time.Second) } ================================================ FILE: GoEasyDesigner/mymodel/自动更新模块.go ================================================ package mymodel import ( "archive/zip" "encoding/json" "fmt" "github.com/duolabmeng6/goefun/ecore" "github.com/ncruces/zenity" "io" "net/http" "os" "os/exec" "os/user" "path/filepath" "runtime" "strings" "time" ) var 应用名称 = "GoEasyDesigner" var owner = "duolabmeng6" // GitHub 仓库的所有者 var repo = "GoEasyDesigner" // GitHub 仓库的名称 type GithubJSONData []struct { URL string `json:"url"` AssetsURL string `json:"assets_url"` UploadURL string `json:"upload_url"` HTMLURL string `json:"html_url"` ID int `json:"id"` Author struct { Login string `json:"login"` ID int `json:"id"` NodeID string `json:"node_id"` AvatarURL string `json:"avatar_url"` GravatarID string `json:"gravatar_id"` URL string `json:"url"` HTMLURL string `json:"html_url"` FollowersURL string `json:"followers_url"` FollowingURL string `json:"following_url"` GistsURL string `json:"gists_url"` StarredURL string `json:"starred_url"` SubscriptionsURL string `json:"subscriptions_url"` OrganizationsURL string `json:"organizations_url"` ReposURL string `json:"repos_url"` EventsURL string `json:"events_url"` ReceivedEventsURL string `json:"received_events_url"` Type string `json:"type"` SiteAdmin bool `json:"site_admin"` } `json:"author"` NodeID string `json:"node_id"` TagName string `json:"tag_name"` TargetCommitish string `json:"target_commitish"` Name string `json:"name"` Draft bool `json:"draft"` Prerelease bool `json:"prerelease"` CreatedAt time.Time `json:"created_at"` PublishedAt time.Time `json:"published_at"` Assets []struct { URL string `json:"url"` ID int `json:"id"` NodeID string `json:"node_id"` Name string `json:"name"` Label string `json:"label"` Uploader struct { Login string `json:"login"` ID int `json:"id"` NodeID string `json:"node_id"` AvatarURL string `json:"avatar_url"` GravatarID string `json:"gravatar_id"` URL string `json:"url"` HTMLURL string `json:"html_url"` FollowersURL string `json:"followers_url"` FollowingURL string `json:"following_url"` GistsURL string `json:"gists_url"` StarredURL string `json:"starred_url"` SubscriptionsURL string `json:"subscriptions_url"` OrganizationsURL string `json:"organizations_url"` ReposURL string `json:"repos_url"` EventsURL string `json:"events_url"` ReceivedEventsURL string `json:"received_events_url"` Type string `json:"type"` SiteAdmin bool `json:"site_admin"` } `json:"uploader"` ContentType string `json:"content_type"` State string `json:"state"` Size int `json:"size"` DownloadCount int `json:"download_count"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` BrowserDownloadURL string `json:"browser_download_url"` } `json:"assets"` TarballURL string `json:"tarball_url"` ZipballURL string `json:"zipball_url"` Body string `json:"body"` } type ReleaseInfo struct { Version string `json:"版本号"` DownloadURLs []string `json:"下载地址列表"` MacDownloadURL string `json:"mac下载地址"` WinDownloadURL string `json:"win下载地址"` Changelog string `json:"更新内容"` ReleaseTime string `json:"发布时间"` } func E获取Github仓库Releases版本和更新内容() *ReleaseInfo { //owner := "duolabmeng6" // GitHub 仓库的所有者 //repo := "GoEasyDesigner" // GitHub 仓库的名称 var urls []string _url := fmt.Sprintf("https://api.github.com/repos/%s/%s/releases", owner, repo) urls = append(urls, _url) //_url = fmt.Sprintf("https://go.kenhong.com/releases_latest.json") //urls = append(urls, _url) // 访问urls中的内容 如果第一个访问失败了 就继续下一个 var resp *http.Response var err error for _, url := range urls { resp, err = http.Get(url) if err == nil { if resp.StatusCode != http.StatusOK { fmt.Println("请求失败:", resp.Status, url) continue } break } fmt.Println("请求失败:", err) } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { fmt.Println("读取响应失败:", err) return nil } //var err error //body := ecore.E读入文件("/Users/ll/Desktop/goproject/v3fanyi/mymodel/githubdata.json") var releases GithubJSONData err = json.Unmarshal(body, &releases) if err != nil { fmt.Println("解析响应失败:", err) return nil } if len(releases) < 0 { return nil } //latestRelease := releases[0] //version := latestRelease.TagName //fmt.Println("最新的 Release 版本号:", version) //fmt.Println("最新的 Release 版本号:", latestRelease.Body) //// 循环获取 文件名和下载地址 //for _, asset := range latestRelease.Assets { // fmt.Println(asset.Name, asset.BrowserDownloadURL) //} latestRelease := releases[0] version := latestRelease.TagName downloadURLs := make([]string, 0) macDownloadURL := "" winDownloadURL := "" // 获取文件名和下载地址 for _, asset := range latestRelease.Assets { downloadURLs = append(downloadURLs, asset.BrowserDownloadURL) //查找文本是否包含 macos.zip 和 .exe 不区分大小写 if strings.Contains(strings.ToLower(asset.Name), "macos.zip") { macDownloadURL = asset.BrowserDownloadURL } if strings.Contains(strings.ToLower(asset.Name), ".exe") { winDownloadURL = asset.BrowserDownloadURL } } releaseInfo := &ReleaseInfo{ Version: version, DownloadURLs: downloadURLs, MacDownloadURL: macDownloadURL, WinDownloadURL: winDownloadURL, Changelog: latestRelease.Body, ReleaseTime: ecore.E到时间(latestRelease.CreatedAt.String()).E时间到文本("Y-m-d H:i:s"), } return releaseInfo } func E下载带进度回调(下载地址 string, 文件保存路径 string, fc func(进度 float64)) error { resp, err := http.Get(下载地址) if err != nil { return err } defer resp.Body.Close() 父目录 := ecore.E文件取父目录(文件保存路径) if ecore.E文件是否存在(父目录) == false { ecore.E创建目录(父目录) } out, err := os.Create(文件保存路径) if err != nil { return err } defer out.Close() 下载文件大小 := resp.ContentLength 已下载大小 := int64(0) buf := make([]byte, 1024) 进度Ticker := time.Tick(time.Millisecond * 50) //降低刷新的频率 for { n, err := resp.Body.Read(buf) if n > 0 { _, err := out.Write(buf[:n]) if err != nil { return err } 已下载大小 += int64(n) 进度 := float64(已下载大小) / float64(下载文件大小) * 100 select { case <-进度Ticker: if fc != nil { fc(进度) // 调用进度回调函数 } default: // 不触发进度回调 } } if err != nil { if err != io.EOF { return err } break } } fc(100) // 调用进度回调函数 return nil } func E系统是否为window系统() bool { return strings.ToLower(runtime.GOOS) == "windows" } func E系统是否为linux系统() bool { return strings.ToLower(runtime.GOOS) == "linux" } func E系统是否为mac系统() bool { return strings.ToLower(runtime.GOOS) == "darwin" } // E是否为调试模式 // 判断当前的环境是否为编译后的程序 // 真为调试模式 // 假为编译后的程序 func E是否为调试模式() bool { debugMode := false if os.Getenv("DEBUG") != "" { debugMode = true } return debugMode } func 取自身MacOs应用路径() string { // 如果不处于编译状态反馈空 编译后路径, err := os.Executable() //println("编译后路径", 编译后路径) if err != nil { return "" } // 调试模式下的路径 //编译后路径 = "/Users/ll/Desktop/goproject/v3fanyi/bin/qoq.app/Contents/MacOS/qoq" // 编译后路径 取父目录 编译后路径 = 编译后路径[:strings.LastIndex(编译后路径, "/")] app目录 := 编译后路径[:strings.LastIndex(编译后路径, "/")] app目录 = app目录[:strings.LastIndex(app目录, "/")] 父目录名称 := 编译后路径[strings.LastIndex(编译后路径, "/")+1:] if 父目录名称 == "MacOS" { return app目录 } else { return "" } } func E更新自己MacOS应用(资源压缩包 string, 应用名称 string) (bool, string) { //资源压缩包 = "/Users/ll/Downloads/GoEasyDesigner_MacOS.zip" //应用名称 = "GoEasyDesigner.app" //println("资源压缩包", 资源压缩包) //println("应用名称", 应用名称) MacOs应用路径 := 取自身MacOs应用路径() //fmt.Println("MacOs应用路径", MacOs应用路径) //MacOs应用路径 := "/Users/ll/Downloads/" + 应用名称 if MacOs应用路径 != "" { app目录父目录 := MacOs应用路径[:strings.LastIndex(MacOs应用路径, "/")] fmt.Printf("资源压缩包 %s app目录父目录%s MacOs应用路径%s \r\n", 资源压缩包, app目录父目录, MacOs应用路径) if MacOs应用路径 != "" { 解压结果 := zip解压(资源压缩包, app目录父目录, []string{应用名称 + "/Contents/"}) println("解压结果", 解压结果) // 解压完成后删除压缩包 //os.Remove(资源压缩包) MacOs应用路径 = filepath.Join(app目录父目录, 应用名称) // QApplication.quit() 应用名称 = 应用名称[:strings.LastIndex(应用名称, ".")] 运行命令 := fmt.Sprintf("killall %s && open -n -a %s", 应用名称, MacOs应用路径) println("运行命令", 运行命令) cmd := exec.Command("sh", "-c", 运行命令) err := cmd.Run() if err != nil { fmt.Println(err) return false, "killall失败 请自己重启应用" } return true, MacOs应用路径 } } else { fmt.Println("非MacOS编译环境") return false, "非MacOS编译环境" } fmt.Println("应用路径为空") return false, "应用路径为空" } func zip解压(压缩包的路径 string, 解压目录 string, 允许解压路径前缀 []string) bool { // 保持权限和软连接解压 // 允许解压路径前缀 例如 ["my_app.app/Contents/"] 不填则全部解压 文件, err := zip.OpenReader(压缩包的路径) if err != nil { fmt.Println(err) return false } defer 文件.Close() for _, info := range 文件.File { // 检查目标文件路径是否在允许解压路径前缀中 if len(允许解压路径前缀) > 0 { 允许解压 := false for _, 路径 := range 允许解压路径前缀 { if strings.HasPrefix(info.Name, 路径) { 允许解压 = true } } if !允许解压 { continue } } 文件名 := info.Name 目标文件路径 := filepath.Join(解压目录, 文件名) 权限 := info.Mode().Perm() if info.Mode()&os.ModeSymlink != 0 { // 检查是否为软连接 软连接位置, err := readLink(info) if err != nil { fmt.Println(err) continue } // 检查目标文件路径是否存在,如果存在就删除,防止创建失败 if _, err := os.Lstat(目标文件路径); err == nil { os.Remove(目标文件路径) } err = os.Symlink(软连接位置, 目标文件路径) if err != nil { fmt.Println(err) } } else { // 删除文件重新解压 if _, err := os.Lstat(目标文件路径); err == nil { // 检查是否为文件 if !info.Mode().IsDir() { os.Remove(目标文件路径) } } err = extractFile(info, 目标文件路径) if err != nil { fmt.Println(err) } // 修改文件权限 if _, err := os.Lstat(目标文件路径); err == nil { err = os.Chmod(目标文件路径, 权限) if err != nil { fmt.Println(err) } } } } return true } func zip解压2(压缩包的路径 string, 解压目录 string, 允许解压路径前缀 []string, fn func(解压路径 string) string) bool { // 保持权限和软连接解压 // 允许解压路径前缀 例如 ["my_app.app/Contents/"] 不填则全部解压 文件, err := zip.OpenReader(压缩包的路径) if err != nil { fmt.Println(err) return false } defer 文件.Close() for _, info := range 文件.File { // 检查目标文件路径是否在允许解压路径前缀中 if len(允许解压路径前缀) > 0 { 允许解压 := false for _, 路径 := range 允许解压路径前缀 { if strings.HasPrefix(info.Name, 路径) { 允许解压 = true } } if !允许解压 { continue } } 文件名 := info.Name 文件名 = fn(文件名) 目标文件路径 := filepath.Join(解压目录, 文件名) 权限 := info.Mode().Perm() if info.Mode()&os.ModeSymlink != 0 { // 检查是否为软连接 软连接位置, err := readLink(info) if err != nil { fmt.Println(err) continue } // 检查目标文件路径是否存在,如果存在就删除,防止创建失败 if _, err := os.Lstat(目标文件路径); err == nil { os.Remove(目标文件路径) } err = os.Symlink(软连接位置, 目标文件路径) if err != nil { fmt.Println(err) } } else { // 删除文件重新解压 if _, err := os.Lstat(目标文件路径); err == nil { // 检查是否为文件 if !info.Mode().IsDir() { os.Remove(目标文件路径) } } err = extractFile(info, 目标文件路径) if err != nil { fmt.Println(err) } // 修改文件权限 if _, err := os.Lstat(目标文件路径); err == nil { err = os.Chmod(目标文件路径, 权限) if err != nil { fmt.Println(err) } } } } return true } func readLink(info *zip.File) (string, error) { file, err := info.Open() if err != nil { return "", err } defer file.Close() linkName := make([]byte, info.FileInfo().Size()) _, err = io.ReadFull(file, linkName) if err != nil { return "", err } return string(linkName), nil } func extractFile(info *zip.File, 目标文件路径 string) error { file, err := info.Open() if err != nil { return err } defer file.Close() if info.FileInfo().IsDir() { err = os.MkdirAll(目标文件路径, info.Mode()) if err != nil { return err } } else { writer, err := os.OpenFile(目标文件路径, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, info.Mode()) if err != nil { return err } defer writer.Close() _, err = io.Copy(writer, file) if err != nil { return err } } return nil } func E取用户下载文件夹路径() string { usr, err := user.Current() if err != nil { fmt.Println("pull:", err) return "" } 下载文件夹路径 := filepath.Join(usr.HomeDir, "Downloads") return 下载文件夹路径 } func 取自身路径Window() (string, error) { exe, err := os.Executable() if err != nil { return "", err } return exe, nil } func E更新自己Window应用(新exe资源文件路径 string) (bool, string) { // window更新方法 自身路径Window, _ := 取自身路径Window() //文件名 := filepath.Base(自身路径Window) // 检查文件是否存在 旧的文件名 := 自身路径Window + ".old.bak" if _, err := os.Stat(旧的文件名); err == nil { // 删除文件 os.Remove(旧的文件名) } os.Rename(自身路径Window, 旧的文件名) err := os.Rename(新exe资源文件路径, 自身路径Window) //zenity.Info("新exe资源文件路径:" + 新exe资源文件路径) //zenity.Info("自身路径Window:" + 自身路径Window) if err != nil { zenity.Info("新文件复制失败了 原因:" + err.Error()) return false, "" } // 结束自身运行然后重启自己 cmd := exec.Command(自身路径Window) cmd.Args = append(cmd.Args, os.Args[1:]...) cmd.Start() os.Exit(0) // 此处退出当前进程 return true, "" } func E检查更新_Mac() { 下载文件夹路径 := E取用户下载文件夹路径() info := E获取Github仓库Releases版本和更新内容() println(info.MacDownloadURL) println(下载文件夹路径) if info.Version == Version { err := zenity.Info("当前已经是最新版本") if err != nil { return } return } err := zenity.Question("软件有新版本可用,是否更新?\n当前版本:"+ Version+ "\n最新版本:"+info.Version, zenity.Title("更新提示"), zenity.Icon(zenity.QuestionIcon), zenity.OKLabel("更新"), zenity.CancelLabel("取消")) ecore.E调试输出(err) println("更新", err) if err != nil { return } progress, _ := zenity.Progress( zenity.Title("软件更新"), zenity.MaxValue(100), // 设置最大进度值为100 ) progress.Text("正在下载...") err = E下载带进度回调(info.MacDownloadURL, 下载文件夹路径+"/"+应用名称+"_MacOS.zip", func(进度 float64) { fmt.Println("正在下载...", 进度) progress.Text("正在下载..." + fmt.Sprintf("%.2f", 进度) + "%") progress.Value(int(进度)) }) if err != nil { fmt.Println("下载出错:", err) zenity.Info("下载错误,检查你的网络") progress.Close() return } progress.Text("下载完成 即将完成更新") if progress.Close() != nil { fmt.Println("点击了取消") return } fmt.Println("下载完成了") flag, s := E更新自己MacOS应用(下载文件夹路径+"/"+应用名称+"_MacOS.zip", 应用名称+".app") println(flag, s) } func E检查更新_window() { 下载文件夹路径, _ := 取自身路径Window() 下载文件夹路径 = ecore.E文件取父目录(下载文件夹路径) 新文件名 := 下载文件夹路径 + "/" + 应用名称 + "_latest.exe" info := E获取Github仓库Releases版本和更新内容() if info == nil { zenity.Info("网络原因无法获取更新信息") return } if info.Version == Version { err := zenity.Info("当前已经是最新版本") if err != nil { return } return } err := zenity.Question("软件有新版本可用,是否更新?\n当前版本:"+ Version+ "\n最新版本:"+info.Version, zenity.Title("更新提示"), zenity.Icon(zenity.QuestionIcon), zenity.OKLabel("更新"), zenity.CancelLabel("取消")) ecore.E调试输出(err) println("更新", err) if err != nil { return } progress, _ := zenity.Progress( zenity.Title("软件更新"), zenity.MaxValue(100), // 设置最大进度值为100 ) progress.Text("正在下载...") err = E下载带进度回调(info.WinDownloadURL, 新文件名, func(进度 float64) { fmt.Println("正在下载...", 进度) progress.Text("正在下载..." + fmt.Sprintf("%.2f", 进度) + "%") progress.Value(int(进度)) }) if err != nil { fmt.Println("下载出错:", err) zenity.Info("下载错误,检查你的网络") progress.Close() return } progress.Text("下载完成 即将完成更新") if progress.Close() != nil { fmt.Println("点击了取消") return } fmt.Println("下载完成了") flag, s := E更新自己Window应用(新文件名) println(flag, s) } ================================================ FILE: GoEasyDesigner/mymodel/自动更新模块_test.go ================================================ package mymodel import ( "fmt" "github.com/duolabmeng6/goefun/ecore" "github.com/ncruces/zenity" "os/user" "path/filepath" "runtime" "testing" ) func Test简单(t *testing.T) { if E是否为macOS系统() { E检查更新_Mac() } if E是否为window系统() { E检查更新_window() } } func TestE获取Github仓库Releases版本和更新内容(t *testing.T) { info := E获取Github仓库Releases版本和更新内容() ecore.E调试输出(info) } func Test下载(t *testing.T) { err := E下载带进度回调("https://github.com/duolabmeng6/GoEasyDesigner/releases/download/v0.2.4/GoEasyDesigner_MacOS.zip", "/Users/ll/Downloads/GoEasyDesigner_MacOS.zip", func(进度 float64) { // 进度回调函数 fmt.Println("正在下载...", 进度) }) if err != nil { fmt.Println("下载出错:", err) } else { fmt.Println("下载完成") } } func Test系统版本(t *testing.T) { fmt.Println("系统是否为Windows:", E系统是否为window系统()) fmt.Println("系统是否为Linux:", E系统是否为linux系统()) fmt.Println("系统是否为Mac:", E系统是否为mac系统()) fmt.Println("是否为调试模式:", E是否为调试模式()) } func Test解压缩(t *testing.T) { 压缩包的路径 := "/Users/ll/Downloads/GoEasyDesigner_MacOS.zip" //解压目录 := "/Users/ll/Desktop/goproject/v3fanyi/mymodel/testzip/" //允许解压路径前缀 := []string{"qoq.app/Contents/"} //println(zip解压2(压缩包的路径, 解压目录, 允许解压路径前缀)) E更新自己MacOS应用(压缩包的路径, "GoEasyDesigner.app") } func Test更新流程MacOS(t *testing.T) { usr, err := user.Current() if err != nil { panic(err) } 下载文件夹路径 := filepath.Join(usr.HomeDir, "Downloads") println(下载文件夹路径) info := E获取Github仓库Releases版本和更新内容() err = E下载带进度回调(info.MacDownloadURL, 下载文件夹路径+"/mactest.zip", func(进度 float64) { // 进度回调函数 fmt.Println("正在下载...", 进度) }) if err != nil { fmt.Println("下载出错:", err) return } flag, s := E更新自己MacOS应用(下载文件夹路径+"/mactest.zip", "qoq.app") println(flag, s) } func Test更新流程Window(t *testing.T) { // usr, err := user.Current() if err != nil { panic(err) } 下载文件夹路径 := filepath.Join(usr.HomeDir, "Downloads") //println(下载文件夹路径) //info := E获取Github仓库Releases版本和更新内容() // //err = E下载带进度回调(info.WinDownloadURL, 下载文件夹路径+"/GoEasyDesigner.exe", func(进度 float64) { // // 进度回调函数 // fmt.Println("正在下载...", 进度) //}) //if err != nil { // fmt.Println("下载出错:", err) // return //} flag, s := E更新自己Window应用(下载文件夹路径 + "/GoEasyDesigner.exe") println(flag, s) } func Test整个流程(t *testing.T) { 下载文件夹路径 := E取用户下载文件夹路径() info := E获取Github仓库Releases版本和更新内容() println(info.MacDownloadURL) println(下载文件夹路径) if info.Version == Version { err := zenity.Info("当前已经是最新版本") if err != nil { return } return } err := zenity.Question("软件有新版本可用,是否更新?\n当前版本:"+ Version+ "\n最新版本:"+info.Version, zenity.Title("更新提示"), zenity.Icon(zenity.QuestionIcon), zenity.OKLabel("更新"), zenity.CancelLabel("取消")) ecore.E调试输出(err) println("更新", err) if err != nil { return } progress, _ := zenity.Progress( zenity.Title("软件更新"), zenity.MaxValue(100), // 设置最大进度值为100 ) progress.Text("正在下载...") err = E下载带进度回调(info.MacDownloadURL, 下载文件夹路径+"/"+应用名称+"_MacOS.zip", func(进度 float64) { fmt.Println("正在下载...", 进度) progress.Text("正在下载..." + fmt.Sprintf("%.2f", 进度) + "%") progress.Value(int(进度)) }) if err != nil { fmt.Println("下载出错:", err) zenity.Info("下载错误,检查你的网络") progress.Close() return } progress.Text("下载完成 即将完成更新") if progress.Close() != nil { fmt.Println("点击了取消") return } fmt.Println("下载完成了") flag, s := E更新自己MacOS应用(下载文件夹路径+"/"+应用名称+"_MacOS.zip", 应用名称+".app") println(flag, s) } func E是否为window系统() bool { return runtime.GOOS == "windows" } func E是否为macOS系统() bool { return runtime.GOOS == "darwin" } func E是否为UbuntuLinux系统() bool { return runtime.GOOS == "linux" } ================================================ FILE: GoEasyDesigner/ssh_nginx/Caddyfile ================================================ go.kenhong.com { root * /srv encode { zstd gzip 9 } file_server } ================================================ FILE: GoEasyDesigner/ssh_nginx/default.conf ================================================ server { listen 80; server_name go.kenhong.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name go.kenhong.com; ssl_certificate /etc/nginx/certs/fullchain.cer; ssl_certificate_key /etc/nginx/certs/go.kenhong.com.key; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 9; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; location / { root /usr/share/nginx/html; index index.html; # Allow only requests with the host header matching go.kenhong.com if ($host != "go.kenhong.com") { return 444; } } } ================================================ FILE: GoEasyDesigner/ssh_nginx/docker-compose.yml ================================================ version: '3.2' services: openssh-server: image: linuxserver/openssh-server:latest container_name: openssh-server hostname: openssh-server #optional environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai # - PUBLIC_KEY=yourpublickey #optional # - PUBLIC_KEY_FILE=/path/to/file #optional # - PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys #optional # - PUBLIC_KEY_URL=https://github.com/username.keys #optional - SUDO_ACCESS=false #optional - PASSWORD_ACCESS=true #optional - USER_PASSWORD=${USER_PASSWORD} # - USER_PASSWORD_FILE=/path/to/file #optional - USER_NAME=${USER_NAME} #optional volumes: - ./config:/config - ./www:/config/www ports: - ${SSH_PORT}:2222 restart: unless-stopped caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" - "443:443/udp" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./www:/srv - ./caddy_data:/data - ./caddy_config:/config # nginx: # image: nginx:latest # ports: # - "80:80" # - "443:443" # volumes: # - ./www:/usr/share/nginx/html # - /root/.acme.sh/go.kenhong.com:/etc/nginx/certs # - ./default.conf:/etc/nginx/conf.d/default.conf ================================================ FILE: GoEasyDesigner/wails.json ================================================ { "$schema": "https://wails.io/schemas/config.v2.json", "name": "GoEasyDesigner", "outputfilename": "GoEasyDesigner", "frontend:install": "pnpm install", "frontend:build": "pnpm run build", "frontend:dev:watcher": "pnpm run dev", "frontend:dev:serverUrl": "auto", "author": { "name": "多啦b梦", "email": "1715109585@qq.com" } } ================================================ FILE: LICENSE ================================================ GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. ================================================ FILE: README.md ================================================

[English](README.md) · [简体中文](README.zh-Hans.md)
# Window Designer ![666](https://github.com/duolabmeng6/GoEasyDesigner/assets/59047063/a89d2ab9-9ba3-4efc-b0fa-0a7dcc3bcfc1) This is a simple and easy-to-use visual interface design tool, developed in Go language using the Wails framework, supporting systems like Windows, MacOS, Linux, etc. Main Repository: https://github.com/duolabmeng6/GoEasyDesigner Mirror Repository: https://gitee.com/duolabmeng666/go-easy-designer **Project Progress:** The project is in active development. Front-end experts are welcome to contribute PRs. Completed tasks: - [x] Cross-platform compatibility: Supports Windows, MacOS, and Linux systems. - [x] Interface design and functionality development: Completed overall layout design, functional process design, interface drawing, property modification, component dragging, double-clicking components to jump to corresponding event functions, and other core features. - [x] Intelligent code editor: Implemented the Chinese character initial letter input reminder function for the code editing box, enhancing coding efficiency. - [x] [goefun library](https://pkg.go.dev/github.com/duolabmeng6/goefun#section-sourcefiles) Chinese function library support: Developing using Chinese functions in Golang. - [x] Component library: Completed development of components like buttons, text boxes, labels, switches, radio buttons, checkboxes, common layouts, flex layouts, tree boxes, menus, tables, progress bars, file selectors, and more. - [x] Custom component support: Allows the creation of custom components, such as login boxes, for rapid application development. - [x] Integrated development environment: Provided a one-click environment setup package, simplifying the construction of the development environment. - [x] Multilingual support: The application supports multiple languages including Chinese and English. Tasks to be completed: - [ ] jsefun library support: Planned and awaiting development. - [ ] Component library enhancement: Ongoing, further improvement of [element-plus](https://element-plus.org/zh-CN/component/button.html) components. - [ ] Support for ElectronJS: Planned, will support ElectronJS as backend technology. - [ ] Custom cloud components: Users will be able to upload their templates for others to use. # Online Experience Thanks to a friend's server, you can now enjoy an online experience. International address: https://go-easy-designer.vercel.app [Download Window Running Project](https://github.com/duolabmeng6/wails-template-vue-go-easy), during online experience, design the interface in the browser and save. Two files will be downloaded: `design.json`, `__aux_code.js`. Make sure your browser allows downloading multiple files, and place the design files in the specified location. [Video Tutorial: 10 Minutes to Get Started](https://www.bilibili.com/video/BV1ou4y1r7WS) [Video Tutorial: 3 Minutes to Learn Custom Component Packaging](https://www.bilibili.com/video/BV1ar4y1f7Rq) # Environment Installation ## Method 1 ### 1. Install Node.js Development Environment [Node.js Download Page](https://nodejs.org/) Version 18 or above Domestic mirror: `npm install -g cnpm --registry=http://registry.npmmirror.com` Install Vite: `npm install vite@latest` ### 2. Install Go Language Development Environment [Go Language Download Page](https://golang.org/dl/) Any version Install Wails [Wails Framework Documentation](https://wails.io/zh-Hans/docs/gettingstarted/installation/) Domestic mirror execution: `go env -w GOPROXY=https://goproxy.cn,direct` ``` go install github.com/wailsapp/wails/v2/cmd/wails@latest ``` After successful installation, run the Wails command. If there is content output, it means successful installation. ## Method 2: Windows Complete Running Environment Package Download [Xiaofeiji Cloud Disk Download Address, No Login Required](https://share.feijipan.com/s/4wU6lASg) Download `GoEasyDesigner.2023.12.6.Including Running Environment.zip` and unzip. `env_soft. 7z` Running environment package includes `go` and `node`. Unzip and find `One-Click Environment Configuration.exe`, run as administrator. If installation is successful, you can directly open `GoEasyDesigner.exe`. If not configured successfully, add environment variables to the system's `PATH`. After adding, run `One-Click Environment Configuration.exe`. ``` C:\GoEasyDesigner\env_soft\go1.21.4\bin C:\GoEasyDesigner\env_soft\go1.21.4\AppData\bin C:\GoEasyDesigner\env_soft\node-v20.9.0-win-x64 ``` `go-easy-demo` folder is a sample project. Open `go-easy-demo\frontend\src\win\design.json` with Window Designer to design the interface or run and compile the project. Open the `go-easy-demo` folder with Goland IDE to start coding. # Project Creation ## Create Window Running Project This project is for window running, your code will also be written here. Create a project: ``` wails init -n "go-easy-demo" -t https://github.com/duolabmeng6/wails-template-vue-go-easy ``` Run window: ``` cd go-easy-demo wails dev ``` Compile into executable file: ``` cd go-easy-demo wails build ``` Front-end only debugging: ``` cd go-easy-demo/frontend npm run dev ``` # Usage Instructions ### Download GoEasyDesigner Download the latest version: https://github.com/duolabmeng6/GoEasyDesigner/releases Interface design file location: ``` go-easy-demo/frontend/src/win/design.json ``` ### Webstorm IDE Code Jump Plugin To experience double-clicking components in the IDE to automatically jump to the corresponding function, install the QtEasyDesigner plugin in Webstorm. In this project's files, After installation, right-click in the IDE editor and select `Configure QtEasyDesigner`. macOS path: ``` /Applications/GoEasyDesigner.app/Contents/MacOS/GoEasyDesigner ``` Windows path: ``` C:\GoEasyDesigner\GoEasyDesigner.exe ``` For subsequent use, open `design.json` in the editor, right-click and select `Open QtEasyDesigner`. The interface will appear. JS code uses Webstorm IDE. Most coding should be done in JS. Use Go code only if JS cannot achieve the desired functionality. Go code is written in Goland IDE, typically in app.go. ### For Window Designer Development For debugging in the IDE, you need the following configuration: Build package `changeme`. Working directory `/Users/ll/Documents/GitHub/GoEasyDesigner/GoEasyDesigner` change to your path. Environment variable `CGO_LDFLAGS=-framework UniformTypeIdentifiers` is needed for macOS, not for Windows. Go tool arguments `-tags dev -gcflags "all=-N -l"`. Program arguments (optional) `File Path=/Users/ll/Documents/GitHub/GoEasyDesigner/go-easy-demo/frontend/src/win/design.json port=8080` This is to work with the IDE plugin, where port is the plugin's port. Now you can debug with breakpoints in app.go. #### go-easy-demo is a template project Interface data location: ``` go-easy-demo/frontend/src/win/design.json ``` Run to see the effects: ``` cd go-easy-demo wails dev ``` # Window Designer Development Cases [Duoduo Projection Screen](https://gitee.com/duolabmeng666/projection_screen_tv) Easily project video files from MacOS and Windows to TV, similar to mobile phone screen projection, no need for NAS or other cumbersome operations. Direct file projection. # Contribution The contributor list is too large for the README file! All the outstanding individuals who have contributed to this project can be found here [Contributor List](https://github.com/duolabmeng6/GoEasyDesigner/graphs/contributors). We will create a page later. # License This project is licensed under the [GNU Lesser General Public License (LGPL) Version 3](LICENSE). For detailed information, please refer to the license file. # Learning and Exchange QQ Group: 927427009 # Appreciation If this project has been helpful to you, you can buy the author a coffee ![](README.assets/swskm.jpg) ================================================ FILE: README.zh-Hans.md ================================================

[English](README.md) · [简体中文](README.zh-Hans.md)
# 窗口设计师 ![666](https://github.com/duolabmeng6/GoEasyDesigner/assets/59047063/a89d2ab9-9ba3-4efc-b0fa-0a7dcc3bcfc1) 这是一个简单易用的可视化界面设计工具,基于Go语言开发,使用Wails框架,支持Windows、MacOS、Linux等系统。 主仓库 https://github.com/duolabmeng6/GoEasyDesigner 镜像仓库 https://gitee.com/duolabmeng666/go-easy-designer **项目进度:** 项目处于积极开发阶段 欢迎前端大佬pr 已完成任务: - [x] 跨平台兼容性:支持Windows、MacOS和Linux系统。 - [x] 界面设计和功能开发:完成整体界面布局、功能流程设计、界面绘制、属性修改、组件拖拽、双击组件跳转到对应事件函数等核心功能的开发。 - [x] 智能代码编辑器:实现了代码编辑框的汉字首字母输入提醒功能,提高了编码效率。 - [x] [goefun库](https://pkg.go.dev/github.com/duolabmeng6/goefun#section-sourcefiles) 库中文函数库支持:在Golang中使用中文函数进行开发。 - [x] 组件库:已完成按钮、编辑框、标签、开关、单选框、多选框、常用布局、弹性布局、树形框、菜单、表格、进度条、选择夹、常用布局弹、性布局等组件的开发。 - [x] 自定义组件支持:允许创建自定义组件,例如登录框等模板,以便快速应用开发。 - [x] 集成开发环境:提供了一键配置环境压缩包,简化开发环境的搭建。 - [x] 多语言支持:应用支持中文和英文等多种语言。 - [x] jsefun库支持:已开发 https://www.npmjs.com/package/jsefun - [x] 支持ElectronJS:将支持ElectronJS作为后端技术。 [Electron 启动模板](https://github.com/duolabmeng6/electron-template-easy-desinger) 待完成任务: - [ ] 组件库完善:正在进行中, [element-plus](https://element-plus.org/zh-CN/component/button.html) 组件的进一步完善。 - [ ] 自定义云组件 用户可以自己上传模板供其他用户使用 # 在线体验 感谢朋友提供的服务器,可以愉快的在线体验了 国外地址: https://go-easy-designer.vercel.app [下载窗口运行项目](https://github.com/duolabmeng6/wails-template-vue-go-easy),在线体验时在浏览器中画好界面保存,会下载2个文件 `design.json`,`__aux_code.js` 注意你的浏览器允许下载多个文件的权限,将设计文件放到指定位置即可. [视频教程10分钟了入门](https://www.bilibili.com/video/BV1ou4y1r7WS) [视频教程3分钟学会自定义组件封装](https://www.bilibili.com/video/BV1ar4y1f7Rq) # 环境安装 ## 方式1 ### 1.安装 node js语言开发环境 [node语言下载页面](https://nodejs.org/) 版本18以上 国内镜像 `npm install -g cnpm --registry=http://registry.npmmirror.com` 安装vite `npm install vite@latest` ### 2.安装 go 语言开发环境 [go语言下载页面](https://golang.org/dl/) 版本任意 安装 wails [wails框架文档](https://wails.io/zh-Hans/docs/gettingstarted/installation/) 国内镜像执行 `go env -w GOPROXY=https://goproxy.cn,direct` ``` go install github.com/wailsapp/wails/v2/cmd/wails@latest ``` 安装成功后,运行 wails 命令,有内容输出即为安装成功。 ## 方式2 Window可下载完整的运行环境包 [小飞机网盘下载地址 免登录](https://share.feijipan.com/s/4wU6lASg) 下载 `GoEasyDesigner.2023.12.6.包含运行环境.zip` 解压 `env_soft.7z` 运行环境包含 `go` 和 `node` 解压找到 `一键配置环境.exe` 以管理员身份运行 如果安装成功你就可以直接打开 `GoEasyDesigner.exe` 没有配置成功的话,自己添加环境变量到 系统的 `PATH` 添加后运行 `一键配置环境.exe` 即可 ``` C:\GoEasyDesigner\env_soft\go1.21.4\bin C:\GoEasyDesigner\env_soft\go1.21.4\AppData\bin C:\GoEasyDesigner\env_soft\node-v20.9.0-win-x64 ``` `go-easy-demo` 文件夹是示例项目 窗口设计师打开 `go-easy-demo\frontend\src\win\design.json` 就可以设计界面或者运行编译项目了 用 goland ide 打开 `go-easy-demo` 文件夹 就可以开始编写代码了 # 项目创建 ## 创建窗口运行项目 该项目为窗口运行的环境你的代码也将在这里编写 创建项目 ``` wails init -n "go-easy-demo" -t https://github.com/duolabmeng6/wails-template-vue-go-easy ``` 运行窗口 ``` cd go-easy-demo wails dev ``` 编译为可执行文件 ``` cd go-easy-demo wails build ``` 仅调试前端 ``` cd go-easy-demo/frontend npm run dev ``` # 使用说明 ### 下载 GoEasyDesigner 下载最新版本: https://github.com/duolabmeng6/GoEasyDesigner/releases 界面设计文件在这里 ``` go-easy-demo/frontend/src/win/design.json ``` ### webstorm IDE代码跳转插件 想体验双击组件在ide中自动跳转到对应函数 请在webstorm中安装 QtEasyDesigner 插件,在本项目的文件中, 安装后在IDE编辑器中右键看到 `配置 QtEasyDesigner ` macos填写路径 ``` /Applications/GoEasyDesigner.app/Contents/MacOS/GoEasyDesigner ``` window填写exe的路径 ``` C:\GoEasyDesigner\GoEasyDesigner.exe ``` 后续使用的话 打开 `design.json` 在编辑器中右键 `打开 QtEasyDesigner ` 界面就出来了 js代码使用 webstorm ide 绝大部分编写代码都应该在 js中编写,如果js无法实现的再调用go代码 go代码使用 goland IDE 编写 一般情况下代码写在 app.go 中 ### 开发窗口设计师请看 在ide中调试需要以下配置 构建软件包 `changeme` 工作目录 `/Users/ll/Documents/GitHub/GoEasyDesigner/GoEasyDesigner` 改成你的路径 环境变量 `CGO_LDFLAGS=-framework UniformTypeIdentifiers` 这个macos需要 window不需要 go工具实参 `-tags dev -gcflags "all=-N -l"` 程序实参(可选) `文件路径=/Users/ll/Documents/GitHub/GoEasyDesigner/go-easy-demo/frontend/src/win/design.json port=8080` 这是配合ide插件的port是插件的端口 现在可以在 app.go 中下断点调试了. #### go-easy-demo 为模板项目 界面数据在这里 ``` go-easy-demo/frontend/src/win/design.json ``` 运行 就可以看到效果了 ``` cd go-easy-demo wails dev ``` # 窗口设计师开发案例 [多多投屏](https://gitee.com/duolabmeng666/projection_screen_tv) 轻轻松松在MacOS和Window中将视频文件投屏到电视上,跟手机的投屏功能一致,无需nas等繁琐操作.直接文件投屏. # 贡献 贡献者列表对于自述文件来说太大了! 所有为这个项目做出贡献的杰出人士在这里 [贡献列表](https://github.com/duolabmeng6/GoEasyDesigner/graphs/contributors) 后面我们会制作页面 # 许可证 本项目采用 [GNU Lesser General Public License (LGPL) 版本 3](LICENSE) 进行许可。详细信息请参阅许可证文件。 # 学习交流 QQ群: 927427009 # 赞赏 如果这个项目对你有帮助,可以请作者喝杯咖啡 ![](README.assets/swskm.jpg) ================================================ FILE: script/main.go ================================================ package main import ( "fmt" "io" "os" "path/filepath" "strings" ) func copyFile(src, dst string) error { sourceFile, err := os.Open(src) if err != nil { return err } defer sourceFile.Close() // Create destination directory if it doesn't exist if err := os.MkdirAll(filepath.Dir(dst), os.ModePerm); err != nil { return err } destinationFile, err := os.Create(dst) if err != nil { return err } defer destinationFile.Close() _, err = io.Copy(destinationFile, sourceFile) return err } func copyFiles(sourcePath, destinationPath string, excludeFiles []string) error { err := filepath.Walk(sourcePath, func(path string, f os.FileInfo, err error) error { if err != nil { fmt.Println(err) // can't walk here, return nil // ignore this error } if f.IsDir() { return nil // ignore directories } // 排除指定文件和后缀 exclude := false for _, excludeFile := range excludeFiles { if strings.HasSuffix(path, excludeFile) { exclude = true break } } if exclude { return nil } // 构建目标路径,保持相同的目录结构 relPath, err := filepath.Rel(sourcePath, path) if err != nil { fmt.Printf("Error getting relative path: %v\n", err) return err } destinationFilePath := filepath.Join(destinationPath, relPath) // 复制文件 err = copyFile(path, destinationFilePath) if err != nil { fmt.Printf("Error copying file %s: %v\n", path, err) return err } fmt.Printf("Copied %s to %s\n", path, destinationFilePath) return nil }) return err } func main() { sourcePath := "/Users/ll/Documents/GitHub/GoEasyDesigner/GoEasyDesigner/frontend/src/components/boxs" destinationPath := "/Users/ll/Documents/GitHub/GoEasyDesigner/go-easy-demo/frontend/src/components/boxs" excludeFiles := []string{"Attr.vue", ".js"} //删除 destinationPath 下的所有文件 err := os.RemoveAll(destinationPath) if err != nil { return } err = copyFiles(sourcePath, destinationPath, excludeFiles) if err != nil { fmt.Printf("Error copying files: %v\n", err) } }