From a499d05a029c440485e0dde338f28717cb8fd47a Mon Sep 17 00:00:00 2001 From: Archer <545436317@qq.com> Date: Tue, 4 Nov 2025 16:58:12 +0800 Subject: [PATCH] V4.14.0 features (#5850) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: migrate chat files to s3 (#5802) * feat: migrate chat files to s3 * feat: add delete jobs for deleting s3 files * chore: improvements * fix: lockfile * fix: imports * feat: add ttl for those uploaded files but not send yet * feat: init bullmq worker * fix: s3 key * perf: s3 internal url * remove env * fix: re-sign a new url * fix: re-sign a new url * perf: s3 code --------- Co-authored-by: archer <545436317@qq.com> * update pacakge * feat: add more file type for uploading (#5807) * fix: re-sign a new url * wip: file selector * feat: add more file type for uploading * feat: migrate chat files to s3 (#5802) * feat: migrate chat files to s3 * feat: add delete jobs for deleting s3 files * chore: improvements * fix: lockfile * fix: imports * feat: add ttl for those uploaded files but not send yet * feat: init bullmq worker * fix: s3 key * perf: s3 internal url * remove env * fix: re-sign a new url * fix: re-sign a new url * perf: s3 code --------- Co-authored-by: archer <545436317@qq.com> * fix: limit minmax available file upload number * perf: file select modal code * fix: fileselect refresh * fix: ts --------- Co-authored-by: archer <545436317@qq.com> * bugfix: chat page (#5809) * fix: upload avatar * fix: chat page username display issue and setting button visibility * doc * Markdown match base64 performance * feat: improve global variables(time, file, dataset) (#5804) * feat: improve global variables(time, file, dataset) * feat: optimize code * perf: time variables code * fix: model, file * fix: hide file upload * fix: ts * hide dataset select --------- Co-authored-by: archer <545436317@qq.com> * perf: insert training queue * perf: s3 upload error i18n * fix: share page s3 * fix: timeselector ui error * var update node * Timepicker ui * feat: plugin support password * fix: password disabled UX * fix: button size * fix: no model cache for chat page (#5820) * rename function * fix: workflow bug * fix: interactive loop * fix test * perf: common textare no richtext * move system plugin config (#5803) (#5813) * move system plugin config (#5803) * move system plugin config * extract tag bar * filter * tool detail temp * marketplace * params * fix * type * search * tags render * status * ui * code * connect to backend (#5815) * feat: marketplace apis & type definitions (#5817) * chore: marketplace init * chore: marketplace list api type * chore: detail api * marketplace & import * feat: marketplace ui (#5826) * temp * marketplace * import * feat: detail return readme * chore: cache data expire 10 mins * chore: update docs * feat: marketplace ui --------- Co-authored-by: heheer * feat: marketplace (#5830) * temp * marketplace * chore: tool list tag filter * chore: adjust --------- Co-authored-by: heheer * tool detail drawer * remove tag filter * fix * fix * fix build * update pnpm-lock * fix type * perf code * marketplace router * fix build * navbar icon * fix ui * fix init * docs: marketplace/plugin (#5832) * temp * marketplace * docs(plugin): system tool docs --------- Co-authored-by: heheer * default url * feat: i18n/ docker build (#5833) * chore: docker build * feat: i18n selector * fix * fix * fix: i18n parse * fix: i18n parse --------- Co-authored-by: heheer Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com> Co-authored-by: heheer * marketplace url * update action * market place code * market place code * title * fix: nextconfig * fix: copilot review * Remove bypassable regex-based XSS sanitization from marketplace search (#5835) * Initial plan * Remove problematic regex-based XSS sanitization from search inputs Co-authored-by: c121914yu <50446880+c121914yu@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: c121914yu <50446880+c121914yu@users.noreply.github.com> * feat: tool tag openapi * api check * fix: tsc * fix: ts * fix: lock * sdk version * ts * sdk version * remove invalid tip * perf: export data add timezone * perf: admin plugin api move * perf: tool code * move tag code * perf: marketplace and team plugin code * remove workflow invalid request * rename global tool code * rename global tool code * rename api * fix some bugs (#5841) * fix some bugs * fix * perf: Tag filter * fix: ts * fix: ts --------- Co-authored-by: archer <545436317@qq.com> * perf: Concat function * fix: workflow snapshot push * fix: ts type * fix: login to config/* * fix: ts * fix: model avatar (#5848) * fix: model avatar * fix: ts * fix: avatar migration to s3 * update lock * fix: avatar redirect --------- Co-authored-by: archer <545436317@qq.com> * fix tool detail (#5847) * fix tool detail * init script * fix build * perf: plugin detail modal * change tooltags to tags * fix icon --------- Co-authored-by: archer <545436317@qq.com> * fix tag filter scroll (#5852) * fix create app plugin & import info (#5853) * tag size * rename toolkit * download url * import plugin status (#5854) * init doc * fix: init shell --------- Co-authored-by: 伍闲犬 Co-authored-by: Zeng Qingwen <143274079+fishwww-ww@users.noreply.github.com> Co-authored-by: heheer Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com> Co-authored-by: heheer Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> --- CLAUDE.md => .claude/CLAUDE.md | 7 +- ...ects_app_performance_stability_analysis.md | 4 +- .eslintignore | 4 +- .github/workflows/marketplace-image.yml | 139 ++++ .../development/design/design_plugin.mdx | 7 +- .../guide/plugins/dev_system_tool.mdx | 149 +++- .../guide/plugins/upload_system_tool.mdx | 80 +-- document/content/docs/toc.mdx | 1 + document/content/docs/upgrading/4-14/4140.mdx | 62 ++ document/content/docs/upgrading/meta.json | 2 + document/data/doc-last-modified.json | 13 +- document/public/imgs/image-121.png | Bin 0 -> 562762 bytes document/public/imgs/plugins/entry.png | Bin 525748 -> 130616 bytes document/public/imgs/plugins/file.png | Bin 50462 -> 0 bytes document/public/imgs/plugins/files.png | Bin 0 -> 158621 bytes packages/global/common/error/s3.ts | 65 ++ packages/global/common/file/icon.ts | 30 +- packages/global/common/file/tools.ts | 10 +- packages/global/common/i18n/utils.ts | 14 +- .../parentFolder/{type.d.ts => type.ts} | 6 +- packages/global/common/string/markdown.ts | 14 +- packages/global/common/string/textSplitter.ts | 7 +- .../global/common/system/types/index.d.ts | 2 +- packages/global/common/time/timezone.ts | 4 +- packages/global/core/ai/provider.ts | 14 +- packages/global/core/ai/type.d.ts | 3 +- packages/global/core/app/constants.ts | 48 +- packages/global/core/app/jsonschema.ts | 2 +- packages/global/core/app/mcpTools/type.d.ts | 12 - packages/global/core/app/plugin/utils.ts | 70 -- .../global/core/app/systemTool/constants.ts | 18 - .../core/app/{plugin => tool}/constants.ts | 2 +- .../{httpTools => tool/httpTool}/type.d.ts | 0 .../app/{httpTools => tool/httpTool}/utils.ts | 22 +- .../global/core/app/tool/mcpTool/type.d.ts | 19 + .../app/{mcpTools => tool/mcpTool}/utils.ts | 20 +- .../core/app/tool/systemTool/constants.ts | 18 + .../core/app/{plugin => tool}/type.d.ts | 28 +- packages/global/core/app/tool/utils.ts | 46 ++ .../core/app/tool/workflowTool/utils.ts | 6 + packages/global/core/app/type.d.ts | 61 +- packages/global/core/chat/adapt.ts | 12 +- packages/global/core/chat/api.d.ts | 9 - packages/global/core/chat/api.ts | 68 ++ packages/global/core/chat/type.d.ts | 12 +- packages/global/core/chat/utils.ts | 5 +- .../global/core/plugin/admin/tool/type.ts | 38 + packages/global/core/plugin/schema/type.ts | 9 + packages/global/core/plugin/tool/type.ts | 57 ++ packages/global/core/plugin/type.ts | 43 ++ packages/global/core/workflow/constants.ts | 36 +- .../global/core/workflow/node/constant.ts | 6 +- .../global/core/workflow/runtime/type.d.ts | 4 +- .../global/core/workflow/template/input.ts | 3 +- .../template/system/assignedAnswer.ts | 2 + packages/global/core/workflow/type/index.d.ts | 2 +- packages/global/core/workflow/type/io.d.ts | 46 +- packages/global/core/workflow/type/node.d.ts | 18 +- packages/global/core/workflow/utils.ts | 60 +- packages/global/openapi/api.ts | 7 + .../openapi/core/chat/favourite/index.ts | 11 +- packages/global/openapi/core/chat/index.ts | 58 +- .../global/openapi/core/chat/setting/index.ts | 5 +- .../global/openapi/core/plugin/admin/api.ts | 52 ++ .../global/openapi/core/plugin/admin/index.ts | 127 ++++ .../openapi/core/plugin/admin/tool/api.ts | 87 +++ .../openapi/core/plugin/admin/tool/index.ts | 178 +++++ .../openapi/core/plugin/admin/tool/tag/api.ts | 23 + .../core/plugin/admin/tool/tag/index.ts | 104 +++ packages/global/openapi/core/plugin/index.ts | 12 + .../openapi/core/plugin/marketplace/api.ts | 64 ++ .../openapi/core/plugin/marketplace/index.ts | 87 +++ .../global/openapi/core/plugin/team/api.ts | 27 + .../global/openapi/core/plugin/team/index.ts | 66 ++ .../openapi/core/plugin/team/toolApi.ts | 38 + .../global/openapi/core/plugin/toolTag/api.ts | 5 + .../openapi/core/plugin/toolTag/index.ts | 24 + packages/global/openapi/index.ts | 25 +- .../global/openapi/support/openapi/index.ts | 5 +- packages/global/openapi/tag.ts | 10 + packages/global/package.json | 2 +- .../global/support/permission/chat/type.ts | 29 + packages/service/common/api/pagination.ts | 4 +- packages/service/common/bullmq/index.ts | 1 + packages/service/common/cache/init.ts | 2 +- packages/service/common/cache/type.ts | 4 +- packages/service/common/mongo/init.ts | 26 +- packages/service/common/s3/buckets/base.ts | 60 +- packages/service/common/s3/constants.ts | 10 +- packages/service/common/s3/index.ts | 7 + packages/service/common/s3/mq.ts | 77 +++ packages/service/common/s3/sources/avatar.ts | 5 +- .../service/common/s3/sources/chat/index.ts | 59 ++ .../service/common/s3/sources/chat/type.ts | 17 + packages/service/common/s3/type.ts | 16 +- packages/service/common/secret/utils.ts | 17 +- packages/service/core/ai/llm/utils.ts | 32 +- packages/service/core/ai/type.d.ts | 2 +- packages/service/core/app/controller.ts | 143 ++-- packages/service/core/app/mcp.ts | 10 +- packages/service/core/app/plugin/type.d.ts | 52 -- .../service/core/app/templates/register.ts | 4 +- packages/service/core/app/tool/api.ts | 22 +- .../core/app/{plugin => tool}/controller.ts | 257 ++++--- .../app/{plugin => tool/runtime}/utils.ts | 16 +- .../core/app/tool/workflowTool/utils.ts | 95 +++ packages/service/core/app/utils.ts | 17 +- packages/service/core/chat/saveChat.ts | 57 +- packages/service/core/chat/utils.ts | 18 + .../core/dataset/training/controller.ts | 92 ++- .../schema/teamInstalledPluginSchema.ts | 34 + .../tool}/pluginGroupSchema.ts | 15 +- .../tool/systemToolSchema.ts} | 24 +- .../service/core/plugin/tool/tagSchema.ts | 32 + .../core/workflow/dispatch/ai/agent/index.ts | 2 +- .../core/workflow/dispatch/child/runTool.ts | 29 +- .../service/core/workflow/dispatch/index.ts | 77 ++- .../core/workflow/dispatch/plugin/run.ts | 49 +- .../workflow/dispatch/tools/runUpdateVar.ts | 10 +- .../service/core/workflow/dispatch/utils.ts | 30 +- packages/service/core/workflow/utils.ts | 6 +- packages/service/package.json | 4 +- .../service/support/permission/app/auth.ts | 8 +- .../service/support/permission/user/auth.ts | 2 +- packages/service/worker/htmlStr2Md/utils.ts | 23 +- packages/web/common/system/utils.ts | 2 +- .../common/DateTimePicker/index.tsx | 22 +- .../web/components/common/Icon/constants.ts | 25 +- .../common/Icon/icons/common/link.svg | 2 +- .../common/Icon/icons/core/app/pluginFill.svg | 3 + .../Icon/icons/core/app/pluginLight.svg | 3 + .../Icon/icons/core/app/type/pluginLight.svg | 3 - .../common/Icon/icons/file/fill/audio.svg | 1 + .../common/Icon/icons/file/fill/video.svg | 1 + .../common/Icon/icons/navbar/chatFill.svg | 3 + .../common/Icon/icons/navbar/chatLight.svg | 6 + .../Icon/icons/navbar/dashboardFill.svg | 3 + .../Icon/icons/navbar/dashboardLight.svg | 6 + .../common/Icon/icons/navbar/datasetFill.svg | 5 + .../common/Icon/icons/navbar/datasetLight.svg | 3 + .../common/Icon/icons/navbar/userFill.svg | 5 + .../common/Icon/icons/navbar/userLight.svg | 3 + .../Icon/icons/support/config/configFill.svg | 3 + .../Icon/icons/support/config/configLight.svg | 6 + .../web/components/common/Markdown/index.tsx | 164 +++++ .../common/MyDrawer/MyRightDrawer.tsx | 2 +- .../common/MySelect/MultipleSelect.tsx | 85 +-- .../common/Textarea/JsonEditor/index.tsx | 99 +-- .../common/Textarea/PromptEditor/Editor.tsx | 18 +- .../core/plugin/tool/TagFilterBox.tsx | 94 +++ .../components/core/plugin/tool/ToolCard.tsx | 232 +++++++ .../core/plugin/tool/ToolDetailDrawer.tsx | 458 ++++++++++++ packages/web/core/workflow/constants.ts | 9 - packages/web/hooks/useI18n.ts | 24 +- packages/web/hooks/usePagination.tsx | 4 + packages/web/hooks/useStep.tsx | 2 - packages/web/i18n/en/app.json | 120 +++- packages/web/i18n/en/chat.json | 3 + packages/web/i18n/en/common.json | 12 +- packages/web/i18n/zh-CN/app.json | 121 +++- packages/web/i18n/zh-CN/chat.json | 3 + packages/web/i18n/zh-CN/common.json | 15 +- packages/web/i18n/zh-Hant/app.json | 119 +++- packages/web/i18n/zh-Hant/chat.json | 3 + packages/web/i18n/zh-Hant/common.json | 11 +- packages/web/package.json | 5 +- packages/web/styles/theme.ts | 22 +- pnpm-lock.yaml | 631 ++++++++++++++++- projects/app/.env.template | 5 +- projects/app/next.config.js | 2 +- projects/app/package.json | 4 +- .../src/components/Layout/WorkorderButton.tsx | 2 +- projects/app/src/components/Layout/navbar.tsx | 45 +- .../app/src/components/Layout/navbarPhone.tsx | 24 +- .../src/components/Select/AIModelSelector.tsx | 14 +- .../src/components/Select/FileSelector.tsx | 125 ---- .../common/Textarea/MyTextarea/index.tsx | 60 +- .../src/components/core/app/FileSelect.tsx | 401 ++++++++--- .../src/components/core/app/VariableEdit.tsx | 76 +- .../core/app/formRender/FileSelector.tsx | 506 ++++++++++++++ .../core/app/formRender/LabelAndForm.tsx | 9 +- .../core/app/formRender/TimeInput.tsx | 35 +- .../components/core/app/formRender/index.tsx | 490 +++++++------ .../components/core/app/formRender/type.d.ts | 18 +- .../components/core/app/formRender/utils.ts | 3 + .../core/app/{plugin => tool}/CostTooltip.tsx | 0 .../ChatContainer/ChatBox/Input/ChatInput.tsx | 27 +- .../ChatBox/components/ChatItem.tsx | 2 +- .../ChatBox/components/VariableInputForm.tsx | 9 +- .../ChatBox/hooks/useFileUpload.tsx | 100 ++- .../core/chat/ChatContainer/ChatBox/index.tsx | 24 +- .../core/chat/ChatContainer/ChatBox/type.d.ts | 2 + .../PluginRunBox/components/RenderInput.tsx | 14 +- .../ChatContainer/PluginRunBox/context.tsx | 4 +- .../Interactive/InteractiveComponents.tsx | 1 + .../chat/components/WholeResponseModal.tsx | 5 +- projects/app/src/global/core/api/appReq.d.ts | 4 +- projects/app/src/instrumentation.ts | 21 +- .../app/detail/HTTPTools/ChatTest.tsx | 2 +- .../app/detail/HTTPTools/EditForm.tsx | 2 +- .../app/detail/HTTPTools/ManualToolModal.tsx | 2 +- .../detail/HTTPTools/SchemaConfigModal.tsx | 4 +- .../app/detail/Logs/LogChart.tsx | 1 - .../app/detail/Logs/LogTable.tsx | 4 +- .../app/detail/MCPTools/ChatTest.tsx | 4 +- .../app/detail/MCPTools/Edit.tsx | 2 +- .../app/detail/MCPTools/EditForm.tsx | 4 +- .../app/detail/MCPTools/Header.tsx | 4 +- .../app/detail/MCPTools/index.tsx | 2 +- .../app/detail/Plugin/Header.tsx | 7 +- .../SimpleApp/components/ConfigToolModal.tsx | 7 +- .../SimpleApp/components/ToolSelect.tsx | 10 + .../SimpleApp/components/ToolSelectModal.tsx | 500 ++++++-------- .../app/detail/Workflow/Header.tsx | 5 +- .../Flow/NodeTemplatesModal.tsx | 8 +- .../Flow/NodeTemplatesPopover.tsx | 8 +- .../Flow/components/NodeTemplates/header.tsx | 83 ++- .../Flow/components/NodeTemplates/list.tsx | 99 +-- .../NodeTemplates/useNodeTemplates.tsx | 44 +- .../Flow/components/ToolParamConfig.tsx | 9 +- .../Flow/nodes/Loop/NodeLoop.tsx | 4 +- .../Flow/nodes/Loop/NodeLoopStart.tsx | 90 +-- .../WorkflowComponents/Flow/nodes/NodeLaf.tsx | 2 +- .../nodes/NodePluginIO/InputEditModal.tsx | 15 +- .../nodes/NodePluginIO/InputTypeConfig.tsx | 405 +++++++++-- .../Flow/nodes/NodePluginIO/PluginInput.tsx | 91 +-- .../Flow/nodes/NodeSystemConfig.tsx | 27 +- .../Flow/nodes/NodeVariableUpdate.tsx | 39 +- .../Flow/nodes/render/NodeCard.tsx | 73 +- .../RenderInput/templates/CommonInputForm.tsx | 7 +- .../RenderInput/templates/Reference.tsx | 2 +- .../context/workflowActionsContext.tsx | 2 +- .../context/workflowInitContext.tsx | 71 +- .../context/workflowPersistenceContext.tsx | 4 +- .../context/workflowSnapshotContext.tsx | 38 +- .../context/workflowUtilsContext.tsx | 1 - .../app/detail/WorkflowComponents/utils.ts | 2 +- .../src/pageComponents/app/detail/context.tsx | 36 +- .../pageComponents/app/detail/useChatTest.tsx | 34 +- .../app/plugin/UploadSystemToolModal.tsx | 127 ---- .../app/{plugin => tool}/SecretInputModal.tsx | 20 +- .../chat/ChatSetting/ToolSelectModal.tsx | 406 +++++------ .../chat/ChatWindow/HomeChatWindow.tsx | 12 +- .../chat/slider/ChatSliderFooter.tsx | 5 +- .../chat/slider/ChatSliderHeader.tsx | 53 +- .../config/ImportPluginModal.tsx | 385 +++++++++++ .../pageComponents/config/TagManageModal.tsx | 315 +++++++++ .../config/tool/SystemToolConfigModal.tsx | 384 +++++++++++ .../pageComponents/config/tool/ToolRow.tsx | 214 ++++++ .../config/tool/WorkflowToolConfigModal.tsx | 489 +++++++++++++ .../pageComponents/dashboard/Container.tsx | 38 +- .../dashboard/SystemPlugin/ToolCard.tsx | 168 ----- .../dashboard/apps/HttpToolsCreateModal.tsx | 2 +- .../dashboard/apps/MCPToolsEditModal.tsx | 4 +- .../login/LoginForm/FormLayout.tsx | 4 +- projects/app/src/pages/api/admin/initv4140.ts | 217 ++++++ ...atarPresign.ts => presignAvatarPostUrl.ts} | 0 .../pages/api/common/system/getInitData.ts | 2 +- projects/app/src/pages/api/core/app/del.ts | 5 +- .../src/pages/api/core/app/exportChatLogs.ts | 29 +- .../app/src/pages/api/core/app/folder/path.ts | 2 +- .../app/src/pages/api/core/app/getChatLogs.ts | 12 +- .../pages/api/core/app/httpTools/create.ts | 2 +- .../pages/api/core/app/httpTools/update.ts | 2 +- .../src/pages/api/core/app/mcpTools/create.ts | 4 +- .../api/core/app/mcpTools/getChildren.ts | 2 +- .../src/pages/api/core/app/mcpTools/update.ts | 4 +- .../api/core/app/plugin/getToolGroups.ts | 29 - .../app/{plugin => tool}/getPreviewNode.ts | 16 +- .../getSystemToolTemplates.ts} | 40 +- .../app/{plugin => tool}/getVersionList.ts | 19 +- .../api/core/app/{plugin => tool}/path.ts | 2 +- .../app/src/pages/api/core/chat/chatTest.ts | 17 +- .../src/pages/api/core/chat/clearHistories.ts | 2 + .../app/src/pages/api/core/chat/delHistory.ts | 4 +- .../api/core/chat/getPaginationRecords.ts | 4 + .../src/pages/api/core/chat/item/delete.ts | 14 +- .../api/core/chat/presignChatFileGetUrl.ts | 21 + .../api/core/chat/presignChatFilePostUrl.ts | 36 + .../pages/api/core/dataset/apiDataset/list.ts | 1 - .../app/src/pages/api/core/dataset/paths.ts | 2 +- .../api/core/plugin/admin/installWithUrl.ts | 36 + .../plugin/admin/marketplace/installed.ts | 33 + .../api/core/plugin/admin/pkg/confirm.ts | 36 + .../pages/api/core/plugin/admin/pkg/delete.ts | 48 ++ .../pages/api/core/plugin/admin/pkg/parse.ts | 39 ++ .../api/core/plugin/admin/pkg/presign.ts | 39 ++ .../api/core/plugin/admin/tool/app/create.ts | 72 ++ .../core/plugin/admin/tool/app/systemApps.ts | 55 ++ .../api/core/plugin/admin/tool/delete.ts | 35 + .../api/core/plugin/admin/tool/detail.ts | 69 ++ .../pages/api/core/plugin/admin/tool/list.ts | 49 ++ .../api/core/plugin/admin/tool/tag/create.ts | 33 + .../api/core/plugin/admin/tool/tag/delete.ts | 44 ++ .../api/core/plugin/admin/tool/tag/update.ts | 37 + .../core/plugin/admin/tool/tag/updateOrder.ts | 39 ++ .../api/core/plugin/admin/tool/update.ts | 84 +++ .../api/core/plugin/admin/tool/updateOrder.ts | 37 + .../src/pages/api/core/plugin/team/list.ts | 54 ++ .../api/core/plugin/team/toggleInstall.ts | 39 ++ .../pages/api/core/plugin/team/toolDetail.ts | 83 +++ .../src/pages/api/core/plugin/toolTag/list.ts | 20 + .../src/pages/api/marketplace/[...path].ts | 70 ++ .../pages/api/support/mcp/client/getTools.ts | 2 +- .../src/pages/api/system/plugin/[...path].ts | 45 +- .../app/src/pages/api/v1/chat/completions.ts | 15 +- .../app/src/pages/api/v2/chat/completions.ts | 14 +- projects/app/src/pages/chat/share.tsx | 2 +- projects/app/src/pages/config/tool/index.tsx | 228 ++++++ .../app/src/pages/config/tool/marketplace.tsx | 652 ++++++++++++++++++ .../pages/dashboard/[pluginGroupId]/index.tsx | 145 ---- projects/app/src/pages/login/index.tsx | 6 +- projects/app/src/pages/more/index.tsx | 73 -- projects/app/src/pages/plugin/tool/index.tsx | 390 +++++++++++ .../app/src/service/common/bullmq/index.ts | 7 + .../app/src/service/common/system/index.ts | 47 +- projects/app/src/service/support/mcp/utils.ts | 14 +- projects/app/src/web/common/api/request.ts | 14 +- projects/app/src/web/common/file/api.ts | 20 +- projects/app/src/web/common/utils/voice.ts | 8 +- projects/app/src/web/core/app/api.ts | 2 +- .../web/core/app/api/{plugin.ts => tool.ts} | 42 +- .../web/core/chat/context/chatItemContext.tsx | 1 - projects/app/src/web/core/dataset/api.ts | 2 +- projects/app/src/web/core/plugin/admin/api.ts | 26 + .../app/src/web/core/plugin/admin/tool/api.ts | 54 ++ .../src/web/core/plugin/marketplace/api.ts | 23 + projects/app/src/web/core/plugin/team/api.ts | 19 + .../app/src/web/core/plugin/toolTag/api.ts | 6 + projects/app/src/web/core/workflow/utils.ts | 3 +- .../test/api/core/app/exportChatLogs.test.ts | 129 ++++ projects/marketplace/.env.template | 1 + projects/marketplace/.eslintrc.json | 17 + projects/marketplace/.gitignore | 36 + projects/marketplace/Dockerfile | 85 +++ projects/marketplace/README.md | 40 ++ projects/marketplace/env.d.ts | 7 + projects/marketplace/next-i18next.config.js | 13 + projects/marketplace/next.config.js | 137 ++++ projects/marketplace/package.json | 40 ++ projects/marketplace/postcss.config.mjs | 8 + projects/marketplace/public/favicon.ico | Bin 0 -> 15086 bytes projects/marketplace/src/instrumentation.ts | 20 + projects/marketplace/src/pages/_app.tsx | 32 + projects/marketplace/src/pages/_document.tsx | 16 + projects/marketplace/src/pages/_error.tsx | 32 + .../marketplace/src/pages/api/tool/detail.ts | 46 ++ .../marketplace/src/pages/api/tool/list.ts | 55 ++ .../marketplace/src/pages/api/tool/tags.ts | 25 + projects/marketplace/src/pages/index.tsx | 489 +++++++++++++ .../src/service/middleware/entry.ts | 52 ++ projects/marketplace/src/service/s3/index.ts | 9 + projects/marketplace/src/service/tool/data.ts | 26 + projects/marketplace/src/styles/globals.css | 27 + projects/marketplace/src/web/api.ts | 24 + .../src/web/common/Select/I18nLngSelector.tsx | 37 + .../src/web/common/i18n/I18nInitializer.tsx | 33 + .../marketplace/src/web/common/i18n/utils.ts | 15 + projects/marketplace/tailwind.config.ts | 19 + projects/marketplace/tsconfig.json | 11 + .../global/common/string/markdown.test.ts | 546 +++++++++++++++ test/cases/service/worker/htmlStr2Md.test.ts | 317 +++++++++ test/utils/request.ts | 95 ++- tsconfig.json | 2 +- 364 files changed, 15051 insertions(+), 3514 deletions(-) rename CLAUDE.md => .claude/CLAUDE.md (94%) create mode 100644 .github/workflows/marketplace-image.yml create mode 100644 document/content/docs/upgrading/4-14/4140.mdx create mode 100644 document/public/imgs/image-121.png delete mode 100644 document/public/imgs/plugins/file.png create mode 100644 document/public/imgs/plugins/files.png create mode 100644 packages/global/common/error/s3.ts rename packages/global/common/parentFolder/{type.d.ts => type.ts} (87%) delete mode 100644 packages/global/core/app/mcpTools/type.d.ts delete mode 100644 packages/global/core/app/plugin/utils.ts delete mode 100644 packages/global/core/app/systemTool/constants.ts rename packages/global/core/app/{plugin => tool}/constants.ts (92%) rename packages/global/core/app/{httpTools => tool/httpTool}/type.d.ts (100%) rename packages/global/core/app/{httpTools => tool/httpTool}/utils.ts (89%) create mode 100644 packages/global/core/app/tool/mcpTool/type.d.ts rename packages/global/core/app/{mcpTools => tool/mcpTool}/utils.ts (76%) create mode 100644 packages/global/core/app/tool/systemTool/constants.ts rename packages/global/core/app/{plugin => tool}/type.d.ts (68%) create mode 100644 packages/global/core/app/tool/utils.ts create mode 100644 packages/global/core/app/tool/workflowTool/utils.ts delete mode 100644 packages/global/core/chat/api.d.ts create mode 100644 packages/global/core/chat/api.ts create mode 100644 packages/global/core/plugin/admin/tool/type.ts create mode 100644 packages/global/core/plugin/schema/type.ts create mode 100644 packages/global/core/plugin/tool/type.ts create mode 100644 packages/global/core/plugin/type.ts create mode 100644 packages/global/openapi/api.ts create mode 100644 packages/global/openapi/core/plugin/admin/api.ts create mode 100644 packages/global/openapi/core/plugin/admin/index.ts create mode 100644 packages/global/openapi/core/plugin/admin/tool/api.ts create mode 100644 packages/global/openapi/core/plugin/admin/tool/index.ts create mode 100644 packages/global/openapi/core/plugin/admin/tool/tag/api.ts create mode 100644 packages/global/openapi/core/plugin/admin/tool/tag/index.ts create mode 100644 packages/global/openapi/core/plugin/index.ts create mode 100644 packages/global/openapi/core/plugin/marketplace/api.ts create mode 100644 packages/global/openapi/core/plugin/marketplace/index.ts create mode 100644 packages/global/openapi/core/plugin/team/api.ts create mode 100644 packages/global/openapi/core/plugin/team/index.ts create mode 100644 packages/global/openapi/core/plugin/team/toolApi.ts create mode 100644 packages/global/openapi/core/plugin/toolTag/api.ts create mode 100644 packages/global/openapi/core/plugin/toolTag/index.ts create mode 100644 packages/global/openapi/tag.ts create mode 100644 packages/global/support/permission/chat/type.ts create mode 100644 packages/service/common/s3/mq.ts create mode 100644 packages/service/common/s3/sources/chat/index.ts create mode 100644 packages/service/common/s3/sources/chat/type.ts delete mode 100644 packages/service/core/app/plugin/type.d.ts rename packages/service/core/app/{plugin => tool}/controller.ts (74%) rename packages/service/core/app/{plugin => tool/runtime}/utils.ts (63%) create mode 100644 packages/service/core/app/tool/workflowTool/utils.ts create mode 100644 packages/service/core/chat/utils.ts create mode 100644 packages/service/core/plugin/schema/teamInstalledPluginSchema.ts rename packages/service/core/{app/plugin => plugin/tool}/pluginGroupSchema.ts (66%) rename packages/service/core/{app/plugin/systemPluginSchema.ts => plugin/tool/systemToolSchema.ts} (53%) create mode 100644 packages/service/core/plugin/tool/tagSchema.ts create mode 100644 packages/web/components/common/Icon/icons/core/app/pluginFill.svg create mode 100644 packages/web/components/common/Icon/icons/core/app/pluginLight.svg delete mode 100644 packages/web/components/common/Icon/icons/core/app/type/pluginLight.svg create mode 100644 packages/web/components/common/Icon/icons/file/fill/audio.svg create mode 100644 packages/web/components/common/Icon/icons/file/fill/video.svg create mode 100644 packages/web/components/common/Icon/icons/navbar/chatFill.svg create mode 100644 packages/web/components/common/Icon/icons/navbar/chatLight.svg create mode 100644 packages/web/components/common/Icon/icons/navbar/dashboardFill.svg create mode 100644 packages/web/components/common/Icon/icons/navbar/dashboardLight.svg create mode 100644 packages/web/components/common/Icon/icons/navbar/datasetFill.svg create mode 100644 packages/web/components/common/Icon/icons/navbar/datasetLight.svg create mode 100644 packages/web/components/common/Icon/icons/navbar/userFill.svg create mode 100644 packages/web/components/common/Icon/icons/navbar/userLight.svg create mode 100644 packages/web/components/common/Icon/icons/support/config/configFill.svg create mode 100644 packages/web/components/common/Icon/icons/support/config/configLight.svg create mode 100644 packages/web/components/common/Markdown/index.tsx create mode 100644 packages/web/components/core/plugin/tool/TagFilterBox.tsx create mode 100644 packages/web/components/core/plugin/tool/ToolCard.tsx create mode 100644 packages/web/components/core/plugin/tool/ToolDetailDrawer.tsx delete mode 100644 projects/app/src/components/Select/FileSelector.tsx create mode 100644 projects/app/src/components/core/app/formRender/FileSelector.tsx rename projects/app/src/components/core/app/{plugin => tool}/CostTooltip.tsx (100%) delete mode 100644 projects/app/src/pageComponents/app/plugin/UploadSystemToolModal.tsx rename projects/app/src/pageComponents/app/{plugin => tool}/SecretInputModal.tsx (94%) create mode 100644 projects/app/src/pageComponents/config/ImportPluginModal.tsx create mode 100644 projects/app/src/pageComponents/config/TagManageModal.tsx create mode 100644 projects/app/src/pageComponents/config/tool/SystemToolConfigModal.tsx create mode 100644 projects/app/src/pageComponents/config/tool/ToolRow.tsx create mode 100644 projects/app/src/pageComponents/config/tool/WorkflowToolConfigModal.tsx delete mode 100644 projects/app/src/pageComponents/dashboard/SystemPlugin/ToolCard.tsx create mode 100644 projects/app/src/pages/api/admin/initv4140.ts rename projects/app/src/pages/api/common/file/{getAvatarPresign.ts => presignAvatarPostUrl.ts} (100%) delete mode 100644 projects/app/src/pages/api/core/app/plugin/getToolGroups.ts rename projects/app/src/pages/api/core/app/{plugin => tool}/getPreviewNode.ts (78%) rename projects/app/src/pages/api/core/app/{plugin/getSystemPluginTemplates.ts => tool/getSystemToolTemplates.ts} (56%) rename projects/app/src/pages/api/core/app/{plugin => tool}/getVersionList.ts (76%) rename projects/app/src/pages/api/core/app/{plugin => tool}/path.ts (93%) create mode 100644 projects/app/src/pages/api/core/chat/presignChatFileGetUrl.ts create mode 100644 projects/app/src/pages/api/core/chat/presignChatFilePostUrl.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/installWithUrl.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/marketplace/installed.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/pkg/confirm.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/pkg/delete.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/pkg/parse.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/pkg/presign.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/tool/app/create.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/tool/app/systemApps.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/tool/delete.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/tool/detail.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/tool/list.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/tool/tag/create.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/tool/tag/delete.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/tool/tag/update.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/tool/tag/updateOrder.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/tool/update.ts create mode 100644 projects/app/src/pages/api/core/plugin/admin/tool/updateOrder.ts create mode 100644 projects/app/src/pages/api/core/plugin/team/list.ts create mode 100644 projects/app/src/pages/api/core/plugin/team/toggleInstall.ts create mode 100644 projects/app/src/pages/api/core/plugin/team/toolDetail.ts create mode 100644 projects/app/src/pages/api/core/plugin/toolTag/list.ts create mode 100644 projects/app/src/pages/api/marketplace/[...path].ts create mode 100644 projects/app/src/pages/config/tool/index.tsx create mode 100644 projects/app/src/pages/config/tool/marketplace.tsx delete mode 100644 projects/app/src/pages/dashboard/[pluginGroupId]/index.tsx delete mode 100644 projects/app/src/pages/more/index.tsx create mode 100644 projects/app/src/pages/plugin/tool/index.tsx create mode 100644 projects/app/src/service/common/bullmq/index.ts rename projects/app/src/web/core/app/api/{plugin.ts => tool.ts} (76%) create mode 100644 projects/app/src/web/core/plugin/admin/api.ts create mode 100644 projects/app/src/web/core/plugin/admin/tool/api.ts create mode 100644 projects/app/src/web/core/plugin/marketplace/api.ts create mode 100644 projects/app/src/web/core/plugin/team/api.ts create mode 100644 projects/app/src/web/core/plugin/toolTag/api.ts create mode 100644 projects/app/test/api/core/app/exportChatLogs.test.ts create mode 100644 projects/marketplace/.env.template create mode 100644 projects/marketplace/.eslintrc.json create mode 100644 projects/marketplace/.gitignore create mode 100644 projects/marketplace/Dockerfile create mode 100644 projects/marketplace/README.md create mode 100644 projects/marketplace/env.d.ts create mode 100644 projects/marketplace/next-i18next.config.js create mode 100644 projects/marketplace/next.config.js create mode 100644 projects/marketplace/package.json create mode 100644 projects/marketplace/postcss.config.mjs create mode 100644 projects/marketplace/public/favicon.ico create mode 100644 projects/marketplace/src/instrumentation.ts create mode 100644 projects/marketplace/src/pages/_app.tsx create mode 100644 projects/marketplace/src/pages/_document.tsx create mode 100644 projects/marketplace/src/pages/_error.tsx create mode 100644 projects/marketplace/src/pages/api/tool/detail.ts create mode 100644 projects/marketplace/src/pages/api/tool/list.ts create mode 100644 projects/marketplace/src/pages/api/tool/tags.ts create mode 100644 projects/marketplace/src/pages/index.tsx create mode 100644 projects/marketplace/src/service/middleware/entry.ts create mode 100644 projects/marketplace/src/service/s3/index.ts create mode 100644 projects/marketplace/src/service/tool/data.ts create mode 100644 projects/marketplace/src/styles/globals.css create mode 100644 projects/marketplace/src/web/api.ts create mode 100644 projects/marketplace/src/web/common/Select/I18nLngSelector.tsx create mode 100644 projects/marketplace/src/web/common/i18n/I18nInitializer.tsx create mode 100644 projects/marketplace/src/web/common/i18n/utils.ts create mode 100644 projects/marketplace/tailwind.config.ts create mode 100644 projects/marketplace/tsconfig.json create mode 100644 test/cases/global/common/string/markdown.test.ts create mode 100644 test/cases/service/worker/htmlStr2Md.test.ts diff --git a/CLAUDE.md b/.claude/CLAUDE.md similarity index 94% rename from CLAUDE.md rename to .claude/CLAUDE.md index 12d4c2bb0..293180788 100644 --- a/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -118,4 +118,9 @@ FastGPT 是一个 AI Agent 构建平台,通过 Flow 提供开箱即用的数据 ## 代码规范 -- 尽可能使用 type 进行类型声明,而不是 interface。 \ No newline at end of file +- 尽可能使用 type 进行类型声明,而不是 interface。 + +## Agent 设计规范 + +1. 对于功能的实习和复杂问题修复,优先进行文档设计,并于让用户确认后,再进行执行修复。 +2. 采用"设计文档-测试示例-代码编写-测试运行-修正代码/文档"的工作模式,以测试为核心来确保设计的正确性。 \ No newline at end of file diff --git a/.claude/design/projects_app_performance_stability_analysis.md b/.claude/design/projects_app_performance_stability_analysis.md index 9e4b4107d..6ff0a0db9 100644 --- a/.claude/design/projects_app_performance_stability_analysis.md +++ b/.claude/design/projects_app_performance_stability_analysis.md @@ -80,7 +80,7 @@ addActiveNode(nodeId: string) { --- -### 🔴 H2. MongoDB 连接池配置缺失 +### 🔴 H2. MongoDB 连接池配置缺失(已解决) **位置**: - `packages/service/common/mongo/index.ts:12-24` @@ -147,7 +147,7 @@ connectionMongo.connection.on('connectionPoolClosed', () => { --- -### 🔴 H3. SSE 流式响应未处理客户端断开 +### 🔴 H3. SSE 流式响应未处理客户端断开(已解决) **位置**: `packages/service/core/workflow/dispatch/index.ts:105-129` diff --git a/.eslintignore b/.eslintignore index a574aa61b..587ce90ee 100644 --- a/.eslintignore +++ b/.eslintignore @@ -23,4 +23,6 @@ vitest.config.mts bin/ scripts/ deploy/ -document/ \ No newline at end of file +document/ + +projects/marketplace diff --git a/.github/workflows/marketplace-image.yml b/.github/workflows/marketplace-image.yml new file mode 100644 index 000000000..2dba410ef --- /dev/null +++ b/.github/workflows/marketplace-image.yml @@ -0,0 +1,139 @@ +name: Build Marketplace images + +on: + workflow_dispatch: + +jobs: + build-marketplace-images: + permissions: + packages: write + contents: read + attestations: write + id-token: write + strategy: + matrix: + archs: + - arch: amd64 + - arch: arm64 + runs-on: ubuntu-24.04-arm + runs-on: ${{ matrix.archs.runs-on || 'ubuntu-24.04' }} + steps: + # install env + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + driver-opts: network=host + + - name: Cache Docker layers + uses: actions/cache@v4 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-${{ matrix.archs.arch }}-marketplace-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-${{ matrix.archs.arch }}-marketplace-buildx- + + # login docker + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Login to Ali Hub + uses: docker/login-action@v3 + with: + registry: registry.cn-hangzhou.aliyuncs.com + username: ${{ secrets.ALI_HUB_USERNAME }} + password: ${{ secrets.ALI_HUB_PASSWORD }} + + - name: Build for ${{ matrix.archs.arch }} + id: build + uses: docker/build-push-action@v6 + with: + context: . + file: projects/marketplace/Dockerfile + platforms: linux/${{ matrix.archs.arch }} + labels: | + org.opencontainers.image.source=https://github.com/${{ github.repository }} + org.opencontainers.image.description=marketplace image + outputs: type=image,"name=ghcr.io/${{ github.repository_owner }}/marketplace,${{ secrets.ALI_IMAGE_NAME }}/marketplace",push-by-digest=true,push=true + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache + + - name: Export digest + run: | + mkdir -p ${{ runner.temp }}/digests/marketplace + digest="${{ steps.build.outputs.digest }}" + touch "${{ runner.temp }}/digests/marketplace/${digest#sha256:}" + + - name: Upload digest + uses: actions/upload-artifact@v4 + with: + name: digests-marketplace-${{ github.sha }}-${{ matrix.archs.arch }} + path: ${{ runner.temp }}/digests/marketplace/* + if-no-files-found: error + retention-days: 1 + + release-marketplace-images: + permissions: + packages: write + contents: read + attestations: write + id-token: write + needs: build-marketplace-images + runs-on: ubuntu-24.04 + steps: + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Login to Ali Hub + uses: docker/login-action@v3 + with: + registry: registry.cn-hangzhou.aliyuncs.com + username: ${{ secrets.ALI_HUB_USERNAME }} + password: ${{ secrets.ALI_HUB_PASSWORD }} + + - name: Download digests + uses: actions/download-artifact@v4 + with: + path: ${{ runner.temp }}/digests + pattern: digests-marketplace-${{ github.sha }}-* + merge-multiple: true + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Generate random tag + id: tag + run: | + # Generate random hash tag (8 characters) + TAG=$(echo $RANDOM | md5sum | head -c 8) + echo "RANDOM_TAG=$TAG" >> $GITHUB_ENV + echo "Generated tag: $TAG" + + - name: Set image name and tag + run: | + echo "Git_IMAGE=ghcr.io/${{ github.repository_owner }}/marketplace:${{ env.RANDOM_TAG }}" >> $GITHUB_ENV + echo "Ali_IMAGE=${{ secrets.ALI_IMAGE_NAME }}/marketplace:${{ env.RANDOM_TAG }}" >> $GITHUB_ENV + + - name: Create manifest list and push + working-directory: ${{ runner.temp }}/digests + run: | + echo "Pushing image with tag: ${{ env.RANDOM_TAG }}" + TAGS="$(echo -e "${Git_Tag}\n${Ali_Tag}")" + for TAG in $TAGS; do + docker buildx imagetools create -t $TAG \ + $(printf 'ghcr.io/${{ github.repository_owner }}/marketplace@sha256:%s ' *) + sleep 5 + done + echo "✅ Successfully pushed images:" + echo " - ${{ env.Git_IMAGE }}" + echo " - ${{ env.Ali_IMAGE }}" diff --git a/document/content/docs/introduction/development/design/design_plugin.mdx b/document/content/docs/introduction/development/design/design_plugin.mdx index ae70473eb..045362930 100644 --- a/document/content/docs/introduction/development/design/design_plugin.mdx +++ b/document/content/docs/introduction/development/design/design_plugin.mdx @@ -32,7 +32,7 @@ description: FastGPT 系统插件设计方案 1. 使用 ts-rest 作为 RPC 框架进行交互,提供 sdk 供 FastGPT 主项目调用 2. 使用 zod 进行类型验证 -3. 用 bun 进行编译,每个工具编译为单一的 `.js` 文件,支持热插拔。 +3. 用 bun 进行编译,每个工具编译为单一的 `.pkg` 文件,支持热插拔。 ## 项目结构 @@ -48,7 +48,8 @@ description: FastGPT 系统插件设计方案 - **model** 模型预设 - **scripts** 脚本(编译、创建新工具) - **sdk**: SDK 定义,供外部调用,发布到了 npm -- **src**: 运行时,express 服务 +- **runtime**: 运行时,express 服务 +- **lib**: 库文件,提供工具函数和类库 - **test**: 测试相关 系统工具的结构可以参考 [如何开发系统工具](/docs/introduction/guide/plugins/dev_system_tool)。 @@ -78,7 +79,7 @@ zod 可以实现在运行时的类型校验,也可以提供更高级的功能 ### 使用 bun 进行打包 -将插件 bundle 为一个单一的 `.js` 文件是一个重要的设计。这样可以将插件发布出来直接通过网络挂载等的形式使用。 +将插件 bundle 为一个单一的 `.pkg` 文件是一个重要的设计。这样可以将插件发布出来直接通过网络挂载等的形式使用。 ## 未来规划 diff --git a/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx b/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx index 775ad7a50..df4cbdeb5 100644 --- a/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx +++ b/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx @@ -5,7 +5,9 @@ description: FastGPT 系统工具开发指南 ## 介绍 -FastGPT 系统工具项目从 4.10.0 版本后移动到独立的`fastgpt-plugin`项目中,采用纯代码的模式进行工具编写。你可以在`fastgpt-plugin`项目中进行独立开发和调试好插件后,直接向 FastGPT 官方提交 PR 即可,无需运行 FastGPT 主服务。 +FastGPT 系统工具项目从 4.10.0 版本后移动到独立的`fastgpt-plugin`项目中,采用纯代码的模式进行工具编写。 +在 4.14.0 版本插件市场更新后,系统工具开发流程有所改变,请依照最新文档贡献代码。 +你可以在`fastgpt-plugin`项目中进行独立开发和调试好插件后,直接向 FastGPT 官方提交 PR 即可,无需运行 FastGPT 主服务。 ## 概念 @@ -14,29 +16,74 @@ FastGPT 系统工具项目从 4.10.0 版本后移动到独立的`fastgpt-plugin` 在`fastgpt-plugin`中,你可以每次创建一个工具/工具集,每次提交时,仅接收一个工具/工具集。如需开发多个,可以创建多个 PR 进行提交。 -## 1. 准备工作 +## 1. 准备开发环境 -- Fork [fastgpt-plugin 项目](https://github.com/labring/fastgpt-plugin) -- 安装 [Bun](https://bun.sh/) -- 部署一套 Minio,也可以直接使用 FastGPT 的 `docker-compose.yml` 中的 Minio。 -- 本地 clone 项目 `git clone git@github.com:[your-github-username]/fastgpt-plugin.git` -- 拷贝示例环境变量文件,并修改连接到开发环境的 Minio `cp .env.example .env.local` -- 安装依赖 `bun install` -- 运行开发环境 `bun run dev` +### 1.1 安装 Bun -在 dev 环境下,Bun 将监听修改并热更新。 +- 安装 [Bun](https://bun.sh/), FastGPT-plugin 使用 Bun 作为包管理器 -## 2. 初始化一个新的工具/工具集 +### 1.2 Fork FastGPT-plugin 仓库 -### 2.1 执行创建命令 +Fork 本仓库 `https://github.com/labring/fastgpt-plugin` + +### 1.3 搭建开发脚手架 + + + +注意:由于使用了 bun 特有的 API,必须使用 bunx 进行安装,使用 npx/npx 等会报错 + +创建一个新的目录,在该目录下执行: +```bash +bunx @fastgpt-sdk/plugin-cli +``` + +上述命令会在当前目录下创建 fastgpt-plugin 目录,并且添加两个 remote: +- upstream 指向官方仓库 +- origin 指向你自己的仓库 + +默认使用 sparse-checkout 避免拉取所有的官方插件代码 + + + +- 本地在一个新建目录下初始化一个 `git`: ```bash +git init +``` + +如果配置了 Git SSH Key, 则可以: +```bash +git remote add origin git@github.com:[your-name]/fastgpt-plugin.git +git remote add upstream git@github.com:labring/fastgpt-plugin.git +``` + +否则使用 https: +```bash +git remote add origin https://github.com/[your-name]/fastgpt-plugin.git +git remote add upstream https://github.com/labring/fastgpt-plugin.git +``` + +- (可选)使用稀疏检出 (Sparse-checkout) 以避免拉取所有插件代码,如果不进行稀疏检出,则会拉取所有官方插件 +```bash +git sparse-checkout init --no-cone +git sparse-checkout add "/*" "!/modules/tool/packages/*" +git pull +``` + +使用命令创建新工具 +```bash +bun i bun run new:tool ``` -依据提示分别选择创建工具/工具集,以及目录名(使用 camelCase 小驼峰法命名)。 + + -执行完后,系统会在 `modules/tool/packages/[your-tool-name]` 下生成一个工具/工具集的目录。 +## 2. 编写工具代码 + +### 2.1 工具代码结构 + +依据提示分别选择创建工具/工具集,以及目录名(使用 camelCase 小驼峰法命名)。 系统工具 (Tool) 文件结构如下: @@ -48,6 +95,8 @@ test // 测试样例 config.ts // 配置,配置工具的名称、描述、类型、图标等 index.ts // 入口,不要改这个文件 logo.svg // Logo,替换成你的工具的 Logo +README.md // (可选)README 文件,用于展示工具的使用说明和示例 +assets/ // (可选)assets 目录,用于存放工具的资源文件,如图片、音频等 package.json // npm 包 ``` @@ -55,19 +104,21 @@ package.json // npm 包 ```plaintext children -└── tool // 这个里面的结构就和上面的 tool 基本一致 +└── tool // 这个里面的结构就和上面的 tool 一致,但是没有 README 和 assets 目录 config.ts index.ts logo.svg +README.md +assets/ package.json ``` ### 2.2 修改 config.ts - **name** 和 **description** 字段为中文和英文两种语言 -- **courseUrl** 密钥获取链接,或官网链接,教程链接等。 +- **courseUrl**(可选) 密钥获取链接,或官网链接,教程链接等,如果提供 README.md,则可以写到 README 里面 - **author** 开发者名 -- **type** 为枚举类型,目前有: +- **tags** 工具默认的标签,有如下可选标签(枚举类型) - tools: 工具 - search: 搜索 - multimodal: 多模态 @@ -204,7 +255,7 @@ dalle3 的 outputs 参数格式如下: } ``` -## 2. 编写处理逻辑 +### 2.3 编写处理逻辑 在 `[your-tool-name]/src/index.ts` 为入口编写处理逻辑,需要注意: @@ -234,15 +285,51 @@ export async function tool(props: z.infer): Promise 注意:不要把你的 secret 密钥等写到测试样例中 +> +> 使用 Agent 工具编写测试样例时,可能 Agent 工具会修改您的处理逻辑甚至修改整个测试框架的逻辑。 + +### 5.2 查看测试样例覆盖率(coverage) + +浏览器打开 coverage/index.html 可以插件各个模块的覆盖率 + +提交插件给官方仓库,必须编写单元测试样例,并且达到: +- 90% 以上代码覆盖率 +- 100% 函数覆盖率 +- 100% 分支条件覆盖率 + +## 6. E2E (端到端)测试 + +对于简单的工具,可能并不需要进行 E2E 测试,而如果工具过于复杂,官方人员可能会要求您完成 E2E 测试。 + +### 6.1 部署 E2E 测试环境 + +1. 参考 [快速开始本地开发](/docs/introduction/development/intro),在本地部署一套 FastGPT 开发环境 +2. `cd runtime && cp .env.template .env.local` 复制环境变量样例文件,连接到上一步部署的 Minio, Mongo, Redis 中 +3. `bun run dev` 运行开发环境,修改 FastGPT 的环境变量,连接到你刚刚启动的 fastgpt-plugin + +### 6.2 从 Scalar 进行测试 + +运行 fastgpt-plugin 开发环境 + +浏览器打开`http://localhost:PORT/openapi`可进入`fastgpt-plugin`的 OpenAPI 页面,进行 API 调试。 +PORT 为你的 fastgpt-plugin 的端口 ![](/imgs/plugin-openapi.png) @@ -250,14 +337,18 @@ export async function tool(props: z.infer): Promise 从 FastGPT 4.14.0 版本开始,系统管理员可以通过 Web 界面直接上传和更新系统工具,无需重新部署服务 +> 从 FastGPT 4.14.0 版本开始,系统管理员可以通过 Web 界面直接上传和更新系统工具进行热更新 ## 权限要求 ⚠️ **重要提示**:只有 **root 用户** 才能使用在线上传系统工具功能。 - 确保您已使用 `root` 账户登录 FastGPT -- 普通用户无法看到"导入/更新"按钮和删除功能 ## 支持的文件格式 -- **文件类型**:`.js` 文件 -- **文件大小**:最大 10MB -- **文件数量**:每次只能上传一个文件 +- **文件类型**:`.pkg` 文件 +- **文件大小**:最大 100 MB +- **文件数量**:每次最多上传 15 个文件 ## 上传步骤 -### 1. 进入系统工具页面 +### 1. 进入配置页面 -1. 登录 FastGPT 管理后台 -2. 导航到:**工作台** → **系统工具** -3. 确认页面右上角显示"导入/更新"按钮(只有 root 用户可见) ![](/imgs/plugins/entry.png) ### 2. 准备工具文件 -在上传之前,请确保您的 `.js` 文件是从 fastgpt-plugin 项目中通过 `bun run build` 命令打包后的 dist/tools/built-in 文件夹下得到的 +在上传之前,请确保您的 `.pkg` 文件是从 fastgpt-plugin 项目中通过 `bun run build:pkg` 命令打包后的 `dist/pkgs` 文件夹下得到的 -![](/imgs/plugins/file.png) +![](/imgs/plugins/files.png) ### 3. 执行上传 1. 点击 **"导入/更新"** 按钮 2. 在弹出的对话框中,点击文件选择区域 -3. 选择您准备好的 `.js` 工具文件 +3. 选择您准备好的 `.pkg` 工具文件 4. 确认文件信息无误后,点击 **"确认导入"** ### 4. 上传过程 @@ -54,70 +50,10 @@ description: FastGPT 系统工具在线上传指南 - **上传工具**:仅 root 用户可以上传新工具或更新现有工具 - **删除工具**:仅 root 用户可以删除已上传的工具 -### 工具类型识别 - -系统会根据工具的配置自动识别工具类型: - -- 🔧 **工具 (tools)** -- 🔍 **搜索 (search)** -- 🎨 **多模态 (multimodal)** -- 💬 **通讯 (communication)** -- 📦 **其他 (other)** - ## 常见问题 -### Q: 上传失败,提示"文件内容存在错误" - -**可能原因:** -- fastgpt-plugin 项目不是最新的,导致打包的 `.js` 文件缺少正确的内容 -- 工具配置格式不正确 - -**解决方案:** -1. 拉取最新的 fastgpt-plugin 项目重新进行 `bun run build` 获得打包后的 `.js` 文件 -2. 检查本地插件运行是否成功 - ### Q: 无法看到"导入/更新"按钮 **原因:** 当前用户不是 root 用户 **解决方案:** 使用 root 账户重新登录 - -### Q: 文件上传超时 - -**可能原因:** -- 文件过大(超过 10MB) -- 网络连接不稳定 - -**解决方案:** -1. 确认文件大小在限制范围内 -2. 检查网络连接 -3. 尝试重新上传 - -## 最佳实践 - -### 上传前检查 - -1. **代码测试**:在本地环境测试工具功能 -2. **格式验证**:确保符合 FastGPT 工具规范 -3. **文件大小**:保持文件在合理大小范围内 - -### 版本管理 - -- 建议为工具添加版本号注释 -- 更新工具时,先备份原有版本 -- 记录更新日志和功能变更 - -### 安全考虑 - -- 仅上传来源可信的工具文件 -- 避免包含敏感信息或凭据 -- 定期审查已安装的工具 - -### 存储方式 - -- 工具文件存储在 MinIO 中 -- 工具元数据保存在 MongoDB 中 - ---- - -通过在线上传功能,您可以快速部署和管理系统工具,提高 FastGPT 的扩展性和灵活性。如遇到问题,请参考上述常见问题或联系技术支持。 diff --git a/document/content/docs/toc.mdx b/document/content/docs/toc.mdx index bdb137127..d1591c83d 100644 --- a/document/content/docs/toc.mdx +++ b/document/content/docs/toc.mdx @@ -110,6 +110,7 @@ description: FastGPT 文档目录 - [/docs/upgrading/4-13/4130](/docs/upgrading/4-13/4130) - [/docs/upgrading/4-13/4131](/docs/upgrading/4-13/4131) - [/docs/upgrading/4-13/4132](/docs/upgrading/4-13/4132) +- [/docs/upgrading/4-14/4140](/docs/upgrading/4-14/4140) - [/docs/upgrading/4-8/40](/docs/upgrading/4-8/40) - [/docs/upgrading/4-8/41](/docs/upgrading/4-8/41) - [/docs/upgrading/4-8/42](/docs/upgrading/4-8/42) diff --git a/document/content/docs/upgrading/4-14/4140.mdx b/document/content/docs/upgrading/4-14/4140.mdx new file mode 100644 index 000000000..041eff41d --- /dev/null +++ b/document/content/docs/upgrading/4-14/4140.mdx @@ -0,0 +1,62 @@ +--- +title: 'V4.14.0(进行中)' +description: 'FastGPT V4.14.0 更新说明' +--- + +## 更新指南 + +### 1. 更新镜像: + +- 更新 FastGPT 镜像tag: v4.14.0 +- 更新 FastGPT 商业版镜像tag: v4.14.0 +- 更新 fastgpt-plugin 镜像 tag: v0.3.0 +- mcp_server 无需更新 +- Sandbox 无需更新 +- AIProxy 无需更新 + +### 2. 执行升级脚本 + +仅需使用过自定义系统工具的商业版用户操作。 +从任意终端,发起 1 个 HTTP 请求。其中 `{{rootkey}}` 替换成环境变量里的 `rootkey`;`{{host}}` 替换成**FastGPT 域名**。 + +```bash +curl --location --request POST 'https://{{host}}/api/admin/initv4140' \ +--header 'rootkey: {{rootkey}}' \ +--header 'Content-Type: application/json' +``` + +会将原系统工具迁移到最新数据表中。 + +### 3. 安装系统插件至系统 + +* 原先手动安装的 js 插件包将会失效,需重新打包安装。 +* 目前插件里仅包含工具,后续将增加触发器,文档解析器,数据分块策略,索引增强策略等。 +* 系统安装完插件后,对于多租户的系统,团队管理员可以在插件库中激活对应工具,从而在应用中使用。对于开源版,root 团队会默认激活所有系统工具。 + +从 V4.14.0 版本开始,fastgpt-plugin 镜像仅提供运行环境,不再预装系统插件,所有 FastGPT 系统需手动安装系统插件。可以通过公开的 FastGPT Marketplace 进行在线安装,或下载 .pkg 文件进行安装。 + +除了安装外,还可对工具进行排序、默认安装、标签管理等。 + +![alt text](/imgs/image-121.png) + +## 🚀 新增内容 + +1. 增加插件市场,同时移除自定义工具分类,仅支持自定义标签。本期支持系统工具,可以从 FastGPT Marketplace 统一安装系统工具。后续将支持更多插件类型:工作流触发器,数据源解析方式,数据分块,索引增强策略等。 +2. 对话框上传文件移动存储至 S3,并且不会自动过期,完全跟随对话记录删除。安全性更高,签发预览连接仅 1 小时生效,而不是长期。 +3. 全局变量支持时间点/时间范围/对话模型选择类型。 +4. 插件输入支持密码类型。 + +## ⚙️ 优化 + +1. 匹配 Markdown 中 Base64 图片正则性能。 + +## 🐛 修复 + +1. Claude 工具调用,如果下标从 1 开始会导致参数异常。 +2. S3 删除头像,如果 key 为空时,会抛错,导致流程阻塞。 +3. 工作流前置IO 变更时,依赖未及时刷新。 +4. 导出对话日志,缺少反馈记录。 +5. 工作流欢迎语输入框输入时,光标会偏移到最后一位。 +6. 存在交互节点和连续批量执行时,会导致工作流运行逻辑错误。 +7. 工作流 Redo 操作后,编辑记录无法再继续推送快照。 + diff --git a/document/content/docs/upgrading/meta.json b/document/content/docs/upgrading/meta.json index 89e4c054a..a91b2bb8a 100644 --- a/document/content/docs/upgrading/meta.json +++ b/document/content/docs/upgrading/meta.json @@ -4,6 +4,8 @@ "description": "FastGPT 版本更新介绍及升级操作", "pages": [ "index", + "---4.14.x---", + "...4-14", "---4.13.x---", "...4-13", "---4.12.x---", diff --git a/document/data/doc-last-modified.json b/document/data/doc-last-modified.json index 8ab17e251..e106e2501 100644 --- a/document/data/doc-last-modified.json +++ b/document/data/doc-last-modified.json @@ -19,7 +19,7 @@ "document/content/docs/introduction/development/custom-models/ollama.mdx": "2025-08-05T23:20:39+08:00", "document/content/docs/introduction/development/custom-models/xinference.mdx": "2025-08-05T23:20:39+08:00", "document/content/docs/introduction/development/design/dataset.mdx": "2025-07-23T21:35:03+08:00", - "document/content/docs/introduction/development/design/design_plugin.mdx": "2025-08-20T19:00:48+08:00", + "document/content/docs/introduction/development/design/design_plugin.mdx": "2025-10-30T22:14:07+08:00", "document/content/docs/introduction/development/docker.mdx": "2025-09-29T11:34:11+08:00", "document/content/docs/introduction/development/faq.mdx": "2025-08-12T22:22:18+08:00", "document/content/docs/introduction/development/intro.mdx": "2025-09-29T11:34:11+08:00", @@ -38,7 +38,7 @@ "document/content/docs/introduction/development/proxy/cloudflare.mdx": "2025-07-23T21:35:03+08:00", "document/content/docs/introduction/development/proxy/http_proxy.mdx": "2025-07-23T21:35:03+08:00", "document/content/docs/introduction/development/proxy/nginx.mdx": "2025-07-23T21:35:03+08:00", - "document/content/docs/introduction/development/quick-start.mdx": "2025-09-29T11:34:11+08:00", + "document/content/docs/introduction/development/quick-start.mdx": "2025-10-21T11:58:25+08:00", "document/content/docs/introduction/development/sealos.mdx": "2025-09-29T11:52:39+08:00", "document/content/docs/introduction/development/signoz.mdx": "2025-09-17T22:29:56+08:00", "document/content/docs/introduction/guide/DialogBoxes/htmlRendering.mdx": "2025-07-23T21:35:03+08:00", @@ -84,11 +84,11 @@ "document/content/docs/introduction/guide/knowledge_base/websync.mdx": "2025-08-05T23:20:39+08:00", "document/content/docs/introduction/guide/knowledge_base/yuque_dataset.mdx": "2025-09-17T22:29:56+08:00", "document/content/docs/introduction/guide/plugins/bing_search_plugin.mdx": "2025-07-23T21:35:03+08:00", - "document/content/docs/introduction/guide/plugins/dev_system_tool.mdx": "2025-08-20T19:00:48+08:00", + "document/content/docs/introduction/guide/plugins/dev_system_tool.mdx": "2025-10-30T22:14:07+08:00", "document/content/docs/introduction/guide/plugins/doc2x_plugin_guide.mdx": "2025-07-23T21:35:03+08:00", "document/content/docs/introduction/guide/plugins/google_search_plugin_guide.mdx": "2025-07-23T21:35:03+08:00", "document/content/docs/introduction/guide/plugins/searxng_plugin_guide.mdx": "2025-07-23T21:35:03+08:00", - "document/content/docs/introduction/guide/plugins/upload_system_tool.mdx": "2025-09-24T22:40:31+08:00", + "document/content/docs/introduction/guide/plugins/upload_system_tool.mdx": "2025-10-30T22:14:07+08:00", "document/content/docs/introduction/guide/team_permissions/invitation_link.mdx": "2025-07-23T21:35:03+08:00", "document/content/docs/introduction/guide/team_permissions/team_roles_permissions.mdx": "2025-07-23T21:35:03+08:00", "document/content/docs/introduction/index.en.mdx": "2025-07-23T21:35:03+08:00", @@ -101,7 +101,7 @@ "document/content/docs/protocol/terms.en.mdx": "2025-08-03T22:37:45+08:00", "document/content/docs/protocol/terms.mdx": "2025-08-03T22:37:45+08:00", "document/content/docs/toc.en.mdx": "2025-08-04T13:42:36+08:00", - "document/content/docs/toc.mdx": "2025-10-09T15:10:19+08:00", + "document/content/docs/toc.mdx": "2025-10-23T19:11:11+08:00", "document/content/docs/upgrading/4-10/4100.mdx": "2025-08-02T19:38:37+08:00", "document/content/docs/upgrading/4-10/4101.mdx": "2025-09-08T20:07:20+08:00", "document/content/docs/upgrading/4-11/4110.mdx": "2025-08-05T23:20:39+08:00", @@ -113,7 +113,8 @@ "document/content/docs/upgrading/4-12/4124.mdx": "2025-09-17T22:29:56+08:00", "document/content/docs/upgrading/4-13/4130.mdx": "2025-09-30T16:00:10+08:00", "document/content/docs/upgrading/4-13/4131.mdx": "2025-09-30T15:47:06+08:00", - "document/content/docs/upgrading/4-13/4132.mdx": "2025-10-21T11:32:22+08:00", + "document/content/docs/upgrading/4-13/4132.mdx": "2025-10-21T11:46:53+08:00", + "document/content/docs/upgrading/4-14/4140.mdx": "2025-11-03T12:13:10+08:00", "document/content/docs/upgrading/4-8/40.mdx": "2025-08-02T19:38:37+08:00", "document/content/docs/upgrading/4-8/41.mdx": "2025-08-02T19:38:37+08:00", "document/content/docs/upgrading/4-8/42.mdx": "2025-08-02T19:38:37+08:00", diff --git a/document/public/imgs/image-121.png b/document/public/imgs/image-121.png new file mode 100644 index 0000000000000000000000000000000000000000..ef13bb058fa3c8ee2b8bff5feef768bb62837e6b GIT binary patch literal 562762 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

I^2|>JVJS1JsDFt*$qIP7+lwl7Oy12 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

CD8(Y13NvrrpQG2% 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�uZcWxi+sMVK+{DxmH(UDup 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

s*)bFDwN0BSFm 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 Z`qMQre(X1I(7}JlRWy&J{bF|Q{{X>3N-O{X literal 0 HcmV?d00001 diff --git a/document/public/imgs/plugins/entry.png b/document/public/imgs/plugins/entry.png index aaadd6fad6cf49819b8686d51e3a1ae7c06f2c8a..b3e8c34d74c0e03ac108bc6cd70e10a35fb48c23 100644 GIT binary patch literal 130616 zcmd43hgVZu_XUat3!)ThQZ@7r(z{9k=@%jNj&ulJItZw=5Cx<+r4yR8&_P5%dhel^ z&^w`oz&rPPuix+e0dI_#5y&_vIs5Fk)?RzAIZyasY6|xWs0r}!@a`+V1i!+=yLE(z zhfjRxI&g-J{P864ao72!o*Nz>1@qs3*A!nd?ExoA+~suLHJz;7J*VNY33bQQv~abwgu2-{xu1C4SHQ!2jHd{GuH}`wHRI{7 zHC`*ccT$<8v3vjSyHD?k^MlqJL&~CDc4y#eqT4LBicnWKr&P=gnS>f|jVFyt$J=#P zG7YAi8(-i)yu*EBSnLvEmIi~+yMaRk&i$TrO-z{7&`_4=Zf{j3)m@-Ezh9=63kr2N z{yW0MyAkC4@XwJv^ShKk2Yeh)P&fZOdaH4Ff#tsgJeblQk!$}QnQFbL`Cs{2q(4;u z`v#9Hju`rP7yk45p8xLu@3&ff>G^ME=aFqxBxTV%_=KGBC1|@NU;KP-y`qKhr#}rM zO)Tyn^K&moCcX5 zgj@~+`KeLOnvT91MColzd{cu=6wdI2>X&pphuz3wl3~CTh>n|MaVp|L=gKvopNGpE z?bomCj)3DO3JKQ;4NiWD#>pfHZwT6a7o!4zlO-I6tWi zKgqCPHppb|a$$~hU%Kt0tOCML7E~~XVew;bc~I2$LdeIzZ5w!f|IRND<1d5=Cvkz7 z(MtFn-o4#L-Q+68vWb zKsmVxj*2b6s2L;FjA7U>4o*ZD)n-Rb(vDYl9AJnY%A(PH85Cya#4#H6ZFv2 z@Bh>u508*a6Ozlu@%LR#(^MaWp3he;s>*3V;z-1j@c1E?XaW9rrevZSohQ}~M7(}h z|6X?M1*f6;PcjHINQZLf<;fi=`IPBjT5%+9x!-%G<4Y)J-_2el92gq6ebFsJK zQU77^cNg0JL)s1(S_RsUNt4krkR{Ca5JUdHK=<{(HVw6f6(F58^J3-e1e^;8ZiQqb zR4keJKqdW}m1SB+Asm8K_y~K^T!h-k?FFH&1(trd;Kz5a&sn=PQFxNN1U~~K{aeW7 zAY>4Y&jxlMz5lK35J5s%<(w`*E8SLQ%NGQUgkPR^-1^pQ8fC{~Mh5b0M+L=kZaxk~ z^=5=3avH>PW}oIzPT856nfc{KzsjF#&HU@$sIFK4s8p%3Jhu1Z`@mkr$C1CmeN^nU z)~X6;)F5M4bWU}Z_R{Yv7!KDi%ybmF_3!QR@GK^YLsMdylwu|{5uH@_e8P~*kvKuf zXW=+VwH7jwIx1csxwB??+3I8q}M#c1MATr=S5saBi z4w|+gF1V1Z#;O=IP@tiqr+qwHdO(ygwo15FuEWV|>ur;0(zB6oS#~WtSk|lSFtz1N zg+6&?oA`YCpGDz2o6v-FEZV!#c=_x>{VjG534{1D?j^TE2kPZxp`0o)r}5R7nP##V zvK6vRbc||>q&I^EQY^_McmDW#7;^{#Fg635Icia7Rm@HqzSFOv^gVI)mT{^nJWb64 z!%MYE{R(IAC#SvBJzWNqdbPK59{e`|d~XOPQJQVOq9WShnJNrpfZvH63_?WwqX{GD<-kknk@&4>{jC`6J zXz^R5PsTwhxh0ycCnI)kb94B3lw0D#@+vv$U^%nfc!|E~+f9?c9`c({gjt5l245p9 z1*-}3o0pfCnD3-fdTh6i(P8_ub00>xe7V{uYFafPAlhpBuOiNzG%st|6<_4NJ{+hL zsONE_&g2nO)>a9W#9-@}81yOlr)Tqr!@-2dDUEyvMJd%gg{4m7(XLQe_n#NF!xovW zE+X3e+*}-^F{&VfyO?HU<4No&3T4g+wN)tXiZnGR9HWS8EcxP7&}3uZ1K95UAbLw72#^ z;idjpeUtH8DV7gc3(6m+Zh0KiD>pYmX%))K{H$`P3d)+#4{dAcj(Aba-c7>~UhEp8 zV)%O^9Wd+Q%O(otO-)6bEpDI2Yy=@T&y!Q!ZZQytR<`cTWl$Fz9~pT8F5{2B6=JM0 z@=<15PuIQCL}%&jK}DMw-1mInmxxwP%u7`6p8D1CSYE%(;g|Z9LR{j$*^}71iXLVw!YG6lsi;XivR$rSkU96;+>j?PYn2@hdYkVZBH$E5M9cZM| z9Fr6`hpw%NdB~!m;BJSi-+k%k)_ry_A>GSew%VG%{Q;ero*u*ksVgak!Zt)^<{Kcl zg_3%b^lBpzpLMh(nz{}R|N0_hu~mpuprNK7<~8C^;ZB1;0qN+3#AmLql8=Z8zVXfa zrMQp*o!TG0w3um{>YVW`p+$&#afO91m;{VG1AE+Wzi2S)@3|Rd?4vKjX>3^a40kB8 zx@n1&xIF0iF!0Q}+t>2F@x^n4YF&);x(KxEK0X z?Qtj}PD+l5gBDha^72wrl8(V(ZviPu!|?oqf|cchd*J0=w1B-;1CC%lp}aIfhh#82 z?3)@TT2#NvFF@C3fHh-RIE8z>yYOm%SKZhTa}9ef7Svv9P*F3i_ejSz{3Y=_?2g_{ zfgsgyGfw>+pI+42KxA`+ra#-52?Sr7^*O0f>!`1-#T_Y>zP4I{XlXr+ z=HisW&CPi>Ze`+E?CMsGTpmq?563}-z}ajYCjqD3YPaiaYWy$@CYt?uI^!cG(Ved^ z+p7boj+5=RxxH6b^1^I}<9Yj28wa+h&t^T1*KoKWZ@qmd=}*s`&jhy?avFf>s@=xwDT7dp_H9ffny}Gixpuc| zl2Jp%Ga~ud!@<;>{9K7wOY&}xy;OzYY4Zc#rHH33*ATSVmiI8$)`xyozTqxvt&^`X z0COpu(o9EthzCbpZgj1 z49Ov@R4w(SeJ;32!ZWGpgvzEPJKDibr>GF8M(q1R8-$Y$S836D4y#a=hlj^~Fd098 zrAcRQVWAnWZpCOi%Bq4XB6HZ6Se1%l>q7PSRtYLoe?t3;EG~@7BB6BI-3O9lda`dl zU6sepU2OF6N#^0L@dW*3)BQFy$4axR){;x4{ET`HL;6>yc+3xQN!UN-eh zo_!fRn4-Db8Q=1#Ia858pEihxbjO8`uQNwCVPOk%8A*MqkZONR7Y|$BprgZuG2U^K z!Aa$VxQ0IFh>)a?ZWk%F8`edw?z{fjxY)dDZ7zy&uFr;qD4mXCn1)|N@xbUKdAHF0 zi6NEdfYytn)}i1>uWTM)RqRp)oT$e(zNsqFz?m9^Qa62iw)0iu2wb`SHYdNR)t86o zk--vb(pi((OVRFQ1V@U!jPzCCp1bY5wB*T~wQ`2r-lw+e%!+@J$zgX0r8@f>R~L4u z#d%JH?%PXW`k~M3wI^bG$Hs&m`&~eG_5xGtwV$Jh$E-k^`M>Up7j!%klonjJ@0U8o zU=4QbtsxF7%Ye(FGr`TrZUdd_Ad9nkV4hp8We=?dc&s04czNmeEGr^1=|$ax!>(WW=c#`jF0m-R6-U0}S&GXlC`bwu zE;6Zb=xms~+BeC`S>fUNaCNrsX=FqQ{&{#|o$|)G*;o0h7_vI*VzhJYeH7wkhnM zEO%5VAFZpcoieyQMMp(EMZU-w4C6oF_~P0)bd+XID5+p|k7Tg+kghxp|IqR7=q%${ zaPZd)k!{OM>>1~Q$=nt(FH&$AGjlK-;(8%?d4VqkEK@rIx6)bVzBUKG=HRgeSDHtE zdlL;03%F#pu;(NJTvlMC`QHBWP=!QCx%R!rv!JSc75^=0V}iuV+??RWVm~rYA<9Zg zd2>&0&xD6K8Zo33YH4v&vDZOh-KyH*BOdGEy*;rhcrp45*I_JkdCseIWym_^Q#hyCk@O_AUl53^Hr=RsR z_azympJdl$n{RynHS5IB!?e~h7x)B35p zI~(a2I8s|pj|Bu9zxF#YB0{G?Y~T)@oFW;uH=AmFZilX;vE8%nsY+=~itZPMef5;m32_F3{FPm+)x3U}2U{Ig zd6NB#F*a53+Q4yXq3X(jGDj0_j1b5U3YALpvF+`8k9l2@UF6qMBHPBi0`zEb%NKh` zA$l3_lKh&jCSPr4=5`k5b|ez%k)p3XKH~4O_wz%&wp~5mak_&m?a4%|r-!3R3O5iV zyB##XMjPAP*dS$!oot3Mij;C+8#3z}GOHi$$FMQ=hq)cd|6UmxyY1pi$;l*;m6erM zm1GY!oSo;tm(*IE1T|c|04ariG(x&d1CUPj>-~magE#19V@@uPG%EVBfr*P5r{=x= zylECWl>s35p86JW+*a9bRbjb_Y3!Fi{<0)Q*^_dXVsf#zeIkv$^fV#8nI2}i)}r(NtZ_zER59r zJyzRuR>sDxyppdL$8O=itm}JhAs6Mt(kP{*U-isY=;&1B2CvikYQ=es>oHEfIMBa; zd9~fPlZC{wMtKCodvLhA+h~BQ(`3m!Wxq~R04sTYEIN8RaW^NkD>0*AT(wL+wX0Nb zVxiHi&V{ICd!QW6>0MOZG~ij&>B1zYBGsgCkZcewoN7c}go=pNu}=V>PYTyXGik(k zpqlM@sVwsPa<``gf4nYd9#N+3H*Pflih1Rtc(y)L8EKn@DV^{?DM}VKL$!N~2nh;O zCVaj++htIRj7k?02mk`plI|B|E94NGxk=R2l(ylk%MlBj7ajP=vyb3Qq>JWt$ZF)H z&UI&jm7}&)RB*|5d6C16%a;>3BSXS}F)!1~flZIQ`(@y41OmB{Q(cV)_7h-1eo1%J zaYN+m*-?ABJhhB*%=RFciFh-zBw#YeJCm*Hd{d;)AmuWZ9d@^= zNqRU}ZO0t|WDXBXx%K%rkCF~C?b$yIV%U(#D#w|o@tIzT1lN+Qn)?X2L-kW|$VKVv zRm0B8;`Q3gl2Luh4Z=c5z-~w{ocsR$s5Jd~?e@c?qpVi}UwtmJi{Y>GvhW4!)cIzN zYSWEDnT-m|b^6x3)9ivAg<93yc0?j*RZ3q1kt|lXQc2rAS9B)J9m-O+M~@J1_|wwI zib;2ka~VO7b6=0UJ)U1)bQo|Ocy@)tyB8jwj>Y%sL`E!fX>;(HgFmNCTf{(&O4I8m zYGJ%gZ!^dPHCg*+#m@t#GufsXx#G$^`q^JpY(*v(YAu@vzs$y_3Nn46=dC|pY zv3gaE3W)S(04|MlwNI_5ld~on2)$v;oo!ADW0Qgz;&I0mp|7#Dh7ot*fR3UyzbY;yG@&A;0lF_UbI{kY*KFJ#cGS-iOf% zc^xOshvvsiC$~?rQzrNC-48fxW0jt3aKrZDreGc*@xUjHxL0Ezj_v7v=G8)s)xo7W zjP(r5$8xUb!%G(HIu{T##9*$1b#sh|@?D>$r__Qd)K51IQ`3++WmlyXL*<&4TUE1M z7dsvleSlg5VyB_SBr;N)$p#~B$g4-A!j%cU1lQ5qEhN#CKlG=lNY1X^Ujmh}86*%k znqgx%t_dt&-n2}SxayWkiSKzh#x>HbNc__k&c8!ecx!5Q zpG792d9CE-)V%g5Ln~WZK7{&XH`NW+byx89@R_Z%EDZ>9pDr(8 z{@8pbxeb$s`baBN2yp=})-7{4&OnP_-G27Zc)vC1h_=Y9x_$q?DyALk$+sJB@pd3ybm{h3yU%$`Aq)1Jx+GI^A}h&Ydw&m_Hy>PS6SRlA;ggT>d(m&*=jd9nXZ$o1O-a=Hu|H zl6e2~_lCx8^i7)RO!SUEqTZgJ+*s%7;pbF)JF8s8u~HrYB9pG?C=i-GiRVS0h~As* zh*VD>Jj)VsxtQn`IlluyaNpFWv>#1>zFa4sl^C#IEZXlJY$9pd3AmrT8vLQ$Er+rc zVr=Dbr)k_l=}M4&84ctxNIG0H*?t}1C46Y??MX}1of}|^_;JAOwk;EC#oDnelbFe- zWctPA)r+m7N5hg*Qg!JmiG0jY0+gTuE$bDw-e+?9uO*$-VwU)4XN^s+rj|1Nngj$k z5s31B;oSvqY5stSMzG2rX3WZjV#I{||b9w;i<8q?)g!u0;OD!(t zepK)1Xcd@@f_iJw+}W>ldb)ly&R`m*08gK)zp~NLC>VPxBz!K@gnI#i5G2ejYW_>S zPDY(Q#l^)}Gxk@gGW)B#s_xbPl!92FRO$wsmLkdwUw6D+m!;{9E!2!zT3N%zkH8D; z4G^NxX+Yl?J1k%P_UPnlH}6Ib{sgxkQ;*tKK(r<=kpa~CgkWZIa;8Jbdg!wS>jxHB zc8=GjmxHIc1j4UD7bvE15+HycZQ5Cu@{G_gPm1O=sj;z_3V0PxZ>gs zX&=MdL^H!?ef>nP4G+{$mmk18_%#NXF>N)Fn^Vx7&wtr*=p*BF*~cs%0>|3K#_?~I zgC0i_tu~)!e|6iW8uP5N4NTRGb3!69uHOy~3Db#~qy?pHA{vMJB=6XpZaOOy)mG(*pzMQ=}2~@n!;ur*qu>|r-xc9-7??QK*86STir@wlnDy2r4 z!54sfx4$F`=j1G8W8+8>XGRQP6Ib+GjP{j2eeJ7_fiN(XhVA|3dWZA=2aI4W`po2F zYud_@35gUmIm{_w_l+Jo$GPl0`nms-P|zC% z=pniUGVIYIo%C$FXOSKz^a{JHrVvnjvL_=F@Dg0waN#~4$4_UuVmNa$I{1*?db`>A z42zY<>`8IPbAKC`#K%9sTBVec^g8|7k+BUxHQjx+$!TuKb58yZ4xJZ5h4B;B`PfD2VwU1Aw&Fkg-Cw0?M)HV>t6(Flo#;`{RxPj0x&az{$>Qpj1p z^TN9CF%<9-x3`qp-B(xbd>TZ1IjrWlVToi+J0aF_yZ+Lk`FsG<8 zMOj#AAT+~3WVf;}m4~UFU^w%AYhH1LtS&^mE8wzjU7?ifNAM~6VK$7GS;}Zs=?5$q zb8k#I-m&l z6&vRzJdg)|GS#a3eBL{~wa*5QVG#FNo=Ccu5zvv`rcBujPZj(+t%DyFcrbW8?MbI! z<__1sX=fs@iEW)S)h$A1REZm5Gj2yJm*k~4gTb^4g*rTImny$kfI+9ZOAAbgw6yW@ zanu#+G&(P@1Ax)O^Q)?Qd+8V4U5@n!Yd$^h;OJxQP;;C;$XW9FoSwczH0y~5%vwUV zff2yJw0TS_y#`S;CiJMvmG1cXvG{moT0PMg%HLE;Wf=$nR{K@Q9vmJYvw(_OR|BAh zUl2XLy^#7~DSZ!5x2O~fSukW&2mockWaN*ad{kj!OAeC&I@GYckWkqXkx8uK;*unL z@96+EpJQ9nq1G)N&M;7E1<7%|%`F?}V5e`e=6S^@^#$`6(5l~D0Pp6V#(r+c;^kGf zk8`}e$}wU2Uy~Y}2A6mGR3qlY*f^CfVXu=e58!8kP4;_-s|>nX29nAbuS1!+8&jlf zJqu7Hv&VSn{ZwfZr9Ni^U2WS8u_J_f#5U0KXPu3yO5md%YYGdReWMLagXHzqOMMkvh+9$Y0juGoI9cLYlUnS z`@}Qutyh-ia}*}Do@;3*%-IRots7P51wYQ`(4KAZzWKanHywh>v#Q{Z7Ni1Z zLiZ|QdBpjoB}l01 zSi4Z@iL`cf+(Y()(#EpE))^^jo>iK;GbfOKAR2+)ZEW5Dc@TlPI&0gEiyM`>xa_`% z?k}(AjIdJ|Ze@M<;eC{Z|LO&n!O{CFi@Wgz42jbdi0$g;RO;pkW0OGJX=+wrV$@h0 z>-UAWT|89NFs3U9?@v&TbqV+Ar2?!D<7cLpI_R4eQtX{5#n>-InopmQ_}AH@J2Ie* znL5S+;;yf}@*>?4lNPXJ-L~5z4wFxuCI@jkwtWuM4IkIH~F=UomulE%FdVQv{4yX*|y?9tvW+fFX_frP6*fe$dl zv*SQ_`nvOUD< zhE{($LVxeN6WzemvT7+OCnA$Pw7m{wyt-1fUOb4aJJW{70@I(&Cdi|n?ucPuPfUZKRTdR~?C&clR3s&T5{aT%EmR{F;AGJikalVS8iJm^j~;^$#y!24|G6w0S7 z)zZkyW7?Ng(`z#yi>-%0qZx+IeD-t5XJ8AzoP)xYXpM(5OIs+9se6mi#j;b6j*v<{ zvq@74X^(Ye(OtdY9$#*LH0$ks)Au38T1oSEpg`KPxC~dp?owD7+s_%95ne=*uoIuB zq-OF474*UCtLm~xio;_?hHDeAOy-;$GpB&~rDM9ayL)&)hZpJZfk82|mR^hp1}v|x zK9vxA0)$&ejgI$Z)YUyf$;85aE?+n6>e>$?>_7w$4o(j3O~%BTYEr0s+H)zkg9;;y zxjbL!-sy0e!jF=V9kki-(Kbj4&v&cmve5pWw1rU{cy1Nv=VOkKjgjt6QmCVYBd_)M z9lW_lis>X*Egc3`?Ma>CX?^7QX6;8cvFrsvTn{7&ha1J<*zMA*?f?K1{k7|lZc{@i ztFSm;_hK#6%nY;9cQ~q?u<5XWv$;3;8HmEq_n}xuVV0+Vr%Nr-J2ys!Ja%@VobhH0 z<%8CJ4rZ+!>jUhYb92=fM+P5^Lb(;-$I$`4Uawv?%%fXzN7cEvcj7U0JBE=PtIw}V zOOmXRBTZfsi&958yA9KKFJx^ejMCVci_W2bY-}d^m%ahjq17}D#40_Bpv3+SHL~ok zX4ei~(P8;zNhBJ2%*x$%fhLM&AQH$JVg<78^rbn4apsl}p@?^A6$KfDy`Yo+qW1@m z_0Uj;w0&ZJ;`xUZW+AZ%1cAuxz5c_Efsz|8DdHLNRaf(hpk#jkjnPZIiLdfove1T2mC@0nvkb(7Cq?Bec4DlsXJ#P2d?q8ftLrRQAO z84vqQn>R#vRkc5xT%4<0j&oWuv#P=2k3-w|eL;#bOHVBupSh57rE%Xn-7BPciG7e5 zaLSoA`hr)cFxC?3)@-OZm_BVW5!=_2?v#{ zJ_b3EQtjj2Q&*MJ#sQ1+EV=Py#Mt?h+N98yiro;}o3&>|=jlbcRnos&)qO#CXvdxi2gG!yS4(E9c&DERHz#l3pdXH4H(g0BL1rh8yM6y89x5m<@)f6$cFslB+#R6_OL{l@HK9StuJYc_-0MvGf;wBmTal?Y_eAbROl7HPJO-5$9zXpM z%QCS8(HPyOwY#K!Ub+;vW*R|DWvYzkD11b6cJ8vTc@_++s;oTpNo#q6+FF01gm|SX zwW=iIODG~1O4@y}x&aK$z<7p>xC_bc`eI>{I3b-$fN8T7eyizS$ApHyc7fC#!Xvr~ zauq9OA9-Pt_2aticN59_)7OWtT_W$LE2_>_U%h+0_fgW>`h}lL-tga`&yUQfIywm% z7ieXpYV@Y?zkI}+?PB9vHoq5%%0$N>O&oBqeEEE>PB?#f`_!nz;lKK7eHP5yWl!cN zkKe|1Qv!)iAz|SRNe^geW-VAyOdP~FP>Mic+&i2P*Y=0OKV48jNSLV(fC@k>|>Bpw#lzuScKp72Jl*Hm}~M~!IQ}QCF&U! zmZJC2VN=Z{K{(SEIjGl^fCpsGS)`?>iWVuQ;q67f}v?kHZ6qFVblh? zMvlH0tcm~%P$WxxM~%AwA&G^S@nAFOp=7ZU7m0>n&oaKR%ky2-l@U)7;G2u<|W2?d7$yGSEHnsi}kVaWuT@^1}I>=H} ziwceYaaidU4+hJvD0z!9f}Vd_IRt~cc(pm|U%yvS>+T%>nSb}iv&Wu$H4WzJ%iAq& zZTsu%bR0CS>Z>6aULf&+5?M^%sOEjgmE3CHHu(s!mb;PdwskoP_ zO${rOn1QukX&W0EDS$NqE~8OEGU?!j*ziYsbs=ii4z=_Y35mgdhLZdV4AI8Y()z~6 z!FsM#Z?Bqvp{UoXmO3wUf0*xDQ&pegZ@#bTO&8j6q3996Chr7f+Zm2#XKjVRWthcj zw%hy_!JOeV8yA;mqN^p&F9{2y;7vSi8SRTNMH+yPiv6Uz6O zc^T=T(Pk?5G*c!!e{}d=O<$SZf&%aUCdQejqm#hKj1(Qyz>S?9VNNlZzOC#>!+`UN zOUT%8zW}f}J7wjv=H}g#ro-UFw09(wG~K?w&R}=RQQ<1T1;3X5NY>0O>$)U|^tc>h zBp&LO_t^>M*XVGhI5p`rH9pJYh9MMswNjJmq|YICL1<7o2`8-2VVVfXHaCDAUdFQ|dbG+At? z)6`Rmr-tJy+)8Z??y3?pPy*N(VoU!yI|-2Pe8e9V22gB@>BOX-Ag4Lkj_dFbt!PC* zztS0Z78BqNn0k#>mTN~05Hg5fSZ3idIwx0mzI-btE-b$hDbaGq)!%s&(wJVqnoUtKwyEy0t-NE+S6 zcAWVFe2cO!FbW=)tUoz9RBsi#p}WGe!GkSda9qy z>JP)$Ucn6whSNFfYGSlmCP#*z*rif%U!1ev!fI|OLgP%V=gu>PK~Gb{!@$uyy4);k zB;mgt%oNl)Jm;R2n3M=4>-r#5(~AvjvT3DemyU)9_@GMfo`Lg*iX4l{9=6)Q&v_&k z!8Wu+;||uE`&nL5uh%hb_Z0xoPl|_%joG%P*bKOhh-w|hAhovT47fGFKk38*gjbI6i!BXb zJ_EP|nk))My5glLcP|y-X@m4VX>njM5Ua7oCWZZAeFuzYYC~{OQ6YGFXNMa7N&n4L zPwgLH8S@|zDIdvEepID(>D1>la%FTfcccI7ev=wQ2w?jHx$5@`wgMtKxR>$&8FH!| zNvRpY5ZzDGWogDr7tSz`bIZH5cPyOT`PUd(-=kN_$r38n-6R7JiUw`UW&Bq=Zy)&> z$;uAv+=kn7cLJuE|1CfJTmJG!Rc3p;6+kk)I~BNBgX2;pP2f(NQ)YE@Erm{%*Pn1&Z~ zUFGG__FKJB`s|!fNoTH_H%JDj$TLHM&G9tGV9TwHxu8`KNMUiJl>?0Z+yy;(RK2&L zi=z6H>Jvz17Ql6v$`lMsU&E?bCI}K-FE)B&w{GSr8|pm#WvLxsH107wL6u-^c9zRh zO|~t7eDZ(q!07q90iC?c6aii~pI>EBbcia!f0pPwM6N%``vtD_ zYvM-t_G;>Ik-xa`2A#Vn=ozSK5sPO8ELQsMDy7wPiUh(3l;8Pa*ZEQIuXoV;NsVl! z^>y6n?;jH58X4mC+>X7V=w0a>0`JnAxs!V04-ODTsrCR#YjcCTQvUfoL*OY-I~(f> zbq9$B7z|Ll0J;~0v`_oYjEDTt$nyGdaLDyK<8R;cE5Ce$g&7*%-*@2$@J(3pbx&8V zcbRMwZ|H{7OY~|7wDVQ7xd+yNwYExGxq`JZqcKAV!9Rw=!p*?$jSYy*Axwq$&`&ms*UMh7p5hLfu$O320yuz(8Y;MwkHEMi{6T^;t{Fk$x zu`PuipTZs9qsvl|5B80h4)<9A+rxQ@vKqM^pnlq5ZG;EijHGs^lD$XnHhH_HTK5w>(A-X|m^u3Sh?!q|-+c+5#|980 zUyC{kR(KD~fe`juRf)VJ>OuyI#vRSmUnl@PMJ@jTml>v#m!avt&#bO{D=okGkmS2%KVcIdc6<-eE)esgN2Y$ zVYK5#PZ9U|*^)_8aB%HUTR+!SDsrAZS~+zxAfz6{u5B@IMi09Nq;u;W?`7i)Fo8ID zbO`PxCJ^<)0GDL=0X3%dp1G*b*wN9V06jw9eKQSwtqDmsn%*-uKDZ(&#$hfC%s0H|K0l|A_~S;7ldO@Guy)kgu}DW;(S#wP5jkCA0q+>h_x^FT`IMzE_M)~^ zJk-JJ7||wDZw&@7FD@?b%;JK-zKO`3=!TjSMo{%XjE3Y^DkE*mbCYrBA6GxQq&hGw zmaA%vXIoAlC`>9PxRQzJ?7T+206R6+{JXoXpR>kyIj3#A5<5__kUXIGaODzd+><35KDXR6`AZK71wM z?c)m5upw@CfNzh%26H&K#kR01#l5{0ZoYJw#Cffng7I3KURgd_)Q)andQn$Tz4>k! z(b`{%Izw7zoakr9XT)4pwt3?~vSvW{2bDy$YtwYXi{Kkp%pI)i8LKtksiC1*psy>e zS#*nCfn-_Ih%%7=hVg?qxC^YiS9hsA!w+uGmyoPUsm8h;nt|?@5ztOz0gJ3OsM^hX_wxXN1>f zw09r+y>xy|QfypRbJ7bB%ir=@={LsRAQ5YBELMw|^*=nmJR-9no2i?<9PnAorloI} zXm=}DVQzzk5k!u(Q^Pa z=_%U>_g3+PHfSc}Xqjc2{r7goU%R-iAnYalXps!x>ZtNHms*y(Ds6J=;G-jjkgB3@ zU~X>9G-3YT?3^SF!>b3h+UDk`Dh1h#Ia?dQpNJc9d&R{+(x)o?c|fP!UFopxL`w|FW4`EX}o~|c&vfmYscsDo2@Rs zl#QVYDaGF!dQqqmeW~T@y_4j1yzyCv$+8U}0zs4Ug zLReu8l+w~a=jO(fI7h}sQq_82N@WaAO;JcNA0)Bvc+}J+yNI25bph%MpTAS$?TC%3 z>e=awUpF=@&q&||1j?6ZxsJha0V)bW@lW8|vU+Z>03b87IOl24rv2>tR_T|GUMH>G zdXwW}YXu!5rux6#IN=jOkA|Qq9GU{yl6(6>j5CZi@5$n{NTO2;pR?YT>_17*pXwM2 zytKQSJMklI-usnP`-|Mxm6I!O2?3;2Fny~kC1s=kaAI?Mz^*=|-5E98!3gG^yrj;` zR{|Vd*9Wh*;ruV}oO-;Ke2Wl0Hnf{S#0Y_mKW%SlY&1>o+d>+}lPPE_#}7oFwnnsnC-~ zI=`v1w{9)499>^vLCr$boGUu|2`ymI&!0oR-`_W@Vc#SlfLdjo2NFU z>6QPnE98x~cirH~5```9X`jHzW#aw1o=Xg|C|MzdAlNh`YBsKEX`^a}B?Tat`K{H= zU(QaQy^j4m+QRq~|F#c2JlG4V4=ISQt&}eHJ!%mqk%u>J1C|ejq9YBNWvg$$Y)B*{ zizOp#T^!Hgs;v>(>=qt2r6hf`)qnu~PbyiXdi1KcfOK-Gm-yq`mO0y0laY$fkLQmX zQpFM(p$n&v0M(34V*_XL-m>Wq&BmZK@7uD$hQvR5N<7guew5Z{45;Io2m=UiGjI8k zGk4bCdL-sDJ!dH=k90?s0FLE5Hqv`Eub*^nM;g-scluY}2DC$7s40(9E0iwfrZLqn zgTR1+Gf|J1IbLV3(F@Zf&U?)T^<}$%HN#FaezXRa(uIU!lbaQ{CI(V?Z5$?M|gEwk?60erA7UP8T zKTAljXX&Wb`{G$oGBEzvF>ehX%^9fOa4xLLxn;MzkZT^emFs!;IBEmkR%>k~`Sgpi zhm+B=xk-P()-?SF%}TCQM$gXazgri)4>uKl9@2izzC~*j5`?Y|P<_4_K2ry?Ib^(Zt?5?(HB8}cl1tnjT{?*(HUwgk=3hZ8A$R(c zXb?Ia*qp-Mt>?AB-oF)u7K3j}`MP{}qothxxOH7V2rqCfqfDydeC-`qwT^_^eb|UH zw9jP925J^EVcKZGoomJV5jdrJgK=A(Ztl+SIrRP0yeJ5MGo2A|+?Lt(H>wF7`R+(6 z(2D6b7DVOz3cn*_Mi!R(E0tlowRqP#mVX)@fv&mz5X;|-GIyMg_cxt4+60w0iB?O_ zbcQgf`294-^-{_HC$Mb|LVLjh@H%HSENT52I3g2SNgW=xB$mFZU`x}#uUJO)f{y@5 z_~NLiTa~sB?-W7?*BwHc->Xd8?KujKig_O|)nX9_g=m;Mg_zmAKNBc3b;>@kgx;#B zfT*^xg_Zqv1g>B-;`P6p;17WQ54QAj9$)dbwjR{R;rQ^FYTdZyj=hZoGf0sP-+10( z)X`tNX0rX&H(p8+)keP+?eHkPx`>qATUb{>_GdQkS;O94&J?as!qo55&m?nP9qS|- z7_wDx$RaEfb;aQqloj6j7u2Z!iFJdnAuitafyZ*IqY+rX+{gGG-{(Lazsf3Nx= zUHWhSVZql5M%<4r^bSScqgOZ3O+|yO3RyB4@1T_V z{jlNtw6L=0n^`DUSD!DfST}+kGap}JUQli-zIio4Z=4z%_!sHTS<`{ZjCdhPOUhH#9xvYX>BziJ6FUVBXsa8&o9#>QqA`ckwi)JGw9S zG1+X0HgiV-{mOzhKoX;Ty+1PZ@t$Od?Ix)>4W0+JGApmE#7RVA#)InX>3KkN@8wni zI$E<8hZ;pNP=?|*_Ies`_r==9bn9^8H6QcULjYr(%Fr*4Xfvm4x%}4_96$1d>Y^3d z5t$mD5!(#yRKS!;ze!_oE{p37tb^wq=wn7*NU-->egPAv#F#1c)a3^KbSr`ZSXpXo z*1Vc<532;wzZO!BS_cY)bj8p5jy2;aGY|+nL4EmezeQhoeDbJY*;E$U`3OXQ#NQHO z7+Jd(#KUmoK9m)?on6Tx?8s90{hnlCR(|o^x_Y%mK{-6fI#MUHCYidVI8K(El~5#| zRYzoXw;$B1w@4=TD}e^k+)Cr_iTtBY6hr!bYQmWh?tk5ZG^-Ms9KBwYf^*Af$+dOR z{cb0e!0KL(L+$6k<*%?rgq;}qVANI1b}%En64pU+x`&EduS24&P4|h~Nnw=>fNf?6 z0xb;B{NjjbUCr!v6@K9_J5_k8M^)AG<*emDF2HJ2K_RU{k5wU;#fs7IJJon^xkYRX zL^@un6Dp24Ml!-hvF9NV+&pfRUz&2Y{Gv%OlcGJRgOWxw-4!a|4^cX z`zC$4kV8^IYrsWO_&)=OA~EH480U@lz%Vq=&z z@*dI|C{c4qV&XA=5bL3Sb0>>fc_v`X zTiv&NKwbur!oT?7??CkR+J}@8BV4W=G9ac*ppnUvO?)i$=l&ssvM%pky6f5_4!<*8 z-? zc1PeI!hcq>_Rr7XrvQ}p24mg>$=!+k{4EE)b|kF7xZKuxX7d^8eVRpvWIAfzJvveg z2&C8Qk#E)?`74Y)P9fHTQf&tH^cI=tbf*+sxjR|;ucT#cUAxB zW`Aw|x$t|wfFLlecdwTYD@xAwa$N{VvR9l>B@MX&%3HC(=joK78;jQOdlRYoIw96; zK7iUjvJJt;Hu2{v3sjLGxKJZ6W7rhU)i+^J+o@ryyQJ4}VA|7iWo&{raa>Z><2qv;=qLvbP%X z&FAyC<6Su-5NwD{HbjK}|DN<kH~zjB z@}EE-2%}&=XA#G3r3UoA$pX|0b-aA%VT?0>I*uw*R}FrEZsxpAWUF3#dK$e=1e5>s zAO*bnT=Q{)<>m{cnTqkUXyq`Pg3Iq~f8_soc+mJ5(le(ktv6dB$o4>=iyvx)WaA;s z{C_2wPLyq~bje&5J4`B-4;@2zK*1;}Xh5lH<)2^x53e;0GR}78qj|RFR<7?W{z3g` za0(ys|0%?4MC6xKQ%=AUyFikU4DkXBA>scX&p~C^tJ*ca+qvui($P_k?ql(g*|R^7 zx4`>8VCxt+clFX6Yh(v~gCR?UXV6Ne`Ug)_{GSr8_tKzqls-Hw(0m#5 zp+Lvk_y1Hf#G;HXMVRwy;+LJ>Eob3Sv30(`{!bOZyw;m6S3T=!*7a_CTiU|PLTL8U zROR`95f2_7E|0CNgg37F^8cagEugCEy6@qGgeV}0gouK)w3149N_Pv=ap{l_0RfSc zF6okPkQAglFI>92yT0x3{lCxieq%5g47i+o?vAzQnscswlB2&rI+W5DLWCcq|9Sbh zD|P=4UcXn9UBnE{uNmRA&UVhaeZjDupLHv)tJKtTE@-MUFBr>r9Bpu(so!P%;kzA* z2~R8`qx}5!>}pB>E7?o(S5rqf=i-NUdp+&TRG-#n+#U&`lYPb!Lia!q5;>fYFdg7y zVJ{>)%}x`Hi)a7sIp~Fp#`*aFy@u?w{8D)4WQW=>3)1+wN$vW~+Il2Gwu#w6FRcH4 z)!Z(u9?|-vztW$ijdGdd6^nc&jKVv??-<=c=2&``FFIDEceEJk2 z@}C>|`}bf;@{IQSQwd$PDufcwF8G^FV2jM(+x*WZDCKYonPbPW z&p)G?HXxT2uHInbWxo@;urRA#FVy#~BM>K22uuex-42&vyRz z{m>;yQtLmwp~YdFc=Vsp!BZqoMJD;@?Rzr*bKn2#!($ z-ZGR#nd)+jqK32>;f$g0(b4P2s?RdbvwmNOWvp5nbiMrN{wi^O=_gQQi`kbRZNQkk zPedC*TxMj3g{IMA!m7lc!v9$~@>^uGvMYs`4WG`sOxK2faf>hp2U~mYD!lS;=~ES# z4Du-$`e!YVN`;S&A@*X!c|4DH37)__ZB5w{A{7e?=KKUJ#{I=8N;tUwyWT!)V$YH$ zwjDg^Yt+Joc?QM37qiex`qt7nj{3hJj@KME_aupLV!J+TV`KRJ*F=x%^(UrQE%e|% z$x)Cndox4+yZq9|1ta5CDi6ENQlh2 z1vj$C>hKXdM}1>pNx~pup^AUW>l%3Q;KsS#KSPzPGH*3S7yQl4&RIxWX=&Fnp*Fr% z{LRAZ|GivuNM7DTx-oVV#5c93kY)4mh}Ki>tkQR>u(~|QaV7lU*n;BK>H6wnx%Zex? z)<{q`?Q$W5T&)M>fCW7`z7XTJl1BqvkyZWQ&ds8MF{_Q zppWxZl#T5JL#<{z1A8gS+O*JDw|I!{iZQRXZ^S|M0a3WLe6{5n36guA9 zni(tjy+-oL^5SX`+*4x{GtTPT)R`%KR4!6h~NlD7clKrQUjkEn_ZVUSpdsYhQ z$B?OIm7NOyz~tn92i1|K6$83&XII~Sh&pQFgEhqjJtJ>He()JlKu9CkSYQ~2M=E_!r@`}8OO-*vZrrLMYzw6o8#Ul{Ez%zP}p6g-<_$M z`6OJkn`3Zz_$P6lPJ@${!~5$TVya82pjL7hFDnZ>=em%n?reVVmkG8K=pL{BT~+2; zJX3YozZTs#bV$Og-R2~r_3_Fm=W5yE9m`Wf?PdWjX<;qtCHpX-OGm7%AV_0;B@h+6 zpR=yZrwjWE52ObNVp%CfJnYs!Zj`?`8!bwnExj7Ml^7Q27mEv z+sb$hoR*0xR8FGN{p9q#^mn!l(TvTUmNN+{|EI^0u?#75sO4b+YQY3dMy4lo7mU>t zTqP!*T3+kj@A`gMQdb0ou_9vaNCM`XtEq`+`!4S0Zu9ZN?SW0+{dN=h#v<&tzZ^Ec^n>a&-9GQ0iTbAb(}f~?=}r-k|ai%Il&Wc3fM zy)4)4K21#}2;Vp45X`1<8*gZoKUO!nn|+Rf(HRa?j1dJqQm`r}m15XF53 z;&y|sn4SBIBP<#WpJbUOATsx!F*h$Khu1-H}ahYcrE{yVTweP60Fr0&5>86j`{3hTAHv}|fh zw$1s7a!0>Jrv66-Ub+%ED3HU}@WFBIR&4Ps6Fogx4W*T(mM+(}#gVvCibyZX-cY@M z`)jxVu{jB)Mx|XPB}KVe!vhYjolZU>Wa$rSswn@nEL*s z-yI*JMN&p7jcifRVTOExHy(WvA&=)W>a7_PHYAmjkV1usEsmx-!NGnwC~xd0y~77{ zBO}WeBUyA_Fv6LTug-puCw}iw=3&xnz=A$qB%Psg7T>z1){#X>RNZ>4pQ-d9W}fFU zwzp^5uNH?}=&9<$_a8l0l(4x~>?`D!*)6Jbq?j2>BkJ%Q?6~4->C30nwbOKRVhU7i zFD5|GM`f3Kj~3EyP_7{s;HpYMed#)tYV_g1akcTSHWM>*Dl!xkb6ASTy-uCIl(h;OyfKV~hH?==1#)fRcMS$Bt3EKeKz`+Fu*)R|vn4In<5)2lLmewYIqacZ z<4~SL)3<@xNS@EuHjsg9Bw^()t6I(2N{EYFOwKoo%W2Ci8uTZ#n=R>Gaad2^O{6yc z)G7bz(pzWB)GC=-y0Cbe2G850N88{LEcOLlHGuS?0{P zrHVaUG!oe^Sl-no5wkkha<%;DhP5v*>qbL|hwW+u+YBT{Q3)Z;*@}p<;;^$Psf0#G z_*zw@=k_yFTn$xX4@1R9hQ{d_=-#lKvD#m{)av3skjxl*|8?5^x>GU|QM=}%uYXV` zYHvP^=W=jpIoJQYQt7_42k#3H-sHASWh&~C?#-Qw!RC1z9pIhO>Iox-F8AgOb?Ieg ztu*x#d>W@(W}2H30lDm#B6~gC2;UAqL7@nVI{&U8iBE~2t#9R)M8hprWkSO{ikaw( zdpmnq4lI}{zDKLgdhR32{VcT9uH;x{{|lY;o+EqcU}2pE2Y2`W)UFN8^d#e6_*V z>C^dnyu%gvFG-U~5-wNjcT^u&j}JbIJ-X-JGqIb*=hipe>d-Mhmo+pwAj%LynPb=( zEZ5)LO(BU3q5Hn(WOcGHt*m0n8G6ROq0v?$yY3`GbRN3o`y|1vE7Ugv1WZ)qb}J9fD~ z@`NVmQ1xbZd6&*Y?G2Z~`)rlwCD}BBrp~CO1S(><<=nX0aE;)JCn8z-HVuZ<#vrQsPGO28RP+B|7c#+H5Xw&~I+$lk!`F zMS5Z1Wb5qsv$$oYz!_@JC=98LeplI^8`_fl7#V54btMrsDLsr-_(@x%YXfY_vuTaY zk%B=He0rt1W=G<)_D0tm+Kzzbf2yjHy7E8Y6jN?xjvhT=$0Bh)F@wh^UL=w8-^p)s zNC&~23#x{EY_y`vBo-pmu+@3!Ca|&g)ANCEBt=Ydo%cMHywt;&VF<0 zFfl&t?q%_LFm`V|xuc!RD4BQq-Mh(781{pZhY!E8z2SJyYlj2v7ob`isZyK~5#G5D z+&-z}nrbT6&2PKL?gP#;@8**IFX~{I15in4DG+IhD44*yOZpqGMaVaX8p>j7MKlV^%X@wli@H=u&2b8T zhShRUxqCbIj1&~Qf|O!Cbq_qsF*710aEr9P=FfOO*A)~NF6?f8FtO18Q7qiY!N^3r zgcn2EARG2ghJn6-fq9LD$F5YaxIaVu*!oAaqPtL8L-L7>El1Mq>ziGSs zmME#Sz$iQk5@~RA(y4NJ1Z8F#^Bf%9_rCOuPFJO(V7*#cG6Au5cs^VHRo&fS^@6T2 z+DXKX?eC={X6;5Q9P|n{_DwWS$;e+0C$b6(LBS7+{Sw!oxSg-V8-?$}DJ5}4%rx4+ zq}@Clk$#z5YjZ&ms|AiTtNSpk3{BQ8$q#Q;1h~QBnuXeYO+;v+IG4{;&d+nQjW##T zdQdr)6j@35JXcpYC#&VoC^`l@+Ndq>EJ7Vb&3{Kmjo8^^;qTEk1;ChFxEfP_rd@sedpIgKSg%6@woA_eXzjEMb|`Cj8a$O6nGu*r|4>hJ z6^;KXB2f}=B0lEkFCLta8I-Cs#C&NtNRwA@UpjJe=L^$oUy6-U`TqSoLG1Tv@ZBaj z(;io&TZ*@#VRLt9IC{E^mgr6CgDtN+g-lKY)`=FMLC|N)t{){ew+;BeY847p zlqjw(u8`=&zvkz6`%swRacs?2eynDCk>xy~^Xt>fRB~M(3rl(4zMzCU8??S@PE1TR zY89Z#@AG4|^We4}t+n~MTnr=SJ| zh<5FmPp`T*so`8ooROSA=dp{SlvGm6*xvq?(J`Q=rY86F>Q=H_&f}&QLFfBY>=CJe z6)i0-Xw9&!iEU*mMo%06N-3EpKWZ~eUs_Xz2Ss(cCnu>YDpq+e6*b*n`?tGZ@t%{v z1T^l%j`YndMSc1!UTozWdq&2-Dwr(k31@{Xc|^^xUy8!QGHT+)&|Cj@9+J7?Ry+vh zo*;}Qu%jS`BYRaBM*sySK(wQcl>3t{JpJ9UcwRXSs^Zj_9CSfw<;L=bZJ;yR}>UeIbLDLL74p-(d_cU=v97BCjs!u8cA{X%KEztR<5 zt0T2gA>5$M+#2ONaMq!zXXud-$gnV7-f;osJy^=@43A`FZ-3Xw*qEvUUaW#~Dc-Ij z!0W%!&Z4K+*FTh--Q0mPLDZj0iXl7Aha^L`WxWO24VxtQ!)aDyitO(UtI36rYu(-5 zM3{fD=lXK5Ov84QnRRNDlcT&2k5@vyep()uyN6qFk|;hVz{08&#b|tEJ|gc=gqA#8 z9UI$F*q(xH^6A&6cQZOWd-P*r{A+Q*cS%NKKK!QMWOkN+#|Y3@e!fdP%ih{$Zb3s7 zk@rBc=Uy?bzajP{k-ZlKJ$Uz!ohJ}+e zjW2YCk}_Lsd5-OB!%EexN{VJIb z)6$5WRA;|&85|$B+*`oICAkl6#Mg?p8@bkn)_n`*s~;{ql+ik+0=MFf@$lgm_piRb zul0_f++yqYbAR?4lzs>8;EoOzjaN?jQ5l8DXGHi72DEPmlA3g#ty5m`^1-vDN7)>> z`Z5Zoe_I(2P?>*j1vHC7b$Qte{Rh>f0=d*e#_QOq#5wohBI~@cIXAoW^>@(I$)>fl zqa5J;zdfCyG3nP?J3<9n!|DfxWF)6GKN>V3OEMh727XnrY=`7MKxjGlDUPzMwwy-V ztNs_}*T6vC!vA^!T&|Bl&6LxAmbY*^=-zR|cE3D3xiucnMN3dnkbV~WN7eYo`ocHW z6CR!r^J#mzeQ!-JstR6t=7Rj7s?7eddXFc4pNvzjqnNKoa$_u`2cZ!Kec1XY+(M>M zUsYWA_~FP%x!2_$LqWCF)8t>dNr`$ z{SR0+Janmk>6SYsYIh6|AHt73BWJUy6WDpa7C#llG0rA^U3}UwI;Om`Xv!!<9x-U< z0D+pKq?Nsg?U~i^=ZI-%lBzPcC<#hOm@n|cV>S<1D6@muGhO$S9Ae_fU_KT@K4?FUH_G;FA$lfL(ZHfg9p>g(~Cmq=Vp;q}<)7g{X|J61$txpfzduRK~<;%1tWUF`i zj0ZOy(EJ2*hBh3aAF2#Q#6%8TQ<7TJN?KY<;#$&LS|b8_)jpg@$!>B;&22R@IgfTB zoYe4NRvl?|eSl8lw4PzEUm32wDf;NSYCqg#V`slTw2WM^j=tC zlk)GajzwHzVM3T(Ix^IQ)Of)t_mBi}^7HA2L$||pC4>2R)d)MNFib4W%pd?3wdzcr zCYWAKjq%eo*K5&$vN&6X{al{B^t?5z9%?pZAz+LncT?5XR`lHLJsGXA+}wp@RM$Je zIQ0=PFB5U16^L&x>}j^A+@3*9y0vFL!Ji!Yae292e_l8q)M0Vc)77xES5DZCj*T%e zz6T0)S9^~avNy8ZZKm;CW23cEPG#ySc*YgC*`OXxj=#USg?WCDm71#Y7#8eye+H8} zDlMm=!DB7LgxR;Z@9T=J+O%8E*o`F-`|b2p7@_Dl5`MWt)+^YoG8~6ER4nn06=JpU ziXvkXHsdkexh)pjHeI2D_hO`?vDdQ!9+JoyTkx$adz;QOLZaf+G!j%&S*l*|S{op? z!>MCqI(m|b{U?+}ac;xiOyeTN8wYy&<|qFN0bnqP9T&5VR>sEe5lBmlYYBFK@phiI zV~80}X`1MQ7i(y@0F|Aec;zC1iAU95xB zUEZcV3v4qnX;e;D7KUPE`X{+McO?K?p~pvK=uwPZ_uX0Lh~DH-p*XgVTz#4D=getetE}8f=fV! z7kqqzA1f%5s;;kJx}D^U;CbZeyx>cOd`T<&sPJ#W1Q;D4O#Qy^bg~ISGj$H`AP0dx z72Q_utpv<=!=-+1fQ5hrgoSV5AwLj2-y|4fip~XciByzruwQUrU5mbkj<=R>emjq3 z@#C%bCUt&zU8LLOwl*7e{Pm|lhVd(HeTSuS3dnS>zpuTkC|j&%xudd(=@E#n6C-12 z-hpAMNZ$2{8J5&9HXYPtR)6A?jb37r3~m8P{#+LL0y5DWBXj4eLshj53_5?z0tKtF zp{{Gy_u8$;+O7ehu8^1;Gziq3V-pj#E*CKXFrPM!vz4e`Zi(T1PD}GNJf`1-Ntsgv z#4;Egwlm(3K)DCGI_xFs$-g!HkXq+rGb9rIMXOaRr6bSch_n;KVP#e z$kd|59lkSqn>vunyR;)jz)c*|pN#MmO1D3H_?tq{(KP3!!Pf3(&1J0Usxfuh-YF>G zB)jtVjo~$6bJC2Ap#+R{)7yCi?(WFBW*!;hk2XgIZ&7zP$I|4AVF2~YB{y1HnaygS zAe)o$=JDC3n|YWKteV$X3HJ1&t{z-~xbpxj#Lm%H{iw%)Lo0sD^Q>_Iz*b6J$xol! zr`UV&V~|1JF2_JX{B-?vYb05ZangBS`3&~rZ0|NoHU}WmCarUN?+>>KT4mM6wc8ej zp#u!UR}vcn;GloPkap#5Tqr$VZ>C}IsI3EF{I3ti8`05$WYO7t%e&g2klALKpP&DV zo?g11kRV##h;p?rp2hNuJ6FgvQH#yQ`6thv^#Wra!i*aw%PjQAdDxp6`mp?jkRX@q zP0$Qir&20!@iIcf^J-~tJFBn> z>g?7LkdT#RW~9IGJ$lRl%^#fqpPp!Jo)kL(U@+tjUeoFE1~2wIDoOy7x8Du7}WuMsndOq+BQODRH;9w(fbe6?>)X>adoVffz-ZlbQPN&RSGdRBo^T zqd0aN3Huw4?a@*zJ1JKMeOvomUO?yz2z;3I`JL0#Lyz>sdJh)Tm`Zl`faBw)I+~yD z!C@bW@FB5xe74v7Z!*w&V%h-*9u({;nlsXr%=-Y^MYu&qC4$8AC_zl* zaEN!f6A6=@KSriRB*J+=H8PTgBa!#x)LSE?aX;|^z>qv5c~^cOsG)Z-`Zb`^V(U4< zvbR*-B6!okDU(F@PoWg8pZH_iV{ z=$~*hp5eCEpK?-!LnRs6vDO1iDX<)$J#aD0%y4*P8RpQxcd1*Ut8Z7pS)B>5m#4>X8L(CE>HkIp^2r(ilp$ zof%+Jhti89c_+kko3}NC(5jh%1zab~FYWv1*%Nmqdpqdvaj{uAhy6S5}#dO3}r*Lnd=8gB!o2$a;7 z%Z#pk0HPz1-l*1#?bb;`@s?KGLqYSG-UF=5xHSR`V$BK5@eFWvgvp6=FzYl>;04z? zZkU?s;}VcyK>)#(jXWPTF*HD|_6F%dB}P{*gh*sD1linGw~wGM+KrPH)F@Wt<(KsI ztR^(m9^4azfXz`*P$RsW^VGQ99%OZIR;KgSxwaYK+iel1xhL_W(Y#qLhQ%W!X|v5*}|qk$M%#p!qsVQ%{KkPw^rx z0BfVipfvsC6F@^@L)o$CJeUymAFE|!bHlY|B=1%{Qb39P40K+j;k&(M z7GCqZ3U&Ah#P=316@roB@@0Ti^9XtAKF zr<;top3hEFs;k&^%3;;&%Mx+%`+DO< zh=rk)U4qE2 zeF<+CCc8rX(2gTzJQAam&qg^R2(Y^b2Dr-sQ~gU;n6@WVg)+CK7PU*eTO;IpF26WM zhk@e}2xFvb^6G~yZ-YCQs_mT}>`JmZ9*UAT5$eDDgu0q7##`?gPO=&CCdl@n3(W0I z15ak7o%1* zlUGC#m+%yvKKePJ1M(J5uH0NdT0AQ76Q)4=@ynMUXS76J3P|oJDh|;j<>Dq_%R)fn zmTHo2Gw5o#&$q^OD{bWP;>}Ml!s16Avf3aU&y|?TfpPm=n^~t|2+71G#9U01dZ{TZ z-}5dA`3)$Fj|NXnJv+r3D3u z63qg^YIf?ioH)A2cR*7nBy6s%MEeLn9uD2yG%ur<9APcHxHjiXW{Nd>U*7L)3ZbK8 zPJ^7;EyVci1Fm#%fASb&Wcq)z8Mpc== z27e=EclT~>N#eS!M#RwYF@q8rdTrIceyJPFNIXYt{+#G$GmPI^;Xn!>{}h0$k4w0^ zG&xFPDGfGDhhxsT)qnyIjeo1>dUnn4ru-)UfjPC=M&+lQsquJaa2ESZAarH~oJENp zv9paHA6HDt!*>X-QC;W4ai`+ z8u(ZNawYXmt(T4ctv`!{VFBy4z#Gj?oD^RBw!WwjQzWGYrz}}` zY9MU-aX{_KKXC&#WFio}oVMQ)JSPC%#2e=3GVeZLOgje&{hphXeY^r6i5A21@~Wq{ zEh+Es@25Z)Qi;ZbTo@hY{UJ=q*iiS{WpP1A~>JrUrm)>t$!dAJy=M5rr zhzPlo5(V5^7tOD9{YvBhqtxtf;n3%NANqTP+^~~e&(AeJ$e+i^6l5;Y`o6UM*;n9l z4Hz&-uifv&J6ZNuiCN8RJujT~QVAZwq}0qyqUT5&TGHP5i)KOdq1Dw@So4t8Fk+#YOYk@6px*eUMBN7vjbbgRqos3{vDuDpV~Oz$|aAc z5f~X7N@P5ilIq=1>cAo$j(z#1VZaX*0}+|mmw6>$;^xC8pmg!GevGEXp^<3|P*C6o zwT;0^Aj988&z@~6S2*8povnGd z>#NU$CL$R_f4)8k2VspjScsb^Jb-Fy-(H`rF%NS957Ycn0Tpf+pv)u3Rl=iU2M*jw z*3THe(20X`F(pM7I9l#htu-4BnJT@fX8LT80#cp#xFcdxDnAaCT5ytLk|L_Ls%7)( z^zImBeP0HLNasZvnyZMvxAZ+GdlveXr-YE5%(N@a0%ZFNwlQZbJ^JdXs@;B9S1u?# zwj<3PpH8F!1;RO_Q=la1p(aTK!p4pLX+Gl5;^LHsafh4^mu?Q7KLfi;v{j-SvUikU zVOd#ZaPTS+KCjMBjLV}ZVB!4!V(TNF%&*d6>swvo$=gM+sFqa3W zrhaMoMaHU0plWPeGS;Z1fcI8=$rw*%aa4u;T$apH8@V}~@haE!o281_JCHGG!eFs8 zcALl1fb_0^J6-Hnooi;QUZE{x1-*5$!GM&N?bdqrXmNwYFt^V7G8ImEW4}9m#$&1u zPKe+FwH2pYAdvE0FB|?cZPo}+JR*ETB78Mf-J#F(+5d4TWABLSJ8b5bt;U{JTjX1> zy-(q`hzx$1_!2!r-Th+og?V%ii0_9~bDJCH;_YqL*A{w-9G65uj_m&E$$JEn5-Qe4exVgKn)^2yFLmXE>|d$h$o^NJt{ zAWV;gL#s6TPD7R)St4H7HUTK^jg|IxK^p?$>qzW$U3s8JN0gfK zTK@xI8`~*=#i z?De&oVmW8{_hoc;EUoxTo0j)amN-syqVvKMLw={c@LFEA&Ar$jS6v0p4)f7JgM$Lr zTXXl3@BQX-tFm{tXPCzuF=YeJnrMEeaIx1`Rt!K!lJ4mq8&lrdu{4$?onRpJc`TGV zxgO#7%%vhyOGRDz9z-cACf0GXKC4kAC=+Tkwx?wnYgJdv)t|sOi|Ac0-nlOu%;9T0qm|0|`&TCi+1*Wu+B0Q+8&+0&@wynI*~~tF zt`-pu6v0<-<}}=-Ux+wXbA~r8?B3)k>(1N{yS_Z$yqt~JM-l9N)HVLc?s_r}gjt;i zE_qTZEax0hl~~Lq7{wON+S-*w7m|!f;L4IYcgc}Xg$RvIsBza2YqBK!v*}5J;sO|g zfSEQrT4Sz1g~#OsGu_ljYm2Om!uXh&T8q7dXns$cX%KPe)EL20mT%Ywr-56dxknyo zQ@cgqp!r41JGxu&c*wux-9|pf!#~jh#QCV! zQHSZB`QJu_FbQ_~t&v-|cTw>s;7Z8VhP9c}dV<-jRIK#93~wDj+L)w2)HD|Zg&j;U zFd!tq^J>^-%`Yh6;+g~?@X+Pj*SB@Vq*$lc>FhkMu!aG{<5xgWG>3p>keQhRcV5!V zFOPN*(92hpEH7WbS5aB1x6Zleo#wM^-Nf{UZ8XPjO_F#Iae5_={hVx6vs1S!R!X`j za`xL7WgLXEq5&Y)?s*441g2__Jzbrty0KfKTgMe_z;d{6ZjlnlvN?T^yL>F0GXi+; z;ilpp=82A-y|@GgSa0ek{+T41C9+7@p?4HQL<5O^`BEpE)f#idWmIryQ@}# zwTLOl7(X-@>7yY@Ns5zD>_+RE3aN!anrP=5|Itx&>p2gp87BGy^>Wy>p4Tm%PUQ9- z3mY|uZjtnipwyZhaFt3OogBDa1FW7bJ2K+7wkfTl;VEH`o>o-WOtmx-as{et^WI#+zr*<$ z$H2^tLw{Qy-Uu=Wgo8_fzt8f$&v+nJE3wP9by7cy=Ig8C+@JZ21-T`80<%hbcN4T` znwkm7mnZXT7y+1@jKo&zrIxd`A)Gwiu3&8df;6q{KDxh<3OLhzq~mOFONL$6HCa_& z9z3ML>lR@h!<5jVKSI)E;^X1!Xw~a{pH|_u+n%t;pQYW95%LxpnUks1$LvB1j*g*a zWx(jQVeY}IpQ|m6=Er9!;Cyil>F~_dyVUhqF%-`$aw<;(NiOTNkb!WaFvuhvj`FurR@%#9E)oD6AjJ%)`iI`Gf@o zn!CXk4-y{N)6t10FFot8mg(c!ztX{`9)Vt4_Zx0f6#Pmb9%?Z@nX(eax}{8h>oh4& z6$h$2YTTe@P?0N(NxX{~Du$XzGi8APn}J+xfn_Z(N*uTYwGu|OgJp9VHQx5L%+>*h zc6b97PX_Bmaw#y3nD;FkPn~^^Q{T<~N+$Mu3kOkzD;!eAU+;N;t0KTheD`<&RM|uv z1m=T~bZYy)JEzS(FH5h-I4suvc&GI_G{Bo3I`u2`@pZ%2D`-gd2WW`?&ocr_;N2L6 zz2WpBu6sVrf4y6@NwdUHp9|vul$Vf^@$Xnl<+7(rPr(Vpjk*B5QRv+Wj=A@EA|5#8 zGTI7rWlcm0M1WlMkTMpF$sbJ7bDl;HiumHB&EtO}#WFrQ9mlmJt`Btfuzy_0v(&p=)2E4TtEkmcm69<#EvF zx;U{UUF|utYh3HC3LJNpXEi{G+9$jD_ME>svrW6q<}~bXdVh4n>wK_LnJ>i2YEH7> z)Y9;SwMq0bS0DdN!_V&*F^`F6yw+nAV&Egw1)=&odv3%QA#XAQp001bUU#5-LZE`s z4u1LN+s-uK$q6<_SOgj;z+GXaQ&JuyA?=X>6n8sCfGWE*?qc`e6JiUD3=TAa8xy&V zDq86q&^>ra!tO)LLdV!(gsLq0)q$ctR@+b*x)QzR?B`3tQf|kb0#}olS8t{@|6xsK zoGiAEp{&wAeR!6JF8W|XBGUbo90w8$efkua;050E1yY>hk!k57B6b~7GT)b=&bVth z`LLZ!X2;4xiTeQb{0`fC&VV-87=|Rq2Djrj|9raHpF~gCMlGJiNy&w=vXmn=cX#tp zP;kGcG#Ea|E=sgrOTh*qYNO^Y9DvuZ4(9obka?sVx6z4P75B2e@>uBgr$vd{PGcbI znb!>h>pR|QUk^PxrmLI^4oR4v9`Se}gQrNY{&0LdYLbB)x3s_2PX?K_{%0L4hdkVM zv|~yU@AhOK3F^%J=@-w-&j&?&JVLCvKe!kU9$0)2O4V!d%Z4tnQI~FU9M2 zI|tZ-I7~4?!8HHcAmAu2qWAv5yk%aN;h`9FwcRlj(%;(Q#4}ObV>#6#_934}stgNi4WUH)XKRSE} ztl3W6d}S6_TxQK`rR38pn2mrmg;NZza8IazITWJwsWZ~~PWVkOAv>p4t(eSG+$k)J_T zmevLjmCt{6%n;^e9n!`)gPm%Fsoep~eW%vzHE6O8(sCw6Zk_~vN@`Z`Q{MUt<}{(BKMoQB<-Vhy z_<*cc>g8piXj>;NvvC;Y5HRIIA}p(Y+W{kMMZE6U+li7HXjto1R_>>*p)_(gfRG#b zW<}({H5z~CD_{PKmhpZ(9!F@~${_~~F0Jz6YpC?Ke%CYe`h@qh)xcR%TiYEg!sEGV z;OV&_9{QB*_#LQyfIJZ$l~@c6W3QiT!=kq{9t6=omwgk`ez?1uS5N>}z3tIyMqP_c zcMF9HL$Ay)uIhpA{;RcKd_W3;{rasO>X-B}{E*_w^Iz4?XD!~@!z0>7moLB22B3~Uu_^D0nY zr|Nm^@0L=UWZ>*L7#YiE8E1dzV7Yu#+c~TOG<`6!>!7C za*5ygedLcyOF42z%nV8?>8KSJMqdX9)?Z^keFwzczh)2y#%B-jwI-^}4&PhJ&K4VG zSuU8^V}G3*a9P@BKubj25JlNglUb4O3*?fop|g_78tqHAZ}+~(6oF1BxF-Yw+m!RE z`_9)P+97~E@S!v&@^OyI|eieUs+&$ zi^6&y9i!sj`1zh_E60S3VzwoSb{NjrdG z27R`5jyt0b1vL12&$wM}j8$PWecX9Rz}U4i`??IsL0j-HWazWd0`Qn2HUD}C>=F*3 zAtI@D$|W5^E(8q7j4e01skb#(c9qJ29c}&m5SDGUjE*8?mhDaL79B1&Q_`k6Ss2%l zJl1d3l$c1QWRYE@-Gl)-Jd3lI4KtxwK2?8Xb!S21Ct zQSdjtrl}SvvXeH~94GbKB}Z@VDd#<5|GlIV8>`lc861wrDQa*4>TTfK`ST}0ra%14 zpxYR_zjCyg)ed(3ZC+;EcU9B{y8__m;c_&chL2=4bWFq7t2hXBQx1+vuVD!6avKi%u2A`;UQpV-c;t_ z0MD5Dm|?2!4AeZd)R#HP$bR};@?e?Ah*ig%#`a~1p zl#;u(|JzTJ^B1~m%qeNbC3dbLFdv0-*={Pz!W#YkH;U=KAaBtgPdEHKS5O)#e?FcH zz48%U2$G~t9KYLZIFZ9K=b@th-8IC;!E|x5bsRbTFxgq@v*ZdPUO`^jR>6Uex^hBN zBq~(Y4<0(>`tdQPXDmyprSf_;l;j$=mE4wzhvz?ZyVA4BRTeT@i3WZTYRSW}Ij{6X zi^3~=6GLTf7)j2;uob0bN|OUJq^e(a=AI~3XCxk2K|3jopoH4-S)Q!gO-p|Qcw^9L8O#a5DDq-4rv%V z2c@LDyQRBZx+RA0?ye!%x((F2frRVP@;-o#L*7UYO;M1UiPL{! z345V=fdcD;NLfGqUDR34d=zVk^z1pyOWJq$AhmYV#Zp223U)TdNRXQDcnEOuR<$g| z!(K!>Q9$bJ9PfP)GrbqA8Q=MW>MfA<_3FLFZxq2XW|ST(YSTdr{9IO2d65zXGUcFP zi1l>T`4F20B$1sjFM=}t4FKeKt1H7m>8bJ(&}-Tw=8VyXrh3Kt%SE<)j6fZCbDtlQ z0^_rQJVX6nt59|K+sJ5$BL1t>MJ`rQe(^9i71JD~8SqSpMQE(N=N+Ao3;mC!sd2)#5+O=(} z)GZJe+5!oYp(L-P%~ftPk?rBuhwPDMyfADEE{^SKikynA^v{^NSKr6v+n29+oolwv z3rN^^2fF+BXUn!L#q$EDo;;~wzAzZ3_5D;T^#t&cd|#(sVO9nh5=?z>G>~uKuNPg@iiS^X{`mA%)x8 zSKG6C(SP)O6eRXMr>B~gI_f~P*~B}y+=&^PILvCSboX?m;|A0%h$Qw^s|=I@rajri zKo<@L;k0dq`{(q@Nm_?Z1pGU2i1ZEMg-;db<(Yx34zSw*O67)e*gSjek8o);^%Ls> zLcnYZP2V3fAsSh{A|g4Eg$=E%xu{21tevxpDG$>tooYEJYaU8Ts&{oPA6~R*SL{<_ zusj!VO$a@Y1c>jECoVt{a<6`$l3;@{d9QBtCvjpb*kQ2UOnt%DjQvICybCBJgH_T)t zvNFWcF@a2 z>|1j1N5SMiW%2JP;?s8+`6aQd{0MqJe{KheLY{bD7L8Yz(l^Jda?G+h;c-BZOZoRCts5 z)_jU4yfPtPc@kP5GW~9up6gP0dh(&7%nUTu1Y^}K(VrTbb}5TA zOBbFm*l$)gjg;RiTJL`|?cS##H}w0uq~vzR{xDwkjq@3WuCo9KVmT*2_3$exlSWDUX2 z*@p8UIB6ylC|Zx0OAd)VEO7YaILwraS>9mcU2!fBuabaD_7i5~sbD+<(0IVTK^GfB z-JQbZbn_M#*WI^PgP};lgOyIZb+xFug~iGBK7f=r1_!$E+xK@dQSEZ7Hq%5@myn1nLMqLtIgUNQ%Ni-xC^7 zJ^j_LRX+o9lA!Co-c|ZLZGS(T-I>o#U)|Hw^(GW=P$}!qNcG3{R;k%u>)y5C`2;2C zvBd8LjaOf^t>)b#w08!gQ>MGZkKDXWXzl z>ZNbsq);j{&vEF?kjY_VHM2ahRZBaBzM=gDu*xM%TK=w}+0Mt|n5xe%uN*=C zPw%AbqyCL6Cb^$$V)1#i2tR7_;P!ZSS$Ft$6i;nk-B`Y~e1U>2{_5r;FsrVv^_aJ1 zcvDZ47rUCWpL#DsUr#7Kk0vP`!aG3hgnNk8o!`($_wMd^Cfl0laS2P0Vn6q`e3!7X zG5&H;jWx-3zhxQWuRt3~Cn;H#6Ylng-14qPm;Z-PU0&g%xc4#n44W}%Z5u=_q}O(4 zpYYrmn%lmE0Z<8bmJj16O^2&*%e(mw#0VZTY7XoNQ}W78{&;ojeZu$25xH+_TLcvj*My`Z`K zKCsDB!Ep4|dHfdnJT~HfXUSD0dHSS#pHNeccENwYg^|*A>FIM9}ww&#bLpN*$55KGU7)K?j+&N zuqfIi)BOC|V%l*-TllMtOwZP->N)AVu`2uVATpJ$y~A;|{J9!k6Y}8k8r{63)$3a> z;K!YEVYYs1@N>m^eEDX@Xk%m@o+q#I&c5d^D?p>dt~axn!+fq5wtt&G_B#G-Z?gL$ z&|KtbFp4KwAUW{zmi{d39p%bGXgC;qVmw;Rs2Yf$-!ebw+?A3vZAUIoC;uhd;__^J z&_n^oWUpKLV+Kf}>~?tu8m+GEHr6%t#m2=Ph|dymWNKs(u_K*kGv)C(GEEwwN^x>EKosSg|oy7j!gLk^Y8BLptdG(yZYiRt*oSMt3?E7 zYvXoGBs}*#*_j*C^3w7`zulc?=X1X8nY-znsxnKZFQ$p62M}mi)V8gamC75#Tyy6- z#uy>VUv_)%`BBk|zhbbou1F*m2KrZN^{6J4-iAf?{*cDQps%q(tZClu=qWZ<8NqF4 zg6B8h#@9wIaRvp2A*^YN)EW@LRs+i>O&3|azV79(INNwE#W6fTn0;lq+Z%m;w|j1@ zQc$U;Jg?yt==BOqaBeP#)A<&ivTbhe6O?6XHP01Aa)a0PhVvUv+R*Py6g0|LuZ+A| zPG_7*;5&#WLjwam{<9sfj?X`xDRNVd7<~k!<&0I_vfp;+HrZ2q@6vEQr_wE)arpVg zP!9X2QeD=jqK{N=@l|Ez-n#>;CHWxM=o_?G+jm)`oM5>be7#!=z~*fm&+Z%6Gz9PF zF`|CA4okhxDjMf8Me--qp-4kQ)QfpHo)m45DGhz@iRbj=rtBNdA;EopJM(UuMOP42EIjM(4mF>voL`{^QgOO^rG83Jbc7_rgl74z1OpC z1>BA3h=iWT*zrZ^`~G-#;@?GF@pk!YIoH>d;Ypsn^OeURF3O^FayChB=W6yB4nbjX z^KG%N+mjx*kdThvD-Teg=41F1!}Q7q}nAw+d#9UvsHC?fr_hCMsn8 z34+SeA%vkLuQWD4|761GtaGqUx41nAQQX*E?G4xuLU-lwjs33H)>3g=^9^qi%`~3X zblw`v8Ow8a#oXHVy>s1WzgheMlZ?HNh zr_8XI#53s!W(P)R7J15yUhlo{E_ng%G_2~eh*q8Tpsyrc!mIMUimmGGb;;^zbEoE zk=-$(DjJ1SZ*fUJIGKC-xQ3gYi9@llZgIB3yK10k_M@tCJpZ^ci?V+U;o^EPmm^mxDhRu&i@OAM z1RzijOSok8(ku`~5Pq~RAg5LGX-Xd4d5U-BB$p`@_>^yC*qW1*liTS!3&|ersRTV& zMBKczP|zEiY5fc8;pwZ^EVfsExr9=_1>f3rFz&YH3S^{d!b9&_*|XhbU`s(nGgWB9 zW${nJdp6Nn9tE|7Zj9u8iR@X;Q_Rz`+}6m}_TcR3HDgq(9XK;YahD`(Pj#}{J{ae# z%Mv3sIwD6)9*pNT>ubw7zC3jt(JWDx@^G>>KAJbkc}F_nSu&r*O?G`D5~FaX@sQTp zx$e^Tex03pYoY%k-EwN3tkU;}fB;HQx%>r5)RMBY-hly1PgV@$kl4uAkv)x1r!=W> zEha1H$2)r$1a&gC;9b3?5?KI#R& zV2veNJe%1QqUh#IAr7gm03UNilJJYIi9+fttM#A)3U8q0ebvg|#4c6x9o9=2Xq%W1 zf<_{jRT|2+$!_MKA~%Ij&V9#W&-){V+dM;t_%PX&`3nNFRXfjKGpRQ&o>roTRYm&* z+sBrd2Y>(=`{}6AxhI7Z%feZr&n3yy;{e%<++I#qVK|OVw%sG&$;{*Z z84T^@Z{l0?Rq+aWyT1zs!2`L6#0RY5R$pd9!i>V}?>4$y@PhU?nDJdv!fg%CHgAuI zITbF!i$THNtT`@Q|9f}D*S?|trB^_dyaQGzsql-jt0Mlq|atIv&qEL$$;)Q8PT zsm`vS|EH|hRhv%UxI3*5FeQV}smMrQ^nX7x?FEhou)R3^#OyzHuX#bMx>chIYu`^Z z8AHyKyX7Z+FH;viLrUEc?=(;TWdRy@emy7#Jz|)HlRUwDUTH*-0aIgC1YX|@&+1yv z^~hDEVm4^aQum0VV?`^KC+PR6XQ1y~UALw2A$}js5UY8sEVX>O8fd`HNE4w(in~qt+ev-NxP9Hw! z&7~#NgjwM)gTT~u0ME@+FSLvC&hIm3YlflT>Ya*Uri?6p<`)e;Jp(?Mi?+%3Zg~6T z^z?`xUE2lSxcN+h^7Cg!S_26UJKO8(IXcQ*4W;pp5Aj@94gA*vZJl+$gz+g_aKa9W zDfPw%moaZiHJcnQ4u>l|LvTTkX73A{7d?lf+mhTt#rFB83km9RHF#_!wwn{bR6Rla?J44Ph;)eyyzapi;`yDZX(O>J*d75lfXTWfKV)DpyD!0z1b*=WYw| z7)5ntM0cCFXz=zr^q>g;ABxBx>AFkhDz62tu5aowW>yD*+x5_|^Al0Jj&}QsfvMV3 zj`cX-8YbgFP`}5PL-hB${`|1$zoT|&8HkwFH5<1m_=SPoP)s3RrNnpyY^E13bM?yM zCU6D>7qh=QKm!}DB*}Rk$;pm24u$-v2sAT%5&EGbm~_l^>cEVt7o729i;JKvzkRt=o+Tm|;3PUUX* z70^}^{J4v(GpZ?9*wMGX`BstpI)-I(MTVh9joE6e9xRensW&E<7gOH^Yi}x9WphW1 zmLD%Kh0*#Q9lu^)-%?{X{B0lh?JDaZ?4x8!w zVka@MUA;1X*lmUO%2eP9QnKMo{3%~gUJY`van(lmJjxX||7W(u6Rjr(cd2)Fd%S&b z!~(bE*ZN|#q*5gTD0z9J><=8R2lsAcLIoy~X&}@PvRj5aXU#RU`&1YQ)j`hoU?NmG zzm!yNMjOV|X*VvX30WuF*7{SjxN3rsGO)lT1N`>4-WUQ1Y8@`qh5r65)YBBb; zuPgPj@1{W|BpLlP&EVcxe9#YuX0@vtmR)a{`UWM^gai~1qy3-x0?nUAGHV8tgdX!d zoo?VO(J$P#zFg}g=7DYuEgMpJd-7tU_4oCBhT`$smd09RL`~wK>}j9x{^k!xY0i39 z13;laKkT{C%%httyF976Ca`^K&x=b)-hH@3Ru~^JTkDUj-e2(DLW;a`X~-vg;V%CQ zn^a+sPtM(U#u#adx(UaR?j!_aiXH~K?Em@Eszb)!>33TIsS4QiwlYol`igLkT2NhG z{Ov+tpJ}Fyk)ffG^eE9yEsZ1us#i#OVHR56hp*K04DYU)o7+Ts6_zX>pPB);Y$YZVhDP?=`9r}Lp=mf5YKJJ{;TT7 zA!LH)zuzu<^yUTYOCeEIBfW^3zWzvDep0fwb{xVFsWN0&k~OaONHj;&m4xD?|M@$H z|NdQg%bUJES0OaY3S;Ezx|%24aj}sCs8&!YgLfAMJ(!(_-F_^cIb_=B?=pu>u-2%Rn601b~^YDvg3FC4hM|5fE`Lu6ur zM+lV?2`SS5m6&^QW}yFI;)N`@i^OA9$;Z~Io%at!K0yD@lrmLRa~aNe?3IxnK?7-! zONn^yp6Ol>oKnlf+)l})LxdW6aCAJqB3xz)PfMEJ9qA%nQ@11sv{o zi<5l+_x^n_N*9;t-Wp95`BG(*mSSk%y~T$rsQjGH{d!UY8ZOHkEuAxZzQ^|}&g9=A zBQC^WIqi2c?&-1DAj!9XA)+iplX}O-0a^!v{Np1mWVxK*S@OCy{D@~Oo9zp#GDd}l zPdP#pr3xKn*J7z6l8cD0tQ73dX0Ie)*Z!QCWBh3~8;ni<&-)BXQR-4GkkxE5+GG#~ zG?ALXq<=o{+>sFu(XWUPo-Y#?UmK%&jTQF0=~`1hyGv70XguMnXjhSY|Mq=QPacL6=*fP zh9E9+=r3#D7i(5g!>-jUpa@~z{+Y}7(=y^B%< z0}@%}3~Ap}1--RnmazVPAo-GckrFYv;u0k`{t<&A)3wl!1oj%jNPXo$~clj~!UzV1axqI2R?qtk;DECOlrTGd6Zm%%32i zs`C*gwJ=eo!U#SwY%<9ZmxZ=SWRL&%&{|}e;avK) z?2L26j=zc;@z3sNh;fndA!d$tb57_iH3;VK#N+(~-E8lkP$Yw9fEfHgs-lIo3LwkM zVDBarv=sEx{_$Br_wXNQ0`kE(j9wb>SR(_c=YSE$I&P}XO^xf-X9=n3e{59ni9uE=2(Kdz3Vma*19%GPGu zexP77k{ha0(CD`PaZ%8?u3V*K%@M65RA{^|>6xr4Oa88*bDe2B@&gmPUR9110pNfD9 zDY4UPjx;&Xs43+S7&FL`BQ6;8?kWApyMZ(dX~)bMu~ZB(M-7xEGY1mML7f7dvn9X~ z969zXnxZ%1@yK7}uw02lLt-8ipUt#S4z+yLxt$3J$oFrl>UF3E;k^**=1k*5@ezQm z7w5db8B3STjg>jd{QC_NHa)Xfa-9-NoL_#Y$It$-$j8P0fCP$Naw^p))x!90P}w|v z@D(uf(`PU8^PB9GlgP3qo_sU`eO)9jTjl83d<0^-J=9WX%6FfMk7z#H>L$0cvf3I+ zZ}tDN0TQ?bPR;DXdHNyqe+@7#(#C;d=_Ce2Vtav#V7(1)s+ge!#P3P`WO>D-&3t}S z+O`)jXm)3ucLYC`s}&Yk0bnF;zwzk@R1wKRVadTr%O80`kl z3W1KF-mdV@)>d)*dW~7)MJ6f$+)?49$32A8*B6`Ni<=OjM@n_ATjp2S68?RZ`97iD zndu$OqF_?}AGE;g5p`vLBZYe;sDH-yn}+d=nD-F$%->GXhQE5tVvU*_$DZT7|M6>} zabzw^eYb%|Ep&Wtu2AM7Y&N1fPX6Ymo@BH@+cGzSbQ3Jg=NcWL8+?`u+z&Yz>!LnS zCG)-0wM!6dm9-Bc1w~EZi1E`JH4wdCT>mmP#{PRsf&%Q;jAXdLh#w|@sUe_OdQJ}c zk^?6u$uG+(!YMVN;?nM2d*oWrLmzRBhyKtrr1&7ZR>)!&t;Y6chU8$-B|Q!a8!9XB zAP5D566-S*^6G4jMsfuOmXSb{e2`eb!b++KofJWQl1xrUN=C-Z>qe3-W5h}vH@JT2 zFtZf&*A_wgGPy04YVJZZ%RcD}p>f(4gZGkf=<8RKoj~(^%cuvHCS-apQZ(TdJXW{b z!VciI{1~{s!oovOf7KkyGN@U9bb3fSvCkqYd0zh+`YwU#(sgZf)9!XDP#GcQ){qJEa3dCj`eIyNEgq%wV!wo z89$918)m)9Ir(0)5) zF3)N8#z)eJ&);+`V`Y3^j~NqOOrSU8-iN=p{uy5Yf9kC^>GN<^R{x{Z#p}vYt*=BQ6Q#6<P-)~-zU4QY^9jV7ofQ7 z)%VvbLMHHcyGIBO+0hpJ;{*F>J|MYhVZZx(qL3JRb_E{m!p!h$4`j=$lTv(F;ez2|Gs!2Q`Bmz_K z2>*8o3japS(7Dpt()VhN7Kpb!c>%Um_hI>s;VSDK{7G^ca{%ZGBR?r#j9)xExM_4`4Rls z$SF4b|GK4+W+-bx>=B;GVDZ<-7AvUcK6VOzs44jW=L0%%rz90s=Blh-Bl)lFXMz>{ zP*QBtGGrXBI{&@b2d{?a8q>+yzkjV*lT3A~e~5C9OJuk$_)rR6d-dO^r|Ah-5WL<&8W&M_|75a zz~Al9Sr-?ZY`!D?wQPm9Xu?{qQZQs}#?$E=7hfsyY~c{m_3>|rh0oVNdo_8}_=45! z7GGm_DhS0M?_0BzG?G%VN`Z6^Yde{sTgXhgIw=-4{?U8VQNh12Bdwd5fr3JG(p0s> zaki9sp~M~8;)R1M6CK24#JB>W5(d$hR8|J*)oMYBiICWT#|XwZzp0VUQU$k#G)S)> z+?GYz&PB_eod;@#fiyX$tobrQ>SexBAOGHLcK#Cmx-Ag5XH7^Z_gKu0iXKAnsr_`S zh^BRN(YwV}J^y__+;@L-yHTkYPo%y2Zmz!b8LLW$8zLCoZ$W5}Pm{8i)&CKN^6x>X zTZA)})t!veb^DTk6{vL|PJ9%ls??B!wEsfB!q8sLG6QA@Jg|R0Zu$@u@Zyc64Z_2I zP?L;Pm7!5TP97|)=-(7JpCbI<$9$mYyzmk{LUG)?Ly{_}AbtCNDWHjP^jgV!lu8Sp zgFn~56P&^HD$eUz)3bZvvI1{4epiG?E+G{^!Km9;FHv)c*8*{JcN+LZtKqzl*I%QF3Lx~9fSHGF+YN@3BxwfcbTZ7P0o4t~@l zuX~jWAq4+?EX78K{9XPGtm`|POXErrJR&|1PIa%C5_q`$&=GGbcKMRO$4ik*drqa# zvZll;c-^a}kvIibRrA<{96AOFdURy@p8ow@CQiDPuu!m}9`raH73C2Q7O_?Xh~fjq zGmHQC_B#l$!*Iz6&2Jqvc0XJ_EGrXf73h=NQ7~2**XEtf*HmQ9^m2rmmja$ z0+4Ad{?8G|W5;_)=6_z<^3KXzzQnA<=4;iV`Uh0B(5 z+8PcI_md7D9@<^*qpq$Q!+%0}32JKmmarBd)xSq^PfLdzM~Vi%-v7W6u2PU{R3O#W z`WOr_b`KNJ(kjjLiW<{1dKyM=xPsmx%|AI!*@7k|_9r5Kam*6$IT(FiK@2Ph33x(E zin($PS1Q9JKX!gOi3nT$tc53dm!A+~gvedC0q3knO@2lipZKg7*Y`n}1@L4e#e;peqkc}F+mp7~wnTtP0U^74w-BWi}S9Bc$wuI`|BM69^04zAZV%?DiB`RYg(OIl{< zFR_+du)|?Ng-2)$;ksPY!=W?fl++A0HK(FWfj&kG4WHHx^e2!)|TjMJTXOcNWTf634 z8~3zUkgvAgDioJsw&pIfOKDA=jgb2K=gz+uHvf)B{i>$sMrF9-Do4;VHOqF^yYl20 z{YMhTdz`4N*f(Basfa#)Ef6+Rjw~1%lq5UbsQ%90n1o~PWb0rqQ5s8-d-mN1(*r5| z@~MQPCRxo|(>2SU_Q}nr=cIg^dB_hBUX>=U(98u2EMA>|G#=7pN2BB*&qCCqbB)@( zitGJ|^tECtED`uFKjFmW!5;l!q#T4=K%!8)=A!>90v8vPGD9B2e3?@X#>A+vO%oK=YIcm)JjFNZyK5v(zxUHe{Xq1GNJlDE9RE#<-x= z*z{5#4W(zAu(E}D6XW++x(^D?Ur>F2@3hwdU4cGq#TWFFbe9pgK5qp0;9781GQ015 zY3%6|k~@FP4PrgEo$P+S^p9zk)?}gAswIfFoCVLe2*8q|J#e`Zk~i)LF$jkR*Y$yP zOnSP9V(c#l)f$8hfO1qiL?Y=sf?n&w`PAj5nB2(s5?B@*+;2Ql9XvZ* zP0%1F+CaM3NZO&NAOBwCcV_s_weo|a1EeD@E@##fXxW3|-zOd7SD?JDQcz>h2ZR`R zn8<($<5?ME;TLw{?*YHWdyHX?fmmKw_Htln;qhlZ-v^URwPOJOg1}U2aNCYKEW;w_ zHIl|e&pi4l{B>vhfxkfsD=SdPQIK%#N{GEJ**LY@D2ug@-kowD?JL{mvAhNp&)XVb zeCw{|;>qJXr7|~Fr0)z*;urXUoXGKz3bi@yz9=Iq1c(P)(eY1s+)6}w zTgJ-D$|%4XiVujGo~IkBOxMc)UOAkH$N^z|J_pd`vDVoFdH)XN zWtO*ZL0&(Kemz>z)N7y^ALgr&+o<%%6#8Y&UwM!phJgZh;jwhAc&gpyde`9P?POaBI zToxth_2%;*c2z0NmmGSqwo9F>Fm^E5dOTiQeWB*z(a5`$>vo2W(yE(*=1Wnxs9q=q zy71!gpHXn%ax!W!RWFv5pbcu&vywlhNG`V?lzy3geyZSGF=^eQVp*Z5N)OX5FJhnLTl0#oVs;1a6L5jiow8uX4V? zbvk5D+oPaGX`0c4S2Q0%Y8jApTjP0fhMym$KSw5o+5#Q}P!s+;b2dN0I*X5v7Mh=P zoXZ}Hj!ax$*$5d=2WQ!nlDLt+_H4*qCnn}n9u3b)Kbj!It8iW z#pBj>N6@e5om7!Ikn!d|<+E9vSqaTdFZWO3men0U+F4gNg_9= zK=6o4h)kE;CRasw0t(Ny&+#ZMHqsi@P64{DfbmoB`lo2-?f!|N7e8|`OwvSc_KCO& zUbxKC65jTBp1!5YYhKF9&gn9oqR80DbUC_S2SS6@gvU%=s#_ZubK6n#il#3-#gYyZ z_k=$iM2XRi!ww-Gn72vU+2D4;ioU<((8b#%Ad$OqKJ?gXbUtoR3gL0oh(>n*mF9T; zsnW6pvE1Iow5X6{+TZ|5v81d~z6Sz(-1(E~(i=O3GJ%55_1yhV`+Xj#<+X;L zodnJblbtE+wv~m3t2?%LN6SBpCRYsLbOflBIwcKKv>;VuV{1#!<)l=R8`-vGzYl*I zM52-I6=K8Q-AK})_Zm%EzJxXypEo0mIyH-YtF+CJX;84WrhiFYenz6 zzVU27bm1+zS5SGOnK55)yT60bvi^+z@Vk+$8^eK@>7u_ERWX3666=BkF5QHqCCtRI zy88M!t@lbjJgR?$$9LXw!4`g_Vfl=dsiN=;gKBd2ATo!!+;~FGpysE3t`L0QdAyBJ-+*f=MsGxud>!WmgjD2~o)YmjxKP?CvM4!-5ycj$An76D2z^ zUw9`MDaI>!`>zH%R@ZfOzMQMMDwZ5%L>9^94^2p@bz2Ss9B7P~`H{m+ucA4CW(uVn za`)!fe`T5=6gl^P7d}kB`xXsD&y-i3a2=Gqi1Cu(lk|Cn;uHe{1(Z7ZA{-FLc7O3smY50F3+sOO(!pIzAHbUG=-x zC7kwummrxxCG*)pp({Q6Va&$b8nF^f^TGl++U=#`dUDLuAhwButG1D`Da_mRDxHe2;gG}~xoo=A8 zp8etQDWJ=(pf+Enn0_ztgK`3(15bh{CZ9GUNs9MQ9Gpw=3j?m9>B{c+&l0{~y(4q= zY5Uz7Z`YGL=@C@Q=Z#M%Qq}z{NGd@qhwh=F#b`&_N2S=9t)?^OSAfGtqnyXwUEf># zMQ(3z4TqhFB|aAy6T?NlK=vPa$9^Vrx!BqXAlY)8C?y>}i!;{cWh*PR@xs}qV+5jU zUmg$|^UolyNwkEU75pvY(Y(hJ9=yiQwVi9QtM=Z(!OaLg^0;s{ZA4oh^K z&Q;LvJa=m1JI8N0!-av$H$1bm>huxkd`>%Jz~+wn&ij9|1HA~55tlT9pa=ZgmH;zma{iPlvwi;90MAS`Qxrx(8Qi%HeJuf{rp}(LJwA{*2m}Q=P?nH(GxD0UlERgI8~`|L2`}+=Ee{R*;(=&%e-A~ogF7$Ph$g!5wN^^P%pK@kY0k0 zDq{!kB(RaRB3HQ9_g)~J8t4l3WIXvp$yU0BhQd4>?DS3TYcVjN>2t&&N`WPC?dFo4Jb2U*9cI8W;a$Ee^)bE zuiTpG90dCO7mK9VI^Hxm6BB|)pt}IPd0wU*!M?Ak-{5*%ZLg_X5SArER{!umEk7u^ zm}RkZcJwV?8+<&wi`RkwfTa9hWHRw>Uxm83_N=fp&-T}JeJ}Y4@}AhnGMc7LRGzHn zNQC<$zIQpBA=7(;T&;MFXVhXF8oKl<6VWu80`meVMuSVQ7^xg_pI&L@itDbLC zywV)7Sfx0&N#2{W{#2j4r>D_H=4ydn2W_;q^tRL_6_CJ6k_xvjOoV%KN*1Pd!!L%F>4 zwo#TQh!r6P72T>NLm?T(W{qXFcXq}IZ?D8zIjjaWwZ{4Q*@&TsY8AQ;g^mSs@%<;> z*A0%*QnaMp#nFY^DGkDM4w^VImWx@O3_G*4-`$N#LBh;0=1&Tac?6aoXjR|PW}<+j zk!p*5-#zUcU!l|%;QDjyv}`q#-;DIiEv{aZ9b)|{J(BXdqf=H!riqw6OC;Qz<(4CLBmLfQ zT=a({G&jXI2yZaRw9TuG+Y$G3%rh(I)JJ&xIWPZ9<%2w>-VI4!Rd4Po!l-bqri`6x;+2$ zkVFf}Ijrn}Xe2+m(?4LinmF#(wY>wNdA3^dcsg!5A*|q`T`8bYOJVS_>G}JL0 z&0VguyVEE5SgZEEi!mO9*1T_7$^wKs+F#=E1G_+#u7gU+$S7f&^^QxZ7OZq9Tayao zp^IY;b&HvL*wtPu=*#$yQ}ieYIexIikv#b7Dol9|X4C<22+44v*9h0y&9W9-V?~Rh zd|b*5gTUOVq;>g|?HY_|di)MH)6hPRG;7GaKgYb@fk!4rj&{Dg_F7{86vxn_*4QXauD()*GkkDNFHy zKo0mV7`oY0y0) zLXO;g`1@qF+CYTwypNXGTGZ#SlM8T9tr-D?m6w&-+Y ztfjkq$RQ2r+gd^!UFYOth6{+eY)&G?Xn;6BrtrIuOwJT=qyctz*eeh`)N9xv>qs|ZZ&s&(EUvS=bt zfst3JlsQaJaoG!id4_D4SHS6*d@myegfnd^))EpD=6Z5{L^sYG^ZCQwk=-b+ry3I3 zhVuZ|{dV8U4I#+HFAUiCmjPsp`|D=h_CSefzsEDxWKwY3Qfr&LUU5E?;eR$RPQwuh zJS^?ImSsmCr^Vq4jOapK{zlS?_yW%qDOyk@r3w9^TJg1S75c}c@c6`lqm*e=iU2pR zT;zF?MpLf=JI1pWs|m0H$kD+khFXnL;(nH*I|4-Q>(EZCk(8@q(R|dJDlP%+K+$feu4bUUQ_*!pIjUU}yh&X602UbN8GbP1w8oijtrF~1c)+9@W zM%mi9l`TapmZSjC2nxd|%ipL)wFORS75t8{8?O~LM#H)MZeS^Gw&$C!(-b3n2quUVTNKS1H4%etR;{+X zy~ZdC@f^-F6_8eijJu?F&Oljy*ErjFd1TEmtmd**Enx0d97q^*itYbKDj%F$3lEHDD1G(|dj&k*NxfeKb0mkDPs3g8x#A8kCPe8Eepznpc$a(C{b z_|$%6oz99*f%cD4J%%acJ|$qWZ#i--qp7Lo+%EMQx0r!bfTgaco;a(P_|)6i;c3Hu z^I=NIX>ar~wP&$9Q@P5neY%^di1_*Ou|}pMbk8HR1ylINng80Ip5+^!=hl-)k32)b z_|@9ldc|jO2VL5Dh7kG)pbQ@atpM)P0c44l`BnS1t4l{hib`sq zI~pPz90qG{EcgoMpbG=7!9B7`$?=;Cf%GAe{JL7% z^nWiCdpi>y3QUpEEst4oeS`Tfv3#B!4*Emcc|ulF4x=FNtn4i~2gs|qopCQ6!Busx z&iC$yR4#{>4`L=9Dkn<50Wsonj&^PlG!v@EI5;5jbs+5meBl#0I|CjVuI<$p0j+t}qK(`UL>@I>^g&0aXPA%IMSbj-;|PEp z{L*G-)z|xCnh8<5`Xg^@oMi3ng0v>wv6GNMcVp!%ESKs+wPcM%9-iXO;abKSIX(=S zB7KU1xI}zMdwnHwO1bnuwaC7f`sTQ^rarbqMhplq?w^zFO<*#%8~6kUcj7t`Z^BwWfxLWb&g%x8`J!kG~dJ^e#8+Y*}YY zvq{c{#{uEPuyMuxOIv%^x+e7CUNRPAVBz!D8838u+Cs(SM_>LCDf~a8&N?j0t!v|h z9uZMOK#-R15b0E;ySux)TWOGXXa=OaI|ZbqyFt3U``dav@5dirbE(WTv!7@0z4lu7 z{aXX-wcMQ7jwJ*sAgbBta{)=l7$`I)0h;pr&jiU)2Qjgk>oBft97h3HobzRHjCp}< zR`r5t6>O*%gxsty-J|V_e08dHY0*{{4{HTAz{|KZ_Dyk3Y|Z;d-%~F=7*oRig76(X zF~%X^)QfuH#piM+RIR>ch>57L=e*b+R=qH7hj(4} zY|O#kJ!-3(@5M)iXNA~@H_Hk2ZD~6X3kivdyvs?Snt8Q+1H;&?NDVFScY8X$CHS7n z=R7PgE%91LZ>{qaDl{jjM$}*tky21xfVGi0s(Y1Rhd+q_8<2ei%);1cd;j8KjX_)n zl@NRuYl>zMo2RT9dYZ_;Vxm4g2@WpNd$o_#(2xrO2$|wA+3#M_$;qUTnxC-IRg{-Y zP9XT+y2c%)QHHoS^iOq6m-<%%uM8~#vkvw#uRJs?F%>i2?>)#l)n zKB&_=_P*ioj`Eg9=LfzwVCDyLWDk`oxS6T%^wX8GQSM-`{31cRVvAR+#g+p2{=uEt z-SI0uL?LCXs8~3Cqjk8G59$)+U7O9m=-GY!1z7evMP{Qp;pBcms(95>=z^2Y^-2(- zCu+UfD@DgnPs4+_A$HsJ^0|9dH&Fcz;nc29*IOPu?fM$c&48h@_uZ_1fjy~aZ_t}D zu>BRnqB~n}%_>70ht(nyhuiKKknVU76$4ut8b2^qqup>etG&-!;Njeg;I_HUyuTJx zTIAJq^z1WNDk--(>I1e*de!Q1OG&4_>lEeTl4nFX>=$Ny@n5PH>bPl1w239UcNl*O2u_|Ixrc6 zh~0X9cE6f1)X3nawMWtytJ`DLxq zP^&WuFa-8kw3B>xr{5Qwc@0mcU9K$-6VGPJ!ybxl+qumXK)yiJ=;UYBY-^nLL_YR+ zFF}@k<>40dUcgxm^2FCJE-dMt?MGVoShSP}t7O+Ib{vD}0g^|A)gDl)>)WlibPe7& zxuV=00cRuTWyp8Lh|B^-<~h@1nYXykO*BoXBqEVLbx-#!0jI6*(o2xn+I+#B|Uh0bUwz^2S&(+ zdp`}12RJi}aH~yv%n~QgZyMFl%ns_q6$%ft!Gybu|>~4uakR0 z-xE;n=UWBj4+gbz&WD&m_1e#nQ@w5TXuxyvv4 z)q{<#}=6SyDzik46PXwnQSvZq^~ZMp<7x4 zCQhC>c%DHL7;_+nQ-44%N<;v`bfGXx#eyL!2%i*eBJO1>yKi3N&ixV|p?p7XB9=3Z2`KA`B&K+-oYXbzvBz`Wn z4LCIlKT|U@exz-%&#ui4%P#N8clO1QlI7TO;PD5^Wli8WdYqku1sV-4CJ=>Y`?I#G zDK=WhT+J2mZS`&GPe(*NI4>>T6tJsONNF7&ADfJ&vHq^ZV!Z@xFj+0fNZ*pVTl+I3 z;2VFq%qD32lIq1w-~`AMism&Q3k{)ynlN5Ekblg~&c?;Fn5PcX)I#dm`DLnj_^RGo zT5IRxBI%(*8k%<@3EKBS1e$P3w-MuvmzbVWipPS|+ZghT?x^*8V3=X(b8xgx zJ~`QZsBm7il}ypZ`=07vf#Anu&~1aFpiz5~KT(7qUR~|fq!~Uj!e&ReYiF*kRW%z z8-I3!Qkn=SdsKNbg`_hI*A_zJZZo7u=$lu9+Df!zzvYVY{W z(KUu2dSx0`7h7EiRx^$2$|zFAFB@uKr^fb{TgXNMOaJb!h-_usxAnLxX+#v1ivV)m zd=WAgCV1(1(CWPg<=KSe0g+$h{k9+I>84niebJGw+RPh}$2N(0fV_aj?X7wQ9dekR z@6YlSIgHXb=AWrPx86(wrOoBBD-g7@SWg74)Z#awJb}OTcS5|{+sNWyk3x-xrc|5{ zNt_fwCmp1&8z$C`~-%q^7}b2`6=H~KiXJboev79qLoVwqN0|g zzdp{{c{yC9#){8t@x6S_e5Du5^evx-*4KcS>cXWiQoh1FNW_5jCxejaaWE#cpjzIsI7o>VQ zYp|>WHNy&D+nh|y|H!;4X}L~6T<>PwjkZ>1IX$_u8!ilKRd?Q9EVZQ={JnK2N7J6E z3mG{n`CHE?Dk|D7{m6Sh%y#hFld|gz-!sOpPx6VQ#;W|?=R7Zn1mYG8Rm>`+Da9-w zsX&bm;Lfha_`+UCB4d+!mjsY~fPBwZA*sttZRqieG$xj#U@Ixy%26v~dHD=_baZ}7 z1a)$Q_GI=a!K>P`SNpHjf^r=dw1fWvX~}JBLCfksy;R#vGxhGx#nn-}CV`@q$z=6f zZNP0~SozsS?mLie)ZHcSc%!N(LB?WlFsmNp&WlQTc*bZ+?ErIV}A^glnswHis1oXGn)>wSL-@HIRjHyqn<;6`Hr>|Vxw*U3QBy@rNv zPO%e{(tw=I<2^0#-bg8S9R9J+OSt=hE4Qei2?njamGy0leGI`Sf#tigQ^_Rf-_Br= z-dOXx=EJRSVO{eF_4hK`i@|_Bz?OfphmqcEfyQ5{M&7D5zZ_TPW0q?S> zN0zVaCnGHpDMO3RLYwu$qIBwETkb>k?l4dNW^byM0B&kft1T^&!B$Oyf85cc*S(rZ zG*Ao(2rPUFYJ?`n0=KPo*AHYuRviGD@rwj0Cy-;8(J#o1iQWet*G!p(c)jL=!t3nW znia)K`n?Iz1!WH!&yEYFTQr*14-Q&j+NvyQ=;5i{-nXl+zG3|NGk$Z8j{MMB`MrEDu?iQN zkY^8Am5nL-2UwHKE-`R8Jce*fBpLa%=xcT~?vuv4bJhJKBZWIuK#Kbg_nMdN;HHX# zE{V&buuz~AJXu{)_w%HprfXuLOG(C9cE|1UY(S<#JN+ZSNY_*^nX*kpZd=;Ro3-fZ zP-EPKQst;zTav)kX0lvfjilGHDJ_Q$A+tO@^L&Z-*=Jpk&*E94lcd~~dFw!{w%zC? z<@1j6(9k-%mykXTf|n_&+HWvJ-5m}je!Cfn{n(Y8e+|DkQ|km;8hpInt}p@|Co=w; zyZIXJY*S7ax|0m)X2z+t1Eg7pny2Rn9Cvr+{K|198V^nhb##UxeQ=KT4Pa5vO~}%$ zCL{#;9_sIhqU1sMg%rMx$7S86Ok<-Y419|YRlEVZ65NP~UoY*p#KKpaRW4r&%C_BF z2@Bho(A;|97Tzw|zw-r+!}yZ#I>1w}mB2ml>l<*&pPu%a9yD>LX-nU&8rkd^K^;Zw zQxgerm}A=XaZ1hm&sh{o==%<2T3 zNWQ=}N7iikMMN5u;Aa^$8p#`>o95%`Tam2+WReml6U-)uX$!*PFb?k{vl4=D>j#uT ziQ~M;JAYbZFMn!^v3ttQZr1|Y{`qU8ZefhLqe(L5yN>ysyf&?m2Jv65WQ z)K&px8h^JJQIGds=D`I1Q&x+)qrK?5`Y<-@MIMh+hh9uc-h{LLV?}S`I@QNO(eZp; zYIN~69&&2xWK}bCxhyefbzz9!E1#oQ>Dt1o6XJc5SLgHN5S+e*>pOZcfUkc~&0dFW7j5`Vzh`VFYHb$c>W z2z|}T$(hyEP!4E}18-00$7fNdQplG=z2?O^c(T7=T))G~R%3@1CYP64-mwDj_tOf| zAJlVRTE$l=m%zRWN2DUPc(b6~Q} zH#nkYBk_t^sol_Yl7~IUVn`lmt@Zyf9=_3qMB%r(x^9nW%=prA@zY9~ZLq!&PsU~Jt6N}9i*fo5$jeHR?*7YW+>Db*<}DX|g>w0w%Ls8}Iv!AUS6Vz=GC zm8N-Mwin?ZEKzS6pPoMI*bv^djuRs#f#KKcu7rbf9DI$})MBGzXf|MqdY!Fp{LtH} zYA9p_IlnOS@^Ld3qRi#5TKpn1I_=baSMLq4ouYy|3{Jw!`+8eR)|%hrb7|~u_;2Z8 zp7azthYe&;YV$y(>BaB7#ACg>=7Nej!@)w|exV(jsP2Ui{~9&4qotU2q)dj^%WY%s zJzZI6m#{A~1kgwKBghe6LzA?voN@}LPqyAufCaZ}KLa2nGA%<1<~bEK=AD4mF{pdi zs~HLYbZ344+`&U?Jo_Tq<)h;u(w*aiUO9IR~(7h8&F zM6FQVN*9cKG2azQ;m<1FaTA(OW`q7REse(;jyZ!Gh=>;KUVV%w7f*bymkLUh#WDj5 zNESUT(_0Jrdq%NbU39U}nQqXW_i~8qP zKe`%5)LbE$24Sn&8Ev1kP3Lbz8*hn6OSE0xp0IU*+UWu(Ipfp8m{)w(s1x?{_4sjj zZ@l}u;jZE0+K6lR*d-8x!^DvraH@0$8rDlV3!e_aP=E)_-Mvo6Y!6VOrl&c;xS^O@ zx(SB~6)2grhXXzpP0Q&ZF;L;uS$27WeK0PR*GfyV!N&}nyY%92>EK*exaPxB_~9zDJ#HR@}mk)yV^KLP73E}L7t)>~r+_qyBu zJoJ`_qZ&c&`^$di)R`WGahxQ$Si=(G*QR?#a@Zxl9{V1ziAZ@!%tvE+Vzlsz9#92e zo)j2pAw{6M-F0-5DSDh{1?w9!fg^Eu zbrB2YD;c$PwzWk>JUy5uVW#3ZTV6Bw_ZI^_Rb}+$wLRa~D%#)Cg~r_qAgD4r2i$j7 zo_;apE2`S=-p*S{A(MM{b}(W0Zh)IRSGhBNjNC`jHqW%<9pBq`DkDt=cXQKKoCJ{4 z<{2?7rWY|W%7`VX24k#;pX#RO%xd8)<%Fwf{Hu2IlOu6$#a&SA78-+z0a#0Pq>2)SI`ymPJ2You zgj~Bn$AdCg$2!Elu9s$?z~6;)guiPkaT6?QzMb>i5Z;b8Koo2M=%%iM2e*rDB@K=A z7BbMwrBY#UK276h1?=I;bB*i$FGib@?(*Y?KIO>wrPMOS7ME7UOuN{fRB((+H2!#I zH6JcH*p0($ktUO@Twu80LC$K4W>BxhFnIFd?!BK>BE36zv~<%Au87D6{uLBlk?}_c zH^adeFxh79@N7?}Y(3i)lzAoVQp;R-U_dT)y_)f$Xs-Pj8QJdJP9j_e3mbaOK47B# zoSm&OjS&KCwdHiWXxF)=nbX1|%>k7(Lf+BL)!`0XTgf8hlu7+J88;!Nv9Q_xB$o2- z5h>UPXqo|Pm0_JyVwe3vxX#q>%seDqJnaf>ik|s${Z&D; z*Xo=BmD^(rrICD_?^L?imo3JpBT)3JMN=+brIIH6ARGoS66l z!F0Sl&+GY_8#pOS4$rT<-VZIId*7awh>%{duAunEl6)S-^o;rXb$Mx@)wHelm(I!) zILH?e=e_kFc1A`%uP|yECQGM2pn=3jqd=>4TOV?s z+tYyonPPuV!KO%k_9?^I{%iuOuHmw}m-)3)*Viop_Wpv|-cGL4e3pB=Qxn9(L4OJ)&IApXX`x9iDg7)IYKGn8hGXhL>5QBm(mrPI=$S!W3M+ctR=dc_e4|O1j zKlf+Y2t?k(0*8d8q!KwO8h-%K=;A49_Im&4F&sx|d!!rg}2l`m8=^dBG87f-|yr#(QcgI~NBzX*R7& zV_~_kIr9r5gZXPqT(*N^TBFuEY2v3~rGTnNORMY9)N930^u)gg@r zQdWQ;xO{9AlD_VF+`3z*eRsb>&ZfM9b9&GEDLpsBxH+rEMqO2dKPXC6k@H2nf`>|h zp>#@}%3Jm|ulm+l@LpXMq%|fBDlWv&*9TOp)(^rS_Bg$kHD+0hL|7=)tE|R>0y-3x zf3z|uFeybdE7e#`eB4i==~qg&slAfZbGiY+h=q(j($4Dh5d%2bGdu8$2lqV;O5|u78XPpT$1s$fK2>c>C@7t+YQbCGS z@D$OR*^=LX?NB$WGX@lgi;47zI#lU&qY7;f5p&=n_NLOQibZPrMy2h`PnN^?%pJKQ zGRm~cbKEwk8bwB|PdMtHJdH@fWwX<}6}+Oa=?r(v*1uu>1m{%`Ie>>X)Z7&}%r>fKIGV?i zUgsbs#i}@Qkkcws>HioQyVFuVvld{y7fyh zlXrkFBVQqFrSk>J@AJ)|`el)vD)(NKau|ISW~d;dfBX1hE}&GW^11_BY}UnHWOz)B z-qI}!AM9j&u;qTV>?5vw9XCVE8#Xp=YN%LNw7Bl%Ga_VU7TN;I(NhpQBO*eX@)U}O zfgU$8dkbW1cDfF^TYwILi%V5j*49kT$i%qa8vyOE1J_z&@<~ZE!J${0z6LCb3iI+w zTsKW1)B`P|-p3a`9Au|}vYjIsLno)`9={w)-Pb}z!@%JZM-he|J)FW-ZEvTrIUx( z2f?NG7vIF=db4q|@)Z{8-!<~KU=ldeasS-hPvP>XH8ITBj+Ip|7F?+Jj7ZM~v&HdQ z$E-${0h(N)vRjRQDLbu%{W{((S?0*Ckt117h4DaHTPuhIF$gHI9JC>0C*|Le0&{gI~@xFVT=Ad?jom!s{li z$A~xXoiW4Cpn=64<(pc^ckeE$SoDQ?MjMR#jhP$jpfu57LeCDaOPSAPhB#kI8#SrR zrQ6w*dgqIwjr&N54J%Bq>Ua~@i(_%pez`f}>mPeI(luyJo>Sp{pF`y5u*H9K^VQQO zjf(hPi53L}HJ0xF*GJwi8|W9=hju}Rpq6T(S&a_8bBi>;aZ0DB zjrT28mhpwm{Gr_mqTl_xQe-SFOZ663?#=26OgoLyAw3ttx z;7CoCOy%7I(+WI71K-X;M}eu4Xi z^zC&~7g(l2scsa?h6SsoSkpOwo$4E8yPv9`R-gN*D)1G_(G_GaIJkZdtvG3&cWCcY zV}1+~0)swrhDuOwU}wL#$mNHNR(3hwlR@jK@)$6A)#DL~pg}nj`9&3D!Pil99>!;M zJ8`Y)CfjirYU)>+I>-UK;}K<@w>`u$qC=knjwX%ZmrFFX9or*w-cte{Q>p2U61p|w zPr#F_@#$qEvDQBS8ayQT^ZD{x`m+*L`-wo=uPXt3WS-mOnUs)OU9KL^Wq0DzjFUJf9C{Ne71|6bQ^e?#R}J_e7!>m)CGOP7%Yf(D);yw+NFJR ze4+Pwi=om>t}xVe!+5_;h0)e$qIoacQTbh9Em(0DVMm_?9W8g6>r14^ZDWVB{ZG<# zCi7R)_J^41qQ*{kD+Gvz3LL<-uDet})Ui)Ye6~#_rVj`1=lIY%9IfMiCVOHk0P1sM zSu@F`B7}^IEB$0IwNMrOLfsI$8Fw&dvi)E-;byABRU=2|e#x&?1j~|5Ti*L*;(qZ@ zq*w>oiq{o8U6+TL!^nS|v(KPS_=Xf2AtA1cc^&meBN$P$vf;?N70-0&d0XCJ-Al9q zj!~cPw47|{dKC{Tq!eGN{>|jUt+L@D(jA0()5R`qZ*{tR)N4NKCM#d9N9N-BnMYX? z7B4Ct+kSXSPS>=T_nY$cEd9wU4Q$#m;dolJB#$6TdRgYj5buK@tAQl~A3iBcR6Reu2>;T2 z!^r+Ue;l{9eC8=TZOVv+y2`nK5T3Z_sN}FhT57wW7Sd<#U0S>MrO1idYj&o0z1Bb1 z~owQap|1 z$39h}S)lo=(d&It30pBz@UqkI4`9P*rsJfeV#8jvXZ;7K2e0;A-bc#_1PE9VW0DNB zj4x+2?A7jnqkNuO?5 zOct58*EeL4&fhzN`1F^n*vZpk1`84gfD%-ltA8w~gyO@_eImt0K1tV?u%ZndNjjUk{yi~p=ifBey9v6 zlQZo95unCiH49{U7~_;EDPxOraB&siC6rfGwByDB8=a8D0fcYc9&U|Z=+};Y zD|$?BFC`}}FtzusLXAFPa{mWR8mo)G3Z0s|%wM4tE8BiL)1tfgdq5J&Vv^{R*g`;5 zc=txSHYq+C7N2a@y0UX}Zf89+)e?)0{AUm#kcpgyYWXI|K#r*6h-~rev%KHKu$S>w z4EhA6t9&>3oibX?D6LCh$md5M@D~SK1v$Cs$jI^He=$(fRIIGcHkYrPGq;)j4Gtk) zi{3<)Wa4{p@2fEW?jtsK@-{nCbN#bNS5E{n`O1?Dsk zyVA1F3$VS8od3HEOO(2@*{<7;@kzmV8Ab@ ze-%^IjDRCZr_{5yR-VlG`~PzdU&vqH8mybSKtGMxX1wC_6qad6`X2lB>(`lqHU|gs z8X|7#*8xR4vVVVJjDEa)ZQX!Xut=TL$iZWP{>`9;^XjH=S#57DbLy^O-UYHwHY;;T2inrS18D(`G zt^k8XT&31Kt8n)BN$}~)R=Wy4Z_A=?C-uGV&1o|C2b1H<1*Tk31@1J-5Z$~`ut22* z`8OGszYwAACwm>eg6LXAigb#Zj~^$a>}Dn>7rvv0Fa}0W8>p&ln0-k|Vhu5@8<9hr z$oUst^`7VZ#wunDU&YTpazo>dS|^r2!?RL5A{S<9#QH2csrt)`3slVap8wx3a%ix^ zzV;=eu5g$7F@Cc;vDx?tc(@?%Osl?#WtCNt^I!jPN?45M}=dX{{BiFuLG)D7dBsgTVF@_O%DKubhxp$M`cN|} zw?9u!5>T0Nh-a^?7>zv>_`;zAaSYgSg>7(z8>@yJPE%w}0)4>Wp_bu7L}bxVT^Svb z6qY3*h)z+bl1ABife6`-sn4r(T^`Fi{X)Csl&5ww*r{2gr)O@H46?s>fl`J>Jf)kP zf8XU-*%9}&;Ez6tT+AGREh1+CPR;F6~zxZYI^}nGazm8`g!X zpKCVaeTrTF`}@@a^QBQdUgk8%isc0ffJq>>mEGvYhO4>y4WRC#AJbiK*inBv`( z%lWNhV)pgvt^~r8tKHGDW8GY_Vkr4IClk@?VVOPE#XEBDi^7PSI4hFD6Ia(OE34vh z9-P0|Q9;D=jJaCBp>E%dY8Q;5Q2l)!ZAFs0t(_H)Qtyk9S?T2Zsqeic;6z3uTq5(V zwp0Y$l_Xoz#vXWm`9&-=^v->`jg7lB-9axdD#=lOVWj+89_nj=sMQ5!md&B&s{8XI zE@Yv_kd&hZnzp0AOt0@VUj_U6RQ+@%gk|Z}g0L7!H{+f|BEG5h^ussvB2ioMxn7r- zL~Q(m9swm+hGF zZDC96$H5o-uk6`$S7PrDnpvWGgu&COWc?uN0i~qrRRJ#N!K6>{#=6+4F2zcD}0`>PvLUO z{mIzltc~vNP4nd`WSeb=jBOleujOIS5Ky0gyKxwIWA_405(zkSaj3e1U3GuTvr<(5 zL76;kLi?n6n2B03SS(8^Pi!1V5?nX$oo;{PKdh#BI#EvTKU>pmdqPh{O2z_Q z+l(kElSGf*xAh3PySeOc8(YJDpPr799hs=D?ygeCh}zjd2ldIOrn&KPQF7??wCLWN zox3|1DAoElrGUR)&?;8IEV(so2iE#*2?Fz!4Hb8jL~wKgX`|w&e?O&6-k+$$W%R9s zPm5m1#c!g~8(n&QN%S%mfgnF!m7>@scJ)D9HL5ySK9&s86`zex@pSZ ztB#j)c>-7`Zzv8fdqUy4khd2dO4 zpp8s2R!n1OpHNDP2DGrJg4G-PZ|xGp#rZ@VoJ^Cb+| z*VjvCOGo=+!U<0#;s*BmUR1LXzod&1l~MVRD2}JCmha)rsh!S*Z*;NU3wF<6zHrrhFw`IYid6)#LuK=<8-@%psr+?w`_F0ld*ANUA!a@`L<8Ye*0(-;n zC7)GZm*>a&bxuNjaHiHZwY78lopxMZ!$gnEc8CJCP|BYm9Rex!)R40~+I3a@Cs+`? z!6v+x681~T7>K{K^b!@SI6^;=jBiOfcY>%{Zj0Yh=mm&bb=VM z+NSw441of~O24=25T^C)k^3uWWzf}nIFLQO=@t6J%1=ij!oB$l`;Bl*GuGOlK;0bD zL5vP(x}_S+li?_X@%FCq-vNPGeEK)IN(g^hWwCVFulx@k8Dtx)OeJ&J#5F0Q!PLrb zbbLIkoIesqke#jmbIoa-KtZusc%hlVb#^(h$e#Em*wO#|=T8M z1M2W?HNhJInynyQ1*NQ+q}$^hg`%EbkPNYhijqZe>Cr^@W^Km&JsVUPuI?O&D?gZV z3i00YToq#f8B@Y8TWV-_vG7r3RZNo3=ccAF{B&slez{Ub5WIzIC4yfVDT!FAUqnDG zfg9829*p~%yW@s|q6DPd(Ml`4*!dH@chg8Khq#*^`%+Lc)J3E^cA>*BIDG&^7;c>iBJ4+tbay~#!O zY(;GJt&_Y~bQqz2$`J&z`M>9h&Wl7%gs$*!j>7N~gG#%(7c9#B(`xx(kc?N-?TtRzqph5NEhxg(12SnO2 zxbT(N0i$LK^#nnx?8USf)W74w#O$|w_z=jit+o?^qNQ=QwsP)XMXrSQ69EDAsGw-k zAc+ub@ug=n|0WX1A5r@AgEWmHL(NPi1oGuK#IaB^Ll^e7(nwH^E@K=mSb!F~dhvh^`&VuNv>sOmFA zAmmHSc#y)t751vcvb9&6Mk8j}v1MUZ`y?Umnv`tDVHYN z8^*5$gk=SmCGZ}ZUR0wAeq4pZNb$Pz6cXzR{5ue&h3VsnTfpNdqy0On3Kcv_bYq9D zVjZaku+sp_w|d)2M{3_jw7i6$$n|-wH+#Ps*tZ#xdL(n{Y@d#Cyxh&OSpV3#|3J8q zjv(mLjH4 z>vKcYIC{s~VS4e`bvW~ob{jdWKP!_oH;f{G#4fLYzKgl6tTBlzf%5~-FZp&(Ukt%V z9s+Q@;1lhpKA7t1UxEK|eZr=g)fn?waXy*KCoA{gz=rt!Tv=25#z_$?Xo7J9Kxcd% zbCN1GUO@J5I$7OuvI3K3pW5NeA7=8lp2Eg(5}RtQ=gRoT>ErN}T2ySuK-B11Skw7n(FyMrFggZi4HVP= za@98#3nm%2s2m%X7MR?O2saiP_GGn94WMFTijr5CIf46Fq&J;IdC*s$tn#He>i1`5 zt*V}zKTHAyPHBcHL8he75JFjSo8N6r9VUHgk)B?atcsn|eT$}o|2Ni>b7e!05;^Kc zoN4&<>gf}R43dg~DoR$CA!33g!0?59c<;eqM+YRRbS_TeWZcs1utT>5$*5$ri^LRr z9VB33M-`Ju{wzS3GbJn6cH)N>J{Wh0ViBWDb?>&9=T`pvse9EM>;5q!Y~>k|CO-j9 zg{qv{CD8}=G@HYpQb;=ZWTA1THTn|&ObsT{?N4-=fs|}6ecxPRAP^gL8^~#TRmeuB zes~|#3HR0+&B6KcV-N6AnwRN9n0M)7Ipq@dc<;>WUj2NfJg-oV9GD*DoU5`e;(CFR zlQP81$*WkVX593n)Ivze>D)INUJC}wwbDZ~8#$KiMw%#ag}};w1u9P9IJdL4WW@Z2 zg>L27l6(qh^&Tpk#rj*|ct?BvYh!UJnxR`p792(aLcav2xoZ#*li>neEHzaY4c^{k zBUiN-d9a*c$&~^2r0+WJ{QN)5Vm7YN_a}gQ0tfFLKmyVyFDe%|+a5EGnqAWC|&C!a#Ky_!|(29^6l|aCV=sQ_?DMa!{St(B1&1%W4L; z^>+2@8rIjZxgh*4;;E$wX}xi^LY782x+r$Fdq?Jbx24>Fl0h~<6Q}9%>?sDa)^r|R z;rogUAGbSlbhweI_Pqs{{y&2ZN6NNCRHky;X+Bt_-cnJkvbM3qvgQ909?tjLSz1gg ztQlJzA%R=huOuSsd3;w+>Y9ToDY4&NOKwl?4;;T|s`YmB<7ZZ~Yiz8$B(_$hVr2Cl z{BHB({pU-&9c8wneyHHs9>^vCHLyW_MF_4)on>#aCQvd9nIn9*;bH1rGw}F?u(+wF zCeHa_=BQ|rqG!#C+-c0D%6{ED1)4%Kr+GIT2am-)(Q51XKy){xGF>)Tov zZdb_%Pm)*q!>&YKF1 zxO*#mf};V}f@r~)-qsQ>kula3G1M66LJ>0hYqObrjWlH$2tpj9q9Vt_A1HbdbnhyiPXI1Yhh%iKl=S}w`UkP@>O*zTg7(R&PCANvwNOL+e{A2 zepA2%5$&yCcsv3>T-M+DWD>8_k_@2{nmK6te5hRn*# zj}E4`&_;=v%qS2chY9HiGAZl8YA;C>ByfIN8^jvwM%lG48+LS%J>TfRJd5ydQK`S( zVc2*bHa1ykI%I60Lw99#ro0I3EwfL6@y^`%7i)-aJdlgeHGU58;srH>Drb<+vvAy$|x9FX*K1@oOj;0E0FUUSmwj05<1Xg7|~gjOtN0Fx^Od=&mkh zK)oV}p<)Z3H)|oY*7ME1Cm!IWM8oUAvmBs6Z93kjU>2<#|CGa3h|p}fF_?eJ=6-qn zNI$ix5U&()Zd5eRWf^bX9Dd$aW=npyT4*jHTwmP;2hbQGNCI6y2ni2L3tqx^Jv+P@ zeaHYChTzZTkR0@8I3`XV|F-63jTtw9D%k^)p-G*tp@BUbayIw#&D#U-hKYxUCUcXU zp9=>-*~{b1Tc|up-)*5bs;$oQB;tO%#NVDSiBa>T%`^Dw4}Xu6H15fAlo;T&g^by( z^ADtyy|H3K9UPR1PXrN;Y)YWdMSL-E6z_?`Q9~Fmd~_4bmoq%-FevgO`HEcR?AbXu z=#$w#)@o)dXhqbz9vxQ|7AD(ov;!r%mdAiiy?M$MKvhOg?@s32n9FO~INDMx7DV82 z-CSH3nVKee7tS{7>@#O@0b%jpoM$}h2rnr+@o~1|Q_E-hBO^f99Wu)i-aE(;DMp6q zAElZrB^6E{&S5>!XQj!NfZ*ailRQ>gxsCh^MlEI-ER%V;Kkp)qQlnm@@4p9f3lib- zd16@JXYxiy=WSQ-Kx5adx`RN%LDh1dqjKxGzO!QoHqS$3qSn;@l=JEIgE+5?6O=^{ za~b}F^4whJznZMiRf9i4w;4?V_Hp(zgA>J`*h z9tYkf-0x~jwkYHt{<*yAPrRxg4lFMxysgl6&k47@x!99El67`gzH1<(enlieizx|X zT#s9v0KK2s`?tD z0nw|~1ha^94G=6c@Uk5@VV?k{c(Jg+EWe$69_@7X351B0@w@f)jl91^V2T8*+2xxm zwWj+;eB}~BAXQb+Q0=ju`gf^AVL=jI@@JQscdt)j_@ess;6x6W;y zV0v-6??+#ydJR>IMsBUtn2*|>b`ybK?+f0WKXR9R&A10fM&yLsl?tGO_#*Aw+Ry00|^Xptbx?A^M2>u+2907O{EUFP5yZEFkQ++ zM5J1)nLqh)u(Dlvke!R`e0O15=Z4F=$->&Yai|MmKTG_DxAuXupY)ah(A_2~MSlh9 zK0fo!LKEfZN9--TZZU^#0Hzw3lSu|47!zRILm&bd-rF_6qSty=?e6aW%siw-cn)<$ z4oDCS*z;R`-F61;Efxx8MH(g)xv!4FCN|#`m)5cdVkcnb1tuk1(5BD!NOb36ez;D) zJIMGcDt|KGD=db<#d^;YAObfIJm28B&r$UL8f(Uzc$8f_^zB<}l;Z8jz*F<##wNiLEFXcEm+mw^Q@u*Cm{*@2ES`%`*+K zhqpgL1Pw?rQX`Y?_~v_tzsY9!AQKfmJ>4-y?X;Z(*v540`LIywOoUgjr%EMlLZb$e z^Ibe)v9K!lgQ(3UXGFwMppeBFDOLn2NBHqO27iAntT9WcaYda&5lr`9~*d5&K13|6X2>X!E|FLz} zVNq_~-^V6Yx=Rr0kZw@Ak#3Mq=}vF#ERp*y5=;I}>JJnvucea)p@ z%FNuc_u6ZH_gbGd>y|dtXnMC+?np?O--%(dwT`*alK2OF7h8ydsNb1MXQIyUlKBdN zNCheEwlKb*%gk+ku*k0wtzMRW^21*{P0}~+wCft=H_qC`K?$O>6OYKLAP=joXahq} z?;wEedfLPOgdK{O-n9HE-#kF{e_sRzp+I5&A&S{v8Gx+P@X+!QtakAM840U1I$|;s ztBTo1?@o8I3o~GLla(M~?b5g!h#0l123Y0m0^)$%7O)#}`NhM?O`Xpb6|I%bU6^Bg z9im2e<>_O?HCG0`(_xHnMs}HH4()ajN|os}QE_vd-pm-sr%{7Fs-+S+%l5o9K!ii~ zBX!rDoAP-Ytltg|MYedWm&F`5U>M7pPCodh8mJ0sbcUI*d)Zb_D225Jy~q7e-9(K( z*?M(n)i??C@;^z@u;L7pecEC@s9MPss3=&zbQ-4bo0c85N`~_8e*4x43SRhqwV~0q z!R8Q(5PSbzdnEZV>9EEaN8#uTStkOBQxJ0$RC|5vU2PNbn0}zye=3Z|Etm&@8 z9wBhVL~j4=8TrqbTOw4DEjg;aQ3w|OX0yw>{wdJ&BRgE7|MM#xUaiFI^Kncv0qfrk zt0onEIUkCmYfI?E=336d6E6`^wkKc+585U!Yq@E@?b`&I)-C*Q%itsI;Qqg?LU>CO zbS{s9+6ukfF9J6Llq|2e;My(J4#VMYtD$cLqmK#8_Gdk+D=p47!onIQQNgm>_g=6Y zRE`nJU3_{ zu|8~l4nI)S!PbUUM}35abR+d79UfY??}6RgrI8p}ribJwXc zGs9#uN+J-djpAwYqCp3fow*4}2yHeUKwscb0EFKEkG>#^%9V@KG2V1!^00{Q?R%(?Kfig+D6>BIr{h^hmDh}yUW^+b!+3PK0R_qjV*i_j|u+saDC$I!n0=mRC3YeQ~P6! z2$;SBal$AfD9`FHSfsx-9qM~(v^S?&;a*??1C#+k&x z27TYp(@s)}A3=^(h}ZbI#GY24(}Js}$@GFRX@9ztHbvt;mY7`Y-PZ=)%f=@K>WA|- zeKiEv*I>Vc>^tOi1Ud1v#_(Qcec<)udrpVFS01=H2h(!SRc*BC`KXx`N~<}c9k)yP zF&&@Q(e&1w-H^$U__a5K9)KFKVZ=gcPY718TuTB1#`%zkAiz@xVnt(l^$D|a(Be;Q zaZpBxO7-@Wf0{sb+EG^sNyM4d3Ausu@jqOH>5=Ei>(dv3d^7za!sAA)bxnkjpGJLq z2dDF(&{IHAko9U;+*r}}Bh*2rX;CM`KPEoD%IUZ?Di6vaK|p|yD|SPARea+G2YoeM zrR&LYeFSOGbUh~s!$sW7*`}W?s%l@v7sZ%VT(mqP+T8eGF2G&O=K`+B080Q0NlQH4 z;P@yC^&sb(t?Y+SU8K-3@FRY5lZb@|h-VmSvS5=8Rok2A)B)V9tYUxC?Sie6l9adc zR+B4#>Pr3F2j0M4*oR$~hsplzj!R1u2k4|~eV32GMSMuahEbr-6yS9R0>CSj)yl-&?-BVT8nUTd8%d z4h&ocRmeSSM+XT*lLsV}ZZCte##(Hp;oy$sJll&a^c0Q@RiiW*_0@JaC;86O|;ipm2#x z5sP|ff+kE{LYA(h-j!uGda<17FN%YvOWGT4GrX!|+>AEi4XlfL|6-!Me1NA_R z`_w)D(JpuX0#t!{l7Z1GFCU-p&q{h4y$s~zX9PXd6+!CDEkaRHUVif4t^XAoqBL{w zG%6t;x%ed+Ln?ykrpq?|mU_sb-Wf=HVe`CpFqK(W<&vlk-?gnR_G|H#!JtAsyqS^d zZU~mDx_a~7qEmyuq0Y0}F;zDwCt2WawFtohr$l2)otz@}ZGj>o@6nuR+}uOGOkuxT z*V8iE`(z2M1a;49=R8qRnC}BUxhMYquv-TZOJNO=pG|sBV}mQNRW;P^ zRBo4E5f2}GoZF^|yqu)Jye6z}d|&Zx`%kcf+5iHUV?60S&e3n=ra5KMqRW_|5-ZaI zfR2MH++%|Y=zq?U2nZW-AV1$so&BT`^%1D2_->!=h)qPAk(6lk6Y^uCOxfcLtRta&u6pn6k7}!QVEpiYx+rBo(X)~(T!@t&nGDO_j@N=kyxy8{4! zWU}&|!0)iVPJVrx)oIdZa88s5TdXUB*v1=qI=*!fz@tT+EnkeH4)&L;+}$hBsDdf4 z!o$J{{Vua_6MjGNjvy1EXA$ln9DK#J^PBEC0dyUhZ}HJo!8?F;7J)RH1z*3h-10wZ zO_+K-4aB607r=U=2YvBRlZaeND7)q4<-JS(?I$fHI5IqZZD_ZAh`SLeMef9d6^2ICx9-b;*jr|@+#SBbYqB}BU zaG0%Um@Vmclp5X@aA&v#a9HUug?_BB66m z&+zH>QCc|uEcbn*`QYI6`1l#x^CS`T=JssnZtNnHDU*sG)nT*EMgQl#8OB5_!GnTq z2CX=Ft9K_iAr~}rh~e&~=tweozzT-&8Jj6e%Iug-guZ(5R4C9Uh_Kl?OS$cRf%l)19ojx4w@hd|%c0HhJVmjTL(# z{fdK9cU@dSfzZg%)bVx9IHPC_T>s7u-b0nasoh&``fpNHa^7w*G#qdqT(fBRQQW*sVXEGi!$$`@2(x79m;AEc7!|u3uGmlb$5#u+_raK z>jfc~J4dnOYxefTES_bRs$1){;a}}Rd#Hd_tL2#NugW4KK4At8y~5Ye^9_2zeZP$) zt`L@wJnr6Bd}^91dhqrZ!opN`a&+|5r_!1u`9fpT-oCP%vLOS@nd9*Dnx>ADJ>Z?G z7JysWum;k%9*Kw;nyZgRglIADYbf3yRld}@3`ehz9s4h zPBg`}%b-QPoFAeZ?R+>1%-vG7b|S5^Sq1yO%c|XtN!r-nrDT$lNUZO!>~6hLP+T#A zjv7kgN?n#X-L^iSbknJRFt~V&Z&?q6pOOD6WB9aQW6bNa8S2%Aw^Y8pGZ>)Luda*C zRLr1xiqY{@$MKm()q0RtJ;ywPk)SOdzDC(H9S1h$9SH&?G>zuRDpk-l@O(i*m(+M!3I8mEl{!s+5zh9{H1nXj>yXjI0TZ$W);5{DC4fYMY+pUI=3SGH636$gPU z^{LHmO5|B+zzMtcMG-b1BZ5SIj-`v7Z4mr~_1$?3JtGH?ApVb@i_qbPT?LV38rdIU zq%bfF)*e=%%6Bb3mk`U8pza$Qy0#x3_Lc9;WnxGym5`JKK|Wx+8H-;XV}qzE^t8%* z(4s1NjW;RX_2B2Ap1Z?Lb=B`BS}L=<-=$NsX;IP6kTLs+1>LrY`&;l*{6nwkavdNqdB*z?1A zWlf*kzJv3MAQ!F{*Y|17EpDd%g*cxjMD$kan%X;Dj+I?(odI%RgHv{D7JY#_hyB27 zF`2ChXZiYMh~6(JSQT5VDWVS~q?AWozm@o7E3I;R%4ojcv2kk@UBf6ERT;q;T zRhab@Iy^<6qOjn!4Qev+^@t|%&9r``iwRvZp(foLtF2dFUNO_leWo$(VJ(r_guBDqSYBk zcb+BdH2C%dWT*mdtU6%v|$R#t|=UKUuR-@#$5C7lwHIkcj3 z)T(cwuSG?(6hO2{;DDAMI(g&z=_3V?846Uh#iQ)v9@5)&f8w`l#ptrGHvtt5Z{3Tf zKWIDd{`cQ^osz}&b|}Zj^_$D(GIBC`jPg=SNy5KX)8HIV^qM|*z>ET?~;#@UZd}I%H66u;s+X zYkZ^Nrnxk+QBmogVQ)V=LI)bU^(A%*yqtxLre}H@f_MP$`eS@f6cL#(u)aa~icEy+ zXRCOe7*$kcWVKMUio1{HTKUM2L?hqj@Uq+UPOWg!y9>pb&2>_qs$K=Cy)>oDVQ zfzfo787|#su~tD_3Wkga6rW)Pa5d)4zakI(B{=;Mi z3#0WUV2 zM|qUW@@7I#a_7hZTOnpF`h?pzPk5D$nQks?O=znw;h1D`*@x%nHFn(h7V%JdfA^A2 zz>19}y=LCL^`yk6>iD@L!4am+6YsSi2PMvo+di+BSe0^XF!FX!9vYZ&HJ!hNgRl)a z2&x4$?_aAk7F{HKL8BY6s1jSMH5<+6C<=PPsXmQPqFv)7@@dMDoP z!HSV}eE>j;N=3uPRX!LD!HSwbAuMdq1c;l7RV9NC@wyqigv)X<#&EV%e3` zWnu7X^HJ0(S+~wXET`#J;Fl1k8;98ggx{$@x#hM_xILwDi!cea(d(q=ciG+b_@3bT z`R2lGrKEzU`|VucB=<@PKmG&o!jUI94 z1>6DM=3q(SiIs9V?OG$mJATFR<;(pzIee;)?{>Q1NZ36mw-u+ys-8X$KH%qOLB44_ z1Y@i~t!wIh<9)@^xtmt0VZdc4opP#>&zW!E+C))*qJM#=?G4hes?x>ObWZfO%XdSE zdhflf2b^?ZAjS5c{2Gv@!yVRZQ%uPd78YI?6|rnzCx6an%o#PQyPS-H7NR_J!|%Qa zTbfL?hgM~X6wNi=fSEbi?6BPU3^3nnz8c+EMrGH^XzLl^ZJqiQYRy8R+;%UDW| zP0@$2o^LrH=^7Nw&Z1s6$#Ops?w~w%)WQ-Qunmkh3b^XZ^8Suj3Z-E!3Hz1JVVG8=#FjJL%jb%BExLGV zxQ=_JzQ1647a|^Cm`90GZU1)w^9{Mb74Ts4U9Go~o_v*>OtqH09(SrRA!EEMoK+}x z*2WmjjnmbWTWsnrLLK9!5|b^lCHQSBmXmw}=K6g#j_bDF{rp17SNuDV7+tePqs75Q=&iyoImodd7`?w<^;8*{D{b;gLYD8Qhn71)MdhSMpfr}3Dl zy6si%ruzDKt$_{HOXU(%X-s&z^^9YYjmvdV{>YsfD%z!YHE5ZDh8Y-L%|uKc^DZ+QlkD9J z^pJa})_%4&G3)060ZTqTW2M2&$ZuqSA0ryo?X4SpTl&QhQLj4i!De3V;6^s|g*yxyRl3OkVs) zWbi32TF~l2L|trRnolA8O`3=b5y?kYh|=-8?Xa$)O^KH`m+wv$PoViETgy;F+?1=n z(52zl%{t8ZX+Ud9(mQ(n+EvlWxt;S!)Wt|F`&uRZcn#9KS=-mI!B!U$-;aF1!`r}@ z`D`?~!NCtB$wYolclS2s&NItE$t9d8BNOtg@&hJq<@tvcIL?y5t2kYPv1-QlnwXbT zzybaPb;<|PCDuSR!nm?|pe+%9@##bgv*X)*v$ zm{yrAKF*h6#e0YsamRHqs&i9Iu@TG4qT8I++*~Pr&I*S7+AzSur0|%-=1%9qp6Jha z^>ALdX5caL61ndSTudYGu*9;msF|6b0k498bhNI)<@~J(%y+xD!2@=sSu)jnvHir{ z9KXs^F`3gA9Z_$;a;8zl>*eFadUYn=e_pdViOIwm=dz)Y!QH-OeovP_!5jp}XjF-; z27Y@b%AhlIK4ps%sx_gL3x$5mLWQ~cMnIiag9NqzD%Ctv))FCl*)ysJ;t66`Wy&3c zkNd%8WxP~5Sx4)z;|FNn&mOmzQ#~lo$HEaa;~=h>i=P*x$2;4fEb%C_j}qbH1lcyR z!vXcF-g~>3;lAZWxa9G%dW%b}P}72u#YGgc(2(q57RH*q%F3|3tv`Pt=cav3ae>jm z%K|xH6Sp_w(n=Hp&XopD<+^QyU@b`6>;d+m(S2(qSB(rh>wVP8C5D<&x4uS5p}?0O z3o%kD5K3|sViHs?C>8)eAiZndM7b5!X#zn<`zUp>--Ddq{mPC*@gnP zYNE!*#x5Plt+>J@#QOWM2CnyOW_!Em)=PXMGx(1CKGS`<{{aK_kB~zP>o-clV$%?! z>!=uK-dVje;p_bngzr^n7MqCIPGl3+TNl}exGsnN)sd`Drd`s540i0LbvV(4d`G1j z+~Nsm|8mo)_|=bzJWibj8Sw|3iAWQLpNBk2FL75% zN7>&Pi^+o^cYBKb8aTLM)L-PPf@*PK>A%>2z>bYe?Ynbv=ezeiQ!aNqmW^P`^@=dV z2d0`ZEyhfMw7rEziRztf5sLa=&O#4bRVlii2*0ypivg`-RS&pn*kV^_U+Y8$%{X%P zcq7H+Q!=EKZ=SqVD)4dA`OE_Y0SzXRj6~k89^C>eKM51;(~U+O=pW?GPwBiB9+Z0Y@nn}dHfYHfeQq>U!d;XY zxgmkW8h2$8|V!$Lolli6=w^?Pb?{0 zDm=IPfX7jzE3PsDmdXrI-?M%~?7DKP%=m1#z;$5M?V8T5L#O2nd3yb8H zCjcX7(O0@7Yd^Q)h`hoJmo$}nmdx$)eNfCHS>Y-}8KGNczXN>5K?@gq!+QX>S2YI*J2(khX^f}?C#s9SJqu>{zg-KEm+#-tU@yqK^zifUREBWaA1A;w z{2DI)uIU~t)=6zyW0ST#K-T+V-6(xt>T4QOzgaZR;jt^gXZB9iU*yNa`->w8CCfGK zA&43snvo5Ff_YR`XJWtiNlm4o+4Yi9RHoH@@uLVS&z_LiHmnfJGnghEaS(0%t>6FF z<>2P^r$f728ueMi0}1KY#vS zyxR<#ax1339$P|t&MvhA6iDzWfqgpL9gQE3>yD(j+HB{%Gpyqlez}uYXQ&Nz>dx)g z67f7=tJ?Su)jM%9X!N^HmcINml&-+2p$U{~p2O-HS5J*rCaiuIz9?A!pO?D5kN;7`TPQA7j!|6!rUzMVR~dX zZE?Vcc50l*p(}1`jl)5)vAD+qc>&tsJG*;-U6uoju(Wn`Y!Tmr+Se=+!kwyL4LT$|=^Y&lE#a1rbX zS#^|u0v=FUn4GdQCddy<8OpJ~`u!wtApp^_o7&ublLef+J!&yqfmvWtUebOeRq2jh zv#-p(L+WRb>U8G;@seEFq+Fl1N`JzD%Bc1N12V2ZGOi3yf86f`D}_JtzdTj`^ybg{ z4%@}$0&B(jLWq%t<;KcjKgdrwKL{kT1bHG5Xo&jtIy? z?Ur$vB3JjRBwqZW^z*ck@Jt%rd{1rZBs&W>qCqc3VuAWQAem1(!-4J$%~|aNLJZX4 z8$r@8069^QegoLq9;2O&4^yIJ8`6M3S4Bm}Y^M2zd6YMcjZy2Nd8F-JB5ZS0n_&DB4b4aH0(DIIBy<*ixjW`##b2j&pZaprO}_saOxtD-Zts9HjmZ3;`itLh+UDc#ed2UvP? zJXm;m-HwQE(*_bg_<&?b@S=kYG72&0v?A0Y8r@B7ACf=PPC;w@d<%{^SnGPouyeGl2_5$dvz6u2&qS(fQi$$lpm z_o&#MmClluke6gK*A6D*^d|Mkoo{c0#<#bfvlBZsXAE>&AH=NSrmamhv9d4Qc5q+f zDE%)N;N-U~J=Vn9O9Dw1&_>OTnf)aWnrYTcma1G5Oi7iqm|VZ`_VLuUQ7^U$uIsNx z{QgI)$+IpQgmVdt;Z)m1dSH`CzIUkfj5 zJ$&n1$BH@BFwBwt>{sw9?R&Sk<6Iddz|Wp1lWR=6nyeEoRNn?&QrSHH4fmjZ^kLrS zzi*Dh`b@i(K{i73>6Hth0uXd|)_Guprbn9-?6iy=zPp>5Q}X@bWT7{^C6e;~gMEF% zt`~ssyD03pJ`4f!pp0FME8}&&9=$APAftNUT!M6f9`+h(hi=xaz=yW)l;g#hmS8JNcgSJ zkZRjU&!*r;wsm%}=KlAuJ-xglN!YEx_GG`-4d6^KK#hhUpZ88R?-fUon&WS<<~)3K zIgi(kih;2|-_*25Wpv&^0D>V6b$VcuoUc$1WLP~`=opSqyt|>fXjIfO<#~xbxASEy z7>LlNFH^;E4!cd1es}lw;HUKo>9bYRTK&Rvzz0g@hmheD13@iIQl{m*il)0u+Ozf~ zpq7D(ms+wlx-T1qczV3Lpjv1j#*o)a2s8#dmLIsvMlS-Z!%=N}>gOMS`dH~NPl~Jf zD#7WiY-GEln9SY2n8HTZ-#lp$u@1RIm_4>xUa0{wlWS+=ux785xa-mU!*#DGPXP zzdrv>+~VU_w?n!(6ei!tN|S5FCE$OL!$^_(aKK9})VvL}Z2qQ5##$H5dvaZ0)d29;SVyN5{6HVp=rDJo`?z@2s?6LB?UC36 zQ@)HiF%@+d$cssN;3j?WsfqatXe1R2pCa|n`fv4zHM?eMElor|`WV ze4vOe3*UCTKk-?uU}Bj0MIH(IyU@cPSE#}9fE)S24f1f@Ro?6-upwTb;B6K=X*0dE*o z>#5MjCL|=(M1?IfnG)b965s*g^Rg1T=|j!j3BE|%%0iOG=u_4`@aV6uFI~6DEM1f= zEbP6^&Ff0ZNuz(5TdZ$Cd;ICm;=#erp2ob=zK7ZC*WO>=(&P2Pw@>6eM7D5@*173l z|7hjqIK}{5f^vdx-{NII6r1u8wz6!-Z#< zimcf}_@34uo7$bWHw;Z`_kV8H-$2-CFbC}Vu9;GzA=wKjt|dOQs%9c?}} zRFr<@V%dLpEUOmz1VxuO5VH7Y2bK5Szic`I;Y(*F%kp7NK^19S!$v=kTP&{dL^&T- zGISt>HunC z#NCsTzM*)OQySy}=8v>qXYwN(S4_D|v@4^ZquI}4-$UUd_a%8kcN~Ewanf*k-iIT- z;Hxd(XRV^wC%daUq=zZ)jnUkWZQsb6l6RS=q00_Vzhn#mvUDkxAFZt^ajP;Y{N>Eb z@cc%5y2DF6^`Us{=RDMi@L6L%L-zxekq%w2Wt73JX|AuOWA9S@n-&{iAzZJV-7>5i zcg&c}9NkPRM(iwfruexp44x^D&(HvL#*Z53SXEWD+%ZQ1;cfx{3|$8O92vyvmLdcWzfu!e&OW z$KT_$eBrabTC`p5Q|A6{R|S`-ER`NJ6NPy|d$Bs@izFf%dQW4)X=(8RF*3Ebbw365 zVVr~njS1k4ZY-W$6*8Pd)W*pu@H-@Y?BH)0RuzR9QLJ9-TZ&T!LRfR+gFrcMC7H_^ zznTthe#s)AG=Kh=xY)*1NkwcrMOZUKhKxXQ{x7=wMWcG(HIp5v0sjC@fb}e|Yrl5N z0Dd6}hE)nZUUZW=-ot2=AA62zj=1s+nb?<7sJ=0xZ7hG`peA2_PY6uqj|2Maj|p1v zb`&m5i=D`n?}}ofH%(>HcK6?qeu`Q{8F9Vvt-{}BqrpLAxBLeNlY#+B%l2AHONo@r z@RJiVw);DWeh}AOgaQi+ur>5}W3;%oTq!9&%%`+CXhC8m75{!dX|RfD)kn1=atgd> z6q{#POo~E)ykZgPh>MbPPjTFYodpMNz#_q%pAaDrdLVrI2v}P$eyH40{yn>t#Ix`+ zMM5<)iY)QZ_~B4GF}x=aKJq+VqDA2%4a*AjT=|EY_s((v?B!-?35d|*F!<{#TwZZ) zeFX2;8xMl4;m7007s}-pHfI&878I%%lBI)YEueAB{@&Ws-rCbd}OkMIjZGznwhPwuj6mv<4qqj`0gjitG%~I!+eI0iD89c z)u)Z+8hQiLetGQn)9n3e(?e9Vst8w1l5Js_rM_`X7Vm*QT3 zi?E-r(ksr-55c{5WpHk&ZV37JBT!0Zt}`4?p9|&^ z?M4X1TiE4D;i%>t*@n9kgbtu zS_&MLYNrw&*u+k9fIE$P!Ngg}=Lg7D=VXY&_C71%vi~_f!}}`11In1YD$&g)B{kyZ zvPZW8om)jV*-tBdKdc~DN~WV$*5TsLTg9p3!r$ovj`9(tN5SERY)D84ZkJp} zGNJ>39vr!=aj#Wvs}sub?JGyyuMy^z)+{3k%Yo2)&UNz`bsCWb(0}1qDAmuqaPwUe zchgH$ZxwtlJ&bU|Y?cAkrk=zy7(&*s)2eCfw!^c>LeK1^xp4`S$9VTftsKfWcp*BL zZu``Hkxj?4|DMUnV@LC~lno==;xEdraWKV-n}9g6(Ua`^C@)wEjQJbZ^J+li=9#c` zC$+JR;~TI{zyDZQR+spW{^!cLBCU&#m${R*my@i{TVpg+F7AbQ1`oTP@a&uZ8-)FZ zM&4;G3~rw9ZsA&=lQ#buf|5JWc*!5Rd>f4eqqiV_3(SM1Qb209=P3BgZ13Pm4qV}D zNgpL8`toUX`$Qn^ZSI)5W&w#~13`p2|6H<~^}nC~LvoDmx--dfW{GNx^SJXo(smgb zP;JxMDH8iBs+tn@LdJLxIhHh!hJ;Q#iye_F{C}@m_tn3OwVS65*Cs_Bui=Nk@0)Qf z(2a@URvGCZZ&A~aQ(vxz59H#ggv`jWDSKGDZGIlGaB;!>@48ZOwF=Zl?>L-J4#D!H z$*d#un(i@53PfH~J3_-njhf(DYyQTfk9UHW`uZyV20&CKXpls7dAm^)pdo!*#KrGZ zw|(|)7Dl7ebEo0zb2NC+jUC(jt@l6t*9W|AYeT>AK{iK685-4_>ZGGn>mzo+dNSom zHn8D#%btdThSW!gXWOGC52z%H#+i!L!EGwz-8}jB`xg;W*ZbEvVl+5063j7jovH;g zj4?fCIBb}h$qK57{u)=QY&2lK{vL1UbM8(tErvxxLRK^UU+hx+GZM=!T`Lr!q($p_ z?I_cVv~IDo2ixe}`lXZab%w0CzDh*YhYSDnc9i-TYDbcLbVhtaG|7I@)!$E2JVBoE z**B?J`8`?*lCpJLE~54%?Wv%?%73Tn8`Bka##2s=(B9v^^v1rtb;_bvS77AMyw^!E z*0-IbeOtek^7Qe`X_AfH|0ebWvV5;&10K5RThz6^TIaS+H9+Zz=-A-gidSjC> zV6KwP{Zxp5=a$vWr$u)bwfl~aAM^0#2}X@G6-9utx4AGIpCrgR#s73b?_r0~|Mg0+s9PD5o*b#wh{@Pcv67|*eMI@|Bw*HWL}yucdaQanuY(f{|$ zMjV4rAy0RB=IYe!IXaK-RL~{=Ud0?o`k0NLF;a?EUxK zKH9F7T9P0xe=SihZDeeVw}na}I>hgzSbZh2)$wNeMq8y)Qle@LxgGoW_fZBT$9E#w zphMPfXCV)dDYCnxKKva!)$bx|GT;4x4u?|tQNI-HFriz`H>r4CXs`+X;XcxDzm@mD zFSIbbJ+j^J!@qWK3=mynV&g`FXRTW*Rop;4E<&B>2NaF^YGyWQPIFczSgQfc-PDp| zADz+x6D(cj(I0=I7_}Zcr)XrFPo(}k+&(4*!yD#rrgg8~8R_3$z^5Pj^xj9AkXD<3 zJv}*pc5+@LG_m#6`-`E&Ym%qmlpJ0YeG9}Ykf4bN^SVNTF+nazwV?iY;(vDCQKg}w z%R|(4gcS#k&`bqdvS3+#|fQ2I>FSEw{FHLi#&ox}V_M+ScK*>fChE zR>(t?_g}#9SkX@4gy>Yw4%9?%M-M&awZ1wNdKb(tP+=JY*EK42%eI!I!9lMu2cRl& zypacV?u>wBHO3F~4007_ROAG6WTy8~$~%X1v#qJ|&{45LvRC$KM`dZclK>~BdJml0 zNQ+S;Br=UVMPX=w2F=iXyga_w@@i4p}S5H~z+GcYkcW&rXYP%CYXE-`~9n5QRQg ztOAaJj=p#Hk3UlWZ!1R4YOAFKAIZNm+4wfEG0OESCUkD-p~gR#@^Px$b2HSxm*d*~ zaAve}<971oFSdy=Mur}1tpO=Dpatj`p55KzzwO}cT{`v z12F5+ZU429)%tc$U!7rQrNyv3gAtKF)A`4J@D?2@0I)J5>n46GRh10FXuic&M*u(@ zC&r0P?`5KQx342Gruy_U_#|FV&!tj!JPwdKL4fx682Ow$SonmJlS0&bT%n;?sMa2< zqm!rq2N)Z{e^+Lw-mx5iA{1wX6G_hYRNI>`l zjvtcaEc(UQ?lFE%%K_mXu?HXiJ_*>X1amimyas9GqKY=fbh(n=K8Arorb@hJyN~73 zzsg5`{S18{lvT3(f(EC-yW~GI_s^ii4u;8HX;j;$KsAAY^!e*M`vhPBV8URayjGeQ zg)xxu!m2ej4Rv%1R0}6`|5*~BeFKw^i0A?6NRfk60Xz&a^}cHVyCfl${5LQ@VW3-Hf zSTlf4{ynPonTxz#TiKV&6*_co@Pzx=H-i0!p|O$715tII6U#>k}q{5Ng} z2e>)FgAtjf5z920HTmmPqN4`gPn>%|x|D~3jS6C+e}1j{eIDmVwUNIqg7xmg&$x`@ zpNZVHsESR{rbtMQwHWoU{rHi)%ox87oH>gs#irHUYZ}bKf9?<0K_qTo_GmPS-atmsM@~?xE~Q0v`s*9H>EB|I%$gCdmG)mGeZzCFU>Z zzlu|zWBzNUX;|@%sbH>Dtf##HnXm1hIA4|PUc%ZEyxhNWImU;`zi~M=`1b#~=_p)e z`KkpOI&TzcA%CalS1>jIKEi5pRNnu5E0VAkE{E3s_0>79@a}Klh0k59zM-Q0P<&he zpIsYy6FeEfspm1ng`P#d7T!wBCF1k|g-hV3@IQLF6{?F(%Gnp?4P+fxi)K;$a-8eXeD2{us3p48A}Bt3)a z?ke*&+)URz?%F&_|L;7>##+x~fC{0Q?RvYi+=~k_2d>YD*m6TlOS5&FbXm|g(qX1k z6M3q<712jW3Bktmta=jL>w7pBpE3kC`wRp+VHNYh;0RwwQV9FIPyD&}jFjl#r}G9* zJmtVqJa08lzl)gO+v837=fgFTZG$OsAM-{f1@oK8btBPM%Hg;=*$_5CTOue0AayS9^g)Lnh)T%-MbWPTlNc z6Z?GP>cf9mH4zUk=`0P?j%4c>N@tWPmN8Pq`~k`@gTn4IgV^5GROg_)M@4rFHZGe> zPx8|Q11aL%wv$cMpwNo)3Ax&siRT3E3z`H0L*G z_2nIUTTm#ffnpn;y-ccmptnLpey>^Kc-<2eMc`;uC7bKq2F$KgC`DMM5TO1g%!5Ll zpX(I=L}FZYN@ZHW(Hh?_tU(V7GY_{Gg<6o{0Z&#V%JCSSi+2kZwUG7;EIfR~h>hD` zc3X+Eqf2aS?fdk#rDgM?J;4~cjwn$M7i3-AJD+DL%X}M@@~xzMoKQHy0(!o1Zt!)hFt$HPd8S^_S=xQDj?RFu8q3mx}uQ zDB!H%2}77}gN>=Z;o(iUrA~&p3Mj9z@RAviG^%)IG75W=$K~0773ewlj=AgeOK>tgpVmU<+P6-~`r#U)Qevn}TmoWhsS0up{RJc< zuRqC~*6zQ)IZRZ{Hd}Y?ZO7#42hPurQp%xo3ck{5Qd%XVA%q!lRyYdk_Y>J6gBC^S z_f19(g6@MV?~&2*o9XyI#$a~P;1}?oDn-W;!});8;^D%A;z*rf{_JrqQ`wucm)WCc zJXJVfvDAPm0s3Z1dXXyPL$URjwNR<x;kGkuXqoy zgQ-hbVB14PK`>Dyy)m=tek0zp@FHGr+dmo5?m^SQuA@I+>M~qhVkePXJVafdYc{lZ zZcehvfZfcfA(z{CtMKI$2p(*zyT~+Qz<+FfEY;%ex;2>{zLu$(kLh||a&0c)7JBwK zZM?Gb7^DvuO=Fcff!d9Z`T1jz+W0as$FNuXvO7-}H~4%9cepYYGzXN)_26g0Basd2 zi%ThBDR}WX8|)m0t_b}fQ*Rv=W&1`8`&tMH2nYxWC`fk>jpEQ9(jna)L!;6lAl)F{ zAl;0#boamz(%n6Lx4-Y4wa$MmSZfyZJa=5z-uv47k8z%?>3{5a;V9SDH6}mBpBEQ~ ztL?cTe9jU%o|k3EQKu08`FDD16^qO9Fki~NL0aQh>wDQWCMuVPWW5Z7XLocYTR=h8 zCArWs$h}jiFWW#Soh(ZeCw(#$gn1PNhF*e5lEGfNS_lHpK7Ji?@g~H94l%v9;cd+( zHy?m{1n770M1e%2Rj+=fwb1DLVsG&mDl_VD!X~SZ(FFg0Z@)c-8FHuun0#yJ$X3lc zcugG|ZhkqSZ%+91qYQJUyTnsJDVmS#U=NQJnV(@t5B|S+^~iWnLTE^yhYM~XntBs+ z(WnFE+qP?GqMqG_@_YAOx$ND^Ct1rMQ;c{YJh0c+?HH7I7}ZNpznx}?yB=tWP23Fr zHS)Q&YkK~tp)uC~)dHN@K6T(=r{`ww$g4ON50F)}v4yJ@ukvOo{<#W5m%!`qXQc4@ zjJGb^z!W#-bzNCo9o?FuF&?-`#|w*ViC3S57Y|H-{99t1sl+a8RZyjg4<1Ul|6Kq$ zqP4K%sXkfGUmj<8%Nnlewq($=uHyCAcS7^@MLf1QEn(ut6RE1-?gDg(QuKeiU&*D2 zk0wS{5~W+jgX-r?O`{LV0ic&TD2@>UGG;@$&q)yw9-3noR@N8K46~?SlVf0^A08@d z)D>`R0Yz<7>I*|QHbB6j2eglo5}@J9bbdZ^SjW9))d*EEf;tAT&=8ZF(L_k(! zc(IXY?b?30o`iU|6kU!(HrS3oT@)>>VK1&-O5X~lQTab7W7?e7eL?=N;9#Bo|FACW z9TI~fA=d5<%SW1Z7i>!qql~!(CA-g3fw-?`zc6Cm-Z~2e3S~1N*9i zdM>ce#yh-khCVLpk?RWdEZn_u=D#cVwSEQhkaWIz_HXt{iilO$du23 zpq6)7g$%q;yTgymiOLeW40tVV@kGbUOv`SKV%mOp!glQMy;om4LUyvhkDksK$w~F9 zi+;NU!tuoxZM1xxH(SY5pPgTyx;2bv-}F6pk^E{N3Vn)B^)Miabu+Ag;GEX}wF{3N zq>-XsZo11sr#Pdwmy<+}GU`Ew{c~e|=uGK7z<3c0y~_ ziKdi&W7fd+mV?)vV9(tBQ34>r;3|WobVf$6GBUvmG1wLwHur6pilD+7OcL}mhr_4# z|MU%6%>=l3eDwLiet))XWLD{fAy&sQ71EVuwKXddkyhg#S}85}>+<69bXq$HGU zfN{5Q@$p%wgsGBw1E+RiuM!ho{z4Q3Lk9d&UBkI!%ZRS9fPFX=9e;{?w)!Xi7++=g zWu>z20ledN&)Q$YLw#1g>-lLUD@CQLwFZY4~DiOoTvm2mNr_W5uW*{^K)qN%>mCFh3-YW%mxo1ed`M9b-cM+bh&JxON48jN6OQDSu) z%u~AV%w8#s`Csj}qVNWOUu%{x*Em0U(sirgm*5~Yz3#u0G^qvdqHlh;se*yZQ!Rln zwF(Pi4|2w)E?;(Qz!!NVJdY-EfN!9W&TYo;2T0&8R5Y2)SCz-{{ip>8Zop@I)UIHx zEOp#90gM~PYB5RqycGAy_7`A4*9Qprr%x|&MSZSK&bF$0VXwQZ?mgDMRnbB?(VMO|Qae`h)17@e_(lF5CHr`vVtkE1+Aa*01kctn}Oh7#Ztq@y~Zw&-b+lf&cyk`vUT1 zQzeJ3VaDlkE+K;fMPTp}g=V_gWPfBQa$mcAmA`=}`uyqoFuYDH4Y; zizcQ}J#xtZ2hf^wes>u7^L2`LAd!E4ok*j#e-#S`bG zgNHKuHT-_Rq)irv9Bf!@pP^&NN_NJ3aWZgBtos8S01I^vW*jhm!t4E37gxPr8onq4Lowjo58RUV?0$Las_8YjZAk~^ANdZ0al=KQd&WXlLtoLR;9ouD z>6$k+&!37Hs?xu-)k~i&dbqYmgez)Yyrz9+wxcI13FIux25tU7{Lp*;$TjqqB z8CX4(su7XkO-%S%DOu|c_xJOPO1dd_bO6QUNxR9wor>5a4+QG43-$-5H=dj6zU6b7 z0g#CuLjK?SN2@r{nIGYd;B-8iIJCK5oGn2bsE%!AK zrS$*Bq^{&3py7PUmofYu_(&Mx44xk!OE!7j8LwQ~>aJ3@7q3~Rr;}$(JV&%LE{i%^ zMqbMM|6rWv07&fgPz7k7JYO7fLxOO&!je-&GnaaM%>G>-;@Oy3=x+A$ds!i)RQtU{ zy$TJn^3Re4Je4Kwzl`@N=5m;>r(}te-91_TGy2Y3<0l)B?5ic+`T0&qf|Mw;0VcM| zmx>8$$(WcsEgohomr-Dq#id4@UNII;@8G<9eR6)DD&R?ij803Fcoro^4g5H#hR=?V zPfyNTSE&QBh}j&ztzNZfcwgz~R%)S!*al{uh^!6{$JUCm=S%Z97cC?&Zg+aoO11L_ z+_Lgw(BA^-;L*L-K?+a0-E1rHD}}zpOKbY!D7+QjVFpCaSQPxf8v{&I?&Yp~Rm^~O zr)mNxwc!zIxe#&*v!NY=8O{t+jKg8V_ZOtYXWOGSm6euY40Df)ir?ism`FdlhKt-R zEhGSK;yZuP{kpGPkHtzESss*@G&`=Yrvceny!}ZKHDh?Uz^#@Q1%a^l_N4$eH?RS@ zT3I_GQU)3<)^a`f2ATvGecdJ>ZQylK(lH1o`P-0~6%d=gnbsC7ufc^{qxTNhK#rz24@;Hh%E9Batb(c z>3nUXc|%_T813z8e}-N2^?=ZwrzQz#Ix6^Vu0pvbBB^~&GGMEQ*(CN`JnhStNl(=$ zr#KM`z8vCInk|cNYmM&vs_5|SJg4%9@@8Ooy3XFAh9>iUg*E%$f!j5x*}1YC15>P~ z_SlkSBSpOQWt|0f&RuceVy1ig-%kJ;?j?O{b2$;p5Q!rO{NlxjlencQ2@5BHdAn;v zLxWt#%F-(G_kTi>X@Ye|7t1VZhGLY9|X@ zdWyJ8ln19;apZFQVxzSV(kyLbKfO#qxLvm0eEaqglvRgUrg}chCki53z+Fd(5hBQ? z!4L!dGG2(Dlkqkl{8rk@S4iSo2YU$rU)vU|=Hy?Vr$4=Qwny2183Zg&$ONDQufP0S z7ia;-cd$CGfnkTv&uqM@zbx9y18Dt?b%xadfqR`OMWllM7RV|Qc9R9b{bjb%Tc25X zb}8Q`FyP5auNcrCBAOqH29KKSw3s@{4R4ROgvr&G>Y8 z!|jPk1IZ~|y4nG1fd-cM7LWeT54Lx7hyn@iSh0k<3{{TsB{vKqt#mr}@@h6d zyC-$o?X&D*cc@%EIbgXx!}Q~Ppn zNie7_Z5MmCMPRp3plpSwp#O@e-j{h5QA7KI1xCtg`3%{Pd_&CV^;u4#q5^2_^5yjl zR(lB-8eOXqd6n_W@jlnG(Hcxext(Y|4$qCa=9sZ6*hu7jOBSKea6_O?7mKYXlnG6H zi=Kbx``gkR{`=1d#w6;P;B#k0*5eRE^Sz{hkL9c4o0k)=+EJ_ZpL}h!>I|CT8N&#^ z@%VC$lQvo;u-`cW$Qi%gAA1!rx(N&OvHgvIbG~IjVT(;NvoXw_a)0UcZ}i^MqopY| z+2>SaW$DA+4{M%W{b}~T&=ma)p&r-oJZA?H?!ILajEvKQ_Z)>j$hkc~n7_Bj`{sP#azXfD`Np4e9x{U8gOkwIdl^ZXo4aOOZ@X{bcs>!GYB>lBWA}gY;lnqSZ^pj2qtl6hl*7LJ5IbbN%2I*u<>|q~)!3xA zn3&kqlp1p~#2|zqg+5$Ii9^v7nO0kqp193**9cV zdBTuzp!UuTUq!W--m=I`DN9D(_O`(YKJ@ckJxqbfYjb^jAa@Bp-BozS@Fz&iJt=jY zPVa!&E{-CsP7a!a&5vj~8x}|*2RS);TWRloTC1BIu*eWS9e1-F6^9b+8O-`B_A z`aai)7rj$^p5*>Q{X-h9$7qyV4PLD@sAD$4Z3DO1Y^|7;OGJ|=YxazVPb@Y9(b`O&%4dzS&}G5 zTEo9SG9A>6PK{QcEo>(>AJe8%E4!v=5|lnY)#|F*X^W&Zg5O!9UnnTOi!m`a=Dx7H zHr%k=pLU)MeX_Q|Z@BB67PXmJ4|gSLd}YtMIW+iFz{AdRzVXV*F9rH{f1Lw1rMeeY zU!U{FFRI6hs7xw1AX@@^MX$B8(y1KT%={9AnVFfAyek$~&abzR7eZf`rvJt}tGq8r zr;Lt?iGwp{vxQ`N%b;MSFG9p;DizL@RN{uniF}T@n+b6uCf0;j-!J*{LqJ%Y&CIF# zY|~|(m1b$%;E$0*&$kB9YJ+io589tboxe~ji^M96r5FLn`TDhbn9Y-&O>NN%X0vk| z?(U7O_lA38!*EZl+e3CLG_{=Ts_t6&d77}NCMEmbS`X{<4eWy%m(9~z8Gw>pgd^41 z`Y+Fx*0x&hQD`1^(!+mltv0^$lmg3=aVMeQt*4aHlu6%%{YBe4kN&-V2e2w^6=Yx_GpjaM!W5YKRlS&j!)Y<}|1uWIXkU9-no=<0HG-hLmG=ELkc}$D$a9Z7Yq=yOnAZ7K9W5z4Rs@8oL zAAbE3oa_NPz>3rlS{iZB*yuuL=Aw7StNmYS+E z5cG2-v%Z~s?De1eWn}Qcz&kZHLg2<#ASn(-AnKV$AKXvbmaPRg$n`02Q znKFhC7Hb~i>Nb(T_7d<9UL=7GjE~!_6=ei(_798j{0O*?=6_th^J1iI*G*h}eg42_ zqSbpoH*Dk6_{T?r>O1kRR%)ykQ`H8>s!~TQ5&zk=qK;MMT3tmAF>nKfzNa1zS?>uP zU){p%%8TBA(SN9rsCDZmx$xCtD3-(un=9@6Y|KroR z>Rw*=>u9aP7wj@3_d~zQ;CI(mc?!PYV`#(E1*H_^mN63^`f9;lj&qa<%Bi)e!CJq) z8-7bU_sh0MUTzEwap|@YR^MGv^y`&yr?R1Xx2aa2L5M`%H>|Gg z?5tIYEsBw!CR5@fqDnY*pe38zTJa)?TLyk-usWoRc7VY0_U*e2WmN*Uu`EnX3`|V? zFn0URpNnf`d5R1m5A{tPA>L?;8qLB~cafEuZwsWWn;KPf@}((7#vRQ(h1Wg8mAwGC zE!!fRRc^i<#YlhBNn-b;uY3FA5NB^edCUD{0JV@31s{ru7%>;WNLmbkC-f?A1zF3$ zsy9WB%VlNQYD!S_^udEyr6jG6=5H#cpn~M+)r1PfsK7TbF?4i`T3z2YzsfC|$WYTG zk4eZ6#`{sqjGU7GY}QftL-n-dt8AO;Mn%Kbb_tVsA=6Duz9R)kqpK~l#_6UrCss@b zUbwmj%n+GldO0|&1fFjTxxHt#jY5GhA0o-ba&@Z7l+bV7_3-QaCe6;~S!yZS4srN! zhhZ-9K zA>vK7%n7XY=xI#af+@lKBEcH9E1r~d4K`%BVm+Prn*1649ShVyy>~!CX(e7Cl)`1; zPb24Y7r2*{Gz;zAI0+Cn@M(>`i2xy>Z07HWZ*VA2<-0FSZ(RDXqL@YA2t z4L6Mw8k=ocM&34V4eLYhdTk(9bLNBFUFhgiP*r$3ZGxeWj?Qax+`X;k^}nhhUcGN9 zjbl&KcD+{Q!uH0gT%oEPS)v7n&dxS~1XxD9hifjqPOi@86TiyN|Fm_`g8IJJa7(ZZ z8TH>0Ixr4x7OiS>n}tAgl5lXlx@dtZ_S~UVwQj2iCpCAAeugbV+9p@oWqW`c1k|{m z{#=^Bpvqnee7;?JVVINcr`tub_GCcwSF}D#T_x{!M9Z-+<`c3+oh}x7`ervuemEY) z9#UeUqvNN#iqszPIc%?d6DtM=m%I+`htlAq z(i=a&sdwL-V`iyDXYH7qt90tw2>MW?i}k!+p;gNvmxsGQIY2a7Sjn0}+<9Q8@Y}&l z?2`Qs)M zp+km-wYk`?P-i{fzZ#Vuw{FR8V#=YjNS&czYAP7wPs_d*CMKBqgBGt+kevRLU~cp$ zh9tu$y~ZW7-LGs*+cwmzvm?5*|IFC6BHzRi3}2aVhkg>li^|QtDqFZG=l60P`J(6T z;es9+Op}$x@-05xy}Q(eXX-g|C~ob5mu4a7JJiK?wn~KD3jT2>4*@5KF8mNjwj``U4dQI zi_v*}2{rwqb;hNQ`3ZZc889>ryo%wKSMQm*t?e_~DT#5P=-~|Y4aN0_dV4pg2r*0i zp*|JsdG}&;tjnpMk#ZS#G%VhS(*Q9tL?&|_1>&v~hEUMh1a*56u4X+URvZ}7AVvuI zCObZNt84ilYuj=)$%XpEI}H-aDJc#oQnIr0lCrk@(-U)Z%A6S>;!ibR<>9Qjeq3+$ zX^EURiY5!73iebW*kWjKkd(iE_>%pjljAX1iGVFJb-Q!p-kQiP{c80J+{a6B+P;X5 zzw4zMXW6P+8s+Kg!1lX)@R~K|_B714@aXATi_f)Bz@nf2BJhWe$Y@^LS-snz_c+$> zS5ENPkZy_U>ZEynb+8*({K2xOQKiQf#H22h2x@6-7flXS#)$xHhC;iHGQ+6N4vQF% zi{0Cs+Jy~Py(Z^1kDxEL9ZxTgY<1w2ICs2Py?1E1I_0I65gCn&Q88Z(L6vd}l*{?&p~-b=M{(Qwx|G=4>vwrwz}PSo z5*3VCcpMU9Db7e6Xdua8lB*nl8t{Qpo~}Tr?i3EAScEOT>R?;#em-f;$9(lSyI0gFeN9 ziHs@!Xx4D+a$^?0l9tC5sBeS+bV7BGFPtE!mP^c(mg95fR$D`FLCi@e{$8nm`Oqz2 zApfuFlJo@u(y|8kohhLSg#X40{}rN@)MIJns4%9-=4v(LS5Op47{I6fz9gCi9N`Yd z*>DRpe7O7ihTc+21euk;jVD~s7`Xou+)mMjz`;6L;6AL$Lq}ATFh4r6U*?ToL)2Ml6)#P==c88wv;^At5fVdJGo_!~V!} zjHzjKMK)RjBu3p7vDp@AWxI`KYihCvZh^r>VR}gU8x|Ia{%$+6U70mzR5j}2-%CQY z4k1b=ayz%R;ch2WEdVv1nV-id9fQzm_zKWdR#w%Fo`xGtSTeLcTL-~eaJ%`z)gzE4 z1~J%uv1ebEAGC8}6<>-nT_{gMogUh+qR2^j3YtvMR(2ow`+bDPk&qY;>v{$ z4+Z9LgDvuAcQizW=Y*Mef~Z&717*sGoO^0Lr zz4$_Qhe#Lf;1Icq#qcm+owYVOGqjj*`Lho`dM2G&vCcXud#vT%1}M<%X8za@ ziVHR6pDXNd3IoEVS*CvZbS{sH;Qx|8fZ_RbZ7S`$QyWA9s>HoNq~L>hdE!iG(*-%e zLVqM)CZ-c1yrScMKrOB(#1GC3+|gV{2(Vbp^!_56dAoaJ$KB-W$}?XV%jCA4^#Gbf z|FhwK>8SctHcAp)gfGCQhNXYB78%Fzod89*o*@*ZU3W}P*`TATLB|*!*C(Y~JQ)zc z;St~e5o&B=A>RpH+Oa9dF6xl?G+Cx{B$G#u!-M@9C!-T%k?%vK8Xewue4??`(ee5Q zHKd#VWM`oArLvt|yzI{1>7Q*kDdY{HX>S%V(QlTrsi^|bNcoz55BF}AEpTxI5Wau9 zyrnDQjLqNGDWl9U)+;M2XeeRo2^&1Scwu7L3Lgt_BeO#O*Y~X$uC_tAEBQ!SX{Kt?)ZH~&2OIEUs;!(D zN82UvJUomFk!mP^;=mFBje<8CXZ1mcQ7oL+Vhiegbc_`8?h=zM#Y@5rGKAOokS zqjMVCK6h(bze(G4j8(Ef-b|6r)kS;{1!t}JMcJ@^)JV2=Q0zoCXrb-H-a6Z^jq&t^ z6IWUdFK?u8bD#G{m%k<>6TZ{%b;{f*((dUPoD2xYz`(c{aFC~rN=(|qSs^0o$HWZt zaNb$^Yksh`tXIlyfHdaM<+0f{@1u*ID|r%Hx2KpYTr5Pnz3`F4%v5d=h?^O(+Xkn9 z6jxD2_KZ)MfW5Zozq7u5OUI#CRjeyrS(K=)!8ZrmV{QB>)$SKcnI&U34==qc>o%rc zh-yy>A$D&fz$hB5M)KwX=E+0S`Mv-Xq_?MRalEiD{}ujdK-gEZM{}3gT^?kih&;fhH_7Mounu~NmJyuIw`o(1#2nm6%UVEvhoAR z21+W4}BUR+#WjvL_4F862OL zJ0l%bS;(6u{Im}toz+$w=ir5}UuQZ|^~Vp$NqHM;n;vaRP_$;-l{>%rzghtL@m}_0 zS3O@;%|=7dE6J^gZ@{epj>AUSJ$r^}I5LTgpPoJ-7@?a6xYbsd`Tgwsw7uzkQgxPb z1cK?W4=)j7V5pbi*(HH{?x*6U6~imcKvK7fpFU(|*mh&96MPiq=KIs9VQVKLk~EAg z(FEGs+89sb^l)b@1BRm&O!1VK!so48?jc&8(` zTptOHfN#Ml)W(mYtOE}hp(6VF276S{GHz6I$-r>J5J4fZAHSiMq9_tSYn%V&>oQQl2^bKaMyvy7|KW(S15 z#zd@0HV9;Aih2nP$5vRX-z|wZTmH=Nt)GWnGMnf@lujc{U1=dXHY*dQ+Con2{*GnE zw}r|b%|baaPNl$wn>~>?sXY|_K>v=uvH9ik;2#s=eY7Zqdy(rcLjG;5<<(7pZ;#_u!xjv zOR$-xx)>&h2Ip|lFw2yx#^e$Yw|}>@=!R7;YbTwIJ0;eunjC(-is(>Ia||Xly|TI8 z{U*v#$CT!#3fD^m7Km}uXYfIRHOB^padBee+2na-21na;&-~C-qeLBcP-HrGGx_Zs zrf>LLPqoX?76-BFWs{ub^B;*Yjj^39pB_uh`jfohrUm z*6TkO3NHcAQln56FDfbN?`1D0H1?D?F8Ed8nkzSG6o*~j8)}}<967=Eg`RoO?e$Dd z7=zLpINry|OdE2>BoY$!gY&}DQj5XwJ^pdx$>>Y+$b58Lyr`;}ma3Tal1XqiOqSuL zR++X=R|b@SebjnuX#)TS#uS_haggnfhD~-b#r^qw09NxTz%a_Z`?L-)YwfE?`-_+$ z11}(~YBkQPu3lS3d3 z#`P=^8m&@mpPM_o8m+sbP9?I8V#DkOP=jEEI9)1o_oOz6ic@ozz zj5_G#vxTy#CniY|4&A?}wRc)J{5;!qu{D|7=$9hmQ-_$SMp(V->guBKZQO34o&5(l z2&C2Q)ao>Ptws)t#O}rG$)%?4rls+lyJ}x@QH8`YzV&typ1H8z*OZzfh4VPfQPu19ZcwlWV- zOgQ#GO^;L3Zvf|Q_}t5sFQGfr`A$wE2M;YW{aS2ho!<&*7ZYR*%1TNvpSWR>P83F< z8=JB_m~N}J4xvYK;ztKuU3s+1cGDJ!pjhU+#1v~;u{#vySyU8%ip;9e{b=IrC!KT( zl~JSa*|Bp{N~h`pzHGj-p3wX!ol%dp1zgN!prC*g_BuTs^2J`;kP#9>aJ6s;2M=%D z9c}3CaolFGrp*@xD9GEA6YWftjFbd7-#(-S_pMGz=UC;t6pP{3?75%{rsBf9o};s) z^=~PHV@0ZBZ0CcJHP8(A2=pq>0G`0MhS5Yz`~1Q90YdBsyn>AGoG)k zKT{Ge&vOd~RmF5n>$8mcKQl7K7fu%#gzIA3PA?A8P;=`t5r&g-gDpUIcd+aC>yN1% zX`t{kyOo7Mzbyd9bGQ+42eOM!?P1iEtgJAk>F{;4m{^avc$dre%v9g8CP`~pRko?N znvN_qI-lFU{OMvNDEk-TpPu0F^v#`5r~fIa2ZaZ&(&63@*y2rMaO`k$Q-!j{TS!5+ zN>DAc_NBR63I3?(LBzon^-pUT_$Nl9#s>bK=W}Wu91qDr3M!~*)&9PN`0ZQj74U6s zB|)8;591f#r1{RrcmE(5Vs3;m(|*4kED{Sm@Bywvd%k<5BjrKm3afp>)oG&DsgmX;-=$i&KqS`%w-Wb}7$++ne$ya%XiPKov^m5311q z$*$43*ZobColwN3g+Q7mo|kUa;tz|}4aFWm<#glxoWkQA4;CL`cjb_*B*OJ4wh>+m zFi*QMq7kW(T?u2QFhodbl?_AjLj0xafFApL?`4x*$k-3OZbb_9rSz z&!yZ1^}vPi*pLP8+5aEaoQ6_DXfuKzKl~aHaHWn!^^pzKkN_wp8P|+9=pz67bSg7z z`Iq3-ROzW{*#1meL4oQ~PsuI08CTU}ot=2x$_*`sAKUlc-2rzT*joGY90!L!VifyzbQzcu%=blf}}P>eEwo z9^!%)uBbtYs0vVBxp}Tg?#b)hmdPW1YI5{+6@VdL36nxb3lkm~!On{KFL$iuRbYtQ zOVXEK2jU}SlzqLuq+CBY0K!wBv$e1LusZDF!6FQFJhrEYU(dF;${RFwm}n_k%oH;f z9c|k9tL+HL@Q2BMw_pp(%TKaU8`#+7N{JY2@=$V|tJ(iqD~1Hq3BPr}9Pt6QuY#o4 zK+Agzkn^+NI#|E$Lz291ZBoAT?6FtNR+ek+R0IKws8#@v^|g$mPn~m3k?4U$O5OgL z0BWaOG%r^oCg;V7s(M+@ADmXw{Zwa660bG(0xTVuZXeV&_>6WH31qi!FtzM=Nx zb3dQ$@A^u`5SU5+UzUHYaxTx_u99U{AMpR-e5+I!_5hbzSMX*{#H$asr}UcnQ(Ld| zw!q5rN4?`}MTg1jn}Fn8<>G|W%huic?CiU54dZ==ME9yyC>e@0TBB=$ukiNwiQ=6G+r7TN^o_XQ z-oZ)d@+q0zA{|1u=A=bXjPBnD^cy3Z?%{s-=@W=X^X2dHgDJSUfCHFqSv`u`C@oUtP{`vIz^77sn0syEQVKW~Cjyod@?OLr4{`BF0E4+41B2df`Px2NgP zH|ooTKPR8Dy7sgKaNoYrrQzA|Y4w}cO6n?b15#6x!t>@}N(`T}yM0HhJoD$Yi&%xI z#^0NK3>;<7$THeoS~N-VlgSN04~f*(P2KA&jMiDO+6yrsk5A(tmMNX`W&tIFYU7HN zSi$7L^}S7#J^QZ~-<^i4yjFWxct&JhP|yzWrBBZ>v3KvGmDhVinPa2IEP>WEERvEf z#9?wRN;yXCpYV764+XdCpEYYoY%&!B#+jYE^cstoq2?sgHfm}0m(a9pcxuA^VIFoQ zomPdGCv>K)boQ8<)m^I~cKhZ|bkJxvXj#c5XhB9_7|qT7nXPCI9ShTyeZKOqD4baK z$XHvw_U_fRmr>RdBGzlxjO9AyGp!IXPJaUlU(REuEiB zIsJ9H8bdW@a-6LS6i{df3-@@VKR&e7+xflCT)x4+?O8o?*3vUyG@;5ibm53T^=ZSz zzu3o^@fT0O>RdkvOvaq5}KjW!K+7V=te)ZTl3OcVMa zftfY`ko>*GhCB)*fP)sodg$>Bwt9_48e4)RC+T$yplN7v`YOnZ1Yt~0yO#~|%wF{v zcqBfpazQwI(=}Ca+q9K(2xU!tVXbU$-gdFl`&%wZ4X41o$L zCE#cLs6O9dK2S(wtB$@p__TT3Wo3f)C^E(Ls+H4kDRNm}{wC5$75=3kIj9Xw6ZGC%sFT=OCwRPAZ)0XQ-l|*N zmyUKSEiV=3_EOh1l~Lk1H~+X&T||)l9!WvHEefD6=dZm8-T53EC!S2;`uXq6)75C2 z5HhD~*2c2oYHDwt%ay*Y{Uyoo#KM?hC4LzZL6|b7Qp&)1Pg0PFWPSB0Q}J>>ko&ru zabXSbH(RqkJRRIkAd#Lbfl=$y9roP(6AvEjsIS!X?ef0ukWdra%={;Bo7irBzE5RX&~%se3S|)b7?(2GhjIFM;ujOW>btT5 zisP0WgNBAH=qViO3V4NVu@h5JxPvisyKsuUJNoj0thjd|n3QG_3#(31v2YT^ zDP@j@BmuZ#R1d9a{P1fqV5nDD@BoOSnGJW{$7yzGYChq7US)q|nf4({()sfRO-m1c zRB;$Su5P2F5vcv*;|Vc0e1EOqU_t-xjL$4AtR47b+guq~6^f znXHvZc-5>EMQOll)~o69lW&MEzE&kUB{)nc^;Ln6zEmMaamOA8yF&6Ws2>#7TpWa( zAoY0>(obwX0n@HCibn=0jJgAVEseyG{#)hX;IJYQd3kEe0MWN`glC&mnY#wVli8j< zA~14ZPt-PG$%oV7S;~a~+|RosL}y+7pwSs9=NktrmS5p98z}hj%(nHre5u&;k2k2v z7|kg}Br=y7oQBjlj>@b0%A?1u6QdQw=K&AHkUq--aoW?EMN-^%K5dfqjZ3~5dQblK z#Y{3g_jNHl4^V7^G*q0h%OB};XozPRv%ZHf0i*Zs=@TTdMwCrke8xJQoz8|*>dkKv z7tX4<8>rol%M(#6erYXU$xn4P+hv2#nLZQSvyp%SuY?{`it8D(F~>+ijSms# z;GGKLfBFgxn2`h)M#KH#hneiF46mcM8~pj| zjz>QMmbxf(mMVePUkTd}1QovpN)b|`ZDOXqy^0EunRdYtW{B;hwMd#AB`K3*gzsrj zInMv9wY<;AaIE5ed99>2B2Ys^*dUdmuJC7E`!6PKQ!L(_hlQ6g`(xa=VM%zYk~2o-SV7 z+BB$7Jm-YOI3JMM15~*9>jzo|{g=-kdwaq>D^xzX=d}t9FpR$8oB3kddj(2Fye)|`5rLFIjk@J_B4AeZ8P=o*c)x_2HP?+5qRwWO3VBt{NTao z>hJtK|FP2Wt)Uam{zWvB72zYAoenZhwP|9&4P${UbDtc_)O_S%87-{`g-$U3t`4u0 zGACV&>Jc-Ej3ufVMmNMea#O9V_@(O<<3;au+*!32@AY5JVc}`O5oOZu{=&#jCNAKA zp`EKo8u5d}2|kCT(E!N^Cllgjr@v~dNeK;G8@x*fU^xS;K0mCjul_QpOJ=%6gGc{n z%+SC9_ojM#0{|Dn1tG9U5cT|2L^O}EHfpA8Rp^F9vv$K`WbXy#@!1hijAWi%8e2F` zY}(<%k6#4(D7qJikh|kEr*y5+s*J-uflQIRN^TMO`*(PN%jkvM6k)?aIE64est;U5-Q>%FBr*CA%Q>xjUR>6QS!l z%JQXl9wvI_^^dz78{_mm+jJA*S^*RXaIYS@V!d(dLG?tcEa;@61RPpj7?G~IO}HM`3DlSrU)e^2LRqVWM4}~st_`bWsnyr7lxQ`g&y>Y*9g1$8kUo% zoi1!80kBf&@*o5-k`s@edcw)QM7X@JfX(^EnHg)mO@&wQYXzKz{g0o924u%tiftnd zL=7vesxBXTQT-m3Po_u7J}_KM$Q`Fe~+jTp`x+^aFLBo=|O>AG1Z>-vk*yq|W!Am&Np^>K5k@B+f)w-*$8^)EGg`n`9~ zg`Rh~xi@+rAE9{(Bd5Bz$0J2Bi{C{s_)l+d=C5CW1}7~>+mra2 zzw-ha6Jx?4^0=pLm6nxvX1>)lN{;f{{<@0t3sZl(po`B=E&R#Dwk!oxff*4@119|| z8&T0{zm^5Epf=QJv%5w-VI*R{^8gwOX6Xwu4sswUnDd@7 z?mE_Ox(^Ri07mUVHIhR=qs){5>}z@XuB5;Y5RZJldE1=Po69&2L!H=x#}5RH0#B>a zTb(kRdZ+V`AjO2f_v3lslHoI*_z6InO=d#Z{dVp$cxqZ&srGtHA z^~%DRVzWDhn&^ERKLs%X5i!9uT>m0(5i58T5n!c*J~t2h2tNI7mKDH&4}{)i{oZNY zlv8y`zBi$Z{Gu>7o9KGpyvxM16*AZVNkJzu%x-_K+*mW2P5H02{-|$74z1<>Uw#~{ z$#7SvbA|PslQ|O==JN}Sn1rf zG`W0i8*pp^Ee{cFyodl(w1eElY@_b?CV*}MkeE-?K zRzn;RmOYNl;B9GciX;{A>inhbdvdWKfU0pqb{tAXL|~t+%T7mF$Z(nrd6-fda!Se!pS>}d!i`1SOC!Fb7$IsVITC)5Ssz4K+P{Y z7iI4$#qg6RsJb~2bJS5?Syfq6LWo;2go?KUxUZ4xmtVoQX2!*o0?H?N{R z1_Vn&CdV3SRAjq0@O#s(ZSI|f^4mq= zu@hhe8ySP+@}E=+RTIh(x1JYppymP$fAWb^VHq-yh6ZdJuTwbZ2Fv4gA>Uk(unGj< zj;tzA|2iDUge8<`2z&BDAaI)$LW*XQ(b-0pUKGYPGb7LjEVbHIV7H`2rzB{|BfO0xG`kprN+r8OwFw3ODsD2gg3u_ zq`iFTGg9gaRqg3t6TCkwbI1qE(@ zI$fLIJ~ZRba|d{gHqT*SxeyqB?ZyG*>G%Xp{K;Z{v1*YPm)*+e@+Q+?AB2X%HRT^D z*3`gXYpKLc40-;s?jyk>mVerOvSdmKg*YQcPjT$A@_&7&J=^6z1LM0GU4OUf{~i?- z1P{uqa9-o_2T(dX5?yoS&T1Sx<;vO@h!*Boq`w6UW9#|3@(`F`rCdChes#Pr&u~YF zm`0;{G5`gT-YuQ$7F%3k->dr`q2mH#e#6lT=%|rJ0XRh0v68ZY!wd}$#M;lkdta!) z0n~RjDkk%_wy5!ojD)+ulEKNYEpSs;C)6cOHpU%nvkC)ypKy|iNw2W|iA1ZMM zK)CUnw2mTBqJn9@(5R_5M!bPnV6ow13G|+Ob9Z)L?W=$xuvw^`pPKTxGIMI6*#g{2 z8t@vt#+nz=Je~~AJpob>8K~K?J^@C64j-mEQ4bIX{N0f0`A$-D7h2)d;o5N$5)l#^ zreHZaHa)gtvO_~5;4lPb0!*GP)YWzB-}YHdO}!PvG>i47UaoK8zx!pnHJ4GB$_LAB z@$KIzYbxih(AZtm+^^gZ9VtO3NQcR%w%P+6CN))1MkWkrF@qNrIF;r1005wnPvNp? z|I^Vk1cWIo?YX}}OVkrd)^`?Vr0F`_M^SGp19s%~=_>J4j{uo>d4L-y5w1q=w@8#d z1zjArgJUJK*&uwKyUHQkW8PQ)X7<>wILG%}LjHW|(vMI2Cqyb3M`H)~Y*QIO-Xm3y&t@E@|@a z#{n9=6Ip-)`XDdKa3{OFp}-Hk+2JI@6rxGPs6Bjoo_150k@s}R95f;uavPg1y8=WKw8k~cRH5?80Ny~oHZ!KDvFFP4gEPW{v z*$=zT7BZ~xVTMPj|4)uk^!Qs!Ic=umNKF;0Jo`1P0)%zgvILf=_zU9+DM?v%g#pPF z?j?li213-6Ul1KVIZM2~A}Vy|uZkfZItrJUHg2zS`RiGaN$QRsQc#eH6|S6@UmOzL zQ>Ms05%NI^fS;x?jJ zLH};AXt*Nm@m(n$9b8|Fm=-J>$;!$04ds_$?`ex%yrKkGlIKlnl!qNCKN${aS}whW zRq||t4T{xR$|jE1djI^H`E`U7XdoW(O3<qW}NZ*?cXZi(22)VsD zde}BdqO*%$9;m8y*^}W3u65vsGG3+K<8da9TKlK`Ss1$ju~cArFZdqT2Q}^Vt)0|h z@}BQ5_5#@w=(J6YO`Y201|QA?Ng#NkVIgvCoH3{Snnky3V_j7)Q`~4zf_6nNGfbxu zh=I}3R{e}J*82(hwAR=ki331R^|X3$PvSi#$536D~7^8T3ULjI^PP!h{Fd|R>3Ep8Mvu- zW+!eYUT%dOw z8H~B95~r&cnYFM@Jaam6Ou(7uubMWtU}dVUz^!jO)ZLX4#v~-Dve4W{c;)^4LeKCn z_nT6mRH-2`cZjT;D0@h!R|v7D=20n=yX%yfKykEy=?141ebGRPa$Dsf`$^O+`R-+yL)RvELSpR7*0SXru`)>-qY0*jszRzW zsm5X%sS-9SPHhHeE>6zzceZB6rdBJNqwGiQ73d3%Pd6X0MysR?KJ%PdgxAopMWw|6 zwQy#PMHv+b0}BU#txAyVQ#F?STr&a!g4r1jV!G#jmAhvtu+-Ok4VNYV87wO~9EEsL z9DUF*_A*qyU?Dq21s8ps>G%VnMn=+yG9IbQZSfLd$n!(ng;z4ql=eb>Nx!-ukL@D6 zwPePIUQH2i(*H-^cZD^%1p(sqs#s7|5Ri6J1f?rd1OWvB0qISoi8N`UcLI2&2na|Q zLXqA(1VU915FzxQ0MbIQ0YYfmli1kQX@yuBrIMrhtUjyq}*qY?bf#0FVadTj)? z!Ocp2w4kNYX*Pc!apr~6<#d&W_Woyf{hxC+Eb$5j_lxykymtMp64Bf5U$5 z9xf&_gR{+Q9ygk!kAJ!E72LX;lNkPG+tquM)7(h$x< zS&vIUo4;w|zlz;EG-qbgiDi!~Z*kB{eLd^&pe}2){rvE&&{wPae0zUPIX8DMmcRnyy={y=vAdopO}Knb(a!O;b~z7H@x#JErukE7z@7My+^}&S zric$W2WigxJ4qC1fJpF=;u8z6*{_|qvNPT11SwW1T(Q8F$M@Cu&gg87h^}cT zW$lLS{LdcRo5t}9Zf03~RI2))XQP|&Ar-Qnjr!bgwPFU-PLX{vW2rtrm{ywoc8Ikj zlt7g;=(HYD7ZJ$!7~W?Uh5yGF&GOc6KCgFl&SURF4Ql`MQb?2#{{Z73AK$6`D7IEV z7<+#A*%%1>_tnZj-&g15RLCap*-XLwIQctC0x8Ij{!5=54&ZLHB{vhVf*t;70R8Y* zu{u&w$vW7w&ECSH?A3bV&hmNl&{Fvq{ZajGCExi9s^;Y$ z_jvX1eSWA}-r?$0A+pIkIhuPm`%khBk*9Xox83yL!xCkKetuPPfA;YK`@Hlmz1Y~t z>-)ES45MOy3>75N21K+|35bPQ0=FH!SAiUGW^qH7a> z?#6cO!PRs%*Gl8QKI}e)QF)mHFkt74iTWSgSUIVYkrh+VoQJ$&yi<2;!r+!I@71ew z^6@<{=Vl&iniYu@`?e#Eu~_HkBrra`RYS~~$#1din7h`mWM|*7=LG3U#Z2|l8#eB- z-696UwIyc?f1&7>#rDkaYeuhn{zY@2L#{G86S(zx;`d_CKZT|=%S(T`T0kWIWS-bE z@HE_u%Qpz$Sp;U5@6SH`AjX39EsZE7q-^agB8%MiDEo8Q2Yz{hxB0J(bZV};*T-d^ zep`3;$iL?)IjH+p_}*z-s*gT_Bas(!|7M%e3dC)8vI>ZDlKBo_iOoFy6{f&-H&3=3HWx;hqQP_JpZD_ zf2lcd@ZTk5k|_?EIfz0|a6iT0XT)>cRwdHZdvw*QMTtUm!^&Vy*jw9P-DL z(5X!~NtRdAAixvZ6Y9IiHu+oArpO|bHQBTYF-tpOtlhADZF&cM1!Vw|_e)fIvS@H6 zxW+Z6Ge!SB_7s_~_StX0qjBf7jG!Mc7T`0q9BaLluY?$Sv!2o-KSfq|l@fgt=hUhPf}iRep@z&j#q&q+ zo%&yD2y*FGzom=%{C#zkk%3F_Nb;5{Qt1L2nSt1!zas^HiH%qvOBeR2Gm-tPWTYZ_ zeMKXk9|Yq{c=s#os*w&nEBj=y*DC{4SEV_%tXz<>+&AF1+C-SR_0wvSUj#?R8x0@2 zlX@~AxVa*U7MVG8k=w%SejMBIN;DbS#6ubCCP};g4}2f59+{q0rAVJ^A zou)gPK$=#*)jxG*=%M)3RNwmDCqB48n-TOGDCI zn~4cYSIEB7cZ~e4O%Az96JQj&s(ga~FJ||`nBvy=0#O*xYTd*A>*xOz5WNFt5v7*< zAP?*`09+u&Trz%Us&mq}C1up7mwSt9V1aMmAm)5X^a5BOEXat~ziGi?3(Q@{0TC&X zw*)k6ViAx`{nYijLp~FoJSt>(!3#FH@(}>~1s8z*&xB-uCNQVl0Y+DU$8^5CkMRVj zJp?toTJ@s!W5FmOrn>m*A6cc`&*wKX)N~ZPPi@a&-Pzb~i8G&iOB%xM`n|5iD5axM zs2gyIMWqkOvUaiz%4R+p`cc+Dg+fzaa#02O35Z=JHSpCAmQ!k97K%o8+`iTDzJ4&M z*^6dAA(;w*Nj6u5&L~OI=0gIVsJ|r05G;KwRpkT3m(*~>OeHs?9OD?Fc#WJ(ut*lf z_WVT+^1R55(ARVQDP(o3=+A7)RB%N@+Vl379tNalWP@o7fhn5bT&r!$GgB^{KD2TH zTiN!HSW}%?Q(CP;vjIzIo5eHlf0-42D+5u2frpmjKPb9+U%U98&|#|$_T09%@@JKo zFZGBdMV9WLKxCYtyyhC&zSOdz8l5EdtS*3}#go9sUrt;M87;5V^x2b2GhejwZ}3dt zf|)>A_IKEy34$F6{C9p+%-x)D2IIdW_Nb=yhUvjV-SmFINnVlt!%6rqJf^3INbOBM zd|I3=APV+S4z-HoNnBI1kEfgY;))|RelkDwb*oEA20_^dh|KI{T)@W){Y)4C`GZV_ z^St4a6o!Th?L(Oa(|+;{gSjS=B6HbAu-NMw!+iWoh=*y^$+|%=zGG{HgXoVRgNLngi&s^KJ3>G7Jpk{c8bG|^4-2XqUXCd; z#nu2@zl%zKeN88_;-fXBIa^MO2fQHd3fnDA@N`5W+|TGm|Aq;u{0ouC>B!H0o0CK2 ze({%2z^CGkj+SE-EdTv(gaK1m)ta9@s!d7%>V-eStr)hDtMjJdhJ!PYGv7ZWk&$J; z`WtptbyNF~^=Q}pml{h?rEf);iQeXyEl-l9x=KCy=!>cP`u^a3xqqAF4CZ<3cql=V z-~C_%mf646YQ3Z!t3756fUDDB=cRw^8Qj)PLD0p0${TelDIZemoc){-tblyN%2m6o zm#Jk{CVV|oZFSW;&nx-gCMx-wP&g zz<bL1{$PW zx})L@RWvkSJiFA9Wo{A}Al*(ae+xtqz20_-DkNWg9_+~9#WDh{dr8=H(@anD0q|x{ zbDg}o)imG!vrEiv`*GEHKFsH+hDnoO;-3a&IZ1g?9glp>1Uf)1w-ednGld;NjS7$G zIHD{Tbu{_-|Er126RXa(@KAad9LHJPJ`>lem8sS^koa$fFT44>zcAwm;SW)QL$SPG z$(<|ckDUw<)DS!}bok$$@vBmO$Hu*a{z40T*6f@DV$;JJ-EynBz94P&yeA4_@rD%BCOh;Ii#c1b%#$i+c zzhLzpmKr=K)KON(w>+601s}2Hi`DK-c}vPXnnI5#3%LRpsIli;wL86qT+|m`Hl@omZ{+zg=yh zJvhOwkBV7#t+)-lnQIY0&wDP$mG^onZNzV>3(UAj6%a16%xQIJ5xhAyq-2C;j214> z0rx*fBt&g1sZxEujcufhefkotlE%9n@0B5metU& zA3>b*nUNpf%tV390)e(4bHUl{&p<+(e~J?TPX9!gh)C>*1$+6iRO5N+rpUk_yq_HC zl`g~efX~N@wasI6;`Fu1pu4vo@QB@p(QD@p(#1bgR(`8K7xnLc^c^c&dJhX-@*Ho# zsbs2MS2fcrN)Duo^-xj2e!q%E`>uNb1LrF@$m{4mH1Vwe;T)d7p8&fSBo}wN&|mT? zLUv)Ghs&oIp>lTtotlY2=)@=jgUjz?Km%Bh+%t-0&zf2h=@z!E46_^!jwIbxo5Bj$ zLN0FoBu1w&V6R?-D1nK{v9b-`m-?qISa-D=9C;s@08mPGc zezm;w&j|;9`l2QIf8nQ0`9Fn1Lgq}*@#@vMZ|}7PqxFHO?ch?dgkDQht($QNyxzgT zOhoBF0Jh4#{5BIUKUhOJx^rJ(m9{6(6w3yLtPc;$%al`UhpJV_3kn$Oap1`v2o3?f z7q^Fte5fz9h}u#J@kddrLLkRsK4Fh>_Kb|yZQ*n#d$dB@ZT;rO1{8JU`JPYCr2IG3 zfXic$fi`01Wh|3)i$TLphU>6}U$1LlcTvS=u8Lj(KKu05!{ENGx<=R@)mwTVJcs5N z5QyK}eGYs^KX$G#dmpEJi(T;))kSXJ%eAaA{|zyB_l5y57VEw_OT`y;l{W%lfh_TUgYkcr{I4j3Ij zJr%2atQWMfuz68hx@AV@%CE3SFK%HGw%+#Mr;Y&uJIkF(_+2<-px_~VdG)*$aLxVj zqfrs7#SOCv1F^^cO5vpyOEYxu{}AfgIge#nv2ku4A5Z-7+!n2#siwK{=)d!YTdnt3 zRse{=^9ngTi)sDN7J74{Sf5_v76(TpaAXt0*{sYh$~?2I6cJprFK631^S7FSSYctI zxSK6{NCF2Y4s5%()HpPauB3nXa7R#tt<+nr8~7BW6$J%jotNDfUVJfnFLJ$&qL&Hb z&iTEm37t*6>iQkT9Y7t3mZbkHf$8OwW%irTUL57MO z0yb)m)^_TFlDQ%-({Df=*Z)a?t5fB;ijMA}4h%~~&|h0a6-30uWCjI&CK6ouq3e{Y z3HsNm@s>Be5}x6*l}an9+J2B$vtpeyih5nttxUN%3_N}oSxijaG(IZ`d8zGbvYc|z z0h2Q_>dnlrs$NCcdHGAm8~!Ecy`(mJo6tQ04Q$gK$DbC*b$w)2D60OOvsHus#g$at zjcfY>(Rcix{B_;})-Z~MjAb47(d&?NDM(%u^k@A<`Fx@N?2D?kdnYPt|`&FdFnAT+fCWJ?)=5WmL&}emRCp+0|z+Seo zs5BR!>)tJKgg!J+)>qL_a>u%7GgcE;D4V{YHzv%_3yB{ts5_c?Al#>@V)nH0*Th)GAJT9R>ts30Ms|LnDzGk*$7YWtDk~r?*kt&K7k(C_}}z zFB=<-u(38at0y_MXrsY|v@}hpg=-cV=hwuoWXPwwYMEqoksh>l4*NjD4vuWfjM;#U&g?Rk&mq>9YS%34ZD z$mxs-9oPKDAX< z+V%{?Lqh?SH*Y3LlBdgr{+M@Q@yjn>6<6lBhI7@I=05V{b9mOqmb_XuiGKo8;vg(n zCn1dzemw)|YeXQQQB>qk(!VTjxBG(!e~$=PzPH=#XtWKcA}rZvqnW81|pPl%IQ< zWnk#?@>o@A=_5Z1ejz|)GNCtn(da&Wp(M+BmQKTst+Y5ASC>%$rGH2cj$26zXw3p0 z8U37e!A??&`?%?Zf1v80A-faD8gl=1pNOa zbCvpV1Ecx_*^eW3ZoO?1UaG@Y`C5he{ict-*(ru5N_>Tlugn1pcjN- z3A#*BuZgGUI&+JD78KhqpzW~1DM$M_pSnV;j_efZlqk6Ax}y;13axHvxDSB3$9CXG zV#iYbyIp9ny@>2-;iZ{QZm_&y~mHI2mX{d>g!Af^D5WfP&)d$ zYvscQ_Qq{!mxCk1VJyEWa|0hC)2P`}<|FN9KB4v=tizSQuCP$dZ{t@p!Oi|#hki;p ztpP4eh+(pEl5`%@mcY5u1^M}6OCR2|D>0z#4_2@jlM``=Q-O?>ZJQ~_UTxx@tAfV+ z(RVLoCpu|3Yi8+AdWrk2pAJWk*^KSki;C@j?;o{Z`+9`C%yM|tb3&olt~c5o&ML8hk+a#TMBv>_3)^wAp7Q zieJ9LB{ox-4^z(Oi7wXUskw-`)WDRw)!l=oB}--T%^%Xdyx!By-4pIODL|^9Yu619 z)~n`c^=rE4yr$dD>2D@;UeFYN!AEHs%-(ZwY7CZNlR!n^&@pI2gkkN?W!?e9sh5)UCOpAiSE z&R@MfLzx?m66W=Bj~{q!f2hYL4i2EVnnFU9gx7Xh{NO{oqX(S{58V6mL*nMJcp3w} zXr=7D2l14WB1t0qAKuf{mkG;7-VILn#VdoqWhl|+^jFN9H zERZIBfyhybuyhTE?#~S!PY>1^C52xTpqEE{QYf36!@FwN-?gdb?v+U4x=jQ%oI6zm z{p_B%?Vyi#wxmDV$iDB=hl4&584B6y z_!Ch#=lRK}FSpKlj>!KnDm)G|82!f=;QzHHFEVZo0`bD1msh{x&0x(A zMW`Y-i{F%UvrPES`xevH@%^s3`T654nj}4qn$^ElpjUM<6oX^{_{*QSH&G97NjsaxI1zZT&vUkZHt%4z7rA4O~|in{*eo!VKKL zjB2zj*PI9SMc3VDGvnf%#2>AEI@%pK*P`PfX|Nm$dI7c-m8SDz{Eb+bu8Hz6(WOtw zC?ut%vnD2E<}ysc(Q-bjjj(Cm5SJcE9L6`bfME&)xR7gdsQ4SVRinU_+PPg>CYL9Q zI{^#jm4!!ubH%|)*1s=*#N0-EEzV^o4Li=ST$S#PMVUWX9QCx-3qJ1SRH*79rSqXp z_<0plWH{O5E@nJ7+u#&0Xgc4uEMPTE-AK9)`O*Y>v4+?z*D(ne)bQ%dgcdBwXooFcCpnLs7j5s5-!LGMe%CE+SB(*K5gxNWc4ag-8W0T!eRqk3NpgeIYxXzHI zD*mihwY;AsNCazwTEiCV4;D4roE;TV`ZzK8+-}w6k)5t5e5R&`gCDxor3(RRsL9AK zJq44=&+BvCjURMBI1CAa)E~Xu-DOg`VQFL2h%d%*=~Yx?+r1rkf0*={-US&9f$qX( z`jY|&D{uSTKV-PkbKd&8*>`~{dA4s? zWG8`u)^OZ&#J2u8b>a7BF07aWnM^wvagX^nbSy)8R1I5_l?;r?SkmC2rw0racMo@y8U=KK)thYtmv zmo>F@9jEOB6=|!~gHEz>aVX?AA`h@fL*kC`L!P3xGs4ND=HaJzQJgWs2lrnI#(6G8WY3EoyqS;E;P7s4 zmsL#UgOgXD9FzG!rp%yHGrT^I3iCD`)F}>4Qz)My_bTZ%fcrY3B)&J##$7Ix5T{Xe z+?j>`8!(!R<<+3J2FL;6B27ftiBEs+Lh13i4nxCj2qi>ZJ(=S$tHz^4c)9f(^02!b z!>b@bcvs6!uWlXw%a80_=2t<0dxOsehtjjZm8kp8NNt+pg}UVXHgTh#NRH`WEPhA0 zamW3EP>V%S8UCAf6g=r<*l1_lrDgz@UYTu_o6v8WF`vZT+8Q55L z->@Gk%FBPiZ~j7T_Uq{2VEi>G30ky!!3-yc`Doeu;O3mT(&*6t^D+bAhI(}-cwXCT zi`6k_)4dzSf%u+fggp2;eW$|*d(a3uKCCNOo^bE;b6%!rf*vm3Ht_lN`98fN_shMX zB}Rjy$_YJ{Q1KMPSXB{vX&$pu-bN1&BhL`h#TSQ;eG?K6-_@q!MFEWm$XH3r$v^}5 z^n|zVQc#2vJdc=VLK%)zafTzSgEh`OQLgdT2L*KX&}E=gSwbK@@<4zfVOgnqbc!OI ziQi&+FKjs`f9Nspu!#vqeWAVEXQ$0t(DNHU8#nTLzoI=m$xFl55Ha5%3vbjQHvZB_ z?cR+9O%4~b8*{*3Eqp3&xVIYWqhGQyi0u+Fo%XYDIU=0^d`?u37&G$J`ud|x=@7?J z1Fdu+L4DVw(2Itzyrwq;yT@&dC(i1WIpKkDj7Fg(Q&s#VNi=amd)ChJ;syVvE5&=# z>grh3kty&D1z^|+mz-#_i!cQ9U8`3CUR$`|r_VP>+K|z5^A`eVR zcvUuv2He%k(vo--y1|G>1<&=;<%O!0!O^*IfrL#o_TuC|Mkq^7SE5t@Bx|LVdPFl) zkB3?Ed8RskSFbI~wc#icNb7qN!$)gCPvJA&%2@U}%H9uXRhT%!6x9PGhnQLCLKmuW za`Wr9MXmKz4-0WJzPAElp^8YN*yLv zsrjOprFm7w&+O~`)q_ZFQ@;R?A|-__F%rnt$g4VAZl=V1KW*(@V6su(Ch z;IV<{y3fkQ0rRrWr>nP@#1Gm#f>n5k?Nv&HuS13gG!$Vqj+!JC^`^`CQ9f84sK^!7 z*4B2mqHF6t<%n~iEzMRETl~Sq-=pusGtyLb?65q}h?OE?KD9u23d19+>_zaL zyg|~?fRZ;Hf~8SR5H6Z&$6QAHtc!w3CaJQ?A}c)zSRS0wy7#+XI?nL>q8+KB=KyN&}xIllH z4=8A>Jfv-#V=aAAD2_*W6Gd;EREet4H-AyTQE2@^dN zzj!0bbEtiAP;*$H5NHh#By+krRHR?!4Qdwv>v2~Hgni@+WbDqE6dOSB&n|?O|u{_|p<~cjq(vjk}H3~Kwlj8u(0dk@o?lR)H zDLM{aPaoBTgpZqB8_k+_Xipq`ohjxr*jtQ?oTQzL~5V-{lb;{ykF5__n`{*U+bYqhQ%l}1Gi6P{}> z+Yx~be6H)<;g20=KLj$n=T#PR!;o5`6nL%DKK6VGyrli@E8*o~^BI+Lx>0=%}0e>3iv&C1O7+a?`?Lfo5f+EHS}>SBisX zs#Tsx%1a27*mFQ+j>_H7rJq^ljE$|xpu86% za+2g{tbj)da5eG04sp@ejFFFI{d19|&|G@kgk0-ebc*x~18!lU#@A~QmpJ(rf62B^ z#dF!jj=z4rgI?hYOJ~$4i54Z!phenUdBLvHht8zAoV`0`rd;zZK`ZN|IxBi5wEe`K z^yR#eXAgJRL-&)4e@&Tn|CvA>hwm%+a%+sJ{`j5(^E?yu>7)wRl-U)*kcXzE`)9nRYYB>=`wy==hF>dFc6-IT^HL*%i+JkjY1Y8_HsAz+e zP#HPYbaobA+897&YYl2h&v98e=4%a`_vOBQPboRF@q4*!^9isL1WbZihNNHEFl^7_lY$z&Mk@QsG;q(WApduSUdH5|Slf*0@u2Su;~?t6yS z_#Ngd0fF7zxyY9GZpd3s`$xJF!Ym}3I|~QuuunribS~KD!$oGdl8wG;uf-)IM#wny zywy_t=)4DnK>kdkd^_cp+iEzdTNd3Sa(QLQcUor1WV5-hp2X4_flQ8hbh+8JCa<3CZGn2K^-S6)WtU;H;tzWdvOW+Y__Jy7&KzD z5n7V9H)Q)Q4& zVuy>?oPaczsNUU#MX@I%>q~M<-k3%z1o+1xCxJ_H=dhwhkexkgUgYc zR#5_0QB^7Wl^uI)*ZF<0al2tA{C*`6#p>mV71eXAdvm0{{`ISBgPr4IUK52-l>}ac z1=X-Qb$rm4)Q+j6aa3-6Nh>PiG24FFuS`?3TfeJ4DjjlBG(3D*fc4y3)R?n;p7lRs z-J>Ste%5T9k7XmS0U1Vl!3Z-z(T=etjCs!}A|_;hzyndo$yZpICHH2Kh>i(O=LK)k z*IoCBpyacQetfI$AYz3u@yW(&6~CGXvickz9*ozs!C(g+NjkrQV4oREPB<90!J$#j zen=(Pi6n`|A5GCgn@Xb66gw~mn}_B~hx@113vH%~&N=YbSG4DE8Z)ku*o>4uF3Kx7 zGm{%XjnjoETD$D^R@$)mIVz)O>%KG_&=5ML1p=8rJvuJwoELv+y%nw4*IBMq!~v-! z&hSagJy_?*-XRuu+fO z#P6?FIFCD#>fw1Fd(3z|@2-WzoO(Bix&~6rbcyF$;^;Q{u@^m8Zc6MuJDxb$8h_O= zHL(4$eKYNj|9eb^*-9jb$BBw#8Wfqar%;C)i)x&J*+As9ij=f$ZDRIO-FXR*Dm`Di zBW+QTMn~fY_ium%kM2@R(h9Ie^8<%zP&g#zK$gT7&W;O0;}Ztj^hqu+%vN%y*C}ewobZIN zUxncX>Ygg(|GXZ0UP!3d4KJ%(+#onGyuKhwoS<(ZB?NLyz}XVp z2o)EZif&>TPkOxZ`Yx4=lQi-BlWxFw;6Bm3Ugk!Qjty~2 z)M+iJ3pF`ewiS!g#vP>-@SEeUq3zaIxw^4FON%?%Nr+AFt=R#0^EUG&I>iJk>6RnX zwRDMoUklwG#!PIKZopSc&28ACf>azwO^y#S&6jTu z?o8F}uLRGnGP_S!grQQ7-YjMWX=XD@z-M-0lZH+M5yqFteN4!WCa{V^1XE2O!$XUh z+)>ZA{;V4Y-lok*(=GUQF9||DbE_;t(&3qj; z2s)S!t%9!`y*vcJdcMq(6+Fb_ko`tYw!((s!o_%~5 z$~Hi{KYPFlZC2inl+LZqzL2LRk-5`GsBdqUOtqWW_ZMBiAQ~!{gwGnl&p+cgk6kz* zL717E9nBT1$KyU6DCCzMN`Wx#7-RBGE1eOPYby4sI&6h$`%{*UUW54SIPd3zgvUx& zLl_?y#bfi~@8>#0yT#bS>@Qw*^?GF_EKF(Dw7Pwh|gTx97?nS5;Y2BbIS)K=r}!)Ww{@f2<0%lmdaHMUy z#cYL=t7fSsn4a{eEhfS9t3_}@FyJO){`quPXy)@b zFHbwM0QOxSJP zC9W}7SV`$IOU)XMuI(r~v2jWWPw#ylnHVoZNZeDj{n)yuG5dzNN?!w~l*JYtw~To z`3Bby=nnmA8$-&`FWC#O6VzK`%nT&MFO_Np4sC6L9KNhzb9^}8XgIV3M`U^);(9}} z11TL4Cdhs3;rW!qrjXh$+T9|bvCQRW4UVP9c{x;(N4p_yVTxMC6L1K^YbsXvVio$P zV!~&UgU&s)W7@qa1@*s(lUG@>bKF@%f8PXGhmdP3Y;x68RUHR?NB+`C!oELE|Ki=H z2kG0R^EY`3+vQ1Bc)bS@ubuEl5V%!-O^zcb(M@k}j^bz;WJO6n=%t>L)&3q>&*MDt zs8^2t+2CLcH_5(w*Q|PU$lzs_U@dlUDWLT*Z*Vj_+19!nf|kK{^0zjw79`ce!_~!@ zo3N!F*~}uYz@CGjcBN^ksV;mefMXL`{GQP`WtQCp82y^hUmqFbJ!a@~v0XtxJHA^< z5?WHLr!dSAT?DGYNMLZ&pms2nE((w1?Y_d|2Mu(s3!TXc4}=l+TdAwirCC)~SegnA zZ5qe?9wzB?%!wbFsD}!9n_lkh;FrCV8`tJHSL)U0Q|KF~D)`=*Tn!+av3*kuKTl!) zmM*k?OMFs7d|vMml&mHW>y&H<_2{Oi|q_mJv&&@>?2)U ze|@b6Iy(*=a`o)%O9UWN{VZZLvg%skZfdW~IKV`D+$o8=4 zu-|Y~kHmP*{)o3ZpGEMMZG3q<0J3 zd$nyXTMJse?F^(;%U$>+CF2kLV?4#KLor3oBJ|cqJ07Lq*^^!#+VKZZ8;2{^uX1lr z6<7U1lEnAfe8e*sP(p5Lb?nbbjsZ1de4&7$W-}ig!86-o1as!AiJVg;ZFlE zi4gCtd#5~#Yc-t=jyEBE$u@K(hg zgq4J}E2KLJsdskewHa}_(YfkMTrKksh6iR-SulnB4~Vn51OYnq1%KA1MR%v^^DIl7 z$lagbTZR{}h-(B#kibC+6!o}{`SiQNk~jwbn?gJy8@`cV4`9fKb*Xl2cbthGu^-wD zKiIe_3d?dqRXOURdW$$eG`%%or6ul8M{JxWNjIf+0#z#E@SV@r0hH5G@QPJ44fS%d zNyXUW9|m4JZ*wM-pAx%zy#S=8v_dg@54|WRe@e*;Y=+xfgP6<5aN);}gUXUNtGixe z?o<9N2NDcps48<3Bc{FO2ZOzZScariTo>|8Y@kc=atLSaU-z_i`t>fJa4eUTk4paI z!WHr8qXBcN)Dp4x#G$^b{Dns6R0_a4=7nIDh@ib$Cao;lbIeqXPOr&X#O(;TW?@3( zi3gY}xcP}Xe8CS!FMYAUfQ*b`mlzjd7V8fjYwQ_t@F}yvw@cA)*TrhZUKqN_%{zO2 zMR#gSP&hYN<$vZZ?gH7WQT!ya^OA>sB&%pm03)wl_JFv&`wYHe0lz^$*@azn9T*IsCxuI1$B1*{4R=JJuV_1@H+2qO~P)G5&kQujr zz4Cdv#M~(5B@cQ-mv#)wvGt&83WVSo(Bn)q4+~e zv2ScCyahU_&o;J`C4Y%sP#sXn!6&@M6!k)CZK@|6y9Y{v37RXJU(|6Y#%T7(G0pJA zg!kfH``>4dm`|otEUc7y0e=`AvkctvT%GRE4ULU8yqT+!6lcy>8~+2z-3nuI{uyBG z-xt@w{=I%p_h$D*?a~rwbI$4yAt2Du7{(Up4H8IZ$=9EPXYK}13&(^F1B-8ERzo3o zZMp(SARNAuC$O_TB$U}_Pt|7MrUX-6uxLgy{oS<}9VJQL`;l%lOJTrsp|;yVb6AgB zCVa^?w|)A~r~(g#qT&(L$wV`S{U~KsIfB)5t3Po9n{$aZer!Jg1BY9S8`3^R*|W(- zcGG}stsM$vM{KcvZBgnc&I~ns4ltz)Mp6Z%rivc(8ePfLU1GZ*vJ@5SabhenV@uiT z^}7Z8DfvyGdyjaJ!X0EL{aUp%WExm@Z@v1FuQhE;_Qg2lXI zvr!drqYvrAes{+xEoB(HrKm)ht-X3tsgf+S#RTW2x^gLz@ivY~8iTh!ZPG@_F>eA> zZuvy?aWOB%^c(3_!zH@jgi4B3{x+}G^{~dsPZ|z62m}&i>LMp7Y9I}p1v$;F`TbZ& zhZ66{OGtQ5Nw+Tz9vz?Qi!+Ga-g(WF8FJjfB;K%{J=F zyQD526T3)tyt;4YBjTj^=-m6aQ5oe}<@t#O7#l1zNRY@CdF!L=H^$q8V~&=Y1_v^V z5gf_2w)Xi%So{9GR%kd$WuO~6@yMUwPf@Mw+wCzs4v(tyu+#&~ZIzz@5R{S9A!RfT zqB;#}DMxJ|i)xO2(ii(fUXipVjmVsa1`DYSMEfJjaiQS?bO!$t{0I|Z?HJYE(~)Qm z+4#x1N^D$HkTRaFR7h-GDoR~RvghQ`szRYyt8ZrH`b8qRDfCl+YD3wd2z(xvF$yp| z$>#>{0taEP>(u_oPR!shqn^J{nvX@e!n^*h}H5l+pJQ z>3X)l$5^X4g1+BwM$VE@r+^vDPtR4~9~L7l6FQC-f~R9i+~c$%xc}{Q?lRMUZ)@bC zyg7%#3b}qXSuESVILT<>p6N5*Z+I-Zlvp0DOER5bG9ene=M`=5&A)!A@&H*BImb!D zK}C*4l6r1ucq22jvq@*J{6k>z%hZtK4zcn1z#114uS(vSEN7hPP*+w7i&!1u(UcGO)ZJQ zXzk!E=nU&fpsoNS=6cx^-T?T9W@EMBM>_qLG$M3fzYeOJ@GA>x4eikL)O={AC9%&2 zNDexAE^=rnO`GKQaXQ$}(Kom?45{a6T5+&;w4m#@5_H%mPPc{sr$(Ti!*7 zdXqhO(`}E38s{3e2ZPbU}M5}CU ztdm+I_==c`?!jEcRwZbBPgSU$DZ80 zpI-BX%rFTEOoaM)BO6`Spq>^??BENPAMCxVrslrrK23 zGKKjorahza2)UPW9iFSci#6<;+^@Q(NrFMk9W+B--(qJ~!_^dzEkP%_$iqgjG~l0l zC!eGa1q0g5$?T7}_2L#^9caJ-wX7_zUP5P2t=*Eez-dazWtT+_%(7w7q}`aHla65u zwA(XEGhbedBpFk^vvVYWp8de^sCX~bcEK~;WHS=&Imw&=Q_v>C(3*V;)ALEmv|%fA zAl`PxGrXxTyPSDH?o&rh5ox22Ff}1rZpX;`;4kKucM~h0= z%4ariPO$d+wWf_L;&X3fctUus|{~Bu2ORXJ|91r zlrlp$0XwN~E8e&+=0L!=G_AVE7LmZWaBd3oiK=a}8!FiF3kkIWF&D(QN}HmTW6DU3 zegx21Dn}T9%E9n}?qpvZMovLtw|@O%ah+OU8VNn?p#PUtnS|B;Tpw>;LsYR2%DXoc z9N%g~Bn&_S2FB9v9>ptXO>FLp3o09UKk^(sh>DGkyg}MOP!=@97O0S`oH5~U#0;ZJ zc6)&1O(92k$(?Y?!fTLgl2n-z_|gIC^%Y}m(7DjS$vUsvzPU{>zLfuk(C`UKWW)pFf^>x~b0rhskc zfleid=Vqo66q-wNh4U@)gKcv_7w_bTd*$$Q1K|V3d+?-hNNXvQ1m`HbC~mn%oY-PG zv;usVW$u6;slOjXq#PPC@%K5#som5Pdb(UoMMAUcnpj7rR+a5 ze1$2l=OL6^$?KEMQ^ar49`h2}64>^JicaV%%wJ+$Z`y%4>R-=7L%Bt3&T_~c*QCrh zY#8d=#wnQ>9m*ZnNGTYSz$O(3VDf$dHIaZvH$v(`)*$F)VB~xXFO87$oNrCrGOXpr*c5=h$bsf2f5;Hod=MDzP)F zayL4ggZMq*@)X-qoXC8^c3fl0ju$oy<~X^h<$lsT(7np^)yz}k@k?=1buom9Ep7dz z#@(7N694>4$$~cVY_S!&jjbe%SvJHUY-t1Y+pA;}K4^h*MD^6GbrGb>y&)aBONPzpU(^3OV}HT;-B1? zd2V}uvY@yd=!IntnuuW1%6qOs)Lv}1vu8E#Ai3vZ|48?trui2@@4ipvs^uawl|)#M zk_a??i`*4*$?iOW7NvN!;U|Fc0`oIm@|)qGJQ|7xfT_pLi60<7vHsJ6OtqZc_cmr2 z{@7KLt=wM_KRN!H(1q*JBw_V^s9ls=P`H=~_WinFULJQv`_W$T;Z7ru_6b%wniS>l zitp!iUTLh2@xo#aI|-}nCk{})Po=8mELwm?9N&veTUs*ErMiF*_fFf`llb|P#1h}X zvx|xh0UGX6`ns%uK)t~8SGoirPuJaaO=z3_VWN35Klu-~YTs*D|Nint2K~WV4n=GH z@%|CbE9tWp)Y9qW*V2bFUsc={<^TF{aNrf{mGKMiQh1O-^}rXc>xH%O8`2TdZn6Cr zxi0fb6}FI@){FcDF5h&>T233 z{v7iSVG@i-zAIi(i+6wJJeuaT@vFi6FQ4Vr{S^d0wotl=h@-!F?4zbNl*I1nHV8BJ znNM05c{YgKdaKz|AxQ1Nfc7!TUTW|+at}a_VH$332hx_k8U%~}E6M&1$nrd~k7=r<2Y2hUtYBEOCOILSEu8LM zSuDc2(zaV((01tvQOK?9pgq^gAIwNv7_GNsRG)^DFwgR$AY zRfd?c(~EPskq+%bWpsvDj73{T@vHcc3+c8E#~wCanRqS2BT{&PT1p{{^NXeGC~a4^ z+p^pHV_v(6R?T77P?>M}#3j5non|Y%l_Zi0-T7%U@Wa56KD?-K+|Ds_{!B3uv|mhv zU=^R7en#&KB(*;Wy*KWGN#!yAu@2fptOR!CoPU(ogPwW94`6Z>ZM2DRH;hnaB~ znMv!mx+-L$x~O`+41E6d-qRgbhY-xa?SrdNBe^8>$bVOSr7dD4IW!)_A`A``7eO1XH!D_p!`TMs1{Gfc)9~_o0kJKhEd3-D_ zd)K6okH6QfimlE4cjYovQs!9nB8x>mV{}if&-&f(4138)>!TJJ0Er5TW{|Hw^!Zz zUO&ZT_R=+Ar%OCi+qiVGdwRAN@RX$T-RAN&EA~A&7o-NZo2PK{hf5dPx2}(yDOdX? z@B6V&=Z@*W*GvUxA65bLm*T)FzI|1xR;8!%p8xu4ZYmcWeM$+GfWDa*PX3p4<;1s8 z?aRr_-xZztd~9mC`TU>Jp5Vn9H~NqG{+c*Z`PS~Ruw}BBKTpfQ9rk+0?ET-Wpz`rR z`RRg(H?I?&3S56~S+{3n*+tc#zrL#Gf?S=jA82=Z8~^!T(?a{^-}^jm|L45FlPpg@ zJDb`ImY*+d{<6P~_q^5gP(O=x&)5DubU%CgdH+{mH@Sg4wjsY0Sf{b`od(I@QUtqWLIzIxO;^>TV$-LHbf-`=0`v%3>;51c#p*%VG@RFSpWu`46-Y4-B>d!FR) ziv)&j{@tiYS|AtflPR3ssA~J5;nkw~;pc3UpD+D+XVBIuen-f9Ml92pa~kXCK}N@7JT};xjatl`@Qh^U3-pzGfGV$&)iHZvfR@Af7TrV`@cr<-&o`gf zjn3L^^{M=xE@Z{l|Jge@J%iS!ZNDF7`TmYEF6b=#Y1v$e$M?0>9X|Lo>3aJjm3F(~|A zbnoD_4Y|E(c7D$84^6W1XYK#3{P^2`%5G3kp(h`;1Jd)u_Vj8XoZZ&rL*SaPJ}RAjn}=zlhlp%=Q2fa705W&b3wK#K}w^^syH zWG$1&BXH|jU=n1_!Kn0TumF?IXmS|MC7`lpv~&P9-55qo#UWQJevy|e++volz)=N? NKu=dcmvv4FO#mHv4_q|ywD>0U7YGF)&c(d6TsE-)~3xf5PWgA7W?K55#V z`P*GHvK*Y9U2)U!u8tpip8Ec6AAdic8EP`W7|?8!mS7E)vV+XcWu!9- zB-i;8Z(0IBHfG?CR5g6teQtJV?k+P(ieEpJ=f5w~gOSD?bss~r$f#2I{&qL>@sbMy zHoTT>L>}-d$c2!Ek@&Epf>aGZM-G5LTSh3ciG{63 zq=N-YV9>{SEAYSXz))~54ALdZoET=;Re3bN`5!l65dJW8Pf9>t{0iIRKjtVCJ9E#A zOWhq*32m$#J@(%>R}GcaHuT~*lzOG`-=`RcjKUm}^6sDb$Ba}X9Xn2&WYmflSB@V2 z@5@v}E4VF@e1=HowvySo|31s0cU!CNmL^uTn*#zu5{!GyPnW(Jih!7F=c%HByQ*= z3D!OH&s(!NUaf>$x??>Z@aR|f|8btd?#(1E5t5XrHCV9n zKXfW{GVJ;ZrUAqMVac2K&|>OH_S0rw9lif!&^BpD4&biRB0*yRkdo1-C+^cRkfbpF z|25yd7X%6Rut}6-=bTqJ`dEDP&A;71Myqs!Djal1H8L(lGPg2;fkCzA>8HFu%ea~+ z8nLGMw_gJX8S{Xd=FN7@c^Pk6{P#(~2Sm+ucyiSXbfQUJHvf2R3~XPewL4=bk=F;M z9q=ZO<$rUWsw@fre-1|A8kf=H6#)hYJsLZbof&8N@}I)K!!8AAvsgse=6}!PMN+q~ z8z@Q(B*k2XO!$X1Rof+5)S~!n?ErHr`uh_u2;ssO0^^>LV$S{}3x*9(E_Lz2IJ~s> zIJ$=u^tX|QA4o1cbX1DTMe$ea7Pv60g@2=z;M_YqL{-%i^(_@oK72N8UzR7!3-Ds4% zbdAvX5XPsfGU1d4l4GQD81t?)gxigUWLF3^w9K>XkY;&BVPG)2q0R_+yb{&O28KaL z4nT|Rt@5nOkS#)Yy&K2Uyy$vz>l2e7XT3xR%F%c$sp}ib zx0B@ih%HH?ut^eQiE8bOEz|Vo+CA=C*yVB`_jv zVSJoJ?%K6Zu(BZbiH-0iSkQ=r}<7d*q>*3#G9}e zhjd@6j6EpoIM+OLuWRen*Y`^tzb#KOxJVfyxzthiot0v{$B^A~NZgF_Q}$(-R!P9Q zPDWj9`dZS^tQe^19-!#Xw(YTGhANqLkOL(Clyq)I#95=TeF5DB;%oCvGUT-a)=tS*0eUu@~9v^iSmCJ=t zm6HoGN9Ddo)`xrgMd2Q~m^Q}?%+CGUExjlii#m``{}A>#o?i_VLQ zkC$xh3&}h`aJEB7;aU($7&6cLYm-G;KkZI0YX1{PYI!JDxbeA288 z>gNZgXJw`~0w*i&gS$GqOmw1bCCSzSuo(7jF4A<3!cbl;!#DxR=C z@@ouzw3x2fs~-EFxktTQ^Ak4*PG;v}fCM+6-*%eR*~Sf=G)wz8|Jm*2uFmxY{K0?9 z_DetDq|DLTtWH5^aM@0`bAT^C+ywuHLgo5fK+&ypKyv6sX0DMJE@d{$rA= zoq(6XqtN`EN%hEUk}he9B1#Rv`CBGr4gYZz({e>zb13L=-v~+Bwk+3Q(BbZaS;wmE z8Q2DIzV;>QjIfMa6?RJ~wP?+Z>v%>>1)fln_>XmDxSV#n!PP^H1=dhjk7yV!E3}Qu zmU7&wq#a2_HrcTL3Sdxub2VN4NVfs-m4)oayq<@*>fLIG!Z zVpGNQHs)#IF@`7;&)doXiGdM%J%_p{oG&KnXc%l^gO@lcXtzU ztm~?*#qDTiL2|}*J8Y9pG*`GLWiHqD$o=i#uQqb!@{q)E zYPRWeaZRMlA}U5o@C7#`Ifd_v-_1feIoZ5WzI%7WUq6o~30A@Byj@BmhkVKoS&Pq-M3#e>_mVab^;(z@q+U zhT@49OgAd5iuB~VMLE{`tjJM@AqSgiOF23ET-uf`kt5wh30Hn-3_CgAy3ig0I0Lf3&tk^`P!{HlOg1 z76qcAb_&I_zFePi`u?vX5phv{0_6j9&n_&Jzt9g?<}y|EXl(s3WGA5F$leyoVmYZI zA#4kgBBPG&u;bUxPullRL2V^gUmJ@|=yU zVb|58Cd2GH3U7Ga)gBbRr+Bz4*cC#n*EG{7I;b4h#l;H{Y#)c$><9CVqc1irv3|^f z@1I?)5VS?{(+C8Qx2OBmm!nliUGQ7h$Q*rVW{J|IxMV+(AZkWfo|VEVU*=3a_3Gy(j+vyHTur$;f0xKVxdWC(v`6Vy%*Dt zNgIKD5*9**D6yn&QW=Me%6|;b@FF|Xd>jBcMhfbiuHlY&DeJsR@dPm1de`)Ve=|>_ z(~b(L_aLCvWp&tSYcsn0*^t@veYFQrC-*0Ef>_&kB5g59B(g{hgpXLMa@|hr+ZrJ$ z)C9K+gA8bUu;Dydcfovj=ep}-_ZJ~UiF}NtgtVCJppD%o{YYDb@o_oLPc08saG<_Y zS)0CIXMB&-(Dn${jZhXd-aMh^cpx<>Pc#_i*j-toX~iD(MxfhdDN{X7%=565 z7f}ejg+TJ8IJ>~bX?%7PIp4fxNmVoH_fvc6gKw>&TX-}yoL`9V4!ALPy8sgVUBAaL zC8rcm{n>`oK%Qh-$*ae`1B8tXcu|c6kStLu;je!KF~l-9x8cc$UWL(Tll@+ z?FUTW{RzT4aQ%c!f0Mbzu#G=8iex%GYf2uQxf?px(NB=!CJ`do2yAEhl9v8N3 zNSI<%uHZ)K>K$oy6)(MAds?Gq-e8#SgtEdkY2t0lEfW)uFJ{+Bd*+6v2I>zjOa+ea zFq&x(-srEgIcl1FI?rB}?8RprWb_EK*`Zd-SLe_4#Mpzc~NV5QV zdYAT6)5^SOP!{9&tPv5ct1Y@7&@AkrgykL8<;5I&y~H}v6m>nc5A=Yrr?;8u8=(xN z#TUjJ!{6Ti{jtpG`}pD-C(=pKfKZ$6t!e_Aq%g-i3!mx%n;GRX&`fQ0M}v5^Vu(_( z@kMXrS{-O&UZIUrBjnfbhhkPKWKuQpjegBm3lT#&ErK4ZEc(3=d#Ktd`X%k7}~yrdDI_JkG4e%+C`#xFwFkq>G6^;blEqRv$K zUHluP@kJk70hL2ezI-7tSdwBv4m-~rv#?;>Xz@}gR>V<>O$a~^2YkIB^TD-x$=Df_ zYfm~oh0FI4u=Rnei7T3o{_5NJ?**{pj-NlX z+FM+IBUIw~t(Barr{OABt)P7wHZN)5E=hpH3`vX4ICA26j{sy71-07;Cy1FkIiUbo zqbaR^O*YtrBg{(N@Ytzu%gwBL9cVW|i(WoXlY4+1YBZHpMO+gwULNrIpBX$hO@5-TV=kBH&TjW36roNhs<9 zK~9pgecmef;o|w!JK{GVw}_b)P$)jbMaIPs7aSZNiOGe8@Gbi$8yfXJI4h}EZGVd+ zWI&Qe*>nR9@D`i64ll_pO_#bF&CG6hrvx-SU7_YGw}{edWB%3wAc`OEZ_Ypu!#o)G zOJlW*5eG)%Ne1++p(v=xX3V}YREbRt_?!(P8?x8q>g|rFA1mrh(30$9w=SrXUNEXw zp<5O2e^(JgT+4_!l+w&U%ge#om+**eGv(7-?@Zh*#|+jQIxl8z;tckEV_GSZ$+cmm zg`H!2&{hK$70B~<^POE?DE{_uI}TUF0=E{6>c*}*Iygb*CC+3r&~7(3g!h_P`aCjw zp$u8}6(Elb3LTUkVG!22|7-W)e!v5YF}~xD?%-=yl}yz$#aQ+1kf}hI@yhxJ-_;y< zYx!c!(cYzzn%IeI2siZ+ilCcbIQ06I+WtbiADTnf{n7-XDIh|;ere(<76b;f;(6ii z_uAXr*#dg8hqP#5$L1Uk{69$<@wywj;LRptZ{|9gY`FlG6AU15-MW!@X%>JA5sFyz zx3b%R+0K;9jb|iUA6psA`|>+FrNaRh7f}rhZeww5w1; zMe*eKmR}Ph(&XAl6ZInIcQD$%5bw6jOK~pVIgZBsW?#+ad zQuV5u<=9v0vTiZ_Fyd8FpOIWchfH0-c_#q`;@}(-UnyE|BY#(klNTRk1Io;n@8favP#)o(jVrF85x&U(cUdKlFM z4#TId#&pRxTB)3HSro9z<>6A-{J!;)6*mD0Q;9ax=F6T1j*B zRtC70l~w_%?#Oyl@@G9jz9%9sz`E8li`cH@pXHu#p@sGA&ERV6>_u(RH>#(~J<4w^ zRBh6{C^J9gGMN}Q@QF==)inIqTuoivt>-1i#nC@KB30S+t^Dcd0E;0cmn#;Rl!(?V z@dQk|*H4MpPXW}#s$M!^%emd(55z8I$g-&66xTnCW7e9EVymH+RZh6!&(~kiiO(Ev zK*y0ewiiQ~Na^={-U3mTLEi0da8+I;>{o!ZI(&M2&{wx#c`1V{+mlO>27lO~V6w+y=EH19Go(WHAW`C%%<3tGO7Mx>%UHSed#Qsk>O% zE{%fZ^VFu>Sy^1be$AGi(YZG*8kIqVAt~81^+)zzeUPUek5q&%p0{FSVCcWCb?4L6 zU1mcQ0izW~#T+&>YIvM)#@B^N&Yw2UBkv^dzci(VtW063hF z`Of5~`ZIl3TtUBiEt2XgJCwl}P5(sk&6JhnpqR}5ue~wCcds=FK$6q^=VeOG>Mf8) zjlL;7?1!u}E@K%F<~i?Ovk5!jB<$Dvo6z=P{Y;D48RL&Cc5AAsL0gbL@+=OZSaPG4 zX^&^fE!ku1+a%piI9JWrc}0iyfjN0c|Fy{H={8d}A#F~iiDvbnZIWqr7>k2K6l(tD zV)9)`&Pb`nB_+Z%JdnZkcX>@cZM)f*D0T=nueXPn_rLa_WM(N{2b>Ri~9*> z^}<=vxGUNBk3~g3tL3(2x+1|s3bGQXl1F8WcHx*$529h@5n~DE{f9;~pn-M4G#ujxHyn+QjMR#7d46GOIYqWS*JbtvD-1MW-eH|@WBFw z!dvi3q&%iSe^CByZW1qNF=&8x)!(>uRt#WxiIJ4-u1*k1fgl; zA96tRTkh(X5c_-xAad!gJbOao@sMcw(>7gSsUeBEb&fjKr*R{O?oiz73RNKm5fXbHf zQOQ>RgjMJbypw%_jpzTa1uz3#jH|5MnPtCc$>)?9GKxG?o|xdpKxnwbv0QOee`dyZ2OTWYHo+oy(rCU;|5~XDSpssWTRC=lydEtia&e|a5L=Fh2t)-9Ct%*qNEiO9lx#ze%&<2hw~!J z5K3D)19x7<4*(ceiMn%~Hg{0Pw9;ZX^Ek48{w8#yQf6r0x1Q41eAri4TrN7yG3~#v z`;z1{`8b59bNmFb5edqr`mh+M~-GUkiwJO;P z&I@)|?kLhLDAc1us-^7)a*B!wEK5T8gUwwSappCY9}i4~@#pNW(>sX1o%ECUiFiKzzDFn7U_nmk%)}mT2;TTs{kG z|8tWgNDleo>7G`qoGm=aN0?GU)&&hVwId2#v3HjS(pm1qg(@J7s{(n`5pJ-OCx@YSPMa$y+DQg~Dg zee3W6euf?hde#UilKfmw=AP#~*B`Jt?tNwP+r=o6=TSMO0d`v^Vo9Og3gWV=5+E?D ztgquvc=4mnyg+KG`cSr|bATex?y(~@DTVvUp{xKy>QaBr7`6tkzQ$u;YI#>eQjs;| z34A69()&Ru7t{8=?)DYe$xjh&uXYM7&`?6=DM7_Dq6&@6#dSL89ewkA#Gfeti}z(w zixSte7Nrscc&bGWbqTBs`37p!tcil}vo5wp=fBy)al=r1R1)_DVm{RL0p7BftT*$R zrL7l1Dt$MB<|9+*(3WMaK{RBJjOz%5IsrrG#8n$jd0`JBUE$UTg!JPQS4CNtO#BH$TEzIm7}6QnSGM>-aV0 zXlsFX{~V8bu*w1*vcD6oA9sxSW&ymswsuggd&TDCofg1-87D+RWk^^#iz;Q1VLtB9 zArteoX?5tk;u`zy>9-6tGj6OaSODEjm)0g3}j5PA4H|@30&9j4BA>=>UY*ep3QR>zWe=3 zmw#SP&T_(=hwc7K#}|(bafQvE4O@uzIkC6K(0mx~!9+Ay1{|u`aKPhq%m#(m?E3Y< zLsr7$BX-+el);{1sB7ZnV06moW5-Pl_>lYZv@~j)xC+ zYq=DNTB$4j#?ko1n&5NH7+Bb#~Ckuy`0~V%0nz$cv{Ox_>NNp)3jxSk|6AMjlPQuCxUi$C47rxbSzJ zH=?88CNv~SvciL-v!cn$de2|bKUSU85TwRz}zulOGv67P7A7Zpi>_#$bE_t00nMmlbJ~NNnvF?@W<~)-A{-r?ayC2QIf?Z zz!{b)Uo$gQtq+&+Ft9ykFfddCYCF2$YhC>SDea~={pe(Q^I=V;mlvgv+ce%E%Al8e zRcaOhhd>pI2jl8rEY;`K507b&n8)OU;A=0IlV4 z^N8cztOn95uP{G7(9A}+)fA($xpQ317GnUyzba2JZ{97_xvHq47S3h6MEyV5Hf&7` zmc7FxrxyrKs#a-sv*#JSy)*8alY8R$A}a`ox?CRV=3%71G%Q}%>{V4QTlzvyUW4k& z)`B|hiPKpYlqnM7CJ30t+aPro&okq|197$yyr%?YN!TVqpCO`PTtnbN!Juy65YfBF z362~o(=CbcO$wnpXdYfO?5ORq)$;BuX%VVRxweR>>GQ@i`t^OV`< zQx4{#3kM~W%s*F^_L)c*p{>^GxZ?hWloHAZt$Hi*dTXEzCc$8EKn6A+oT`{pu5+~y zT;qym`(&zM^9hp_#kZNhR6!4 z9VEzX07P{|B>?~8F=C{gZmQt7I-(Y>Sp0(RBY$N5@2Avd%jfa?Erh^G6MBV3ax9t{ z&fZdBTs+SaG~Av!Lu6;SXbx=VFSHzudcVGVK}h*(kL)P!3ASB- zH*Ei`E{2)3EgsGQ_u8120ul!C(7rGBGP|)jO*jT}wShFh3>Nk>3cWiIE`l%F{s|4rP)de4ln6>5P=R*keV~#xkr$lq)Jk#771x-YV zW}Xjze4tenVvm20dU#;8E}T4wzR1xmqvK5Ijad2I>02csaAX;|GeLG*+X_6K$!TJY-6+iSbJy zV7$w7c3t#p(Muyjt;Rz2^Aa>ewEgm%`|tB4qD8P{s<5XVVQ$zMyd*Qg zW}U%-!@uqYq~!Fl$)~G$z5{l@(mpxOZqS7298(`}Clh;7F%Sa4@YXX-ZW3LMvC4%7 z0&KVNWv#Gm%{6j0Nk|@q|yc4<;4c2}K_OFoJE3y1kGTw5AF5l3%Y5z1hY3*lf z!zwB$E_Pt`GvkTnfZEYxI8-$wp?g4)lg(g?o(G9F1J*tE)Nf`*j}U%I(fs( z+!At5QkRJB3u%3CW5YrxMoO&n8+rZB?8RFiUP+NH`nLRxfPsD!BOZiK3imF1F24*~ zMe>uzt4wtjH?x$}HXbe3L9R|jXkuD8Pw|T5U%O!j!;!|7;b~pv$1eDX9MkFzOS_A`k(-)=Ta4~_v_sOsBemRZ zXHB}nc>BL@ToZIa0LO>1r5N}ILHwQdH+V+S6% zb&uqyBP`48AM+_GsnybH*GWC4X83yhAZ`Djy-z)GgN61AQ^9S+f%M#30T8+AutJC1 z^Oe@%P&KjY0ZoU;w}~G@+tZ#%sTNzJa%+HwU&al+-BP_quB~NN*%hva1MKW$rEq?2 z`VN>@A87qBs1aRy>B<$$qT5F@Dr+E9nkt7ouuSYWNhM<+t5W2VM>{v7oMGE!6Yxt2 zh#{qhwg7sANL;Wnic-m76QS$nM{)aTrKbs4s5dvj*brJ0Vm5n06>w}+{R8fa+5~=* zj?P&o9JsYHDtLd2a-k=v4#@HLg)XFLPd7ItECv6iTGu!dcQ>+SQw88vdW@H1W5l!w zIzSyDKXi#;2)rQBIC^!>-n3-tVHv5h(` zX~f_0+zDHL9gWcgGFTLf z{dS=*32AI~*j?}ZtP@G7dD1VXBv0qf6uBbNxM-zqw*SgP+M_5<>DBO01z$JIvim-@ z3gi)WMDxZCCCb_zAlwA6V=r;f`_x+%#qRGk*?1Jdzf`Q-9SH<5+!5?nf8Fg+)8D6F zEUoMl@A!~kN8bt{WAu_oXGTc1lLeOUb&thOcf{rceaXVzjPyTthAylBWum>mVJ`z2 zsC&2>DZi}MzVmdbUhNcYWz2?K9&K24Q`={_jQ+39PiE>MW*=p|MRZo}_N=-B^cEm&jVXnLr)A3EZc;D6j&-dZ8)WF&8Q$BQd zHNNj4koIWF8%Oy(b#<5<{>JaRZZ?~mkoF>N3rf)1si^MQ?H)Nqr*JM{J+s&0u;7-a zqrR4C0oRQL72>yZ(C=8T#|IyA?U8LbzQQ@N3lJ+#%1}?dt>&5O( zVUraWQBe1+h`CSQqb_xzNk`k(N3FflS>)V<9&p?>HX7sdN&zu7~B z8(%B79(o)IkXFX(!O`@6b2ydcXGgM@_Z$!tKZk!5IO1~8a2eDU@WTcbCz?*u>HCcTN`M=XZIswfA9rzh zK~F@eWHI$}8t2`{?6?%UH!r7oS)Bj39)IbF4)PFFd0+ja-W4bY8|P5mAWKIfE)KsI zZ&2O&SUPEUepZJfq2O3V%xc3mvtfF*eGc(me|f%#yAi+Kqlt#vMU29hChLJjC2dS+ zK->9Lt?j;vMU!$R?$G)c%+-2lOzw!#!e_K7VrTtBn*x_pn+`;O^$`Qh(risRJ_abY zi|&>L!jslrpl^nm+xv>=oO;_ym`t#SKhNza=6fOYM@#Y5)~Wc~p)Wh`MTQDxeYZzE zrq7?xka&-s8Toi5=ExRFVcW&zs}#&-)ZlfrSc3)x2ubp^lDYeNPMamgf7Yt`{S>y; z7qSt!xpB0xur=Z|fVf=DTHN1_GBFs(U+=7Rs|OlRAW4;?%N<(5{wMZQbL$TE;wtIe zQ9!;!ZfWyqtf0vkmkloZSUpGaUL&!g*k=%C%0{@&m>#?qn281Gi24W7iD8+=;*A+b z-XlQf0w|48uihq3S;GVUBz}H)-=7_nAeCy{5@J0Jama>L(b5g@0TE&yUm5FMn=@D2|~>%I+Cde>6km&3Zz zrOM^!hOm~G->6w6B6Rzzbd|FjV9O7=6s&Y~qNMKJ5ja5*;SN+}o$^aCDYePQ@`kA9 zGph(K)%;&mRW5aJyEXbIOrX|07y){}399iv^hrR9JDz%lZ!~!QYx~($h|TAt!D!ng zjOf_bu*U$Q_v6xckiE`3WmQ65)KCNHdC>0n-}}zHx!<&7NMfAx(DEsp=joJ^-=khm zhimA|yWf@25wl7wk9%zoOemjj*(B&dyI@TT~tK2l}iDF3hUZy>=HCGpEk>U5r-D5KrA))n2?81%%4geq)nps?vGEfGWsn8l==tp_?wxm9~1Kp zih%M?3_45a~X^$(d9-<;xA;nZgGr@SR845+Mf>an~m zKR^3e(6m%{Ac@7Yt=Dzp-bTds#-{o$adH1ER3HgJL;J+%9aaK97Cki9@BD{z1zMK? z0uef%Rw6_IigRAG%LhDf0@_g$gPf_q)b?DS1lK+tbstC1i<^~APffUvcTqLX4#Kzc zdEy|SytoR9Kbtgnz^L-!d;u)G&9XL$6NRB#NH zXU{|wJ<)|eVUP*6>p(;6xv?=&d=XLQm()#6;l09#*Z26&rvYt0Z@)+13F*hR{OGTo z>#lL3S~%|0&ci3FT?)5I_@zQ;+mUJbe$C;RBP2o#z_uB%z1?sJc#FO2Fm6N&P+Vh~ zMVDyWL!l1Wou3`%ah9<#tvfq7ECNVqINvY&^H#buZdfoK!8U+074gl^+0FmAbN(JIHk?nylwNq^&VL6r6>GFgVwrpze`BsXQoUNusk$dCv5jdq4@5Q!$GoY0< zg0j(K!>YL2UsH9H2F+@+Ne?lrHcJoQ%Ei#!GYtj?DD>*X<0lrQd3pluS3T=5v9TH7 z-2A_$wJy!6rGcMij`VVi{FrA8-b)CR(&~9wyBD7xm$id4IDOq>Q6WweefeNW7NSuH+-T zqTo&;$lh|_%cY45d>(E?SC>{IA@E_G|z5WBIFx(V1N{r zLEBypKS&5dyniGR)ZjDrghuZhx?l07nu%?mNd!~@WsXv zN~_DoE?<>+>Zev`INBCAL#-xrH98BWauN`$;4<|5rwH4FJ&eaJ? zqY27ZDFW}*{#^?YH>iB`!5)Fnz@e_%saTpm_Z4Ruw~R}0Y1b6Ft8r@MU}?Rj!}m$pI}?MUYyDN_rzJ;peKh8fnlP8luBlKS?v6{J1rPg#^|5%0c#l0|sxQFoDB z5~YQ_A*EDH-+z(uZ`UNJU^CAW^MpWq+jwu-j>ejblkEt(K_$KAp)GzPe`t^*M~J%$b#=t%mmS@BcuG8B0_~QCn?Dq-#plK> zgoh|Ar|dVIl#QQT|Tm|tS=cM2BTwu+-@pThb| z41nE%n>%;0;92{(heE=_n*II#@83n4xVe=)wa;ebxz(RM#z5aS8ScjM`=h7Vt*Afun{SctVX^&(46hf(;{iwbt@wbh#GWz zQF+tz=`;4Gpo=zfzFflo2W36EB_Aq&*IrUe=al$(Gi8An@l1mF&U}EkG3OWj;1_^9 z(3$?DCg<8dK4$&s@@?n!E-&p;aFelGp_(D&lZ2ouL9+NLt?WS=+oNQkHZvNjEMGwA z+#3n^)5?DS7=BvUgN3tVLuf}nScGdStBPfT(mv}6K;S^4ONkq#n3pY7xHO3gRXlO& zjshwrFB0$Dc`L&x7zi1*cr^$5?S(9AoMHk0t}RoH1**jx3XC@&Zv?_8>R`1}Qd03T zM3&%kbFs%N61K$!Z=a{i7WiR2mxl{8>2UdF3J-VnbI>c3lHSAUTf}EYCZ+3#rwob% zOBB;mT*nY=Z_#AsYoH0gjGaf3uEx>*?9FPXH7bFkk6h`KMNW}Rg`n()-6-|>PN1;X zaiOCnFbt0-WxQXT>+$8P_Yzp_F@ffsuucEy9Td2w|1DmQ%_vfQN&pmN9-TV8UTIQ} zj5E%~q$HNU8nv&iCjn93r7zOjVwMNi@AmwgF&PZ-hY#tFgKqeIR|n#{b0TzN#gz;jf{LoWymwQI1FVUO>qxxqM+_0}+02Dt#Boj#=618$J6w7ui1?$IJ`=?UuPR#fWE`vt zRRKUx#K^n~=9-OsdH7I$=ui%-`tX?!5U4$x?0b3kaX_j;c6Wxx}=X!qI$0 znPjx(m2|ws>^)%P38bdh-`_vW0~$EQ9LhYiedzz`#*MFRY&>~y-%84q*jf%3w=d$; zO^QOMES4^h3K!7KX+f6)A{Dk)Mo)Rux^;a31-wpcI28pQs|0(u?ACYO-YBxIHF;^g zUh7UMmO;21W6?c6TQAZCcsLn^1^)b_h3*#EtFClBI=f`}5kIKRgw#b#8E@TP`4W8p zgZR{3uZtmc#edgHOJwvKeA=}Z`lsV7!@*{EJDH=eB|XrGZ1o${*(ubpG{FgTIt*!` zp*WAq8tbI_#A5d56(XA!A80qsea}!B@#a)~{$e_PSHHs^*Z>FLMuaa(w1pQMTG5xN z$m)RZ%e$4rQ(%MGo7$SeEP_?va&m&p50Qq3uX*xwxCVdmwU;xW)70#$2wvz=$OBqz z^_%xRQ~$ygKaDP|#w>l?t95+{E}!OCqLfLiWV+!7YZ57xqq^y>g@N$b=!+d+!1zNzI z+m}7kPOuLsIqO6q5+okog zd!FN8-E(M?ecc=8+r;5n0m|oEAN|jijYSabE_(|e9Et0&w5t`Kp9=#6=0c6;+e1b5 z!j&f|^OQ!Lcm83h3~6($raZcHlyN0U*6JbF4VrebmlwJL&9FUqC8F!{<^bCzg4(qB z39@cu(_ zhhHA;yQ=0JROrdb%GzDU(z5aJl=eUBrAQ)9bpjFxda|B21U&+NUa?`8Vm~#@b2Xh} zJkE~;-~1+C^hp@LdKLQOMY`f-2~XARy!v>xk7}C3w%_TEsq&Sq z!^1ENyS0d!s5S4uSwnv5q0$DsoU>(jYC$}E)+^nYDX#?^?=1 zU8c3d!NSJ?PLe{v8;~buCpOa;txqtJlM~)(P2-E>y@Feb9*g)hx-qvev89mA{9;my zI)y_ie((7`7H@Bj1xS}QUOdUmBd7584>($zZfLp+Hp`XLVf2Uh4ZdzI0Mg~MN&JB- z%|R{T2%S54AZPTUkw;KE{R0ImkWl-TJJxPE_pVoxh$QXZWp%wcIT#7eHp|{` zh%>9p1R`rP=y=~s|9i=-k^4qWw|9D*YLw6BDGzzKm`7cDCJ*7jO8s$NAJ7>jnPV*1 zdVOd|HdV#HFl1$Bt<_LIwC(+Q5^DV6s-93{u2Mq~`im?fV2iM=cve(EUpM2HnJwqF>n+0pv9@5?nXzhJdr`MUPmeyytWQ z77pPWY>sSg-i$2QW6OZ?e~zS?Z^1dl_JbrO#XX#LLar28<{qu7y>gzwyz58Mxd7Wn zesq&BF5DY08l={|Ogn`MCOn)v4(2<0oTpRxEAQRmHua$2&Z*QE?ANz%jiI#+jP@*0 zfZemM`{lYvjBFBTMPEg~n?Z1+aHFk45hb#*_}+X8N#l!*!*2NC$mNyY9!|J|oW@i5 zLjHZAW(J(M(7N^}jwZEgG(TLMRSyU;g^8cbC@A&J+|3d=oV=odItKJ4HtJD6cIei1 zXfWQ$rT{hw>>}-ab0>}Uw{Gz5dfNn`{Y!#H%5d^GDz-L-bCmSutmZybu6q$@@YqSO z(8YhI${6lxSFRzZLs zj1)pI^wJzWwx%=4c_l`E>bsVoG-1?BY)RM+)kKF=D~?<^H4>H=s24%$^i1!>$BU!6 zMf6@lh5y3c%Y_}nD6gA;@8Mamy4`rK2L{3=IforL1H7(6gESU|HSB^Ld-|t^wj!w5 zeCv1@Ubh^;FWAL+a~9{$>_rF_iA^I@Xt*lun1_oW*1Ofa?af?1IoPiDS0-x|I=rWQ zGYVQ6O)+|GsyjVD0%Ux}Q>a;SfRD4at+Vc0xyMx^PIJqJ_F7*E{`Sg|JkFO3jMMrL zgIGKAoKiJ{1;~qFftqE~50QFZbSJ85aw`n00b%8d=hVA-;nOHU%pytLGC7Le(*;wR@V~p>eEcxQS1obbEdq2 zq;ls9RB%w8ioGyF_0p{Yr{8t;lbDB;mD@Tm1|OZV8`d7vXw?hzGsu(2o1ir|5b-(? zLk+TTcQAmjVg1p7u(hP>(dM8II1n3EZ7d$iub`~3+mZ$Dhzi>QJ>YCo0}SE9b*5Bt z$jYA)ZkZ=*U(R`NQttBHO~)%vPA(#gnL`Yu9Iy7zF;p8DHqSpb|N7Y2Z+HnC(FcNof34BlEN`kt!{!OcNf-?dGA#*$Hh$LX3ve`75)?5wUW!MOcL7( zf7=#E+c9VWcO!Qv`JisWg=sd+aLGgd;-yB!b^RI2kwYi0vj;gdBX0(O=wh9j11%)I zIqOt;ux@E^K(w*u-15y~lbh{KWdFe~GV?*F(1hT(afD-jfP_!Pa*t^tut=gOypK0U zGW!~h>E-bbyxe3vRkJZjclz(No8oE2q(C0pz1XOx>#U#Ym>ACYuc(Dto zCvjx7i1;cUcsMG|HhLw2;0FOAKl{iO_EF*9YK@LO2NwE@YY>!{8Aujba}n& zQ_zEXwiHUO@eJ4iq)p6)~IuXNCm0N?pN92+sP5HW3980ce`!2dG8Pr~06d_ECB4wpRRq2cnXmnvf$f}Bs|Zt9U%%^l?8a%1yHm+y4hlus z`mg+lsyau?Q#)s5jMq|HhxYioiK!2UxKd*Q> zte3$>!!Dn1SXPt3pQk%3bhAYbzP&Y^<8z*RsUA63vo+q>h2R)2Bq~_Vot?oq^~M z9dL6`!x%rKXd%Ux(qv!l)fP_5obrX6{c!eXPW)mDJN@GujUPagu$KSKPn5}t=xGQ6 z6`qNC|H7-a-U-J6WdS8-KG8;NQ=*p=%Xg@$i%<<$u!qVGrf}aY%jc+bUI`5-v?e8B z*`?a(d%@ky(;*-7_+^@ zulKfTzuzA@`U&WRHHos0{mrtGiRY zrQjQ0N5P+KJo_#C)<=}c-m>yWf%j1VC>1$TF)!4Ubwm&>SLjPa|AOm~rW@Axcy3C8 z$gw3sCh?}N1AX9>_IxkMf(UkF|MuA=`hAXJ-=KDCMA2O1h>@>&ejmVdySRH<$7kx* zAXD}bx^!keoZ+*QdfC@_k$`ZVD*pZZo_4|AjHoC+KR#<<}1+I=>|+5uPN$f6I8 zmK_wTcAk?Gm;U?r>y_a`+b>OsEkWUfq>uRa6U7dRPfJR8LRIyOJg3jqOn;sm*pic< zg@bfR;BaD9PI1!=(q1_LW5mKa9BRV2Eccx8ua`J5_dA`l2a&^N{@Iojz{%;2^qtnF z@ZM9K@)>mixuT1-_x?^qpItm2<3Rzarl!0fTU-Wq&xH3dkYBkyQ|@Q)t+3BZL`*&Z&|=1HO>&0YH_GDRLvWmbh# zEBH-cKiaU}FA`W^{y@yPl}rv@s;G=|+q9XjvYasZ>KsYKX#w(i|EHv~I@=qDGdvIy z>UpHBiEx1L%6o}AzI#{w=Arv$g8E>JaTX1)-G#I~tUxhhA;pw=ZRfJmEqaA9&&<5F zK}>{M5+1+yWpslrV=UT8AwlA+c7g0(Y$66EwNyCCO9@6oO|Jf(mqi5ll80B>+BSOS z1zs+Om|-K%_i`91e0q+sX(V3u$0uCP=zjDwDH+Y#KzY>O`2stf{x$kE_?VDdxNv5q zSQ9m*s;Q@^7r7AD@alC;kzUs7s!jb>mju7XY~YKYrRadhJY5r?2NwNCuzBI~QAL#R zQ)-cNt`V>3&drFG^NA^lmgpMD(?7i)pAnC=T-xjSDD=h;vLwY=hLRwFO_ zV^L?BoaEl>@$kP<4e1Qsl#Wu{Svuvh5$;rSu>0MJ#RH_<)xt2oJ-!yUsYDzDfOm^s zgDqae8w|d)K6B@c3nD467418W3`1G5RDd%nuk9Ta8{20MfEP)}A2Kq^Btws5 z`?~bU+O}Th$u9&`@YtkoH!R$3ZCfsRZ4&qMr_!0PxQvWUwB58fwV<;aNSrB1@%L5u z(6arWfO-T(Cy#E6`9#~Ey_q?(8`fFrr5?^Td&3iNDpP&Xz+$j_Nl4+jv{Zxa>eecg zJqy6C0|-u+3u9!_0K>>Lr$J|Xc@Tn_Ml*7zCuHOIR+9O_Pp`n$PD( zm7>h!Ncl2KttqpcOXBa<^?9(0qHUwVP_nysb?$=`12mA{UnTHMlJNjB1d`;YvIM98 z2i2JMaYu4Ixv#&jS5-Rd+zh)Xd$aZ8M5?;E<<0R@{r^IQfr=F9YhU*5SAL4E9l*M)a=;$!^rl_P^v_JaS5 zFH6$n5C>zR_2z>}5|sw%SfDlqNrl3{P^ZS)*Uo?3v$ldB^gJlsA;)XHyuwQu*u!tU z^nZ6G_P_@2Fwyn%P^bUXe}{+uAK1m_B=ajlofQ5OvrBQhaV9Gd*FNFuwng@+?n75h zh?en~1Y2o0 zrpaOt9t5}_?<&f|wW3#BoElB%Vn6j(N`P;p{m`}kU8*hL1>TY}HZ&j=Ax))ncd(TY zg7~d9?*RDXrC0JWjUnDH8!Jd){=;+Yx7|zmeD6ltUf-8`#V}OLI{Hxw-iJq>PAhCg z6d_@X!OI#S(hlcJ-LKOXH(i1POq730U{?p95_xbQ@Ay(55r%dv`BojzP0ef<-zRO( z5r&8h?bRVEiya6g2XT0_Bp~a~S%6hi7f4iD?1*Am5Db9C@`I+>i9Z|a&G3@&yT@!Q zJT{eobyHJa)0zb=)LFQt)g5&F$3I1(nVX8gz{&O*RnT)SF{$}FJDnMrSyb`9uOqPX zninD&va+*?({UizGOfL$6Jj{!LwCI_uIY#i@dISpcGT2o2i*qe%2CRiJN31;ysiFM z0D2+3C{X|1a)Vpp3vramc6QG`b$7>Z*G7?VAJ;!E1B*_d9Kbj8E%7LYi4Cz)2ejSG z)#9Z6%n}PQS9^GF@Iog!y(h2ooAYef6jYRB9S#U_AS&93EoLEpvD+ypRa5&_#-ySJ zp(}#nz=kX<^oPXaz`5K)rb%gvb3atF?hkur28Xddx6-G0tg~3K!)!NS^y=OF6_KRK zCrkhMd_k8|87}l6$_3vf&rY*CVppa}Fc=uZ?E0CBuQ^=Tz|q2I!Mw5KLvC@}41|!k zXepzm6*St5Proy7t?LkpJA~E5(uAP4g!+MQ>dp^XfS)ZDfx$$w?4o;k$a0@tK$4Z&SM0j({6pu3RYFv(kPxVX+$4scDg3qf^H}<_BO00-r`W+vwZ4*C>#rQ7_ zAh6)mO}PDp_@jgWB@;+K9Y9QP?|)bCtDvMjDk34Rbr==6z~lJ5hI4bNJKx{%_??rO zW9%fSCb5`-f|6Cvpdi=jO>g5=opdJ0q5O2!YEFuhu?kl6wB>^%cg>jS8>t z|LPgld&wti?WXUhIW%M8@p%;L;U)=WERk3(@-~C-Y-_&8>N>`f=ZZVsV?B7DVRkPR z_n-q|yssY)xO3k(00sXvXBq-w5;43&p{9aa0C9MbpW(%}pzaKo+LPzyt%aM#0Zx^^ zqQwp%@661$pYAl2MNmiYRC;+gUd>mv92WayEeWCMt7|=C$qkEUUB^K@p&wJvK^zAo zhcQg6K-M0+?;0d{TdY|P~_P&h`4cRf7XLMEq$3KHQp|rkHRrE zMRRtt1LbPxE4+47XzR+~PlXJ*)3{@w>K`5NXu%XZ)_LHPx z>O2~}5oV?bkan{td2SkJ+bRTGQ2bBBk0oiz$?prnCb$_|oI4S!#dwDr9wAevms5X0 zpF5XWXGG*Vx?}oQ2>*>=&TJYyN7zRhY|#~EF358$c2SUrI+m(MOU3bOk&QkyzmprZ z2cWY%ojbW1r1T>c|AfR@Hbnxt15&i&v%NL0uex>O=;K?(G0&=hJ=oNl&Pqmr4bE)Fy8O3nkg<>E z-!c4mpZxcKsvWPx1k6Fx@BfEN=O06GNChhmxqbK-w&$NW1M|V14MMLLAK#P;m-;_< zC@gUaXG3LF(S6CG1I($^9*xJJdhH+k^{>WLLrd)qv%8~!b(4#>hyGo1OK-}9)pF2( z{6Dn#*CUd{V3Yo3s3PpqfFJ);0!yP|Nm>J%=&vvVcK#Xu;J@+h{yeKC7Vgj;X@T^O zp(+ItZ~rcVtX732+B+iIuGUYxp^ z^O;TN;w5OW0k7{R4uLIzG#y7cC85Edyp zx%%^o9Jr7245wbE5?mGD163R@&}HlHW+pR%t0F9ENAH1IZr|d}ApaMEKp?XgW`9uo zC%BdL@6LHAB{{~6GA>@(4q4}0R|*2yptWm#&xD<4Kl9X^=*KX2mo6ThHRfbxu?aCM zce1c3sK{#@C?wp8pcxK&^WJ^8-;7$+OAm*TCX%bKv3>U|ck*=Qdl1rUxaz&)cUeE; zG?~6)>aUq|v}R%x*kCxSf}9VSk%!%7zt9gLclo|&>LuheJ7-{PhK7Cf1tDg)=O@ z1YRCvnYZs*#2#oKG+dbgOk)BeN27Mc+40nQzotQ*g|{tdo@BBxVrZk}B15VDZ)AzT z*18mk8+m~7?Jz+qOrFYD`eq+?xbGTq9kD<>Vx!$WUbt1kREKvdBz2ucL~^Fak{69Q z1l(#`TjTuNOdCF5+Ww>*dyA&L2s;=Sz{i>}=d2g}Dt37pffc=szu%5jPVnmXyB~46 z+ru88tzRgV#7t9ZII4QjFkRe9Dfxa$MD#xyL;vZNiZ)$Hm6Rwqts9M(#W5U-oqV5OB=>C`taX==J%fQW;0(@W zk*F=~rAJ=_OaYQzZvSI|Ry3e0!3EM@w}zxR4EZ?9{Vt#8Z>%gGR{@aCxmHImdCi$* zv{3w4nbop><{03Wf_Io(2l6wiwHz9ltJ!)>6!a)_W#NY2!K*DTE&JGQ4($V)C|~~D zDUJ5Oc75m0l53Awd(UY`i>JSL!eQkeV3B!ww$Q!kN(T8N1HR!~qsBm2kB*5c z1}+Ul(~BL$DIweRU{g0oeG~uq1ATGe`}`Q1@_!kZ3Oxdi-5kTv!p*2pD)NBt?Wxi5 zLVE?WO?gEd@$|72UupJQNVs&CvW#V7e zPEz=ch1@xc-y~l-tS1!9GOj(rrU8~R|I*&dqF~y@XtBOjgmSee$lzig0cq}=LzE~#Q<&Sx z>{Y&IPPR@VQrW3~s}bPN;D$A>Yse46Hw4x)giNoGAFoYuaEEs<4L%^8F1|s$qxDK5 zpT>XFyZ&gM7mtvTZI2(0o5Edr<#e&cxX$a-8@r!Hl-i!R64R;45WRUl)4tkC7`jv~ zcVqBxf61TGsMrA&4rIY6X0uEnmPn%3vDH|OYky#4uX0Spbn}rCQ!=)2N5#3ZI~SV2 ze+-?EtOXFZ9NvE7jEvOU$>SAx)F^O1F`D8BV5IN^PWAEcauNvpkLAwg>z4%|Z;PaY zBoPfDOZfA3hxm1`v|k38mel(Y+U!hUj+dbVkGI8c=RRw6pHQhkI)0Cw_~BxCq!q=| zy)tyMb2qw*&^f=e{AIy&*8>mM{BFzT4pxapjm|MZd&M^;FkrDu>s7N39grVEo`Y}ZU zsLLo2JcLixsA(ipq*q}8vskId$TmqHrx3AvOVvIw^H3~TO70G${0DhC{_Pr((4_N1 zA=A|h*Iuo}5e`MywI$Y}jiDL1Z(e#1h8A?H)_o9gN6aUu^TDeJ!7FIO_y6*5jz4?N zg&_bN+P(i_{y>m?lE*ugAt0`-N;?X_l-0~3KAcQp0dVvxmp4rdnVA{T#cHzh+4mr| z%6;S4U~;AMFY=rdyz>%RYl0vp)59iiuLCbsMKM#kUVj8cRp@Y&{G;t;;0$^bzF0NPLz$TH2A;3MruM~8Z3n_HH(#rhc8 zbbr9rkwv^HnPn&6&DPcmHgy1TImw9O8qZQ3Yp(J?FCbn{D4ZxYsKeYC9?1hVfKW6-hG4SmNT6hG zV|bNX^89##RnL09WyaAC1Qg#ozSx~v==^+{IOv>aP+4G{m^Q3BC&2a3=HJS&HXm$hVXq3s&N6-QE$7#aZf z6xIYA@d$QXqOf0#Nw0e$yM-0>sHak5ee1;P<;>L^7(hDMSWgjg)Y>sIUOIxJwH?NX zG{b2vAB5djzY@@hrh_%;1VMU0=)KW*9scG=d5ip4$?gVp%Yj-^B@$$4PgN@46n?z> zvw_0P%CzX*?~Ok|?}G6mVP-+Q7e!xkm|50xk;&7B0!E(iIB9vGW?Tugn^rZJ0!R9U z=O(KQ?W~rLR!GYKxn3!?ix=Dz!2zQ9z(rnHbYg1NZaX6^%nUPShG>0GMq};iPIWuL zBmOe~NBJ-)QqU^^qTf>Eoj(9rhR(+aygXRm+ShMLH3!%jsuHLKSU3%vhs+@evoi+5 zMR!WL;wcSk`@A&)HAOE!cv>Kvr(f2FX74*>oCA@W48}ecsOxW+*!+ip!y90x*I3x3 zqK>y}-BzEa8&o>pmj}#E)5}ZmL-Cn38i9&*fl2$2FYt@Xll#cJiU0AT{)Zhz{&VAu zP6$ozWEcG`ji`w==(l0E`C~xfAT;?W83=2m7CCvlNxbY*0ATm?jnR~npEh1$2b{D@ zyb?&Gc9`bjVi{`WKvg2DWF`i{!5_MoD8N9DRGP5+%Z=Xil>XA_8>JkE0E~(N06#LQ z!xnjzwM$Hj*f}ej-+E6n+QHX)P}Uepp?LTMivM3f;~s#(e{drdkMb9YmYUeC)_Lr8f;-nON3gm+}&?nN<=}D={^Kx^ON;*Qgr@T=>@07ZJG&Dn-K=rCH zGo$?wsCgCkGOrtqcfa%sy_B5&4OG{BrWAjD5XS?{1klavw0#$B&Z461N@#slR2;TS z*gu-9Zk+A1Uo1#OPM+o@9#A6f*IRqq^+NXoC%>ldKGOdG>vX)?Ga$}69`?-xdQGxcqOC)LwapHt8l1mPtQ`bJZ(=S=FPC3hs$rki)tQuR!}mYMT-7KXG@53%=S=1S+!C9%i4taE zVOG=g2EUqa%LH)MMYXW!dTMd9NUrsX3J`6w4T$z|#+R4K9$02fPvTvn9l)GH!k%oH z9b?saDgV~g7&z6<32Kjz2g&>f1~t94tD$$oqK&gqqf2{F{J3a&H5N+f`95h5y>-a| zwi`3(G)Eb!;QtN`82rCL9##S;DkdpC0gJR)u2KbTM%RX2U*BefA|*X0c}BdElhqM< z;Q1lah1WP#(28>l!Y#M=22J9Bu0?PL5uFQ$G>E z0LV_m%6+0P0q-U)77orZzn|3Mjhm8mBiEv%72#@Q4ma^SQ_jlC zdAYetbT+>8yV|fj29<59`{SkM1w~d?7EUHX^p@nVN!~!8c@u(~t(xPCqjotxYNW?Q3eqX;J^`Xqj;3DAPdsmz^_S$+rktV*$y*=u+DC{<+t@XNmlf28ZJd%|Ns ztC2l@=vlR#>Th2HD#1)9)LDK^(KFo5jp2-sG(KLXFAlUMRN3g&{P(`P0x$xssmmsb zD0BkFw3qJM8hHZX5ve_0+6DY;#TTPwl*C15WGO{JosjI-xyS~-2SqS*z#{rhPx|%Cl3y&@CKRl7(T(|A8zViHtw)|S{e1Iwp4vQX7xRkrC zDfC<|Dsq^f89omHfa84LgGXoR9G_z2mtt-+Ah@tqK;hIOd2o>TaDeIHuyeA6&r3}r zj9TpJ);NN7uL7jk5Fe(MZFOuMby^GU>m%$ZdXX3LglWJx69_v9m<4xg0jIxX?0w)| zZYivxl|8sZlPEJ+UE}N}HtU<+soLS^zh*M2yBR9f=Ldd;rhw2VNtQ*wfH_#Zxy~Ax z=bpcub8jq5oi*ZsEw2_RDsHCyTttLpr z%E~)bu(sou`2-7@?_RJB5WC%9ycTiM^r=e7DFaRf*>2pyum1P)}KvS--)V zV(m+)`+jnc>W(9FzW{r@&i(y$xWvO%J)`#?S-y|M;iDVFg%J(?Ii|iD_2&fFjuSaG zV~vH47TUu!q`ka48i2!NC5c}W{bz{S?q`Dg6>%;5v4ODZod(lF^dC?^SM%DpwWXz3 zA3;)iy02!(JnZ$w4awuh!ATFP82VbwRJ^^$Wdu98d4@#_1`bb_UD!l_a>P!6+->do zH#XCz;2FqL*a?}W%tv{>qH(erX4`@QIX4R#6+qatg6MgV9@GMt6h)E!@phsagl!Eg zR9x~IFdZ}^9FsAFP7NQbc8+EP*6)pU8_6%EI|rEF{2V{30MBPVsP@?G*QuQJ3bX1t z(})mtP8_d%N$pl=proXRePsXU`Z0&|PqZf8**H^xL+dSjGUe_{2l(jG`tX2huxaYm zCA0uYw0$qpCw@L2JB8%5{`4)}?k9_sZgbvmq*Ba*tFYoQHd+|y+FlLc9)ZXf@1S<` zE2w&qc~tc8xYZ^^`@#T#9mJYD14b*j8fT2cuag^Of|mR?N7xT&c}_x;Icdd=N*a$E z?y?(!z%SDhP9VUU7{RH6NH}}9jzNv?v=OZ+xT!_vtq({o(1`=F3*C%Ei>=&X`qVUl zyS$Vg%z0PGE{j+TYFvbO1D(yn)BGT|`xmOrb0$b#>m_9qJYJdWElhHij#~QjbmBAO zOcpv!GMOit&zv+e_0(=>;o?4f4^fC^t$#o5bAz8D?d{=a@6StfPo~;2<t zsbpSjtLdIw+}6vP6_%p*WS}q$@^sm^x2dTMI!ZD1W45S?$DT-Q@j>XE992c+U|;cXF!WN^8)m@_ zz~!P>2H!9gbqf{0qO9v{vK2Aw)s>XklaiC!$9E>{Bj8p)bz>D{n1h#lC{jIo^5wS= zhBwp}JGY`Y^&UG;g~3|!7N+u@n8sDrNha&u$xgN^*g&Vi z^yrZ!Dza(t-N>kb6XB*Y{M#e+%UNZc+zrpdNtpU6@f1Zu(s5-X?{_Pu=ltXl`mmz} zW1>&r{Nc4H#4bt!GaE^*^A??5GniMids5?4_Sjj48Nz`0?t3?*mnafF2%<<9^h_-tT!XB- z2}`%z@J{_bhSKX`3>vE?+LC1+kd(2JnPk#c&@1Nij}i?boo^TLefn2=*lr&!ow^}}UK#=I7j{`n* z(#bcic1psj|2&D_AC`!~Pmcr#+Y~O%iN^ zK+G`N3<76#jzuIgoTk5C)#DuY-p3+(caLM!} zM&2;4&7RZQK&(J2<4`zgnt4e5nvEs(HAu>KU7#Gg#i(ennp!YN*A4V>m{pDm-v4*X zJ}uyq{p>xLhOuBoicZ2@0|NQOuaLUj8OA6=J)KwAza zsZ5{_+Y_}z)c|1;k#Qj&^a9W;5CCcx6c(0LgB0n!PG4oKv{=;2{Vzcif)9*u*s*4M zOH0!WEs5Fsi2)NQh$3$ziw}l`q%(j0vs#aW%dP(#3lK@&YV13r8j$~m0TPJMB@SL7 zBC?ckbM;PUc%oxb=6ZG5wug=WQvJAj4?8ldlx6tdJHO7*o037ekk@qMLR4TX(vvz5Z>Y$q zA9Be{h)KiIM1OY?Vk8%C^1q;3A@sVrQanIwZQT?}aG4P=fF)ttrjmGIg|YP4oQQxe z*74INV7BRT_c2QgdqE$1jnqZSMH)KTuR&l8QY6@2TsUzu%L|ro#pNFFl?4GehU}+@FCkyJ*tJtI)DIV`}}W(O#DO zti)E)K;?bcUqsZ~1c>OvPLUQ!6QN%H&ADLyXJ%gWyzq@AU!%Q!UHS<`THSod3r!FI zE_XcFSijm9S)TVvVc;xFq6eT(Pa;Vo1GuGR#@w$z0unvOze`l-7RfNbH(If6++4K(Y`|pN9@0>vRvVm*%QR^5r^yAWKGBkdOuIgV!q}GpC@7s@3 zzwfu3I$0L}kW)Il+-(r8^af~1GT(dWGP%qL>mKQgr-`?n@CG9&w7WBOqW8&f-v=F3 zCkQD0f*vC?Eqke_P!(eV^H7MRVRD%JAUJukY_MleGCizz#llHA3{nQ z!T`6$REO|U2)!4NeTJ^_@3QuyjTVwV&mRLp9)6YLMt>ired9F*8xJs^4v!&+Gt)Y= zNL(kS1g^ym2X{*I+DG!@SK@KfaD)YRzdU{U9Zh!71eQDo!@|s(@GUBSJSsjO=_`J; z7W7Za+gl{(K2hyHCdb0?to#)5M;w>3hcQ2eSqOHN{!s){_{=%H8)S#~J5_uIj;+B! zJ`O)}NddfUNCC4PCLTH6`2^u9_)n#vt5|jZSd&m(Q3A}TCTt<0kM2g3K$ve|!w9@7 z)6YdYA=6U&&G;>3tj+TY#K<_%H$`&pLUJt~bKh%x$NDozj{$^^-o)H&wtLzGHyFLD zr9AR6_wA$wZTKiUULEI3qWHLf(0eyXbzi@sldP&x#ESfJ-cuVf4^{y3a3CkR5c197 zR_5m32HwW#r|VW4i>9}N)Q3eaauW1RxO z#0Dl3-n{ktN&+eH#Nk&CTgYvameS`+=>mrWH}w~1~^%VH3| z2_n`djbdX>)nVk06z32nyl&N7X%Bx4>1d_pMpF`F1Vl21LGT&O-fR5v#zftD?$|3k z*vi5Vlm8vRNX%*5(w(HIF+t1@$MI`{AtClmERtG<*NemNNDoX8sM#4cAa5SrrR{NB z34cxZyov0VTD8U#pZ8C}q(@l-drKZhC(mP{FZ)oW6)ix34hGc5(#r12!1^2#=1}?K zy15gzM6@9V?@r{@82xyLw;kzs zKd|2`>@29H@v9skx}9FZhEz8uT(F8j-@RS-L|zZ|aXEVBr4|P~`^NSjTW`Ar4Wp7y zoG2hMWB`6?XQqJAV0iuLBhP_IrC1RB9h&}pJN?1$ZznbN|6vq|7Wz+sMWwF(C?st7 ziK$V`wECZ2r>^s358Lv34kw0>3V6$^hO%^dq5h6N*%8;O>1%p}<40QAWF#2$hg{#) z(oAmOF}X{Eao)!&=*saXfO$;5LvdD)ZFq%=0J868>5FE8QI4SRpO)$FWf$>yvp-f8 zcD>J;Ru4$}?v0&1ZNQa^qzNIaSW>%u+;71Z;kUaNy@BoVpd$Qwaap80Nd!@= zt-4+jdLYaI2Bt0xluDjAiUL6oR_0e~m}5SU*eMujr3+|%)~zIhbbKE6rMRrMG157_ zByI6Xr-7zY1SVOmhJ|4uO)*_Od7}kWa7sb7Fn#wm$Z`_1*JctU2?^|wJ^8yxmOFr~!<~kG3*mT9h_bk=FJCmgifZv zx3!sfr$oDtADLo^pYe#Jtr7(?DpNICV(Cl30CZGSB1&Y359Lz?^0l)>ALF!Xr{%ou z#7m7X6zft3t;g%!nN7uzz9Nofw4d?26>6qZ=uyO)=1`#E5#C`mHYje#gF+bVrZM9o zb{c}k#a>SQQKHj-O67d<+KVr}hJxHEBamZ?=Y!vC#1TFf>o?m?WB%#5*(D7{Z!|uj z_*&j=@5KtuY|5k)g)})UKHzMh>QI=k!@PHAaRDK~^4Mv5<|{jX=xZ1M^-X%a9Udq9C6BhYp~i=lNt7+q-kT71BW+j4VQ zrbrg?!vQ8GCd-od=!M+coe3$N8{S|(h2K((;LS*Wni`W4A@o#(ltGSG1%}Cd|ukzBatg&T{8@7 z_*^1@cLwEk5x;?_=a&)^awj|bnxL>=Z@7GX_lF_EUwvCVF8g)rV7;omnQ#Nek00;o zesx9Dm-KPYuvNrM|0usRoM*Z9^poo~j*L{?<&pT1R2>)P*XMdKfA{4=e~7Rcu`=Jczne$}@S3_Oy1U=CupMKSGk7O6`aI1Dgm)$3%*o-_Z^ zVJ!iney+z&$9-~pmJXMmfo0>0{$WhV6(9GtD>5gvx?rcp;S_1q=zTJ9ZIrx{4QyL_ z>_hp35mA2{*lbOb(hEy7Knt%KJ~;Px922~`~g*Bk{)^ zi;J1n)8mpKU~bPuB#NbZ?WNyt{gn(C_dUFa?dLbQ8t42@GlPuF^!~$#*CC&|oM;3^ zL~_=DgYmO4cH_ATcY=M)Xwy5VS8!ve4Jbme<%I%mqc;Yv{P%u!$QKDZ)i?p#e{LyV zdh*f<7(7+(=LC>c`}jd;PtP(}XJkGG5(UQr7t z-&Ijjkx!|-j*b05r=a4@SCBs(zWct?Q#^`8ll8m!w{PF7eAn6Y3E>Xa`y2j}1I=r9 z3@t23CMS)CEN4bUy>@R$sv{r0oO_Brw-nuNU(ep%SyQq%zr$ z?~~3UYh30pOvNUIV&xsep_+9VQ-MLZNF5oe+%#p*rzqpHY<=qBoAt$%ssX zXy&)aa`UZIQ@)uI61D+DCN}w#`@k9sL+M!ftESX{^TcI|i8jYMWLh^fn$cT+4ZOhjzcae70duMS8xSLn#j1@YRas5uW8j=*_}$c zNDb|;_R*%L=D@Og^FB=KsAk8kNg#vhUfk}R#qZzm1BW|dRK6P4mhh1pZ2~Ykx>$hh z{>iY)nA(9yq90VaYT9NgqYi1Q-Q%^uhNTCPk9Ix;^72^5H?Ub8FZ7g|875H-9~UqQ za38BumBFxp@EpRUtL}weN||I$-Qr1BX%3Q-dt~v$OBCO?7~y$VPMA=!{Ye#i^zl3% z8{2%f<3^S1Ny?abOo_?+E`Ev(uXxXI&I6?+?H~&}3_E~R3SJWYqle(R^Y(>|Z-1JI z`061`a9Bdz>i=WvtD~a)qOOOMQbD>A1CVZ{K|(F(~5l#&!F0g+}XsiBc>5s>cg z?(TtM-plX(-nG8JS+khunS0OKXYYN^@db;_1NV#T(Q0WOBAGdy{ritoMckiIH=K2D z6bs?Q#_6XHC0d`~9)?R?6&)I;T&9u0@o0W6XiQgGKxcfnjyOME)slupP(h0j{kL|_ zUW%sM6;)vuX~K3PUVC=4mpP1gLAOm#%nJ^uPpT0OxD|bGtieyq5yk#5J!13hF{EN& z_PufUzBG=YEgqP-=iSq!Ii| zb!hUx%rY$#Td~P2)Xt3--5LT8l3sXs8!)nPp!is`<R`)r9+rnK z1Nz`AE(SD&3bE@ z)kv66wGR1tRQ&_oO)9|0$Ghrq<$_F&rl+}u(74=3!4G!9Qe;M)#3_jBm%7{y%PPs4*aBAb2tj_HM| zN=ja(9PhYVGVbu(2j&f)>kvW_hbpd3GTCjw*Ny_|Qh=MRZtQQ3Wfph%{%L>C zfxPs5O?2IJ^3=fl!H+T@s^2q*v{b^*4>6;uBoArkId&5YNPK|OIGmxSBPAvCMv)*465d7l%XAOEJs46x)`IcH# zd{yRLrLmM4HnDnEhYRs%a?ofcg*7e#NC$C1>{A ze)yr#j^DS zPJ{N3xLia4$sxZa$fuw;YQd9IMD&`hSECdS@*$Orx>%$fxx*1>!o$C@Lf1qSqTU^-!+_EKn%$e-16D}0oI3Y?>zcqX36Fz~au*#!e8N{l-JjMZXoURzp}iP!MN;}k5(TjE_GCkcF0S(}4Hrgt zS-)N_xR)N#a(@9-Mhd9R_7osgXWge-mkFG{7#=2X8lC1Rk-OiQs;Ra4-Z|%W26N$|mOv3i%OdcXeLGFl3K0|nwjPh&jj78FmMwuW)49k$^a z8HRmHE$9pi>7CQK2}AYL+&{c}Z=Y2>#bVU1eY)V=fVxnkiISd96LxSqwp|ILQ)&I} z{8bEKlhtoFPL5hJix(9Uq?}KVjyR*Bf@zje9rpv{!#m0D1$RqL&5G)9r0I3Pj{A|( zCJmp%BJ3@{w~*J@eni}JK|u-xW@OO7N3+T<23p{9WrFyF6xKc^yNCt}d59!ozDu@n zrMscVDT}@i79=grFk>4A~5FvMbebgQr4S`T7NrkOQ$5q*V{K(<9Kb^i zN4RK^A8cBv=Q|T}U;|9F(EU|__*d=nnQNjpd1Amd&s{d7_RGv>*=%R)Fb4wyIIQ=G zZm+xg9)`W*RWDia7rA*{*!w*6abKDB9SFU=$9EXhaS)VmS@+dg`wul!=24t8fE*Y` z?s-(kn+8{gDVB2TA&nHp!k*i{I?S@88n$l1pWB>VJ>Uj&y0;OydTyp8!Y)WLP{v_u zZ6jh9uyM7O2IuwqX;Fp<%5+0ipD(wfS0=zVFp1#%Os8I?6}r;#&1kI*C0`@Y9Bi_L z91Z5$$h4yu5Q#)IJQ~IZOIGvEMM{(CR2f8OtCnGFNWYPXG!A z9LUjOZq?S26Z>4F3#rlaldYN6_kGY)T)}E&Yq}A`Y`#;R)6Iepr1i5rMV9Pp5bpeo z_0IlT2!x+sbigQNodJ#8_u7XOoH9;xOR?I9hJxLRyC!Ol(nW=dJJJ0UI;J1YW)l}@ z(=OgZ=NhVoA4w$Pmmz_HclCP+%xI_U8Tph8okCMi@E3Zm@{cphrhm;^-)|6a(orz= zQdU%;)9JhY)Xo&OSCVCc>7fu!=fpOa4>cK9Q}*JV(+k{^>|3bfsZ`$*ae)d5NNS0n-s>bad=vNu^Q}t$1R{^sVw-AO4BG!C$W!-o9l? zyun?t8OI(jFQ2MBe0q0hfh)Q*M*~Vv1ATC99?3*PaUhzNzRyGO5EKIg0}y|$O45w> zQ~rN=%#*iW4;A2;Mk}T3HsgaL4SuPXi(rFaTkj}grjb#t>m?1C2^0x%3;nLgtK}^+ zeiAKs<00Y#cz>D3X0=;mauxRB?RsU<= zt?5Ya3*9nxr$^@eZfbE?2%0Sp9`TCLV6;f=QCC0<$8{+A_lK1o_nB*k7*`1(h$?8Q zgRkvuEe>`4E#9R4+?xpXaCSIeN1VkVCqVPva`{8sIi`_#BR!45@5^oDX(2x2SKWj% zzdQ`ewTqL%=vA7`0emy-t&CCtpP0V|5W^;6y$v6?sV z=Ss=oxxs=k1foGo3e5A0bG*bPBwte858CGEAK9y$e|z(#=)Gbb=W5Fgs}22)jTQWiGX7)t-o3qV`%y)SsTkPk&Eu!;-OtT$$DhKlxD zQ)PE5s?l11J)FAR&)3Y<%~~`WPj2C~9rHL}UW@GrH}3wk$U<;>@y^*G7|4HFZwQWH>}+KJ_0I74ba0yr#zZ71QT-EZ)BD zQkC!3DlqnJ^fK3%E!2(*90i!CO6WM6C^M&F()Sb=+e zy6cCTot=H$74YlIDx`TNN`{EjXb%e=T{sAo8y*+JWP?!5=ZuVGgMk4++<#XQQTFv+ z#GM zLK1o0auBu%;n!|9C#>F|N%-`(2S0aw(}Lfve`x1a1~BkR9Y%*tXL$VS?f7}K%RhNIwdsg2klGz?V@y=c%aW zv{ciD`__~di%!!MwS^LY6a(LHjr5bOkvtSne8hG`-eBMwUMI^Za`~`zMs7uWRV_+y z*PL~*9bgJ~X07{PWk{=xl@eZZ=>O~0xNB4V_L z!=n2QPN3Z2P8IPJQ0pq4%y|R|5X*^NMw}P2o$wZZ6U1UlvAz4o9>%S(OH@5eH$i=4 zn1m4^&Bb2(KHPlY7)kK*+wxT#wQT1Z;%sqjaK7G6xfH=*{x8Evkek0|Iqwlv_$B*4ivQ1nGQJI~$hzu2iH7DW zqWawKoPy&iC7@*;w^>+`n_{*32Z(H3~0tsCQ|V>T3+@* zY{&=fO1A$Ym|ytB^6B9A<%hI87SRO^$e}##$+Bv&Zvvt@CG##!B`9bhS^wr{f>@Ci_a$ zMA~q}CIgw6n`HntF2BQkXYx5E%2phc%p=MlA&WRuEl4bI*8XJuf&sx+x)L3}Y(if^ ze8CVw6S5#uuQlH_+PaxPn-i&}b87~vbv*tCzfM8%QOeRZ680nsB5&zOgM7NlM-#Oi zpEGXw_m44xf?rw>Ec<=g*y!BW%S;;Ld#c9O%nHEAuLKG;=H=NZ2+sWkF^=;D&%~SF z7q0~b3U^JwsKcd4KjDLGqhjiW?#JX!c? z%6$u6)OP-Zd?Kg%kBj5((28I0^Jmw*>{~F|U(sM}#IIq*;hbTsrSjYGvrtrHc|5pn z#9~zEIKW5s5B&mPC3C|gck;ZFyEQ0BcU~p#7&5(8q?hX#aJdM8U(XIpDiwHZxq7b8 zJi4!>AWL1{i&-A!&q$=*jZKW75EGiXE@D^dtYR5T<*)PJq5TV86=cmArDcBA;C9$f zE~(}N0&@hF_4ScIZ$~(>#GyXaa5@wrTCe@$GUz^UlfcWaihe zBVwBAUA?`wxl2pm@vA&kj63CTQBFx&)e^#qn7*=7sxJZF1u`@!st)r~8!I}tr|!~vZp{OF-}Bj!k6S{iZkL6@V`b)-sN(mC^Rfo|y?6BX%|ZR6 z6i)BG7m(Ia+TRrgJ>PhRE^jS3T`i4K0|WZmlIhpt*r-QXzKB+RaL64m&_l!UZafyA zf=}JEdlHMNjM_OI--uZwo=M}Z9yHxp^CpPh>6)vo-`!lI4Z#M*Ya8l~r_;UPa zyvf0HQ5hna<6isR#mf7DYgO|1?S)x1$QF{6b*+aIwe@?nPczk>W^>2oS+#za+XmC- z-n|}Op&Kemn>E=udj-HVw~Ybv(meIGD+y$%z=x8@_9LmjeqEW>yz~7P*Fnx>i2Jqq zb)Sq+)%!5e`v{@VH~5&wyq+jDb9rq^FU}x4)#z%G%rJB)AxnxN2Vns$J4K;5O_x_%2_ zz#JeqvKYb1%QD9ncolZIQZl# zpvXL0+vXPbqlo~d!^a#)I**r1NfE&6SMsJ#nT-24I}b&q7Jx9d^|cuehb5L1`D`R? zr|rMVProzNkoqR^;RNH(`1Y5}hj%h+Pm#tm$G_h_dX@GH=P4tODI_3+>|~{%dAR+P z7UXG?M!v@2k4W-kRQw~J1F`@^^>_O7#hgz1{Rz>F_EYaTWb-u)n^V=nyz<0T+!vBB z#~R#e^E-^BB>amQ9i2akx3GIznloguyp=1UaC}56S*HB~qHtZoa_xuJ$za zUjn;BRynYwO5pz`@`+Y>qD>TPMwePAeTu3*OK=QK^c+Uca}gRM_3jeG&w}lujQ)Nv zE$=*Z2$Gh1cGdCzA(bEr^Upr{Pbrc}J9($_k*ZyOqXSe#1WDx1WLvaK7eig7mD-%M z+52o{0<@sFOEL9N2lFHZQe~qmS>=9iLbr&D@$n{nXX~Z|Io9mcLKF2Ur5Y7NuSgb| z4)rZ6v6-lNK49?ev!(!DOpMc{PEY)+;By#hw&w6N$bIBDzIBJcd4Fy_`8RnT*JA-F zx&jXl4NM>5WR!}t%Lf}J>TN8(TuAE_ryLC+0D4OuUxkjbkkAZO$TtUo)Z)MoZc8t zuutE}Zku4<@ix4prlbrHc*zXwjXu;3g26oFFWqhURpQJ)#C?-e`uqE^bLDu|;$PY% z?)Ax<%!07z_pYOZ{j|Yn!z=wM98`kdRA5JJYw2iS#$xM}9l>JLCgtAB%|R5%6D1|A z@UQQd`N22uNx~sLYZG$NC@VPp#XRY>%Z4oOw*}d&%pJ?k2`Et!WT$D;TmcDr4CV^Z zhym(Zt@(qguu;u&b1>8KP2Gs)R0bOaF=cYSA}|FGzf5FOgoT6zBt!9njPEhCxzn8=Bzld77c0mi!t7rIN))ki!o$fK9^c1fk#P9UPu;j;E8rruFBU)_UMXKOI&p zp2``wu-!sEnhAqXG_7xXuxGOjP1#JzT>Y zdV9@kQ6S>COmL@LA>54+13EP>DZ@NF9cT-C?}my<#2zgh`Tlz`!&P6kS|Ti^RH-*_NqNU!xR#QO`cuwBZqS50gtcO#J;+-7qQ&UqP+@K zF0__ARIxiQN=TVqmp#js3wiU-tWcXBQ=;mgBHQRLMP{Z0D05Hl*b23ORZQ2d)P{-W zV}k+d{PLI6RoXSSA?vWoP@)aaye%?DV)#saK)adW+#7YBhrwZTY5j{UI z+K#@+$L+{0XH8jF;(*5r?t?HW!q6K}v0$?m9r73z$O>pwZ`XTHm;tSYW zgbGPbTct@p67!+ipZU$R%PdRacJK|hV^GqkbKj3O8_%qQGcV|8sIr)ts5w`E^VA3J zSqc^2(2Nke+O73z9#;lx(+k_taioaDKsD@%=^&Q z!@EmINyBz7_L-)=>%-sleab$t`)L$4G&&6(V!KdHm>rrYPYg%Hj27ogwcxkXT{QOT zy-dlHhh5TPp%O{A^(}(wvwxmFi(yc-AA_k7p6`tP-qr+ANAf5<0pg!Gh&p~j%D&o( zdTg;gV(m&Me5=FT*_SKPq-{NN7Z!K-{RK8f<4FYvj>YYV>^oN{my3|om~})(Fl9n zx*}4J99gvMaeR0AjTiQytev(ppw2wGY+GjM7-B-@?L+yrq>Xru&ak%Y?4Kb7Dl(m1W zEA1scT$6vp>#0FtiJ8&r)!?aXl^}(@>Q*`1ny0-)qoH#z(M>!aHRZ9JMu99DGak7d z{o}lshItFs+K$=~!-eagulN`GDnp}Fc@#7JO4xH$Yd^M`b`ZkG-;8LnvzSEgMj`!E zx>z;5ZzB6|z}7n~U}h+0izef0-Fa9Gnp>sk1$meE_H13nBr(ss(wi`yE&`gZ_j0U8 zm727P0d6koFP|#(@Ag<<&SnTZ>q|}MDU3GoOAi?I@-?0i1$GN`@`G%mqvOsqT6*Kf zJ4tJ4_*kN-tMGkm2;=A~BD_d)?5iWk=bfK@0A-iw3*QUI>d?Fo>`V_Ft3)?|uT`#U zO&zLeAJFK8)Z#7o?O+m?k$hXK2kl*_{w5`gh<}Wq335I!!W0lO1_tuSB3;aut3nWC^LE;Mw&y81G45qJ!$;J-O#@l{I zO#=+Z*?p#jO*$~l4-X~$qc9=%Zo#Z(aLWk+%6?6DXhx|~b=Dh?5bm3#$sG zZk_Nkh;~=CDnbv*IrWPhUz@F1hBwpxw)!%>n)gPX$abOrc|XC{C2d5*&xPMHW~fb8 zu|2?Tk5gg*QNK!Pzos#V_bso)Ku2&bJE1Gbf$bd9PFG zCkk^=Wsk2+g{gQTo9N9E>0)?X?`a%nYBS*iFV-+-z@l0@dOxwBp0F3mJSEXbM_5#X z&QywM=iKJh!p>Ap@Q1A%kC=<1QX&RY8-l=e3klG9V$GAU2NMKb$adxC__uvQ**{B9 zRzK#vli;zNd)nqB0x*G|C;}BIw@UwNAUhKUfR%WcD&(gm|JRd-Dj-Vl^Xk+WKUSJV zUy>^-J0V}Nw-FPfi095@{}B&dP-A4=#^&ERs93FzX+RAv_w~*aw}V{QN~aO=Patzxvy+ zfa{?joTOuVmbs#0spCIKT%O_u09$QMUHG^P0Da{BqXIrB~{Y(vAFmwk?4wZSd zYt%K+WPT&)vG!W@a9&UEF%JbtPe+IMhBj!HW6`=2 zqTom311aX~_|Dkr^6%uj-hY!X+K_6NjKHMQcknzXFLA221yfH~nJ>Jeva(Y8bp{=ncwtZa$JIz`zM%{tMNY2 z$&m)7zz>&m$_kowxlKh!A7C7{ob9=-*aG5w`G1~ffC4H%5cqg_pdW}~wE}BHx%aPT zctc(Tr8>LL_gqrp&B1HwrYEJNvag-@(7^$Dh#6^C)tCRzvPiQM1?sl@W6w$jk4o^H zzkev-Ws5I2TldS?YZzb_> zeP7(@@jT{5Mtzkv2XG*KWlV~?fwns#U4YHAqP9xpd~@3dfhKa0ug~B&Pq&Hd;RtqURH8DXm0)On6Vk9Bb(63;}MUH@?sx(Qj3hJNPu%6v2Nc z29X8>k}B-l`RvQxkWp_>DkdJZ>|KV~wx2pex7=H+@LptCRJ zHAh4xREriB^;rGVb$iG4wUD6ke2-ZF3JzX$t3RDd+4-U##NYpIwA1kjG1!aJYkT7m z;%DO}WNEW_h{o*QmYc%Nq3r&hJT>=Acq`NO)OThh0lAx{o+0LVg>Ju4 zmsj%n>;=AdvF}6Z$Mz$k^WBt<0 z{?osg$f#3J<4(vG_TSTc7;^-pRcH*dv>ZVgW;Wr^L4{6@+g zAW-QmUdn!kM}heOBipX)VCuJTT}Ra|upuv>+w@+=DFXuKiiD%Z@8W3KBn5}!WvDu= z9q0xi%FzPNLON;W*LQwJ`=BJ@{2vUF1ao-Qq9HLREh-6OJ427{bZQ_FaKK3jeL`Ujk zHwI&uVbIrjWhcVF9;Ko8&0+1;kxf>wJUu#l$&p3)y;TG)h4>sL;A~Y>w-%R2!SJ^1 zfTPT^^xQSq+z(r|LKK$`bT=Ay%UZX1GB6Ii9usawcAxr-Cizaa(sxI(H@WUykb`nD zzc=;;-7_XRJvVokc2cNYhlarg7fdQ$TS-Z&*5jIKAiX8R1rW+Z%O>XWn9>sB?Qqwl ztz*Ku&qw(8UJjc9)V}0ONL67=_{Jgcn^BoZNA}}6>>O+cRgZP559O3nQKD%~05tBN z$yL}-wn`CqILUE)6HhDOB}O5?(#4+ogGSJdi-D22<^?o*x%e|JrCx$7Lvc&Htf5$y2PUajENFB~9E9-2JLTcOXvZV~Z*!?yX9Yr+&T;m3Dw|EmSXvc;2O$=^Abh>RK8Z#l)XW zoENmh5hWt5F!h<8jgD0k;v>7^-?E5Wbol7z&}BF>saVWW(?GVSPv<4ww`brAhJ)%s zdv7yH7J#d&OE8Pq__R80=VWkEvFsfvgkvNzR}SVet=EUdklHbps3MTFodpaqh>Y9j z^rR=4^ZA42f%(tY!RND=2dhWJs~)9R+31(&0M?N>0k&y%5}LQv+SZO0J~Rk-yBkph zVgT4(b?@TZaZXU!=RAT9_Fp{5LQUqi`f3%|X*_mS0P%mTm~Om#k#?11V^OtuE8RO5 znl-PhTV{JqRS9bRd#jz8FOpnd$E_6s@o`=Ux7|)511jqBc!PB;`V{~H<@W1P5{bxwG`DRl8mYTiaTP`Pk7^%W8ZCO6sJ1wj;IM>Mx`Fu7+m){pb2I(W% zvKY{h=%TNbL2a$pyD76vxRWTjw-~lIi$KKFz65b$uUeHRmzA(1?TfDTS@zjR8R$w@ zd~_c)88a>sw7l`%akXB2Fluod1(XYK{YIO!y51dYt z@0p4e)x&8@(;k|NR~S7s7;>3*v5T~_4srBWqitt5UNkh$gCds;gy!}Ko8EW`ugfLB zI17m5=7LXh)lTbSOJ60HlVTEIsH|9@+;J0qmC-m?PXcpf3Ji#9$MMXQTrA?WgoN#> zw4_{~GgMxFbMXMrjpX{ct1=OziS3#_fe(JgITk~nQ2L0{%Gv6!;5eAb_!Ts=(J22| zp?gJ2Q17&wdvc@Iq96~}N&h$~$EFLyXHOPx@sKBrkpB3aDITXv8!>~q#r%Wi50t;C zg|WJ$Q4k^a>P$Xg5X#+PfFlz8Zef*-teGq-h_VJvp4mCA1v@3Gtr(Lds|itfEGy#q zfbucD6}Qe2Ysb?6c>$ap$9-#&|KPPVzm!Ejfq(f&?xW#^Y5Q@M<;>IVtklxz&}iD( z`2>MDZUqJHgN3F9BNR9;DZA3kqL_|^Xl(DMCac+8;xwV(nc`o(x6ZvLiWdI@x_qi~ z@yf~_+19=%=8-sT!k|=SiQgo4kW9Dgr8duvJ2VRuFXjIH@7MSXvG8)~N|{fVmr?yL zQ#eC`oH@ocs!!fv(MfeWxw|~qh_Zd<&T~#&8uAV0XXX(i!BrLOoxw-pVnM2+{6-r0 za#G|RGUc#0$Da7t?+P_+B?k^hiTQ{exm;tD{W9x^v;q$R&Fnt9o6WXeKT+CJs;Uo` z^qJQzf)UQ0eFCR;2R2B3=0er#l0@j(n3YRdt=A)3cJ^jUfgkoFVkS2OE#zDocwJGH z3}y_)8(2et(6pa#Ztp7~yjq_WQ*IpS{V2rp!=Z~DR&_XQaecNjU1_n$jj>8ORtg4K zEccD!rh=)OIyLq>=ognM7+W@zMJ0`Vc!M`ypGU6|Zf;#CMw3x;{&#CF7C=3WogeSN z_4XmVEJlQl0Z*m*e!aY~C!EONm9l#3(U6dkmDO}(Sig^!w-2LEF461x%PU3Tzm`eA3ep*fc z7VW1PSFc8DR>ct8@Npf_W`f}{O#4tg%9KJIejDA;uIOx(TF)D{UH-!i-R%{0Obpbe z&CT#Qt6<7B^eqFyK$P93Mrq9WkrHP|*Nd}9U;knkJqX;M3Hh6by>D3f9eRiF6SX%@ zCVItvi$GXTTuS2!$nTb<*Ti4GE{U#x5oH7j=PGqLwnB()c1Fk0?Bx%$Q%cu zV*cl_glXZsXkx$eL+Ia~5?Xg;t2L^1K+w)9M4oc8Mti&ar%@n0dy?|Xcjp5ni$-)! z*+VKsU4mWt_4mNHQ7D}_XXIvo*0y_I*afy3mdmM(g#8s=*v1`-PU4Wh)=d#FRyKRb zVSq&!d9z2sw*l4}?cJuhKl! zf-L8XrFS^DTaGr(e#dZJ!J!KGU*I-Wefw{}mA0Xalfx_$fe2+M_j{pM=)Zn(!`sHH zvU1_ju)HBTR7mGOqw$L54c2i8Gu0OK0D{=RlV$^sScA04L_OSWERvFaGOYk9KS@Z07UcF4(Ek8E+-&RB`oBUL6}gdH&{TQDL1 zcg#o`$+(d7`+VJ{c-vbzzN=YhE@CmD2cDM`4r>Dv9sl&M>+W1SygNuA5=AA{T|^tH zW-UCYOD?+RV&1R!ZyJ|$*qSHe&YI)kAZq?-{oldVqnvDoRKe`V0rTgt(eP;H zf(LU%uZ~ps9HvoP=aLpx^3)?AinQQ^M>B9=n|ej_k~?#FE;#(jpeN6>;)|vn2qNpf zm}Zq-Qwxy?Ckp&5nb(~THep-VusGWr9(Pa9 zi^3eu<_K5f82U%MLm3KWG++eSO>EE3;oEkvD&;+kXcziT9%_wxRVVMp##&lp>9u|x z-Kg5apwx>!5%E6m)gAS!_QK3z%O4zrfb;as8`ptIy%k%oE%?*&KKFxaN#g5QMvGtm z`YVO4v~@@QdiRlz$GVEEZgs7I+YRlEt|P$7ts0rGr>BR-MD=gkq_g#Ac$H!Qf>r(Z zyNb=8c;>tlIQ&sBQ(I^>m4^N%-oKO;5i4LUjE5kMR2;FF`le4wnEQ#@f8Or=?FiSp z)20!17M=$0@MSMKk2jIwtq9z+?E?^NQ}=j-@ZY>}c5~~T?;p3Fy_$zLz`~^)=;N2p-eKc!dOEzr|%yh020k?gHWKI;Ga zh3^LO8O~xe;eZ-($sE|?xOWR_5A_bwE?xmSp2Pdd;=_ss_ydB7Sr`Or7ngLTr{dxh*^XkA^qTc_6_N!Y9O5t1MPT(QS(l9pnkb;{0aH|axdUnWmR z7Po$WqZ1q}J>@q>mKELT)b-5PVWDfmGw5A-9GHVoQ0u^=DV~JNQ6XZ=CxS*cN-o0^ zf=0TuBVzK^S4xP{=tfH_#6}&ZQJ$GeEb5C^?oA<1FjZ*?dl3FgOP*|?agnwK@=Hzj zrUx~m!Xs+FXC<0O#JmTu@_O+H`PP{i(30Cip=TBc5r;~!@$LG9G6_V%$7&+*mh(Pl zIAM=`zNG!gTl9qAe%^dM`FyP}J<{#4I?FCaeXTb^LyN@asI@t@#WAMRf*oJG2`p19 zXPUNAD^`vvoGSIM@#$K8$ieD*m@L5ko^&8rZXL(t^XK97Ro}n6pQLmnP1hWE*^5?J zR+7Khh0Vj1B+SZwAAVn)6h4Q_&&BkSJHvUCp?!&5>2mQss|N=%*Un~B zO@|P|ygpTU@OZwptF5&<7PDH#>-QUjAL>jVsKCa@u!^%(zb*PLWe{X6R*#YyJG(e# zI{!M!P+nf%=*iw^(E*Y)+=7B$$4y0-cAp29o2$yU2=OPuO-aL-ppD3Pn zyAVU5(*6OrpPzJqvaf@5KYXqMDW3Gs`80R^v;4L$ z(7pcjcSv80F>D`isF%+En|YKHzn^F^n6IqGG>A(lWnDD;J52=hG4m`Q4Ozn4omZdg zn0YYQ!JMDJJ4ImTg=x=PL|hzqbT-s<%Ts!XybspHfIUF@Vfj3$=XCZ$yjd9EI?ZGN z|4B^Qsy`j)^HPQUTRV!MJsE3Tgk33jhn?qMA_mdvhQn@Wnkz0T9|i^@uFO;WP2N64 zq)MOWu5MdB#Nlz6@s|fAm>APHvtA9RI9y54pD@e3dPgIz-y#uTCKJ@T%NQCt81(#x zviFN%K8PkkK}5ek6vVng`9CE7(2PXP*QBTbi9|Khb1LHwNC+W-FV^0-8LfY5r(N^g zQpo)dmAH^n1N~o;h)%^NaYw(pz)X{cL1E{)Ec8o}R)bOji^IU^d>W{1P60++>rTT3 zMHiw2fW#yYtKJ);IzSc8{Uf(tl73P6QYMk=oK)RCj8HT$n{C zeykc59Tt|^jtMREoK*moeP7P;V$Nq{3FU<6B?L4^x;v_{VY0xN)eG;vjmt!S;hYIJ zrAKK05MbJ&yFm*4J!nE6U8eh}!j!|%Z&S4d$&A}J=+W~@Wh zOfH+zir~Fh`g6K^uMC<$6fTC=$?H_-?Rq${v-iYTl>{7qoiWOk^Yt@y;} zjQy+cqONaxQ~1}h2{(Ms9-slz>FU~Sc>!@lfh*20s$UOOe zO2P7@QLDe4gSAEq-U~Vjhj(h?!UA4RUqGQ;(SRHpUZoQBn%ii8A}OZv=M(}Q@TNlv z*&b)Flb#TW^c; z?R1q$EgpR;#p`FDZKib_`7?BxaiyPF_t@CAY=gsA2z%dJ99H-<^E0H1qQc|PVxD2Q zTdfoA&qomXSc|B|JDjdRnbt~V3w+n*4*VpLXO)Dia=vQX_c^ZMDRc(kXY@gb{_M_a zl=Vz43e=Y`NK@tfc>d;bj*z%RctQe$o?uNLh=BlB_5^gaaJVlRXVHilZyxv%;jrYR zZ;kG*6^we%_z4G0tu(W>GW}@AO9PxMWezVtdA8QoZ+F64FV=E>#-f8 zmcC+xJo*mFfZ`do2WYGG^6xLEK%Yms{i-^fZsXr;+=SYg9P8C_=9q`%Lzwa-cupWX z2H`to6o~AFL04@$ZQaNSGhnt z3{R`sJDAL;M(S!6TN`5!fC``ch|koi ztK6H@A`@M`;TLv`Zdck50>6A|mth*;6srELp*7zd47_Lm#DV|{`*RcNPA2`R&@cxm4MHDKGOym}qF1tZU+-G*(=i=gTwazLq9~+^ z;Hgz zZX+hY5?vFemxm28l2#vEs@0HSLj#BJ3eSB;z0mutd3PfRsJO0tPC`#p?U||mj^J&T zu3xW&TkLM^@5^f7ehTwC!@_gt4~HPC)579O`_Uve&b*okG6rqc<9pIOAMK1}rn$b9 zPg6)R_V?XB5sRBIbscfu*z*hs2N~lrc%YRQ%aOBd&|j45pMWo-*<{ab!}nU9TH67B z%jNjjL&a4*U%8wI>U(zQLRRc36%Qt2i{l+F{IT>sFf`HXh%m<)jB^o$?4SB&-8OEG z;6*e{g+In*cK&?(AnE(=LX6E61TDpLKbYTKT7E9#NqS{4#uXcfY?0vok}n zf2h#yrunh+dY{C{%z#t@_b=QQgQriKzJUv_ z%zLeg;R8QenG*x9%;XYsRBrglxi;eR_E zf`ot~U7`XK(%qm)NJ)1{hjcg6-6bW`(%s$N9h>g%=AHaJ=RDVY&i{+o1{ZVBHRf0& z?s1Q?a!jU6TKr`oiR@N1?e`Bq&yJ4HrODKFde_Z{4^HE)y5Tq97O1|x?#9sNG?s7F zDZH6X;eAXB6z40e@C;EFE_OM?zBTi|q7LJ2w*YD*9N(<@nqwWep&=yS)nVtHyJCN? zxAp^m#uTf5h)E)kod>z(H;7`TA$joj_-m{6s7C!)gT5rG@0~~b%mvidbhT$Sv*z*I%W0X5ZrJ$Q4@;m8UiDdH--V3+ zv0&qvB#i_zXwUjrJ`dTQv1(d^+&LXEWyzg%toCW4{6@LAv<~Q;tF}^5nnqeoGfh$| zGN2fyr~kz3&|KcyqM8V2{0X(5I zhV)h7R)5R-@a*N3?s+0#+K;fhAsQ4S9%gwDyD{JAnnx^bFJL&}KJmD};QiRnhcn+@ zVs?h!Rf4t8<0I}%4R^XD-tIHT$2faM-=6sv-OQ0ku{3=}8xz=(pK$_5xsyp{_~~d! zeWH=@?e7WVZm|vdJ(Sq3?y=na8z}bNvp-sytf_V(RZwBJz`g^dZCl^{i|RIKE&@Gl)Q zs^EoiJDrO;>@7#Iw_D8Bxg-GGUa7pZbGEP{A}ZDwp;^%L84VubPzARhX_dWxc!~Z=!b7M-F1(AK(9*hcI|esOTfkh4Nk}-)r3HR;0kh|OTSy!Ax@?RmvIl^>8p21} zxEHPD7M&wEI_eyWPf>nah4nv4I z!%4KCvN>#PEH5wbN&K?EKBdU&Z`mdlNFHpvjvy77DgxvNY+COuHj34@?zWyb(l1`` z3q6srTbQl%bk{sFvLr^A^E+$@twxwAnkT9wj1&uFq_3# z*pzXhA2@BTwvL%g^m|(()~F~5;!?sE0V*Jqp3>|tc&OIhnt-qp`D7Kta;Hb_x12fA zOH=ysY`W~lW4V=X8%n8!h7F1APlXIn7RAam**w;}JVvv@xUdkAC_+Z{?mn$P2jm1v zo?Ca=r^iaCJ2&lgAfS{!pOyZ_$0LeG+o3hO(S|pu_00&^(?eOYaFK3d7WwAu-dLc& zzg8RTO4Od25Gv^xER6&gX1wQVpHY4bCJaEFc^$~|RhY>&_>xfw!d(D`TMG7+({`_7 z=HYPZZJBcZ_{L0`nCRWz;CNen0P@q-?ta#{@W-}+9d(mOANS|on#x49<9Li4MtE6R zu-xaJ(9pwJD+Q~F!Vc>|!u!DG;Cgf|og<4w_e&1^OQ6;(`b;bGGu(PEtOD{6nzN-@ zjitb=^UyC6O9XUT*nR3~wc^dUE!BB9hRj2GZ~A6Y+*0V}Bkb&8l87d7$=SZ9qOVFc zY(963C-b?f;-79R3kGpko12P2*!}L+ENBc2Z1GU?7<)Q@bB3aQRulOOwa@6J%9Xnn zP_=FU4Bq_iPpp-47(zuS&}o!bGa}@+{n6Eh-*fKii#A>Nojjp(?@1F-8Ka5p&uQ@G zIU0p5pt2)va}S)=2|yu4G3%ZvIoDZOS}u3w&r&3(fr<>uWghEez}j-su&{t~zbwOH z$teGUnobz+q6biAVy|VHSSN}-eoIS|LE85|HvNC zm__i5m|5?4iI=g_bFj*S@qENwwPog({Xee10Hmm6xpMu#_n?f}ar6iJV5*3C?L_~3 znHI}$3q8yU)5SNC4I1@Kxl(x9Tv_pU$9KM0 z+tU+3@;`s%<5N#?DNwEdd}7B@a@cA31pE2&rN7MXLW1Ji@mQn&`&mBF}HuCSV*KyNaurD~WP6D;Kn>KLlGhV*U+)13qJ{^OsFr{jc& zK#J4h_5cT|+@I4u8f+Zd=bptN2I;Wg@tD#kN(bUNaUFDmk}h&_BB>SymnWb&&3ASV z>egibTl*zdFiW<=s9xi#(QqEg3Yo;y*AiJPfg~D?Hp`VPHv=k{jGdBq#; zy*bKT6|W{aAbJBzO|@pMS>_}=J?S3NrdxeUqd3vKU|BF@-E-oi5d0u|o z6o!Ck@(Xm(mtK3@UTC2JU7&7QzF@xPw}w1~&bXOjj%)5&SCZ$CtK;RB@724u=O*`2 zC=>w`B437o{rIHn|0zTMD;phebkA%dUJQEprQ9<|QCn~uOx4Fbr@r}~aeRGed+=L6mqMoI z9sa%Y!1@Qy_u%7#-a`kEqfVWfMwLBoW1(Vy?LnF5$mLg-R@X;d&n+C(=UoiPjI24h z0i5rv{GGSyjhDGttfTn_iFE-2>9H;-G3$AU6E04XD%QX$Ct!*wRy{>cVr_8!*5ls3 z_3OaId=O=Dc`3x=CHsrY)WWU%g6LrX<*b4xL2Y^sBP@jA+XQMa^f!b^2-jIua|`MG z$I+YWYm2wz#^HT&+$l;{FZG9XEiHe~JLNO%;$?_pZQSPEfuVIC+&2$e&<4+4khLzo zP=K*NKBaKWhqh_#u%?b1WGgmMAC#M#vK|PEk^Gwr@G4xk`z48}+zSZEolmc`sfewO zgtAQQ36O^1P9IL+p6}lXA)Y%qIDqDlX`R*+NN8HxmGK=}u5G!fAgCwhs8L0Mw3pD>()+^&v!?4pOF^q?zt

SMtr$(8HatfF&o^`48sSXDdmT7lqQ=TGBqV>Ly3eKZCiAj>>pmqx7L^yFTNSemXCj|XANDPXzBFEM01oIDW29k zT@VqU-3#Q%r|`Z;^K9IV+yy$W@=4Rf+1g-I`KsLQ_?=Jn30ASr^nqyOk1JSeSbp3b zgYXtFxx$u;q>i4Xz*w3rvF>H-?WvAs{?+|@1RSnYd|gicbCbI9GLQCZN9&!gZRVX} ze3Zw)`bN#E#PUku_6~z;9Hd?!2OHqn-6&KIZ;Dj1WS<7q*lcwz!1-Rfv}-_ak7to6 zV`#-UE@m^f>yb&?5_Dz@?x-)X?0$G69i6K@SFAI63YCZxNstf5q0g=y4~Ss?6O;8> zZe@cPB%+Si4z%sYZJj%8u04v)eUr119(O$NR3={i36Edxj!tU2g)x~e4{gcZ4ok+Z zg3U1x%Gq@KtrJj_u(9^M;u`nYX9i+PSj&%>(O!)2h_t0}qyAjLV`kH97RTf!iJnp> zcna4N>kX_dcp^YRX-T$lJ__L0hw3|6pvtsbd(<)L2MT(93Cz=ad{oER&w2J(+kWrO zoZ+ADGKRJD_7^$rWd?6^@(jsjrG8P!UGL*X-S8avPRJ{X1S;N7Pq6M$+I-`TOy4Nf;$!7@_B@R2NMw4O=n1NATegWSeJU;Gnn)`wAG?tfL^xu-XwJ#S3 zpHaxa`lp_$@HIIDD1?9e#+o+y{o12LA*9E1m*m+^%(PIgviE-^6fEwhXSmE(M!Uc` zSe@{buN?5lQ2R&k9n3eP@m;P_JrW&UI!zHlvBt|jzv~29D^#LTDF18PxB=7VnY4$x z-)YYhGDhU9;_GygZ&mYiM_-EC>>obPZcEK|^mG;IITXIU3g+!otB31+lNb8sSxZ8o zv*s;~RH@h5y@`59&&fp^$*p_@?hSY>y^4lP#Pxp!D#}NNh6Zi`i2=p=HoU*S+;W<; z(iQW;*e8TPL;8g*TiCA_4{N{|bH`^jEw(tZmCsii3<33QENr1ViB71~1sE+sLqSU` z*?@Qc^lbyK&|qlo@Y>x40a7v`4%yz-#{&PrV0&r~B78=-IKE(xen1k0kEPK_b&Z^G z=DknQ$*q^oSA9_~>b;=ZG&!44geRAyLKUT~H6E#kYQ6j5x~P(mGg97YHZH--D_3yf)WdRFfv_i{X(tLozj==+rnXD)7yR4VYvLm6NySdabrk z9k6KbA`Pvuj&@RZ42IKbKzr=xx8rc?94aK&C`Xr4HKEvgFCbz2a9FhQtuC=INuin>`0*8%_4YHNa zilo};!#epilCqyRCArGuq5w1V4-Qngj-giX+c(mQBn!%P%j5OWE{ByuRAoSE-cA z6(}Y@5|Boj`0r1rPhL?dc}tTDWUJ^PDb!ah=NapH~ zKf#9JFqymp{wvFx0$*bt*cW^nV3qX-H9muA24x#?1!>|DDd&6-+%El7Vhg`b9~gH> zQsFNws8?0j{2I;%wQB&Z$>KE1jP0C(TUfT?_@=#bcz(RPQV_GG3I}h^L8vS0Gjy>c zA)k61_2?stBlYQBw?pk6?H5;8qQe_eT3{Ucz6Vs}NdKWT>&eA8k51goqgf2Cds$E7N!;c(vGEoOVO<~8j;6}>c^y4Hl4>s~QX(-PG0Fbu zpCGg6c6813I_!=8(B2-nG*|!N&b-6Q=(G_`WZJ0y!0<&N zZS-C$+zmUE;U$;{@QK$yRWu{OWY$pi&Jc{d%0U_ej?*0YBW}H1Z8elevF6`v(b0~3 zTj%^vqA5(3<^{4Xi#@7!q zr?_Q+0M3Um#2e&K3h`Wx=;zsxdI?|otWj;@rPiP5Z@vq_npAeid2hp633#_u+>nyT z(t53m+*$AtO{CsaC)1s(U78RP)I7_*_&6F+5sLk2Gc1(OqE-juJxNdWrMXtyom1nu zo#Z*noP1ID7M6z7I!)&4g5``^igb4*IBbfD$tu_8?UaY=l-~Nrz;aujvh}*Ew5L$r zFJFIH5o-vov3cWm4=K64F1o&GFEgEtw!)@8THTVVxws8-K|p2H(Iigz(s+Gse=^^d z8bzs;$dK`cjj7iWJWkZixdu}wE2iB(_X>Hcxpn8g5$&dpPrv}DwR*dJg%?9x)`qA< z8X_;J{=tbAzC#VKRR@WQ3$+&_poopm!J=zlMt&P|BduE9B8M-&@dzSXNXh5CD7K$Q zvfX3noBuhObzCf5j|77^vpR~GI|wHS`|@M?4eid9ol=$wxdM!9V-B>Tm&4IJrg)x0 z$ZmE|JfA495ri`=bNadX=A~ z8~MsrIxV=@RbOdO!*W>PD^~k*+8ww21w$7! z&`)-8!GM{f?X<7CxSU2+a^*KcG30hM^0zha=SjR|#~tF3{ROwCV_pTNGaJAX1dB`) zjfCu2CP^i`BrbTW8XkA1*wSzcf7xviGTnJ>Z|mP|gRrU|*I zJ^wb_fq8kY2xWZ?C3bhcd)wOEhjX2TNXL@9r{iHVOWl`c|zii1fQPs)6(0LbaQO~yX&3R^E2bw2R8*S zp=+a3?)cH2mE!{d4Ij3snM zzp{4ZZf&>@S>t`^N)rlYw{ElNUEbRgISN~3x|;#2Cax{ zOO^F>+JsTGPo`Z)SwH^+D6|bu`U2$J>lKxNf7tJ_Ke$Gf%Nj;=^>!&=wHqWyi#?tq zhta;K4UE0l8+KjqtJVpX$&qDgJy}mZAjZBGYou)`Q~blz3`P-jr9jyt=` zU&(l$*o?;et)X()I3}Opdb#?9mm75TH(6XTW6oUV_+_6mSVDxbQ`l0MmePb|3x?_1 zt;Cb*ejcxhW=$R3dm;qg+SZk*Wy)Htoz35T?b(@Qw<@w;qIPz1F&H{kBgHwjJ;`J; zn|KBaiwNA;hfFLn6@*SjwrkQqkPtHMU7UWWaHUGD1m*h0<1x4XX=c@q-cx4Y^F7%f zLn(hYGzt3LcdL72D7q_x-59=4NK)TlDeTYHniWGqDGKy;A38uK3I0qWcKA95aun?SEB<<5q}7T4oXALTee33e7qBsB; z4*U*1$X@dl%R9b#6Oae{uq7Q?-Cm2UC^Z^VX^rPH=b?NDtQs+Q1-I8T%jv`Ds!V<*x}skztSx{& z5=;f5B`*j$t9Zqg%Mmnt&()miFRA9{=Aw>RvlXbO2fa7Ma&bM@P69G|UG=wvs(Wl_ z?Np{+Bq8k|1D3Y-2U#m9mhW`?nYfN@tsMbt5(6ja$!H>l=-E}_=V1Nrku@-sb!m0A%{y?Zjr@wCc1uZ(Eo%^NJSt#akycXZFjr zxx)?2FYw%qPNqO-0~X00%T?Lw^L{aJ_cDZU-$5@zFlefrns-~h?A8fw1PMWI_#|P? zL?n4kBr2E_&+c+w_py_VO&hC)4!dxa-MV0N)4;cY(Ro#ov`wwRT4cfKC(gh_l@qz% zz`egHW-q-1ZU^VdYtoFov?xJ!L z*qq*x%7$QqxOF_Rrm+Y!*=^X_xz0e5m8sqJWwM)t>=deMJh?`cYHjo9xP{+vUP2JL z?;6Gl)15?tUuK?<pv^P~oi%09fw{lfBDQ61zdg3X5rAzkPn8-M;tX;OmRFmeLByN>6% z6}w7zhEjzrU=DDGV|fo7C;K$pNZ0gq{PgI9P;VvP(fH<(C=TcW0IVO%Ohd8KjSnT4 zFP(eZ%s^zFSn^0YZb;#X1jF@axEl0BX+YZ@K{z-N5IcALsjpEYZO7`zE79y`(7gdL zlkFfjD8(+52+A*JB&z~w4q8mVe z3f~4a7&Pno@hr_m8dvEUv^y-tP3d=t6yufuw1A>k+UqT?t#t>iA;14x7x!|zK&k-c zar!5qq3Q;1DCXTW>vw!I8aHds=d|0p6RETg?wuC-lDi)A;p`T09Ln)4(svwbJtHGy zoUe`}Xf+m4IJ2^{5Y~ElpxaR)BSy@t$Xy>BAf2&;6`ixa$bhF9;QK_ssq4`;zrDa- zmRnwj?@?$)9N&1J8H;#jQ|eyp;I|;}ef{MH-8Yog!9c;+JhuVUf*3Q;6@Aw+W{MZG zN}i43o7;59!SY!YTRgUl1hN45*xI#`FvWQa7u5VAGi9bCxmf**w z9T4jEsY7s(N5xVYLcmMHl@hCWK`B0+U8{meeq3ca)CMkJ)R}w}VNb9QPe00+L1N^!~=ZHioWLH#iVS%y*pT$fe z87?S=Em$MAuYB5U&S0hf3vi60S}CV-EDqG6M7(-;nfX|Ipt2whVv)d#urN(s>Edc& z7PFy_OmDCuHr!i6R4Vq$*xV8(K8%(xM^rn*IIubHdNEX_ zgN_hic?Jv+bvQ=eARjU0j2X$o4~g2V`vuuiA-P%}Ds@jp@-cX4P`;`l{^dqQ36BeR z$^l2fg^=1V!}A#cPYF39ci%+ai8Mha@pK3G{1{%R6X?5A{lGErsB}9t5#q8iSFKoM zF7K0UHM+j%eAPcCOL*d1Yo}DJh5Yn*EyJSKk;zao7L04lxJEwldA==GXey5NaEq_q zA^GjJD-|F#S=$7NWFdt9krV#J*wk8w*eS|#+qvL&r%SI-7WrREYHNd*9G$a^x9N&s zIqVD~GyhyDm0ruFoBxvjE|V|)HB0_EyvwlA7KVHpUL#F%YYS;_wc{C{1xt+I+1Xj9 zy)a!p&vwK%{Uft4WW<1pZzh%!d)Z;uZTejLLL|5G!DPF3@biOLlXF1yGQL~DdLPlU z!l^f=OYr!n_#VidlU3TU(tS`iKOThE@=O}P>xyTrZMOxKT=p`jQRHe{SfM{waF2RZ zS8Zhh+LuJ5%kBkAbo|i+_W;XOf9G6HEP<)RNTVQ;J&xCoveZrWQ!ZABH*~K%k%DoQ zjMMhOdK=1EsOzo{wrCzTr{Sj{BF}4oI;1$SmLZMXdXnkRAp*Ojm$3)~$05_A?q8hn z6iTZu;hZGZ&qESsMh7}*d^aPXfLD4$Rn)txmNpW$D~)ANjO1vmEI3tS0-B1xzCKydRRHKTF5S%9Vxh`|tE#Fhy3E3LzMe)0)Pv?l z7#EZC(k!JT&25X$KQ8*wJ$0iwYJUczBhGSTmbSNl6c*A-NX%F#iJ5W#t|kMUBqZQbZIh?0-aPgk2;ecdg_JvxH7N6zPC zdQv=q&FKV?K?>Gw--vhVo&=6?Pit!uVByp6yYUuToUl+v(Y7wqniQ_bV1Y63QSa4* z?hw#a_D)XDmUd_nq>A|NQEHPPv7<;J$5@ek`LxL`DQ*`$botOilM(b39`pTGQ0OGP>iFT&iox9cJRryJ zoZ0d|q=3GhR-q8Mjztmw<(P|Vd@)Soa^(-@Eq^$Rztj2OkQf0TQ zE8FR8Z?{@nCJlIkSu)$HN%!7OBl3pP{H{aXQfDwG(*lHo%e%W%l;6P+YMBn1LWzEz z8}&wuNMAH!r7{Oc$1rY{36z^kF(A=g$$eV&WNZhwBd#QFHxltq-GS90(XAna zvduGwgpYnf(oAT1IN#hJ3S{W^(N=Z_RrtzvGi20Z3Z_x%GM*>L)>yGKxm7rdwSV+?zQMV5^w|`9lS3>H89)ra=KPMLOWn; z@MG4`Ed6UFQVy_RY2xHY2Yj;WY!0^V6$KtHw7RiFE}VyYaT+eP4ylB<%@t)n8!*10 z&}(Dt%Ra{nV*D+Cl%m4JnT*WsiW{Nr)5kWJE-964 zgn8_m1fJ?>jRz8QvD}_9p^v`tnv!5s@*$a7seV7bU-Y0b;#X51lc7{li^t3FpjQklrgpG$caq2cB8)`wR9s<$8=Tt z^~r+Gk&FH^dBVMR{77%lF^_6MMeQx-Br*l8lC#OF3x@blm`|jJeMrPM4!CKL?d5G$ z!uzysy*hL_LqA}GKfh&U_qq(V9Krc`5^Jhbv2o#R=|QV61};?p;0<@THOUw>p4oGv zKL~ZzZ8_!l=%CzwnfMRZT_l-1u1SaE7aaWtPe7`wL@x3?-=9|N_2bQ;7m`;uq8A3t zFfUG7z`=VW(Zz{&;s^QLd2Z>yyvUW+yOR~U)}F~Yg-hz0%4Ud8XN{}qzoFXG>z8kK zkZDqX>ZJ?~sf#y-dYfgbRH7Xq@~G3gay_nWuiJg+Z4c;$E55cL+|>)+ay%W>X@pdT za>v7{^e1AuUy&r&)`q^m^|86xOOLGio~`Wbtb8ku z52@QHynQhHWQKjP+_m*V!;i9B#v})-EC~AJG$9|drE=vq&k9|iUZ;@{9$hT7+Fsb% zS5gq|(|8G~>Te`}B;axN3H$wYbEt-%)pVhBb7yVMBg;3p#N}|)aDU$FwP9k=%XXyj z54mPF10?EZ388$e^-(u!4e^(b8;E{Y-y6+-LVKv$n z$xkFQ=RjA(D%|PT(t+;n-#dJSH(3*u^WVsjktZgW0rn~&vpCkP=lml7M*<*-ivZy) zQinMO)!k2QI7*1589QX zpYtVd5-{E*;YIr#d*{zes)87z;qvHT#|V^bJVQQLDz}`Cy?!^mu6lpY>Ga=<--b+b zfjyWqr}3`PS*eQ{1o+M2D>zicxk0Ho(V|b`;oxQ6o1^Sm_d4Bse!)iP*t-Z&IF5b^ z966<2sc4RhlT`NSG5po=3A}mQllmb8F9?me86AIoxb^U_LB>Z#>OH1 z(`?8GchL;^g+yI6OT7!B3~BoB`wV|%sl8J|Ss_Z!^@kTHg837QglY1*#n^73<@K|w zDgiii1LlcNq;O3Ge7|5fo(|mVDl3F)!$t@92A2wqcWp% zyn6M}W=-L%Y=y3eOj<{+$$$U`pHr85Qa;cM{r@EJpHIu3f_(N7pRq4*BV*}s{;n30 zHM%qW0}0TRmpNn$eNhis$gI}IR73o9S|{qacr+|e5cY+*VVinKKTNxZRkZ+j_#YMf zf1k|CvLsV0gSSuSdEDLW{-pw-bG{Va#4NHZRJ0W z{2*Kmjq65^m_JA#XVCj}U>z#-e=H7S?S&s1P1Wy$@h0pi>gX|*NX~1bgA>$j#;*q^34m_pY1>7(Kr5!6dwFX=7 z;{8y@mnuqV%~Um zzWl$w;JEg1RtsWSGYfU89!&Uqg`bi=7kF>C&q@_cyi0@noL|lLXC{{N&G|tKNN>sF z$<@4L$}D|1xVdNX%r9ifp1kFHLu6T9r?TA}h~Ie$Nd!FTA_V21Yh zKJ^yaP!}OSop3mrPWDBks4=d+Y>eBGMDewPE4tz1(Na~6^+gH1r6pg)`iofUmjRqB* z2uf%tT*~07ot5J!RcSKFqLDq5$@ejjlk@p!zj*Do$bSA*p|jdngt+GhV(5wEhknrt z@9L-Ba`k*1FZ4fR#1)pMTqNY4-k9Wq4Z@$l*!z1?n-~{SlO;6{L@HDYzuaF>3 z1uj{O+sl3yX+I7JawRoKyuu;&=9XoXCwS~Q$wz{4FTVOetA7!UE7S39ck^}sxm@ph zQ-42hEm|_ajMbM=*MEY&|JlO6VW$L~;Bd|C!?iNB62N~zOTr`;A&2%{&lF>xhIZ~8 zoW}*PutAzKiiB6OqkdvKz4{xQqCVQ>0!utt7}V1|D22&l36;o%ug6sw~|P4(0fD z?YMViTsLt4m8Ufp0v$>#F&)e)cERVx zrr|)aiB*)UTJ~?(IyPHb{rK_*A-R8YK3XcXbd>iJpg~+0h;Xo0eLIPi{hLS{9HDPH zc%E}!BzvWK5+={p;W;;$W?nZF71-||A$*m2+o8a_`_V>RP12?92EJA5lnb2D%BDL1 ze?4(s5UcAqVVJ44cZFuBE-HWjck3NdD8eBGrqe<*&f^6iuSqtsNnSpkNjB}=d?E~_ zJBPiBFe#lqvsy49$w{JlU;uTLEO^4P9_(a-IwkjFZrO*7fWrbY2e=ipL~@9Fp&q=8(nU(8ee*AAcI^0A>_cIwy6 zew2r0%sO{*`qw7k!1Vrs9NyFt>LDJUd~#38YQ6(IW3xVHSVbaLhh9IUrv9Xt#QKI3 zF>64>Qy{e^K(Mq}bN^K-7Ut!Z{bKnBadX4ljiQ4thfkdunkzpA&220gZW!kaFP*WZ zP=gLIfkNFkZHL~oAHBI>}*b*w2x6%Q?(d8_ww5H$3|+E{uu%E;D{ zzPyWzfJ`h3NK-WiGHPGDC0}4-$q>lJhIL7$n}fd5CdsQnpFxU>OLng!FX%#6lph+; z^v$Jm6tkm5nabZoAg(;7cjNzL9q0nWteCIlU?3)WUW>?27Ef>wm1AF4k}@rwN$FuY zHvG*bR_{L#Vy`BnLNEv#U8Kpxp#YaeK6Bw<{m&euWh{^wsP5*O* zr?4S#3pWCGH(uzP7Qz~pKK~M)Offa^Fg}AD#`5SGBcq>Sv7C`2fOQ`U7?gqH|F=?- zz_s;rHl2+EFXDD$`cwMv^6(HMh`~x+v~cK9^5IGAeV1V5U(ty?BWZM!7r@N!{a;;pi3_L7 zm05eIQ3!`J`fo#=jz9-2ahj!QdMrJPCaJWCqz1FVv#a@~ld%g39xoWx^&fdWe$sKj zx=^T@z0HIe%b)+p3Xp~9HkVN2WJo^^**RDbgTnbBC?q;!wmSKmq&O5uI)QXyd49>#OJ%?R9f2;eF9a5YNy%t( z`2TGS>=K^RWqL!c0|tNc|LqF~rPW<7=d~sdkz&l=!Fd=I*Cz`#9UBP}9RSk{L*45c z5HX4&(B*~SP+5sDKZ^QR)`(*v^>LZch*@ZI)A;;bP|LysN-EN>PkUyySzA&NO zW5oG?U2l4)IRQe*%4-NDM)#)nUq0r)HXL>z1?btgk^AT03t?hnT%bgM_v?t>N(Vup zgGk=N{a?q-Rzf>Fi7zQo<{c>@3uV$9l z1+%DP`{w*#_t$E_n8P@fEBoi(^s$HVfB!U{*X5iLV(1&(&}0>QA!Ph_?JW!HPT0jJ z2qd)g)XM7L-xubD-wDG|4U3df(wHD1-1zm6>>^u1V*+?g(qkzojt1O;27|FZ3;_J2 zc5>s&8d||3N!N&0fYop=ti5ZEg>cR`m`S3^yblW98HvLN`@TsME7&|BL${RFwC6I1 zT)N%uKo?fn@Ko>WjgW7PO3F4jVjg!rKlvsa4)RHWpSLpI7@S#WiPZaX7e*n31Xt7H z0~uLWyoS3gI{QVEroqy|1-rp!D>h5YSIw<(n#QB$4B4FLiJ!iSV*T*BVD|)`U_(Px6O!PK#tCk*`3`kIF2k!bUec zXV6CAHSgDvXSia0?sBxJ{^=9xw~nY{H6AzquejUo!RFRQqciGqYJt3WD^#nim|7jO zdnc2D_!djs->cZzo7Rb_b?f$g;hsGY?N~i}OM<@HD7io5gw#2p+M2xtQ?#{gv#D-= zc&WR~?F{qruHO3o`GGD0Lfzd3?F-zF>baTx;?XE86F%C%nGK7G3Eql& zrkz`$y^+v{h6l#6+2Z8oQ*+*3dn~8X+AfJIz5++OJ>j5Z`BYXE^9k(Uj+3+~%fbUR zG_3p8Ga{m2(?obgo_TX`P@W&|pE~8pQmeacXuo@>uQd>KG;hRu#h8IMhjt|v0>Jw0HVe&z> z&JF0EcS5dJ2)*l_9cf>ro%X`@z3N-^L_+h>QH zjD?4A)|KN4Ppfa^!J=tBajzwt%Mv`S-7X9U?u1q$g83yvQ;D(5`3wjBpFcZ`LmU!z z=Of~`WjF6S;L*H6yugO)C)wv-n^3x5{f37g1G>iri*HP2|J-(G>_%4)`!!=OI?sY9 z(=1y^D-iceQ*mz`qjufG(bpVVpGLPTLT|yfXGHW*ewYU3j*U&MKvVWVx$;wxh2Rfo zSb-?&w9mP!nj`-1CpW_2QsqZ%rpDQYqK8evT~5mv{4fjV=0%=j1$>)l2JfRqOFNNt z8QAadmuz3f%4^=nX*q^2u`S*`+`DgH%Jz*hqVYKYPrL6ceSbO(@n~_+Cr%li zT9b*||KS7o44KUKcH8^HY@d?A`23Z~Qgd=L+*UXjW{*OG&MmGn*~x6E5V!gGp58_F z_D@G0UF`FoY8Pkt=2@$-fpgkMXz0%wN9U7nPBlFAL0U?{h>@7`eU*`6q@*-1KBoI!H_t1Wm=?`nSS7vRS<&E zI5=oGjlF$&&RInzrR93NWJbpza5AEwiNGvMO+(Eird~^7v2LFLT~5MRE`@5H`1lD@ zYBC7k-!yfHvkP)Qrlli#BAlroegx6}8*Q1Pxw#+hBr<12Z=-v|BQ<{HPNo%Sx6(7j z69Dmh=qiCkWYguY{@i8LP&xWf(ud&d=l0R6}4((w* ztMH*Y1v$p`l~!H-R2}5dTc6_QkHu#>&*2Zwz{4qIDe_vum)r6r;00ld59vu(YdQ1h zQb95yYgIfQY4)M+2CUAU8+<|1=s0c{uH(R-a1E&+%v9^3lZPKHoFVP zKA}7h?VHAxJmsjK;$jsK(8dPO^cE4HKJA zxH4)~K6MBsPHK&~fvx0)-+DWA<2bE;=sEFQu(O4XBISjP>Q;faROa$CppqRx8vU+% zhG|lisZv{RJpBV77~<ab6u=@{uJy0C*j?`#?hH8 zOZ`r~KRXBWEn_X;0lP2!rS-KFN_OYxsR{O>bv=p!jSxOH7dRsI%Jf-e6-Q+eB~s~; zlbTycBKP)_taz?{b)1h8J*xoo!D`t@;GLSDX=?8#if8xE{!_q+V{o~oU;CPIq)@$1 z^XG)X-H+c4&f|DBnuP=|2I~#i`4Ez4XZPCigp=Dw#|z$D6NGL2pB!g+9~bPGUf82-D=*@caDQN6 z!4#5E-wL-1CSo63ghG=&H_&6_hTk4A>UY@Zso{Pz=j|Wx{>CzwBMH8nfiWL&iWJDb>+(6g!-@!`4=yJ>^b!0>Bmewp0Y z8q9cijf<4#-a*rrxUU|NF>S>)%yG@>0aCbVCgzn|LZR1@6pK46FohF>%3MTfZ&J~h zeLg2v+hgn~&<;85T~WQr&c{eg9Y(~OM;VaGQIwq=Yi`fk;kT_tOKi{Y`qY=gh?_7$ z!(g0P1DG&D;|aqW{r%G5s#HNrI0zGyu=(+=jiQqBGO-(&Gu=jAeMOp`lkY2RU{8~t zUIwchJ&vPcTYCQ?Uzz+#Ac8;bJlnU8}F8%Y3z{@}6Uy)eK@$|Y(yC%VIgX|JXUT>M-q6vgcF;+$=sTf!$XVwF}M-A1L z7})PNCd^&|$e}XAr}yrE1M*Ga>!sdDEy8fbi#>&HP|B5)0lut^=07(0kVBF>#gwNUpFCc&_h-l|v!+$MM&*;0%`)EzM z4g{Mk=LU(1rv0#9Og8h=H^2&q=4rq~K-AD8=_H|f^;;>9q1isO8@T3Uq~5Rug&?5Y zb;q|Ki|AgyA5{UrD>8oAQfI#a?+HDFAHr`b$?JwOj1KTtE!dQm5*9T=eI-ijgK&L* z^-EP~`(gu_8Z;US2Tt7kB|=n25RtCC`7TqN@eF3w2E_3{D!~S(`G`63}v#5zr0jPfBzqN+SP|9GhJ9 z2VCZ$HtT3EL)pfCq?YJcuYfU!YP4Yz0f!;O+?>RTUV}yI$K$D)A5t_>kY(*4n5fVn z1FxLPdv@GcVG@&>HSs^d5&Y%HfY9QPbR6ctPieu7FpCj4L(|r7eEmYw6l?S2 ztH4)MUTs~kX|o&j6Qpo@pw(slJXwVy!z9dq7?sb;?%VXW6Swlq1BVFeX_-KP8<7cV zm(!aP2ZNtc=hy;NMp3G2$oM9`)+UAV5=o!K&S^-)fA9PTowN})BwHOD)}<`ui?le1tl;JOg6&pM`YQND)6RW?$eA3k zz4P%U>MN;C33nHAE3Z-0=3#=M4@$m(cG4gg$&V=+>ZE^l&c=P1jFT)NXQ9 zUNeQ>Vrm^%2-7%(NbpP22oo8WfNN04!b8%XUc<1``M6hzCboU07v{)%zBMnue$pDD zwMZ#9{o^1wOEA77a>09WfuD>ZkXGl{>>odVJUQBzT}^(2vGy+&c5*u8blf3%u;oqS z*?tR4em*;?V9jNS6W?9)4hq(17XEu<2FU8+4C%h(*7C1vEn+S=+#~CVo6ZR$_pA`U zql-Wwo5}Y6`rOXFL9|riY=rpo8sicpF$A9BY+7y*Q&NfLG*kj*TW^O}_mO`LpdCG5 zq?dJ0OJHVl6_3Mw1;6DcH!<)pp?IN(>FocxV~baCd48$tSkcIJ9UVaii>j#39cR*VeB6 z%pxAD1mBG6$2d4~mp(r!bRv2S1mEM^JX=VBbG?$ERA9@s+YuSBT3B4K!>L%kPCD{uQVM`=z2`?{ z2*$q3F8oYge2nV1P}O4sKC$Vf>fG#N!j;$R#VC+>(U>E=x%VEL6|Q*pD3Y%TNy978 zXqrw2#j;RRpiFy=i{0(K^A5Fh6$*N@z{@@v4G68cZ&N?ux9utRwiVm=?;9gWL+GWd zqx2?VqH9}a3KCuX-1W2(&;7_P@^n6fA5M>|tB(FN*Z8}raD8Kf4pT;M3)IJt3Na2p zyo{C#Z>c|)^^7U1%ByGx_P)_Z3ewXxBkTBiJHbOd1T}gn%E4B*>a4`v2GbKc_RL#v z-)FhG8NaGx_^!}m@AS+e`OZ^DAyaOBqs%!=X3-ZvO(T-bE1{2{r4fSKsk>?G6VRKV z{+!8@CUoSp^5BZeR)aQsvHC7-XS4Nr>ckWvK|(&Ud2UkYEq5IA{jiZ5sJ8jobI@g8 zD%sA6s_p5{SNmv-3E*}H023p;wJH{w9>Vr`^g5xejYH)A57NWIS|ECX?1@UW7y9Y^ zh*DtgbioV&sN_fONWN;}yf@H`DwcMzAZ5IT5$3Mx<(ZqiRHt}%&hJ0Dq~|8G%n4i#UjQ(weRLdM zeOez!?xHdw>^J|Vtdi_x>A`cIA}THXXUyQ=NMcy<%*Wk}2DCYk8(#DMF0~fZ zT*|iDo_Q=MC$yWxQ7*tA>`Esb@;RdCY$;QJC<{_@=Wy*B7ybqguZ+O2YgnH*7?#WB z#S7a=V2T*{j^eMcp!cU&4IQLrE9pW-s7l|01by6cRo@PghnPl7LS-mI{bmX=gZRGc zJP!XE>dBwQwq~YB*6}87&KLY(UC}6?XSU+h@iR%!`w1bsL;Kn$coj4Ujf#lef007#9<$Pt|A{)HsqQLWz&P^iZqi zo@3IJwe%fO5P)~HW=dA|o?LeuzPMj|-OQnH;>T{-*a*NNcswRbXg?2_^N=x7 z&i?%-n&d95@5=FXb-&J?78e_NhJ0Q+1aJps)cXyuyg9| zsM>ej4i2r*;73ii@?my@Z(gTimX~AdEfvDe-Y$G5=EMC#Md}9eb@!VEDjZN9^wxME z=k^!&LytR~rQc)eFBgY!dhAl_uTL;}otb9!IuHl@c>RGvL&NgCSf))yuC^TL={a#- zJ@uvHC=>qVL^7-s(pH}7ErvhR^b{Ptc9hHW+UrRY*0T8HkcOz^O&6{fG7G<*w1fu; zQp#+11BH?~%!Y=z9n(F8Dsgy88Ayt}e2YWK-o=Hboq);^`C`QvN1srN6y|y#D}LHt zcW(<=1XjtU3Zsomk3!xOY0BPHmKj|#EWOLKhE#Ve^@h8a-8Exxh?lD1|#} zRCH?Ox6NXDpXsM;ef3|zipqGtBI%o%N1JO4$br&FUO_uVPk)7!uPnRt4D;9Q%cU-wFD1HmliLA&KA-mtd47PQT@+3(Xv9qhF)p*jQ6E}bFq$*tvG&zEI zPv>?aK@Nnj%8Lvx3)ypb(hr$Cmj>x2rk7BodiUSnHy0frXn_OXACrT;o`CIb`g5r_ zloHHu<>fd)y2r6Q!LG8*9)}JAA0TdT&b}T~6$MgbCKP{=Ho72*ARQ(mBk$jnSxZgk z;^F)rqM2J9ySQiM90uQ~P$mhQ6qv8@Kgv{JMmtVL4;fZ_2#K-2JY1c*rI(H0WZ8`(7uH^H`%AkXxH)AoUxck%1V zMOM-3VU9pSY(VqJW$!H}%N0A=f<(8QyI>esqy5gM(udL4w}Cm-)G7>Oky8CTRS@?E zEx(5jd(_Ko<{Qr}IclKbBZByMLvTa#^Ip|WnS`du95teWASU*!?iFX8Rw?8DT@|Nc zA*C;=+)Dh4+XfPdz+_$Tvqf^ae{82~9c{}yJNM)Dd(*IA zf^XC5dX|RJr?t9`sQ`wwBXGlKKx7?4(2YmOL}$s0f8a~0I3k#MI1Fe~L3JZGfCfrf zb}f)Q8Rb4GzwjnNHs~D~5imTt9%Faavocl@&QS>5RJzP43$20yWLxzW2YaEEDF>^h z<5f-X_W9a8nWlz^xa`;Nz@k4fBta5MNfnpj&pVc~<|G-;j^(}L$IX^kw|75;3pzro zW>^Ip8@ToUO;$iAF&fuioz{D^;003b6+=LrP7pA`!W&Hejm?VzN%yY8k5&HDdfocC z?U8EL0GD$!AmBvR-?~tc`o*+!FOah8`7#dRC9TF+D3I@;l z9D(dxE?V*CQ6YNOcjUA>`)VAjR3$?Fa1MF8&KB&Q>~pu>vmQH5?bjQe=!p$`*P#)z zpX}$Cy6uK#(A79?eo%U>-;4<*a5>RYh7%R^X*r!cLlY8GBza^hQ3hwk;3~V{-H+k} zoNI1zOdl3qZT!0ko5Qqpihekv-klFwGUsYmLn;&%we#% z5!wkieV=1Uqy?K9sW3+kY#alEbH=OC2@Ub(ByHliL8(LZjdKZVS9u# zfq*>@2Ux9}oBbuR$Y{XA1Vs8U->2yKT-5eK4m$w(blE8c5})JU9r{(R>;BfqoApL7 zpcRM!YBkNxvP6A`GeV@ynBG_&UEskU6~H{TDt+y|!Z%QYpWSdFt2>EuDSuo=ELK*Q zy~U{1vKrKX%zks6omVpecYAWWK46tDg|Xd{0@dKxFG6%e?LWF=@z6WR2y_F&l&WpD zF;kzoB}Zt0-LWG9y*(8z{0k-rYsZ2`)beqW#QUx{pppeVaqzDT-fWY92GwbwVr!iA zQ+7`tA(PLwhjk0!djRX3d9<7*$IRuk~7$l!B+ql${5P$pJ zRn%yVWE%Lx=-KFIHt-KeIKy9ubcg@#WBBA-2Cm)3GuyBFnd5i=x)+K@1+x%IdIqwvWIgp+$-q(H%Mgwg$e`?DEWevwUE!m1#U#r#ILi3a^sQj)?4 zQ-nbu6QMRdw9o?@Y$cX3d@YCzIJiZ=%sl(2H?9>b{c|@TplLR!q{SQQ0pC)x-=qav%J+Zo&pbU8ET4y? zp7rj#<89Tyl5hGTKtE$4!Jap+c}^&3d;FJr<(`L~Z2s?#7UB`$RGf;ZqWQNV=x8%bfVG$99cOwa3MsmID=R_jlc z>lI%HnCx9ghAhw>ubgXL9|OftZtLzbW1=G3k}K30O)9U1h=YYnWdN;$T5-Ayc0Fln zkT@9yA4aH1uKr;^X3WM1z`{1&EQ)zvKJpv>!&y7%CQ_?<2MZ8Zn;}s*+FnC-em(2Z zB_>3LKD9(KE|^F z^S&{lg4r43#9H0X!T#<+%lxWWCb)fO0ETFqPSox*7a?IXnf0%X%uJ+pF(gr8GUiGY zyA9_i70T7fWe>Or^dKrspAk}xI#>#$SP7XCKn$p&8S~j#%bR4>)iN{q@>7t@Vt@bR zwf!ofH?`3dWt)D5x!xzLh=u>ARUpB$Rp^MmoJBzeM=m}^ktUX4@7Rd3etde`^~0a1 z-wFi)1S~=IL<>D738sO}a=_(^=NS|!PadS(G5acknQ7KAL=%$0WF(!(EU>Q#xS%HC z4I?a%`Cs^PB_^V3Y!=2u~-<(NqF3K}6z!cJ}93m{yos#H}lI|zGDO=YaCk|%R@ z9!|B#0`5X43-h>SYArX`Z4J$-;WAO83tfI>pSrh9&6=&34x+lfzo%1)!QQT=r<Ge;*DoQzdWk7 z!Sf?RN`!UXvG)EJb(#jh#daA7FhuR)3#X}fB-Iq%y7RG;BnN9h^6H9%$|A+{{I~bJ z!#PJa*10dlP&-hyuz~uf+>E{Q%`vF=t!l}q+^?^&(@WK7^}hp&0z5}OF&-RlQO6%; zlyXO*-tmn+{*hz`tM>SnV{uD;cu9fV*P85fY)Nc8ph}NON9xpB_AFfR+86tb&HwO# z55S5Dt;pdMIX*b60eu_ddvyHk8R!odQTbILKPPFv#pCebI5Hllr!9ky?42-Vx3IJn zb_m5ef@dCIsVBh*R0z3spcHz$`jP+=ru4>COw?q2tU)Zx?4fDYSZ zS??S55C}_=c%sNS-6wnZ(&^f(xtImoqWp2LIDV4SRIHN!N;QqP z2OX7?6hP#%USYY0dUNki$m{ZA?nRHG+%eW{#g2h4tqJo`u`sGTc+h8+GD;Gh`tiej zG32vfcq~QB5$4GhKeo5ISlYkF$BQfrMyqjZM;yG;7V+Wqk|$o7h%5JdI>_kcWEe;= zVMHv0hQ4pf3|GH@m+UBQ&a199`iEowGrj3~yF@}}NX)V6iadLAUxh`0n5e=u7C)q1D^0JQ2+zqaF8W9|7}6-q}vHu*#IoOo=%7}(xp&h)(LHpI{iU*})O}{_BK*k+t!24IXS=x!Y~h+@CWvo; zA$K`33RLH6uTF#+Nu6Q4BkHkm&UBiV!AH!K(~b!u+r0;;VvXEV2^DqaP&~d7HoyXZ z6ZRYKXlEzEN2!&_nSB} z0m8*C)eIRMABIPyR@;mKsc)dfw>s_l#e%^BVLu21en`sN(1X_2cEx8B_{)OI26bJ>)L%{C&n_G<5Rws21)Ksg@L z=26ZAH;Ub?m3nw-?94z-*DbDd)bl&)13dm-(!k4eJ*|$!_|Laq7{Ec;63=KvoG*X)EcG7*0}np}xH#g2AaE{MZJy`Qa}+`j7T2v! zGUNMjZ=9aZ0A;8@EB8h^EuW{r@pO*_uI?lqe-W7_Um31uE6l8w@>Fyuj!;8bODqM#`ul$RLm{j zJ(e@G`0_JzBSC;~86$<*X&_idNrk*MpZJNNlwi}kUeYh1*=_D*x;Vka9_tcR!@{4< zC_qIr;fwMO2Px2XBT$@GpzhfP*k)&&>|XbTBQtA^tE7vw)9pJKj1K5UKavWr7;iHA zr0OEjC)_yFrOY%J zq5&rhkaTBY_n`JFuYkt%&eau?=I&TC><Z*$gy_W-kDw7Ti zIpA|7<*=q&4G^%IYG4O@)$Y#Uy?rVF)t;aQC|Xld0eWQ&Q^EUFJJP>>&X$vQ%a=0T znq946(-zhuI0{7DFZ7fL#b=V2zjx0HHK@50w~CrKS)DN3+p*(ope5dygkoYTR7O7w zOeho0<0;W6381m$hK*U)VIr+f9krAy6yWP2ib9thesfgTWJG)^?+v_y``mE{)^8FS zfuqRa2z3cH%9*5)^9I$qx5G{GOG{aO=BqI~Gg}9zo>_T6%E;^U>1STn(aT4J=Mlo)7I7@C%QR5uGJaM}J&-S4U3=^07Jefw01DK&V>!=^Y!( zh~ZXIeU~GIS9&_;)Mwj}gVWfzfZhzh(TX;BazeA-ls%#KuXnSlXBGjtulqZ+-aQKBXC zbc`jPtzUt)W;EWE%W5AFV#Z_u^nDhO()8V3Z{v!3qI3iczK!q5_C`gp3W4;j)1GI& zd;1L^&b~1Ko*9sH<_wrUJ24TIru*cY8VZ$%?hr+tZlgWv_iM)B0l{(+X9kE{8BIVacRp{AWJlKYYK`M3?_LZWFfPZQmwk{|ujAoyi~LP6!p{LQe<`W!A*zJs zz2pM#$se$trdE_#XKog)f9+S5z~#j&R_9^7hjcvvPy%tp1_T}R#1$BEZP0%I*H)c< z4vcGSTWdibKkadFVx4GxTYeYftsHXt1N9700OUM%uK!9b#G zcd*@N&iHF+uhmRybXNc1udsUjk8YMsIchxv12|10+F1?FPH=(Eu*{XMz2hisW=gXwHc$XF3pG4W z>ayJJ$botw2w0V54rhjhg2qaFWK2R*gR}b8S0ax78SehgsUNjn-ASIVr>sGsK!5SB z!h0_G>s^$rA5(L&A&i}xfv%r!K#CP}2;TQ!QUf)`V15&TL{*N_N)FEXh2PoLSmEJc zG-8J62Ap|NJZuaINP`Fn!fLB=%-~?1K7n$WP}=a~h}tyYB@a3b*r`rR{E$k1&|I$U zgQ5ym#(luhK1TiW@X*qcQqQvZIId@CkY3PU10B$-`au1H53rOPn54)Y3NhP1+;{zC z1bCU#*)G(8dpgnI-f#X^R#r|*dj^Vky)fdr(gYzjv?8p%FU3fG7piN0a{T2=)OaP0 zXix5oBmy{0U%|Fu;moe7eR*4Fd%?e!PH}77X|9+M+Z~{#pcl2zBM4VlvU#7J%I4=6 zPZ66$EI;vIu&d&W^In}u4vqNSZr4G410C|rjZUX#s4zn&g_vbzu8gn4bHBU}=$f#5Ful_br8Ja?~ayX>`sHCjx=Ua*uK&jZq%<2J ze$-gWKmbVmeQlahS;!tsYGuM;#2Lu=)%h}++`BL>=c=`A-rjgTKfd~?@VfT#*a~8m zI8E9P+(E?rc5p8GKcf?p!fR-S8EvLvOT2IM*F@S*2tcQgBabgX+gFkY#=@n`j@|_r zAra4$;5-h&w(YF?Y-ogtuU$b?C`{~}n9gD}aJR1L!d9sSMzL%O0{7NEoSzk04i1Vh zmnU4_aH1q?kwned`KY_$qNmpDUu{>^RkgM!CnO+v#d3v64RUZXhmJo|$v<%ysr!U}`V8yXYA!hT?pp*dlnfg8?b8I=mB} z_%S`$4}gc+YqzBCFRAj%UxNW21)+4uklGTZR*pJ0zZ5&!Yd9{>gGxe#UUgN{V#RuG z@dGy$GpKPpYD}KE zQ%ai%7zJkg=(x1dKX;kCtxEs%0>HoM+koH&v=Ajeq4Rc4(EDt|tm#N#_@VZbIY7sEt>Z^WUjwb@lk8H!=Uo zJu-R#7ZW+q_%Rt>>3W_(0r)Jzh|#7$W7pfKu4;@nG*@q$eHX_1l5`ayV8;rX8}kDz zQO8KHt#ZttJ9tAt4Kub$+4wxwlwf3i^nN<4;gR?}(j6*m<10t~tzO>$tB0&!M}l4g zhXoe&L(@r5sAjcxE3msuNDj1DMV7H~2T|j3=&$HGeS-57%((m-_E}=4Pi#s1zF+Oo z%FCP&j7%zZNf*v!<;0U$DQ&U&iryT)GmF#QTdiD9zNziFFY^ur9;e#6?hc^6p?W`G z8l4|mWQn7W!G4>X;#gg}u4|vMz+85}l|O{hEE0)RnS?-6QV(j5LOokf?Y^a2f^(d&$$ z#6ri>0xmM*Q5a}15fRQ}w1>cx-y7JO2iF#$*d6Ico)O_n|7WoxOj#YQsU>O(Qkx`%oEPmyF z)DYxLA3tSbIehxU5V#}+e6dpa(j449Z}3RNnG-m)msH^~?8gYjS&e$rVz@)ukCZA#N5%2uaqX`7(}@sPKpknE?e`6o1#$&e`_KCQB6;wXg@t=>yy z|A7umG6!n{ZSXoSPMM4)4>7RY2skda1D0N~PWGBUkN?Vi($*L;CZYXV_c6ieroCGu zG|I`&n2Kjy92g~Jq?wU_^p8@T1%c+pAhU{dPhQytH2zT875>9n;hEt5vBDpw7X>EwWA*Z0mi?fe&U>X_zdQ1Dh|fZ>_SR zf`(@66Ze>(aiJigy4E+C9=Tbap-2IvP}ukx4QNz;V}o&X@2YF+D_h4O@Zs*?+(gx+ za?S6TpjRw_*wjqLUdGI`rlzQf0*=G%ZBVUwt8QUwDHKo;U3cfu5Kqp>iL0(p-~guV z>>F$8h1ofdcM~7~tYy)G4|+d?^!{febd*xG5JP(dGZ#9PsZjAE3A`}Sz_?d#IVMfa z?fn{@S2C(P#7O>XXmE)N`GYfWt}JP|5lXm8^my;^Fy5P|M~Z-Zasx%X14nA$#ryF| z%wPAQk%<~+2OYXEXU~3;Uz@btl0z*+jv6hkQw?eQ3NKK)8^G&TU7MoUT5)}b<(1>Z zJ#rekY406e_O&yNW%Em|1f_-D_hp0N{Wxa{kqGxnAp#7=TFfYU!@&kK%Zfn05U+vX zb~vBf!VRwWaGl93Xn|Ya=&z0 zoO%D#n3&fa>D>4WD;KBJt~soIINk5D?M#GtM;hOj%nBr=59(r(OiHo8O>8;sxp5#s zX3*4ktjzqlPimqs_M4$}!=M+H#ht_kCBYMLv`mvL6RURDKWoF}J9!MPXg(;belmN$ zp2G!>ZJ1uWq*XUaJ%KwBkTZB|jB5G>^Go+ak41E7=xAQt36Qt+A4HD73Auz5;liRs zBXS(S--8`Rf%OcVWGP6BQ-=5kq}L%7mpHO~Oe|zn(3TIk@#cq>l0tbgEy3P-tlg)I zpIk;FRCtb|4yN&wg1#C-YoQOMbLBWf@RWK;4XRx|V0L7SBJhNj*HrZM)P(-|g=PkH zIRZX=YINep?;!YsrUuei(Wf^Xw2>B--!(NgfgVCtdHw?cxg+~r=LkiU3>OzW|Dw<< z(Y<{J>uEX-E-y0TM6ORDK@o8ALdb)ObW$9EPXmJPv<^SS4$>&`g&|f8ZlY=R3R!Gl z4b5!A`tQ7T1rMfEvnblh5kaIrbq#e)j~^9+zxWV_-+^tV?dgmSK=`D_PPN7H2T)cR zJmkNvf_4lq$S)pya1pjQ26EC8uw-oo+w5AF0e^?i^CJo9)j5f;yD)KMkJl<4O(Hi( z@ikVLp(6h+@m^R(2FjY~@8Fcm)Q}c1e$Ci)XM!RFq9Yqd@UN^!07NpdxuGB+eVBhq zgBAqL+6#F(3v>~PJLnB!Xjuq7Xwpx;=C!*bd=aTpuNW75f$8?>lhNS)hdgvJG^nh)`p$=9q9KO_@9xt(c`EZRv@C-U^>|>jkt#X_u6&LpO4uEI;2W z`SeUed}K=wenI4vw9qTE=QcOpw1qwx+6NAw*8?w$>cVwr`!b%az@OZiyY6d$4>Qz) zkC26>8jlTGmb~z8(CcKoq0*!R@tPe{gAjwOaP@AwA@APB0Ah|(cC;i4PH>;!|jw;AH%?M|kPrS5=kOcVF?Lm6WrHW5Ck`NM1E~L?(v#Z(B2PHpDSHGlX2Qd2n!J z$=N1uIH3nBD0|-l-z1wl9@1+GN!mg=4S6HmRv^jWK0fmitRIKZJfD>RX?>W&fN;}u zmkXbY?3Z5;=x}>kGswDF&edy~+ygt&Vm(PDe)@98ZhAQ3tN-}Tr!3@W%Z;Ie5N@+_ zYe`?v?OhofZdt&|&4f_cy0AT^kgc-tDX_`vis44qX)i;^`f(Nk7s(6HK(M}T#`-F- z#g168xn7PkcHgqDLY^TAJ&{k|WChSl5)yqKDZ3ku&20+=z0+KQwM><1lhkG%-9;`S zOoie~858lTC{p~>{*i&uwyV==wX?HqE|v!xu+(Jk?*}(d9e*y?Sg1KU@R^dE&9o@bZVtgPl# zQOIbKL9LMp%bvGPL&vFL`~+#hhDpa;AQ~_8jF?gQ!T1{F3ELg2(7m9HUH`_%V@($< zQ0yT<`H=O~TAVJlJ0#gN=lcOBH2uk}rhDBe60?}1W8`RSo0kP`mSqk78HdUVg)wjv%xQ^UG zUQNp(Dq2t!JCe-x3aGZ`j#`;KdtF~7%s7VglnOJHXvlC7qpbejX!ok=$8BZk*Wh=b zv;_d{qLnF_?FU!?Z?;MA1LX4By1z?TI+azDw&E-3zy!KJW*BHTw22SUoa72H3CH2 zmi#b9)RnJDT6|ftp=!NbNL~L`)IcV&hvB-7W*v5j#n2mh+Gi%|y2Gc>LZ4ceM(8FK zN!43%$PSr}Yd-)}Hp27BvYQx(Q;yaBPrB=6+Is!4a5Q$^!d%X9qYOU4!z= z^!wXwj?SmMNV)_WPks2;b8soG_ToaeZ?P#||5&6^gATqpFbE}uXzP@gyDl7li`h1F8Lr-J#bmSGjeH=MG?Oa&2 zpTN(BcpaT|Y@nV|-1-OhI_nJw>uB$&pw}~!LPiZ2rrZB7~zyNHriM)C{QkMPoZ>~EZ-z%ie z!f{ylu5YaMO!f&8Mi983XzJ*Q{;eOYu5%fk&aIa-2OqJ&z)o#hWMjHH^L+mbGLaXi zN^Mp8Q6|Efx5XSv=xN!0?FjtKNoN{1aPbe%h1LlHTE8mpGyv0kZ#45`x@V27*=Z?5 zj4-s?Xe4B^eK{#2LWWWnarIOgg^`8ClQ|=>;ll`D&5sY*&~r|!sO-~m_NPr@ZNBnA zO}6Kt4Ez*ey8`oR)JWQq-K@%#7A;b}qyP1>9*KwkorUhLQVk(0%L;#=;h*x2NBO7Gv8zN^#p zG&R?k_Oz$O3K7jR_$P>X{Ddl^w8#OoRYVdju_Lpy|K+n8Tv_v@O`uh)yAe5sk@DHh z8|0pd({&A3)Lr#kuwAmXXJQk6mb}jZb27Q};lg%5TgFJ}-j`;9U#@Rp)t8OwBjy&7 zk=^top&kd69Je?7k4=v~#)CuB%GwiPwv0sIUxTx66=9dxLUedBzkYsp^yCitp#I?a zfE8Jil6N*6lxxg?r~igt#`#-VvR_r!$DFOH6z(@NR$uwvc(w!!JYKm;f59#C^=jV0 zRB!mCrjhW9c^Jb-M|O{p@UzSiB_&yEdc@a`@eXM{p=a$#<=(@;qAe>9&>}Ei+HOa7 zCD=Q_vG!^}loD$*R?v`uh$xdv32zWWgAL~~p^7@QyxiWabDURE5QxuS_7f#pSzdFd z4Qvs$v4Ln6%CwQe4~D;H5Z_}&` z&w5;?;WAynD^bHzth6n!$yMoe@X{}D6&7C2+=%}>L`&(ou0|QQ-|$4s@%s*Ul!#!b z$Se2R@qrn?RJ7b^16f$)LAmyJy)pf})Fe`r6K@LWN>SB5&F8SPI&69pI9@X~=}cet z*50ZB?HCU$9)&UW^Yc9UW0mu=7S~!WzyHYe34O(l0~eM=-2c53_ImU~k`5I1Q{r6# za+Fub;_7XQl7>14wV#UEN`sOJ$o{{?oBJ! zw?2gt#3_Krz><$MQ=oV3PWW zQSw?^?=zRXyE_Oaem&0m6^_fy1PFJzxp@3f<^q>!UtGg%$qbv`l*(Lz6M^|ERuok4 z3qG73QkpaU_vdpgl$hxWGWPE1;Ki-sGw_lL=s3%esdgGLj?S12^x)ETuL73mecsk8 zQ%A_DUzVL+CDlik$b8O%+SMu>^s}pESz3w%f5*eki9>|38GI%ScSLfn)L-lNFl*yA z67<^50e*h`F;rnjgQl_?8uLKweFwt9o2#_0>3Qfk47*i5U0vVpp!h|*bFgre3l#)) zl(b~rKHsHTi31b#-pDR*e2$?sG~W0ViDkiUWI5Y;RCd*R+6p>V~?M5~9q5}v(Lbfl#|efsi-)M#agFBzDB4EXNQkv`TwSuVBOej zLqcAKe;GeJ4F59pEeMv;{a3Kc+#HwNC&R4^f#{zNKTNjq?ACtR!@KK<)pMg3b{X4r z=_3JMi)NsH0Ge!X{cX)98fZw^*gEo0L$0tEbB6l&kMDQp2kc&~``$ zgG9&2C&5N(@X}ZYC9d(RFXf%#uo(pDb7FOE4U2{Q_x=?XuqQ5?VXs9(;`3X%6-tlNFcJR*WC&;8-Tx!qJ`)oQ;%&W^Cnh=A**SR6^g*hiDLd@xr<*&A)}yPm z7NN2Rol1X-Ho1X9A1(EM9vdwD&FT$=)&?|zkIqj=tWdiI1}cY$3d@_}YCpc;y$Ehd zL^95$^1V&?F9?X8yziwv% zR3l@@keP&z$@!g;M(^H_A08=}xI;h#RMh+etF~DQx9BD*y4>bwm^U9`Q>;rP9!@z%)(<8(#*@+##odh1 z+J&<2OZqc@v_alH9h~zX9`>XA`aLZJ);V!!c2fvtCq^M#I2eM4-midQjpSe~;Zp_* zXA2xgh9r*I-|O~^DJ0Z%AHan!uUS~IL5?}KRmI^+Yj92e7pF2^nj&ju)hr3+Wul6Y z_V}LjLW~-x@C$TtaUmIbBPO;1d6K3^BKLE9p^OdT3h&-DJ56A>&GJf;&hIg z4uijc`xR&D@uXh()BbV)pdLyr#VWNHPU*}q?kZ3jH}_m_NALj9t0g3#6{)iKZ}a&< z@eiUU|GiH?q-4nh9Y2vYNWzAoW#_Ep-_*AYtZA7M^Bot6jfVg5nCRQYy$69F{uw~DzoWh!I?LY`%ebUw zCv|1gF}D8}(0V>^AZeu@*zPMo9&1M^cQ56?cYbgsCMOrs_RvdJ826`izYfr^_!jSd z8`1G(rKwDXi2)A-?$8otPq$Uq&b>$nim}gN24l_wk5|PxrDEq(Ab&NL4J1u)CB|ZP8hACDP{59^7BJ4)Yk!39(1!QYmgi?ln2eNEb^M01OENP16u(J^&~n} zc}N<;%>V3BJHrMmhyUT9kv}ir?aq=;5g#jUV-!Z~V&^83!Q72&vA<2?lnUS%WDKpi-W`BzCPNH$u2dcnmmt&>()g(Fq6hy%q@KNGM@b}t!?<_ zHKpaA>q|;o|H;hhMV2CtCw=Tq0s!r6AMa}mkd_)q694`RG1%S1I`4d%@cjmq(}EJ| z*r=4xQLPvYX-s55%&K!S01`Dnzxb3dKqJg5pM6`Xgmd)Jx z+)83X<*__lE3c<1Q>vsinO;8C^%pZ!@GlFI3Yd?XQE@1@v7;O6R@NQ!Z<-w-SzNpj zu|J;!u>+f7SL?E}g;UHj3%|z7rZi?w*%&Z3-7RwGw0Ua=PZnfn7ymeqC(q9>%q%VS zo33?k*k^w065;4jLB;hk7`WGIesM6+7pwvlAjtSu$X-d>egwIa&>nux-nNyRret%l zTN8PKhQgbDBkz;ismr0oqe{;7}v>75Bfk*dP!R+ zJg0++OwrTR?EKG1n61xSEaq?_0eWvk-@w`XMfd{O&-0_{*sC@?U)bOroUIP%w?Xsb_I-;yZvqtdfPcfPp zeE*1zpI}n`UA&Lwb|W9v?PFP*JeJ~jQTK#I0(n&`T;+KUO+Ec_hcdOKWL=wuiR&&3 z$v|zdhUvp;jMaY!Z}CTy35dwBc276|h#$Ev=ZOSItaUFAiVB?+grq!Rft*ipxDgRz z_dJ5HX>m#a@2!&uzxy6dyp3pu(IfM)7Ah4_Swb7r@|pLnC*$vqD`(eTzOBRLI^Q~c z;Zf7L>@o(D?VVjDw%TMi@^7!dZs4wmw=9#tl6s$z__^0Hm$K*E7ZO=uZ3GQFgGqQD zDdk8hjh@Lj+0uBNv;8rYR#r+VJK}DQ=eMmZKYNwHIzGkKDy8njMkGf^M@A-B)Wo?@F9}C8U86uQN0fwWSSx;n<9>s|rqvfn z*Wjsv_&Yj1U8+QpF94_uQ%iIC+3C6c22$qb$cSN?r>FL7aBNQ&X3`bRHb+b5CKDd) zTPx~nlq7GaL_Zk~iI8Wcvwi%gKH=WAK4#~mI%ho`7J_Wi{<%OM5ao<6|K10(4gb2Z z9A`d{jkrF)l*{MN-CM>(gthdtr|@~at|Jz3NR`*NzHUP2!IT`xLE2EEnQqFHCN5GQ zkKry26d%~&hSb!cojs#~G}0TMn_r*eBJco3<)OLkZcwGLW$$(g*X#%92L?oa9vBpP zi+Qph#|B6}RNzwrp3{MdH<5s>qQD;waHMbaKGX+8XFB}I@i&z>K`+J0o5O;!$?n0) zZzgG4nK)Io)r%j=KK&S>jeO{!X28n)0qK%%knZm8uCsjKoHOT7XJmM|pX99`;*18BN@#1zYTeG+=q_T>Tc#ANfm1TI&fN(05uG;Yh`eb(R!@jE-PtBVqz=x z91|E(gwrkJ50a{OvIMxlEDDDFm+GQ$H--Q2I39Fs_Tigjyf3-%G+QUNkuaz)^Z8sp z01Rv5VCmJ0;{V3TXk)x`m+a!=;>zU(EFsVD)iLA-Y>;xRxX8y?wZ6Cwd zUKpsbWPYrpBT(}xTr!N2j>U)3MYQ2`WvwGO{mW7@L@NaZqK=i`vV4|nWp?T0C~dok zXxXLkqnl?$@Z)c_De|r1x*gVCkAO|6#!X!Zte_bFr$4 z)w&9qy0&fkBHbzLV#N zlq(`yYAOm|Dl7~;+*0zZH-V@6OK*KCx3(Rd=@=~xx5k`4>`+JjjHkj#-`Lz-`_zL6G`K`;l>Ain* zPZMM0_{}sd>N^N6P}ZB@{3@}YhY;j^mNG)4fB@9}eQR=_T=%J(*XOkf;jxJPb1%$k zyTwIB`p7xyqC}>H^w%Nz`Bvjeh3Ph7c%;Zfj2Vp_K3wS908=+KFiHKLC7#jb_}Ae0 z`77v*ef`8TlBJJ1CY#3|IdKm!GQ=d;=cTID<(K9sgqpE4&&uS`m_B+STVxM4{QM!g zfTf8h@NQ?etBl><0S=29Xid~>wO9!Ob;6zz5nipfcUIhL&Yb7}5bYhR_6H(aozIpv zcyCWAW*l9ZPi#k~0!6iF=dJE3DMd5t>ru{LeT`0C5cL!7!s8o>qLV6+9zW$Z05BZs zQ;=)c;yVFCfhznkagEPZLAGpwF8CxS{=`kx=*gVK*y|WYw%3_-toidoGe_)m8M)8UL_vQ=@hUw@vAXM6yC*2|0qZyBdtU|o0vJzUI4|tVR2*OuYX_O za87=Ay7snTOz3jCB{oXRX|cl9XQD#2i?0hm#|V{cr6=Aqu#|kqOwv=RxkRh? zi|jyp(vSLBKl1wsqS|&g&@fxV-K1zPI5Lklg{*NGfdt2@EVf~ z%n!hRLaXQO;gVjWrGKbT{*E|(tP?C(q3ZgF-HyB+3*{&cR`JNODG`^PkL-@lph zmb1Sy0t)#XQ_DWClVFqmtz}EON-wmxU7%C*=a})~er1_4t4qf=5i{4=WLAFO_Bde) zL{1944x#Ku05s57Oq`VIjaOkkpSXe~=9^Z*>0$Zd`hrzq{ZilZG@(k;r^30SQ4xys zTj>?_*%U)^+U=`39a%W&wa-f>GmZQ zguAEJJ|^!~*C_2;47s#V}JDCu*x%uY*= zU1j8DB~|o@mXucqcd5@LPSzMn7tSxQx2hJJxAqLn z5Cv4=5H-~ata4Z`JO&2kCrswFUSJ}u?bOP7&Gsr`?7{GT z`kymhu@8<)rwgn`M*Kc__DUM^k0(bx711PX9PbDU4HZ>Uo#e2+cnKe?@^jcwqT9w& zigMNth9a&L+;4C>f&c~ynHxWzzy!qHt$@XuzCHu)_bhn-H93#stK`?u)<2sYd$kE~ zPpu|7YE$LA+#h3QMRPvCeg!F)O7*rO1B@F4KQCTi(gUEy>AF(Y$;N6k@OSpS3)4v5 znTwmNe{__f0*zoXpX~ma+fvO`sfahcuYEknl*Fz@Q4Dq5&BU(PdEee9Q^W{awK2wD zS5&13MZ!#cZbaPElV5YQfCX10d?lUv)xQ4;Qc!WMwgW)X)TQGoTklYxook$2kq7)E zBCrC>9s`k)3a?W`VSB+pQGOvdoZ$m=Ytr5U(Gud|;kqOD$k-}Wa4SX+fM_&FaoVeYh&S^XRM#`ziRQ5+YM z9F~r=%hW#1YQDq%l(|`r9Syc)IiYL+Ecn(pHWm(d(Q~Hs0mBs9y%Am9*SQw5pnK;% z^d}zS$y%Ye5Tb1V2Th>sp^(Uc;sFKyC?fd1uG*8}l#2g2`}I20i}ExWqdIrIE@fs& zeFG#uYHE5)Q+}}~&U7+WJKr|RchC;h>lbo^SH*URhc4fekxH6A8TqS~#ZpnkVGJ*) z&&JL`2ciwrmcJ71t5@U@B}y+RtKtE^bOxRhm2LZfT}^?S^;N!ob=SUq<-{Z`%}HKX zzfe0pE*DCxeaN+ci9ZgfxZjNu#}8%tN027;g-Liv&a|X7N$Eo-5ENoyY@Ak89BHab zEC+x+0K0Cp=g*ksuznp`{*iZ>*}4zsyyR`3&KlesRez)8 zW}XNy6}RiVhSk}d=G&Uehnud?X!v8Z(gXQ>U@q1f_KF$&R_Va)4fYveBYkAIewUU8 zMth>xOsQY6_OCfjdr$YCqMxuC&4#fpIJj4&qXKXmUM6%(%D*M1uTPPnu5P4*3CPjC z=H?8_ZWqV24qe$FLC9XTBa!j3`PhAkOP^?BV`GPBZjaFdo9sMPEEjDF>{6d~bknEj zsuGy!8a51WMlt?@Foz+JXo2=cc zzLiO~l9v;qfGt`WO5Oigir)|OE4)`C5~mfK-nRx)@aRZxxxZY!Ku@X=2Qm&|R3LU` za_Cv4fy8pSWJu~C9&Q;D@yK)j64_}(YV!i`W!84}F1%3l8-#Cyh?^n2KiZ!C}Vz1JKUh?3FWoDhsKc zEHAeMWiYM5Y=tcfp0ZcEp782IT$0j+Iq^nn3Rihu-6O!@A#}2Xfm+UyCq!7PgG#eC z`;dLP>cOV~yyXUv?cDn}O#Y_u^4bk9u%HA59vsTTpFviaZxW>vu-mFJ?9IM&6MY!V6?5iwbe1Pxb>$xB{Ao;ZFECNJI1SUAEnC#XNi`^APMNhc=y(Q-s_cndT&~Mr; z&T9vC?nB;3cE9Q21PT~@US2c(NrTwp16Fo-<}?w8dYb|`hyEW2=P@< zB~3nX-K})=rsV2+_Xs@VXPdhk1VcrUIC`h@f>?jYMU>xa8@;yiWnq%7mrg}1PPT+h zBZ}S}^q~$8w~r;HB5wB`LAgZU9~F|aFfc1NM(;TPj!dK$hBGRPpGHrJpcYRssNM;dk${`P8TaPk)rlk z<&{)oOMsyU%0AJ}^^ZTmn#CqEFXru@8SJiUt;io|Nd1UaW`6UGMd9VsS{xz)P)OuP z_Q=@Z#Me8=d3)OjoQ08durj$HDzF=~*&1&S8(A7UY@ISY{eD82RQsp@8e+K@*Kc(f&4yp3- zoQz{hfW7CbaXIlXV!60r?zrG^C%J6M{E~dUu$7^DM_z~No4>V@B@x4wY#SIL@VFPx zLT0u8Z{JElDyuDL*-CzA@K@DHw9L+$|9@l{$x95v3B{zTp`aOW>{H}q9BgiW0idvA zlA9V8CNjw@s_$pK8NCQoLR^cC#hIzn((V}g4AU!S;!GMl^xt1@0zNN2Y8;}554Sot zjx2+EFd5K@%l=LBev7NU;k|8NQZpMKuR*kZB_3uQh@ggs*|nir=p-+JOcu*}9SXox zZjMH*)T$h#!dA^KDY)hEVuYCN( zmL;u2Kdi5Nkcf?`oUS>?s!l?P30d_?(t;PAargug0DmBQRG^C++%0(@S@BPi#1V1@ zD;H~1QVkDR$X$!OF=ZgFR$~2y%*@QUQ3ctX4rXQL#*!Lk#eb4ZB}xaQE4}qg4a-$Eh4d)^Q;E*X zu1KaUo{h}TE^0mII@}@i_4a;q?tH8fwC!(F5E~iO7J=Ungg}i>e`Msz&aNsCqOTSF z+ao*WeR}%pK~HZQ2lr%=<2nHhc1blo-lhH>?bIZ6JW(qvk*+k%Q|1AIflE69P$xki zK+Vy3@-dE$I=H%zF&)q=b#hm?lX4@rnNJ{1f*-h1BpJ zW#k*f@%$hqMOnz3@i;dv^WL)l*Iv2J7e<@mkdRa`6QD5Ry0`W)!<4~PIhW*T5~D5w zAknMv-42ZmGn@Z9d0sU13e$gmYpZ#>#}`s&rw`Bhx!zo@uaVQw`jBz_gI-#pQ$iT0 zC!u>7Uj{TK9<$d*xz0}NE~J2hMjiOQbiMSK_%1r}F#DiaMi2)b}S#3IbNffH=JX~20$t7Wsh(B^rKOETM^#P&J%r(6J zN{1T=Z?dle>^sv%hXwByG_&%Jf8J`wRTi5}jp4(6DtH;NBx(KZLyEM9t^!u<%E&!E zz1HwgqN_QG4KR-N^XBCKMyNP>nFPVL?R>_70`Fg|D#y}%Lb0>5X&!Fz06~o9q5qOG zQUCP)i)?DtCs3w-pZ?=?_z)*d)(DuBoDS)hDIM}Bi#)!Z%?(C2rtmntnAn#(x`vYK zE@_sUgD#uk?tU7TPM|s@zy6!gPqY&tE1gCTzKG{NtDX{bz-<%oSOv~mxQbre3ke~A z@NkC-h#cB^b5{>D>B`cSy*q{Crc8-(hlj z>i$)W-*y1Glmai4zu4#ww2o6efuFg#t1Dg-_4qQ68k!mEj;FrOAkqA%qzPJ|yJ5O} zy@7*!!fII$`$v%aeXW*zEr$031A9Q+1eUIL;1m%DP*-Zc$yo&w(1X^#kTCg?L@fJvyfn|nK?@v_coDcPz0J+^G+1Y>1aIeDjrYHOR zHo36AstO%Owv14pVt47;?S}UtcX5s@!8J#?pQuzim-3kFyZqnS#B61yeqtP)UysTE z`vf+)HVh}poN0#3eDHlAHt6%^nChFEHI7IG=S*uVP(5D&g+U@G^P4P_5|>p*XqN1+ zTaKf1sWP)WV^%ek-wTqpt)XGTAK9HYE2Wtpl(N%?|1u6*zc-5J|B*%t z+gnXKI@e%-&v>#bId5c-3N~G`w|{>?j|Ba6Bg`!j0PFC@^DqoUW9y!{8Qw5AfZXuU$J0* zEvY+MEhDmqa=bJ<4Zpv_f;-Zu{XdZ7jT{i>P-q3<0)f&_LpeW{F$p%N zQPgDC^}t8#=OqOg{#S7h61VE+4aNuR8)H*bo&I<#>NZV5Z=|c8C{?(~WT}#)_JjFu zA<~XtP!B=V)lJy2zI^o&z#7^4#sK8aUHk}JHAAmhXnqo>NJINZy}}Y1=q9+Ga^@+s z^1``>#|`J{sY2ZU8(6%T7@L?YP4!WeOnYL91O!XCRqEwmx|6W{>V*HZHG5@<*O{@L z`2*?B74k7-`A$x~S~xYo>*oA1ElgfO2P?_t5{rbc zLnC6i6QvS$l)JWGJ8?s~zL*7)FwcZWsEUIguETJ^Pu4@n(X-4$r>4@GG&D8T62wI| z$AM>omWt7F!CxbS&X13e9ah~mcgnwoa*1|Q5AoKERjbSA)AsBtzr%Q&>h!t3>Q`df z33_P}Qq1PzBSqx%Q)h;@ljVe4ml)`f?r6X3AAO4}+L^~M^xk4eL>?AO4Jo3$K*ftW zcP?FgdU7%X33f=-IoO1qa5fx_re&eZ65jzk>>4xf`vOKJU$2f>d(~=M{K%P=tG;@7 zvVs0T7^DplpB>n`A?Q+>#F!4J#kqX-0mySeCZj!AB_v;_T4sPW&UyD3e=oKzzAJYq zRoEqGA-kveydaW}E+5uoh_zsL20VGu0$pqPgCmfv!9ptVLPKXXFf>J7_!?p0OxsBa zxrZ+QPgz<2RGUa~tpK$~e!j7E^e(7f^3_fd{KPuP-OlcBj?#wv|GH;njF0))^DO9P z_NQWElG{6#PVvV;gCo!_PgTX;**srtu4WYX+>ow{bjiD#ZT#CO2?^w3<1Kr@V5fT+ zauS3-bG?Ur_wqSxszj_pX7)-PF*?Sk%}E;|MGn^MfP?g8XXmd%utlk9+M?Y0Gds*@ zEH9x`${7Uc|!_nlc4z645j-zA}hhbu1ZZgyC~3-aP8C=(fh0W6sExud{J^gUtwMH9xQ z_ulrq|_jSExW!0PM7U_=T^aWiwQ^}JG zJWL_5U4UZ3`K%?l=6Z#>$r0^NG+XLQMeJ4?wQHL+XIJltidTtEwEzu$n5&pHz_CkDl`CJ3kzCYW{$l5=h(6R?{b(r|tJBw7ZiBNjp*gEia2%2rzRv8Z^D-YJ5iYzG{i z=y$K~sXxIxJPd&A>|G!#*DdXQj-2a=H@ODZvKEEW^l$pHgnXL~F&Qz_Bm`4IB z_5;xZ4Q{0S5#g!K;s)Yo@?{snz4>027hw zW=qNpNb|8UBbq^)Z)wNlevfbY?{EHlo1^p#vq@VkKX@|Nu?~>LDmD;YflEr@!5mCYFfMCaG|9HYiRJ22521;-BbKhSl~ zvv(%&)nBqgu3t;rpy}U*sQF~jtY3J)c_&Dzf7CUFe^K?*p{n|`nVu-z%wZG{rou`t zzV=Uyv?6P6Rc2a&X8pHK*oqOtHtg;Fvh*7J5#~D0DP!^R4xrA(2lCYd04QncW;?v9 zN&QfjwYs~SVe8TSm;d5|zW2n4u+FPV8cCYu>75~@?rP_$q$JN1YQpI!w-*-^6zFI| zd>UYBiNKdptHKdctsY8Hkdl(h&}!-&h=+NO1D16Ihxea~Mp==sg^o}WOv!MkQxhI0 zf3+xEwKF&S+$W`vQjdip{E+}7^`)?k1s>?LEoDxm8419mm7JQ2q>7*W3N!t*t;32P zpnWbuL8O|4EuFJ-$1DjVYN~uPUaGLFM~?Y+H)#@F z4-m5PfH%?1zM^`8w=rgwtuVDDcQfTW(fVrj-@rs~;&=UsvQgHog66%qm~*=V+D2^3 zl`Sey)@X8#?yMBCNbkM#kuV)poschHW8$pnJ$gXtBkc%HBZxKL|0f^XS=q;L?>zj? z70WkFuH;js0y_H3z{1gX*HyOV>HB=R6vMjVPJ>eejl?&*Pa+u-J3xsOK(yQt|J&ET zsyZ|=rY&%?NUe@2`(P|)@OwY5uW%pr9LSfAG)bWd0Q&mh>yXyE(vn<%1^}ctV!1%P z7>%8GMOzBukmF)bSV0jRTtC$Ys&w~>wmDV%AUW})OTt*FZ!Ug z^cY+c-{6MXns9pzl5!2VeU$u_wNI?aFYxe4Boud)hh1z3MZdKM$r{jLwL@b^T^R#F z+gElK>hLvHS9PrW9@b{A+)N=L?1L!6dk8l=jt}BJZg>Gi7LgS#QzKd0%~Y!G>YqXS zUy(i)U9NmgRsot<%f`c_kL1tq1rWS$GXxR_pk$y%)BgPVU|N%+bW&AI-8R)#R2##} z^8onhNP1M#`rqM@TvIn?5q;}m}mkowpPl36#~*K zR5TUEjN=rxKh^#M7Y`MAoZPB8CC8&nP*HMff*BwHLZE{Z>O_qM(SZ;KKnpGrzxRqV z`FT0Zhug@YE!5iS7NL!2{-|3GM9%o$n6~W>cLyXFF6NIWH8!eQv5J`fE@o+K8;pQ{ z5@tnYa=~F7F)^!=LiPX7wmH0-+h!I!k>6{)_jRt3Rb^0jy2E438)ePE7_&Ke>DH>X z950!*VUUsvaxAP23$G0zRPAkHvbFRm^j(doPEz;ogRnOdGTTD{ z8wXxJBEa4eF7scungFoUO^aladS|DGp`K#)l9B0$DoV3u@fsgIa6>1o{tvh#W5r%l zYPOG6>Rt^h+NZmXqfY6aeZTTj9sd^25=RUV6#e_ImK!NNx0am?Gbj^abS=7{nkjT4 z^iSa9Cp1{iCoezp?~>j5ST8)(edgc4xjMhqTe(p}n+^yC zwLU?K+&_E;;u9F4jyxS-iv2PaFjnOTVi_Q;J6+TNNKA{v8a(Pev#8E9)}8qXt0`^l zO^n;%Qn$&)4b_xxgxS$3_;CMaLuW?G-6ik%fhW<~83km5qtPNs@v*R==oKtpTUv=C z!SOdVHKwS~3i!F7hR5A1M6UwA-Gw2CZ2#`O^&BsUVt!$_jNIG(c??9$^Ru}GO>`wC zlUbSxYxW6WJQ_qmUE77LpOK@QZNwv={dBtHvpd$9;n0K$-KU!sWQmm<~Yu8P> z1RUhN)Dy>Ju@5@Q77UO`^#7wo z8#=ME7Z&MC$x8n={uzrX%V2cS#vSEBu_pIU4yLQ($kN4<+j;proA z(u+j2)$Q}`9y{ImnISt$(RHfwKDq;1rVGocuSU4Jka5BZH(YB#lqNtyANDicOX+p% zbWe<~zuwomG4h-$#P2yuEOyj*F%F>M(J|F+0LBJ2tFiTZ>kt+7D29_R8sbK)n$?@h zb$`QH1+p$X&C5tgk>RgeW0yxgzWx_Af0d{wPWYqz2gDpQg^~ZU zh&$r4Yw#=Ut9PKxnCq0#Wo+y7$OfMp!5TM7$~ts*N>yJ4>vddgKxYdXEolek!$U)j z8Ji)rngoJkV!6)yT!qP7i4P*>-UNNJ{In}(B^D&Hl7U* zO}*Cq`TWsO|E|L)qW7{V70gpwz?53~k|^K0pj=}%phTz7xUAG}FOJXEvnb>h9IVY# zl@o$@VtSIV;HG+)-TE1i#Kh?Bz6c(?RtMuJh&4r~X$rj-v%8${!8HWwX0lJc;^JZs zx)j+C_7yLE0whwhD!zptP@|&$S95W-$iaQgKw@reoLQHG^7HGuBiW&zOqM;((Gob8K)x(PjBSa@uYup-F%WHpmQ);2fc-(DGBEd5o5 z0>%6!TIq3EK!x0Ks-S_RtPKJ=O=H9(F7E0_2~U#;`u7$hxWyBnCX->C8kmI6^0}z5 zAo=s(Bb|4r$1&tQm zS)zr}`Y{%=okXx0HMw|})O?Ez@u>TDCiwh59TEmwpv2aMUF=x1HEcx-e15Tzk=2UTz6EP3`-e1^XJJCs98$rzMMbG zzSwZrpAcNBp7Cpb`RtUUCZDsl+15*=z@ba`-Y4uqtv%U*Pi2jBeSwPPSHJ^%-x@BVEn_<}Z zi);0be~e0G&kVgF3NZIaFM(bKL=}7zN&j%WBv_M!s{J1{;@WruX@ z+K0kbU1h(0ZnJlCDY|MLTjOrcefb&l-*@@1u5)7_K^rgU#Df7_(awz8FprKrX;ss? zye;-~{`kpTD3enecG8zJfwNUl#o+dncATop9g_=E%@EDn9Im=a{90a}WUDAMD>z!f zdxHLt+3n;D%*1!HkO?cOhI>hUh!YQjw_%G;;-ENOt=ZQEX|fhf7&OFFL?Gz=_P8iNnGy6p)O8Xbrk%B^GnP z#>-i&JzBtTx?_nNDR)EORhlvGx>kfO>K9-w?WVCg@RTP9oHe6nG&{QkJ9SUXR5zux z@~>71%9{DKFC;ILM2HO8rG{na_-m=j+g3& zhK3P0TDJPBwe?Q@Owh&}X1vSFY>hTq<3ie>;c{_tu|B?_>lXhbncTxb8`2kNHZ39j zPYXWySKB|joz3^A)ClnAH`+5c?ZCL44uWZq?&m~9pt1Uaj6kxp@nL9~+|{7#%jW+x zAlX+Kf~2*oD#$16KYFzgB&O@@cZ^kSAL*eV2C4QF;pt7w1HblmdJ=%i25}qjNDOXO z;}72iOAL0fGl~audKG1qzlVfi0!jF}HGCiZ1_uX*u|FlgfyYv$t6irvo!|4r@%;f9 z8*QqC9__uDZwIP3fN&9nON!+4*MX`^E>yFcK=n{~Aa|VAZN(?h|m>V%E#-nAn@_|E3oP$OxJP6}m`_NbY_S@M$6L zEua3l8-^su{=?};|MWG|(0q5U3$h->JG9etv83|WEu2u}xDun!@>B)zSgw1Xt4I6lr0w`ZMmYL-HuK&o_F_U~Ql>*KD2$^r_W+9Q&hH`InNW z{3o1)MFVpIE%&}_H-TwjK8NU2uci#lcS$JfA27>>IXz1?5|gvaReSd)Eu%DlcJboo zXhJ2UrI#Eqhn_?e?^9duW99r>1;? z4auhKi315*uiL>f0#sZGr2kICo>pnUO%Gvm;G+ZKVbkKl==k_YmWo7$y|68Obre3fWdGIgQ=?8Xs$ zVl^}MOSy*T>EFXR#r=j=zR(!C_VVhWVw=IVmo3>*1s|U!#rwj@MT0}b&4CXznA!0C znQMbgXY>~wt*Q+O(pVkYobC@ogquUK6!+xhUP*X|eWwE*11S@i@5F_m7wa2UnkPVc zDb+g9^)0*iC%U`C0>^=|p**sR;ZfZARp!v8BQ?~cy8w?|aV{t8b=sL*6AbVv|9;D? z+b~6S!0{3O+Dr5VP+eof2gd1@+a6I?oozo!5E?%_dv;z@nNtCcvE0GTHPgTlQZqLGEMl6PKB)cX98! z2${WSgfs@dL&qM;{n(J-tC=Ngm6$D%L-UU=xv!UQrL_Duf4@Bly(cw1x`M@)kV67s z3NY=A!-T02xsf~80pUUKiu7Kwu|-~4Z#{Fn9<@zWsSf~7nR;>;LIJu)Ni87E8;f1)pXQyZ!T;XC|52A!B+vyS4`w>=tH~$_YRlW(Z}VhL2&eax8IAF$svO7F z-1O?vE6Nw!E??1qvh;a@-Rs|1usm$Xc6i~W+U>!SPcc}wDyU;aWBln!by!`BM}7ST z%6beZ;9H?lZoaiYB=-+-M`lOFLl-Vdul3ltYU|qiwyQg0DrhME8i#yIRgdObr!QGQ zjlc@-hO{Vd2d|8ZDlS;)L$ds*<;IM+61^b(RLQ9e5KTLqRs)uU%Uh?Yl#uHee0nct z2{=SFTp3~OWoR;gS4T;vHUpO1`pbD2r?4o^Zf^U)mX~71B$n*ZNXg;UcwNukRJZ`1a+ejz7O~ozDV|AO4*kzdkA}_f-11mT-PTc)- zQ8Ah|!mYmc&xk0GkBpf&t*oF5ysA%*_G!50!hWYIqby;h!bY_olb)^{5)#q3>$*<{ z=u1GL-;#eJ`ZKGG*J8Lmf8QIwWET_ZTM?gnj)Z}#9~*J+VjBvfF)kXft9UKUT_sl%`GguP;;Xl$Ep6Yvr%5d;HacZTb3!k_1-1LX%%c zzw`bu0`J%#EabpQ%qFDR%hv}7{%3s@-0-<{yW4$mM*XaCpZW5*J(t3;Q(!r1IK{xw zT?y|e;KA$j4&*)?mLe*hD4b6o-b)J9JiNln#bY6XNa2sQl6^&3K=ZgDxPRjLS2#P7 zXQ;#BMDG!h_ipA|3m=G)){_14eghWEy)n+Zvkj7a^_MMJ3a5;Qjl%R4zkZvxeTEP6 zg7=I2@J&+t`|FCY=Ukb69@lm=I6`x5*`sefwxyjz=b%nIm_P*7eQjgi1Cwy?eJTNq5it5LhR zf6_cT*|eaNI?Dc)aUO|6QuE9HRW_l0`ShY>0JmRtfT)*f#)n*mTp8@NFDbYm?v^%~ zPPi?hA_upYDUA$?^naPkdiAc#%&?qjw7=iO=l%SDsE=0@9}ZH{QZG+={kOnCW^r}& zFj57D==Vy;kKLB>@$BiKM5ON?p3U;TEt>QF$Wf`o2KLU^mNU+~R@!}lyZ1TVM1^ z)bHNjtk03-Y+TOoz86i?x}*3~k+Im)+kG_r_&m9> zr*x6)y#eSNn`U+K^yJ^3Ac3FTS?PQtHQfgntgM?R0L3!byGN?-+FlI&IBjAOk?d-m?um#>bo*OC z>mL+^ezlj)dUahY>#t&VO!4j0Gijp^<-)S0*n;&dAizusCGQY?0ueqkeyfZiV_b|9{W8^a9 zWqzx$j_^^}^EHExqCCV+tJr*02Zx}(D}EPE)+<=!&s79LYEH6=_kn{JD# zcrZlG3hF+65D60|dh+o(zUG}FG8wD*Ue0bp?s&lggUR4RO+`#Z+kC4Zk=Tk~twH~FMNNnCv%Y5Eox7Ap}UC#UhbtS;(#+A1_IC1QCu0?b5SJ#6pM9(91c%x1vSqJmn>ZLUtT?rZLi-1XZ zJ!Hfxn5J#_W}-Xq-Lp_x_!VU@(YKKjx;mJ2bSM6X>}f`h zuf~)FG^PkRvbfJoc72a>-Ftfe@YilmQ`=(qb;R}MiJniyWiR{`?_?Q<9lK(po5}N0 zIcA65v~B03b^1gnZJXdXGlpGPoMF+7Hh7Nw5sk!wNkCdbp(6y# z;_953`0k#W%twz*Q2mR)>+-qR^YQ>6-(h3k$zjREiR*}6I``AN+a(va@2fP_xo{`H z0>Wdcl{dcPiAcO@p7w*}VIy#9y_FI_KGjC%o%a;nZR--H5~aad1Z$!|Rpq zk2u{i%|j?Mw#U=c1$7(D7K&%~hi2FxU(uAiE6!eoXA-N6fM~Pn^`$DA^d{EJ=H{X% z@R;beC)d#?>OcO5ws&mCOcmBrd3_;Bq**_e+W6vc^FFDHIPD&M(&#MV`&W}m*0VD7 zy^^rkI*`GR2sD#Qk}Vo~|J->w3`(cEyVH^@uqlLu6zDe9k~-sVix{#h=`sRiTDX~g zVKX#Jcx0s2o)Rt8&WG^Ud!C}C))ad;Hp&M0h0J)|+`j5F06qp_tW#yAj5 zjv}y}H^l~;CFG#QjI4@qzN>AX`-sl_`x_rGden?IH9WEhVyrK9Yx<5MZ|hs z3jhnI<@)FN3xdSa1rmB&d{b9R)JO9Cl?!i`H@KoAT}%0BnzAy6T)4Mz6JPChT<)D7 zuAEcsmQ?pNc^|C`Nfqj9-4;wY*^DH-u*0^a$X`zseK=Kj&#}Yad^(}319uh;>3d2S z*5@IkPjTb15Dn@xf^Zmwj_Ů@u&c6ZklSbmr~h#&*?#x%0YC{-aBHZD+NwW4NJ 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%0AGDTwwb^Ldrz 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

LW+MnkQdlj0+78!m8w^LZ6^QFNNZ&Ar?}9 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 z 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 z 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 diff --git a/document/public/imgs/plugins/files.png b/document/public/imgs/plugins/files.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f38c9d2b5f45eb19e5c4277ac7c5baecf444f7 GIT binary patch literal 158621 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

EV)!bQ!e`%aJBex) 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 { + const fileImgs = [ + { suffix: 'pdf', src: 'file/fill/pdf' }, + { suffix: 'ppt', src: 'file/fill/ppt' }, + { suffix: 'xlsx', src: 'file/fill/xlsx' }, + { suffix: 'csv', src: 'file/fill/csv' }, + { suffix: '(doc|docs)', src: 'file/fill/doc' }, + { suffix: 'txt', src: 'file/fill/txt' }, + { suffix: 'md', src: 'file/fill/markdown' }, + { suffix: 'html', src: 'file/fill/html' }, + { suffix: '(jpg|jpeg|png|gif|bmp|webp|svg|ico|tiff|tif)', src: 'image' }, + { suffix: '(mp3|wav|ogg|m4a|amr|mpga)', src: 'file/fill/audio' }, + { suffix: '(mp4|mov|avi|mpeg|webm)', src: 'file/fill/video' } + ]; - // { suffix: '.', src: '/imgs/files/file.svg' } -]; - -export function getFileIcon(name = '', defaultImg = 'file/fill/file') { return ( fileImgs.find((item) => new RegExp(`\.${item.suffix}`, 'gi').test(name))?.src || defaultImg ); -} +}; diff --git a/packages/global/common/file/tools.ts b/packages/global/common/file/tools.ts index 262cbe347..585ea4af0 100644 --- a/packages/global/common/file/tools.ts +++ b/packages/global/common/file/tools.ts @@ -1,7 +1,7 @@ import { detect } from 'jschardet'; import { documentFileType } from './constants'; import { ChatFileTypeEnum } from '../../core/chat/constants'; -import { type UserChatItemValueItemType } from '../../core/chat/type'; +import { type UserChatItemFileItemType } from '../../core/chat/type'; import * as fs from 'fs'; export const formatFileSize = (bytes: number): string => { @@ -36,7 +36,7 @@ export const detectFileEncodingByPath = async (path: string) => { }; // Url => user upload file type -export const parseUrlToFileType = (url: string): UserChatItemValueItemType['file'] | undefined => { +export const parseUrlToFileType = (url: string): UserChatItemFileItemType | undefined => { if (typeof url !== 'string') return; // Handle base64 image @@ -74,13 +74,13 @@ export const parseUrlToFileType = (url: string): UserChatItemValueItemType['file // Default to image type for non-document files return { type: ChatFileTypeEnum.image, - name: filename || 'null.png', + name: filename || 'null', url }; } catch (error) { return { - type: ChatFileTypeEnum.image, - name: 'invalid.png', + type: ChatFileTypeEnum.file, + name: url, url }; } diff --git a/packages/global/common/i18n/utils.ts b/packages/global/common/i18n/utils.ts index ac271bcab..16a65c528 100644 --- a/packages/global/common/i18n/utils.ts +++ b/packages/global/common/i18n/utils.ts @@ -2,5 +2,17 @@ import type { I18nStringType, localeType } from './type'; export const parseI18nString = (str: I18nStringType | string = '', lang = 'en') => { if (!str || typeof str === 'string') return str; - return str[lang as localeType] ?? str['en']; + + // 尝试使用当前语言 + if (str[lang as localeType]) { + return str[lang as localeType] || ''; + } + + // 如果当前语言是繁体中文但没有对应翻译,优先回退到简体中文 + if (lang === 'zh-Hant' && !str['zh-Hant'] && str['zh-CN']) { + return str['zh-CN']; + } + + // 最后回退到英文 + return str['en'] || ''; }; diff --git a/packages/global/common/parentFolder/type.d.ts b/packages/global/common/parentFolder/type.ts similarity index 87% rename from packages/global/common/parentFolder/type.d.ts rename to packages/global/common/parentFolder/type.ts index b962435a4..801d2b966 100644 --- a/packages/global/common/parentFolder/type.d.ts +++ b/packages/global/common/parentFolder/type.ts @@ -1,3 +1,8 @@ +import z from 'zod'; + +export const ParentIdSchema = z.string().nullish(); +export type ParentIdType = string | null | undefined; + export type GetPathProps = { sourceId?: ParentIdType; type: 'current' | 'parent'; @@ -7,7 +12,6 @@ export type ParentTreePathItemType = { parentId: string; parentName: string; }; -export type ParentIdType = string | null | undefined; export type GetResourceFolderListProps = { parentId: ParentIdType; diff --git a/packages/global/common/string/markdown.ts b/packages/global/common/string/markdown.ts index b171a626a..bfaab2f36 100644 --- a/packages/global/common/string/markdown.ts +++ b/packages/global/common/string/markdown.ts @@ -173,18 +173,20 @@ export const markdownProcess = async ({ }; export const matchMdImg = (text: string) => { - const base64Regex = /!\[([^\]]*)\]\((data:image\/[^;]+;base64[^)]+)\)/g; + // 优化后的正则: + // 1. 使用 [^\]]* 匹配 alt 文本(更精确) + // 2. 使用 [A-Za-z0-9+/=]+ 匹配 base64 数据(避免回溯) + // 3. 明确匹配 data:image/ 前缀 + const base64Regex = /!\[([^\]]*)\]\((data:image\/([^;]+);base64,([A-Za-z0-9+/=]+))\)/g; const imageList: ImageType[] = []; - text = text.replace(base64Regex, (match, altText, base64Url) => { + text = text.replace(base64Regex, (_match, altText, _fullDataUrl, mime, base64Data) => { const uuid = `IMAGE_${getNanoid(12)}_IMAGE`; - const mime = base64Url.split(';')[0].split(':')[1]; - const base64 = base64Url.split(',')[1]; imageList.push({ uuid, - base64, - mime + base64: base64Data, + mime: `image/${mime}` }); // 保持原有的 alt 文本,只替换 base64 部分 diff --git a/packages/global/common/string/textSplitter.ts b/packages/global/common/string/textSplitter.ts index e44341ccb..803d51468 100644 --- a/packages/global/common/string/textSplitter.ts +++ b/packages/global/common/string/textSplitter.ts @@ -82,9 +82,10 @@ const markdownTableSplit = (props: SplitProps): SplitResponse => { .join(' | ')} |`; const chunks: string[] = []; - let chunk = `${header} + const defaultChunk = `${header} ${mdSplitString} `; + let chunk = defaultChunk; for (let i = 2; i < splitText2Lines.length; i++) { const chunkLength = getTextValidLength(chunk); @@ -93,9 +94,7 @@ ${mdSplitString} // Over size if (chunkLength + nextLineLength > chunkSize) { chunks.push(chunk); - chunk = `${header} -${mdSplitString} -`; + chunk = defaultChunk; } chunk += `${splitText2Lines[i]}\n`; } diff --git a/packages/global/common/system/types/index.d.ts b/packages/global/common/system/types/index.d.ts index 4fd196276..379623b8c 100644 --- a/packages/global/common/system/types/index.d.ts +++ b/packages/global/common/system/types/index.d.ts @@ -79,7 +79,7 @@ export type FastGPTFeConfigsType = { concatMd?: string; docUrl?: string; openAPIDocUrl?: string; - systemPluginCourseUrl?: string; + submitPluginRequestUrl?: string; appTemplateCourse?: string; customApiDomain?: string; customSharePageDomain?: string; diff --git a/packages/global/common/time/timezone.ts b/packages/global/common/time/timezone.ts index f7eb2f9de..079585e0d 100644 --- a/packages/global/common/time/timezone.ts +++ b/packages/global/common/time/timezone.ts @@ -73,8 +73,8 @@ export const getTimeZoneList = () => { }; export const timeZoneList = getTimeZoneList(); -export const getMongoTimezoneCode = (timeString: string) => { - if (!timeString.includes(':')) { +export const getTimezoneCodeFromStr = (timeString: string | Date) => { + if (typeof timeString !== 'string' || !timeString.includes(':')) { return '+00:00'; } diff --git a/packages/global/core/ai/provider.ts b/packages/global/core/ai/provider.ts index 96047dca8..4e6ea3741 100644 --- a/packages/global/core/ai/provider.ts +++ b/packages/global/core/ai/provider.ts @@ -1,4 +1,4 @@ -import type { I18nStringStrictType } from '@fastgpt-sdk/plugin'; +import type { I18nStringStrictType } from '../../sdk/fastgpt-plugin'; export type ModelProviderItemType = { id: string; @@ -23,16 +23,18 @@ export const defaultProvider: ModelProviderItemType = { order: 999 }; -export const formatModelProviders = (data: { provider: string; value: I18nStringStrictType }[]) => { +export const formatModelProviders = ( + data: { provider: string; value: I18nStringStrictType; avatar: string }[] +) => { const getLocalizedName = (translations: I18nStringStrictType, language = 'en'): string => { return translations[language as langType] || translations.en; }; const formatModelProviderList = (language?: string): ModelProviderItemType[] => { - return data.map(({ provider, value }, index) => ({ + return data.map(({ provider, value, avatar }, index) => ({ id: provider, name: getLocalizedName(value, language), - avatar: `/api/system/plugin/models/${provider}.svg`, + avatar, order: index })); }; @@ -40,11 +42,11 @@ export const formatModelProviders = (data: { provider: string; value: I18nString const formatModelProviderMap = (language?: string) => { const provider = {} as Record; - data.forEach(({ provider: id, value }, index) => { + data.forEach(({ provider: id, value, avatar }, index) => { provider[id] = { id, name: getLocalizedName(value, language), - avatar: `/api/system/plugin/models/${id}.svg`, + avatar, order: index }; }); diff --git a/packages/global/core/ai/type.d.ts b/packages/global/core/ai/type.d.ts index 39373a40f..5ce40bab1 100644 --- a/packages/global/core/ai/type.d.ts +++ b/packages/global/core/ai/type.d.ts @@ -19,10 +19,11 @@ export type ChatCompletionContentPartFile = { type: 'file_url'; name: string; url: string; + key?: string; }; // Rewrite ChatCompletionContentPart, Add file type export type ChatCompletionContentPart = - | SdkChatCompletionContentPart + | (SdkChatCompletionContentPart & { key?: string }) | ChatCompletionContentPartFile; type CustomChatCompletionUserMessageParam = Omit & { role: 'user'; diff --git a/packages/global/core/app/constants.ts b/packages/global/core/app/constants.ts index e44d1fedf..a4bfe86a2 100644 --- a/packages/global/core/app/constants.ts +++ b/packages/global/core/app/constants.ts @@ -50,7 +50,11 @@ export const defaultChatInputGuideConfig = { export const defaultAppSelectFileConfig: AppFileSelectConfigType = { canSelectFile: false, canSelectImg: false, - maxFiles: 10 + maxFiles: 10, + canSelectVideo: false, + canSelectAudio: false, + canSelectCustomFileExtension: false, + customFileExtensionList: [] }; export enum AppTemplateTypeEnum { @@ -64,3 +68,45 @@ export enum AppTemplateTypeEnum { // special type contribute = 'contribute' } + +export const defaultFileExtensionTypes = { + canSelectFile: ['.pdf', '.docx', '.pptx', '.xlsx', '.txt', '.md', '.html', '.csv'], + canSelectImg: ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.svg'], + canSelectVideo: ['.mp4', '.mov', '.avi', '.mpeg', '.webm'], + canSelectAudio: ['.mp3', '.wav', '.ogg', '.m4a', '.amr', '.mpga'], + canSelectCustomFileExtension: [] +}; +export type FileExtensionKeyType = keyof typeof defaultFileExtensionTypes; +export const getUploadFileType = ({ + canSelectFile, + canSelectImg, + canSelectVideo, + canSelectAudio, + canSelectCustomFileExtension, + customFileExtensionList +}: { + canSelectFile?: boolean; + canSelectImg?: boolean; + canSelectVideo?: boolean; + canSelectAudio?: boolean; + canSelectCustomFileExtension?: boolean; + customFileExtensionList?: string[]; +}) => { + const types: string[] = []; + if (canSelectFile) { + types.push(...defaultFileExtensionTypes.canSelectFile); + } + if (canSelectImg) { + types.push(...defaultFileExtensionTypes.canSelectImg); + } + if (canSelectVideo) { + types.push(...defaultFileExtensionTypes.canSelectVideo); + } + if (canSelectAudio) { + types.push(...defaultFileExtensionTypes.canSelectAudio); + } + if (canSelectCustomFileExtension && customFileExtensionList) { + types.push(...customFileExtensionList); + } + return types.join(', '); +}; diff --git a/packages/global/core/app/jsonschema.ts b/packages/global/core/app/jsonschema.ts index ecb01b4bf..cc3061b62 100644 --- a/packages/global/core/app/jsonschema.ts +++ b/packages/global/core/app/jsonschema.ts @@ -4,7 +4,7 @@ import type { FlowNodeInputItemType, FlowNodeOutputItemType } from '../workflow/ import SwaggerParser from '@apidevtools/swagger-parser'; import yaml from 'js-yaml'; import type { OpenAPIV3 } from 'openapi-types'; -import type { OpenApiJsonSchema } from './httpTools/type'; +import type { OpenApiJsonSchema } from './tool/httpTool/type'; import { i18nT } from '../../../web/i18n/utils'; type SchemaInputValueType = 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object'; diff --git a/packages/global/core/app/mcpTools/type.d.ts b/packages/global/core/app/mcpTools/type.d.ts deleted file mode 100644 index 8234a532d..000000000 --- a/packages/global/core/app/mcpTools/type.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { McpToolConfigType } from '../type'; - -export type McpToolSetDataType = { - url: string; - headerSecret?: StoreSecretValueType; - toolList: McpToolConfigType[]; -}; - -export type McpToolDataType = McpToolConfigType & { - url: string; - headerSecret?: StoreSecretValueType; -}; diff --git a/packages/global/core/app/plugin/utils.ts b/packages/global/core/app/plugin/utils.ts deleted file mode 100644 index a7301eff2..000000000 --- a/packages/global/core/app/plugin/utils.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { type StoreNodeItemType } from '../../workflow/type/node'; -import { type FlowNodeInputItemType } from '../../workflow/type/io'; -import { FlowNodeTypeEnum } from '../../workflow/node/constant'; -import { PluginSourceEnum } from './constants'; - -export const getPluginInputsFromStoreNodes = (nodes: StoreNodeItemType[]) => { - return nodes.find((node) => node.flowNodeType === FlowNodeTypeEnum.pluginInput)?.inputs || []; -}; -export const getPluginRunContent = ({ - pluginInputs, - variables -}: { - pluginInputs: FlowNodeInputItemType[]; - variables: Record; -}) => { - const pluginInputsWithValue = pluginInputs.map((input) => { - const { key } = input; - const value = variables?.hasOwnProperty(key) ? variables[key] : input.defaultValue; - return { - ...input, - value - }; - }); - return JSON.stringify(pluginInputsWithValue); -}; - -/** - plugin id rule: - - personal: ObjectId - - commercial: commercial-ObjectId - - systemtool: systemTool-id - - mcp tool: mcp-parentId/toolName - (deprecated) community: community-id -*/ -export function splitCombinePluginId(id: string) { - const splitRes = id.split('-'); - if (splitRes.length === 1) { - // app id - return { - source: PluginSourceEnum.personal, - pluginId: id - }; - } - - const [source, ...rest] = id.split('-') as [PluginSourceEnum, string | undefined]; - const pluginId = rest.join('-'); - if (!source || !pluginId) throw new Error('pluginId not found'); - - // 兼容4.10.0 之前的插件 - if (source === 'community' || id === 'commercial-dalle3') { - return { - source: PluginSourceEnum.systemTool, - pluginId: `${PluginSourceEnum.systemTool}-${pluginId}` - }; - } - - if (source === 'mcp') { - return { - source: PluginSourceEnum.mcp, - pluginId - }; - } - if (source === 'http') { - return { - source: PluginSourceEnum.http, - pluginId - }; - } - return { source, pluginId: id }; -} diff --git a/packages/global/core/app/systemTool/constants.ts b/packages/global/core/app/systemTool/constants.ts deleted file mode 100644 index 8b13b4610..000000000 --- a/packages/global/core/app/systemTool/constants.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { i18nT } from '../../../../web/i18n/utils'; - -export enum SystemToolInputTypeEnum { - system = 'system', - team = 'team', - manual = 'manual' -} -export const SystemToolInputTypeMap = { - [SystemToolInputTypeEnum.system]: { - text: i18nT('common:System') - }, - [SystemToolInputTypeEnum.team]: { - text: i18nT('common:Team') - }, - [SystemToolInputTypeEnum.manual]: { - text: i18nT('common:Manual') - } -}; diff --git a/packages/global/core/app/plugin/constants.ts b/packages/global/core/app/tool/constants.ts similarity index 92% rename from packages/global/core/app/plugin/constants.ts rename to packages/global/core/app/tool/constants.ts index 3dc350f9f..014d404cf 100644 --- a/packages/global/core/app/plugin/constants.ts +++ b/packages/global/core/app/tool/constants.ts @@ -1,4 +1,4 @@ -export enum PluginSourceEnum { +export enum AppToolSourceEnum { personal = 'personal', // this is a app. systemTool = 'systemTool', // FastGPT-plugin tools, pure code. commercial = 'commercial', // configured in Pro, with associatedPluginId. Specially, commercial-dalle3 is a systemTool diff --git a/packages/global/core/app/httpTools/type.d.ts b/packages/global/core/app/tool/httpTool/type.d.ts similarity index 100% rename from packages/global/core/app/httpTools/type.d.ts rename to packages/global/core/app/tool/httpTool/type.d.ts diff --git a/packages/global/core/app/httpTools/utils.ts b/packages/global/core/app/tool/httpTool/utils.ts similarity index 89% rename from packages/global/core/app/httpTools/utils.ts rename to packages/global/core/app/tool/httpTool/utils.ts index eac7f4cc1..ffb813def 100644 --- a/packages/global/core/app/httpTools/utils.ts +++ b/packages/global/core/app/tool/httpTool/utils.ts @@ -1,14 +1,14 @@ -import { getNanoid } from '../../../common/string/tools'; +import { getNanoid } from '../../../../common/string/tools'; import type { PathDataType } from './type'; -import { type RuntimeNodeItemType } from '../../workflow/runtime/type'; -import { FlowNodeOutputTypeEnum, FlowNodeTypeEnum } from '../../workflow/node/constant'; -import { type HttpToolConfigType } from '../type'; -import { PluginSourceEnum } from '../plugin/constants'; -import { jsonSchema2NodeInput, jsonSchema2NodeOutput } from '../jsonschema'; -import { type StoreSecretValueType } from '../../../common/secret/type'; -import { type JsonSchemaPropertiesItemType } from '../jsonschema'; -import { NodeOutputKeyEnum, WorkflowIOValueTypeEnum } from '../../workflow/constants'; -import { i18nT } from '../../../../web/i18n/utils'; +import { type RuntimeNodeItemType } from '../../../workflow/runtime/type'; +import { FlowNodeOutputTypeEnum, FlowNodeTypeEnum } from '../../../workflow/node/constant'; +import { type HttpToolConfigType } from '../../type'; +import { AppToolSourceEnum } from '../constants'; +import { jsonSchema2NodeInput, jsonSchema2NodeOutput } from '../../jsonschema'; +import { type StoreSecretValueType } from '../../../../common/secret/type'; +import { type JsonSchemaPropertiesItemType } from '../../jsonschema'; +import { NodeOutputKeyEnum, WorkflowIOValueTypeEnum } from '../../../workflow/constants'; +import { i18nT } from '../../../../../web/i18n/utils'; export const getHTTPToolSetRuntimeNode = ({ name, @@ -66,7 +66,7 @@ export const getHTTPToolRuntimeNode = ({ intro: tool.description, toolConfig: { httpTool: { - toolId: `${PluginSourceEnum.http}-${parentId}/${tool.name}` + toolId: `${AppToolSourceEnum.http}-${parentId}/${tool.name}` } }, inputs: jsonSchema2NodeInput(tool.inputSchema), diff --git a/packages/global/core/app/tool/mcpTool/type.d.ts b/packages/global/core/app/tool/mcpTool/type.d.ts new file mode 100644 index 000000000..cdea9b0f3 --- /dev/null +++ b/packages/global/core/app/tool/mcpTool/type.d.ts @@ -0,0 +1,19 @@ +import type { StoreSecretValueType } from '../../../../common/secret/type'; +import type { JSONSchemaInputType } from '../../jsonschema'; + +export type McpToolConfigType = { + name: string; + description: string; + inputSchema: JSONSchemaInputType; +}; + +export type McpToolSetDataType = { + url: string; + headerSecret?: StoreSecretValueType; + toolList: McpToolConfigType[]; +}; + +export type McpToolDataType = McpToolConfigType & { + url: string; + headerSecret?: StoreSecretValueType; +}; diff --git a/packages/global/core/app/mcpTools/utils.ts b/packages/global/core/app/tool/mcpTool/utils.ts similarity index 76% rename from packages/global/core/app/mcpTools/utils.ts rename to packages/global/core/app/tool/mcpTool/utils.ts index 9d387081e..c5e5efeb2 100644 --- a/packages/global/core/app/mcpTools/utils.ts +++ b/packages/global/core/app/tool/mcpTool/utils.ts @@ -1,12 +1,12 @@ -import { NodeOutputKeyEnum, WorkflowIOValueTypeEnum } from '../../workflow/constants'; -import { i18nT } from '../../../../web/i18n/utils'; -import { FlowNodeOutputTypeEnum, FlowNodeTypeEnum } from '../../workflow/node/constant'; -import { type McpToolConfigType } from '../type'; -import { type RuntimeNodeItemType } from '../../workflow/runtime/type'; -import { type StoreSecretValueType } from '../../../common/secret/type'; -import { jsonSchema2NodeInput } from '../jsonschema'; -import { getNanoid } from '../../../common/string/tools'; -import { PluginSourceEnum } from '../plugin/constants'; +import { NodeOutputKeyEnum, WorkflowIOValueTypeEnum } from '../../../workflow/constants'; +import { i18nT } from '../../../../../web/i18n/utils'; +import { FlowNodeOutputTypeEnum, FlowNodeTypeEnum } from '../../../workflow/node/constant'; +import { type McpToolConfigType } from '../../tool/mcpTool/type'; +import { type RuntimeNodeItemType } from '../../../workflow/runtime/type'; +import { type StoreSecretValueType } from '../../../../common/secret/type'; +import { jsonSchema2NodeInput } from '../../jsonschema'; +import { getNanoid } from '../../../../common/string/tools'; +import { AppToolSourceEnum } from '../constants'; export const getMCPToolSetRuntimeNode = ({ url, @@ -59,7 +59,7 @@ export const getMCPToolRuntimeNode = ({ intro: tool.description, toolConfig: { mcpTool: { - toolId: `${PluginSourceEnum.mcp}-${parentId}/${tool.name}` + toolId: `${AppToolSourceEnum.mcp}-${parentId}/${tool.name}` } }, inputs: jsonSchema2NodeInput(tool.inputSchema), diff --git a/packages/global/core/app/tool/systemTool/constants.ts b/packages/global/core/app/tool/systemTool/constants.ts new file mode 100644 index 000000000..0b9e6a2b4 --- /dev/null +++ b/packages/global/core/app/tool/systemTool/constants.ts @@ -0,0 +1,18 @@ +import { i18nT } from '../../../../../web/i18n/utils'; + +export enum SystemToolSecretInputTypeEnum { + system = 'system', + team = 'team', + manual = 'manual' +} +export const SystemToolSecretInputTypeMap = { + [SystemToolSecretInputTypeEnum.system]: { + text: i18nT('common:System') + }, + [SystemToolSecretInputTypeEnum.team]: { + text: i18nT('common:Team') + }, + [SystemToolSecretInputTypeEnum.manual]: { + text: i18nT('common:Manual') + } +}; diff --git a/packages/global/core/app/plugin/type.d.ts b/packages/global/core/app/tool/type.d.ts similarity index 68% rename from packages/global/core/app/plugin/type.d.ts rename to packages/global/core/app/tool/type.d.ts index 1849beef7..2553b3a22 100644 --- a/packages/global/core/app/plugin/type.d.ts +++ b/packages/global/core/app/tool/type.d.ts @@ -6,8 +6,12 @@ import type { FlowNodeTemplateType } from '../../workflow/type/node'; import type { WorkflowTemplateType } from '../../workflow/type'; import type { FlowNodeInputItemType, FlowNodeOutputItemType } from '../../workflow/type/io'; import type { ParentIdType } from 'common/parentFolder/type'; +import type { I18nStringStrictType } from '../../../common/i18n/type'; +import type { I18nStringType } from '../../../common/i18n/type'; +import type { ToolSimpleType, ToolDetailType } from '../../../sdk/fastgpt-plugin'; +import type { PluginStatusType, SystemPluginToolTagType } from '../../plugin/type'; -export type PluginRuntimeType = { +export type AppToolRuntimeType = { id: string; teamId?: string; tmbId?: string; @@ -23,10 +27,9 @@ export type PluginRuntimeType = { hasTokenFee?: boolean; }; -// system plugin -export type SystemPluginTemplateItemType = WorkflowTemplateType & { - templateType: string; - +// System tool +export type AppToolTemplateItemType = WorkflowTemplateType & { + status?: PluginStatusType; // FastGPT-plugin tool inputs?: FlowNodeInputItemType[]; outputs?: FlowNodeOutputItemType[]; @@ -49,7 +52,8 @@ export type SystemPluginTemplateItemType = WorkflowTemplateType & { hasTokenFee?: boolean; pluginOrder?: number; - isActive?: boolean; + tags?: string[] | null; + defaultInstalled?: boolean; isOfficial?: boolean; // Admin config @@ -57,14 +61,16 @@ export type SystemPluginTemplateItemType = WorkflowTemplateType & { inputListVal?: Record; hasSystemSecret?: boolean; - // Plugin source type - toolSource?: 'uploaded' | 'built-in'; + // @deprecated use tags instead + isActive?: boolean; + templateType?: string; }; -export type SystemPluginTemplateListItemType = Omit< - SystemPluginTemplateItemType, - 'name' | 'intro' +export type AppToolTemplateListItemType = Omit< + AppToolTemplateItemType, + 'name' | 'intro' | 'workflow' > & { name: string; intro: string; + tags?: SystemPluginToolTagType[]; }; diff --git a/packages/global/core/app/tool/utils.ts b/packages/global/core/app/tool/utils.ts new file mode 100644 index 000000000..1838a1d3a --- /dev/null +++ b/packages/global/core/app/tool/utils.ts @@ -0,0 +1,46 @@ +import { AppToolSourceEnum } from '../tool/constants'; + +/** + Tool id rule: + - personal: ObjectId + - commercial: commercial-ObjectId + - systemtool: systemTool-id + - mcp tool: mcp-parentId/toolName + (deprecated) community: community-id +*/ +export function splitCombineToolId(id: string) { + const splitRes = id.split('-'); + if (splitRes.length === 1) { + // app id + return { + source: AppToolSourceEnum.personal, + pluginId: id + }; + } + + const [source, ...rest] = id.split('-') as [AppToolSourceEnum, string | undefined]; + const pluginId = rest.join('-'); + if (!source || !pluginId) throw new Error('pluginId not found'); + + // 兼容4.10.0 之前的插件 + if (source === 'community' || id === 'commercial-dalle3') { + return { + source: AppToolSourceEnum.systemTool, + pluginId: `${AppToolSourceEnum.systemTool}-${pluginId}` + }; + } + + if (source === 'mcp') { + return { + source: AppToolSourceEnum.mcp, + pluginId + }; + } + if (source === 'http') { + return { + source: AppToolSourceEnum.http, + pluginId + }; + } + return { source, pluginId: id }; +} diff --git a/packages/global/core/app/tool/workflowTool/utils.ts b/packages/global/core/app/tool/workflowTool/utils.ts new file mode 100644 index 000000000..a8f4ff8ab --- /dev/null +++ b/packages/global/core/app/tool/workflowTool/utils.ts @@ -0,0 +1,6 @@ +import { type StoreNodeItemType } from '../../../workflow/type/node'; +import { FlowNodeTypeEnum } from '../../../workflow/node/constant'; + +export const getWorkflowToolInputsFromStoreNodes = (nodes: StoreNodeItemType[]) => { + return nodes.find((node) => node.flowNodeType === FlowNodeTypeEnum.pluginInput)?.inputs || []; +}; diff --git a/packages/global/core/app/type.d.ts b/packages/global/core/app/type.d.ts index 40ff44c8b..9a2a92ca4 100644 --- a/packages/global/core/app/type.d.ts +++ b/packages/global/core/app/type.d.ts @@ -7,7 +7,7 @@ import type { VariableInputEnum, WorkflowIOValueTypeEnum } from '../workflow/constants'; -import type { SelectedDatasetType } from '../workflow/type/io'; +import type { InputComponentPropsType, SelectedDatasetType } from '../workflow/type/io'; import type { DatasetSearchModeEnum } from '../dataset/constants'; import { TeamTagSchema as TeamTagsSchemaType } from '@fastgpt/global/support/user/team/type.d'; import type { StoreEdgeItemType } from '../workflow/type/edge'; @@ -115,12 +115,6 @@ export type AppSimpleEditFormType = { chatConfig: AppChatConfigType; }; -export type McpToolConfigType = { - name: string; - description: string; - inputSchema: JSONSchemaInputType; -}; - export type HttpToolConfigType = { name: string; description: string; @@ -170,38 +164,11 @@ export type SettingAIDataType = { }; // variable -export type VariableItemType = { - // id: string; - key: string; - label: string; - type: VariableInputEnum; - required: boolean; - description: string; - valueType?: WorkflowIOValueTypeEnum; - defaultValue?: any; - - // input - maxLength?: number; - // password - minLength?: number; - // numberInput - max?: number; - min?: number; - // select - list?: { label: string; value: string }[]; - // file - canSelectFile?: boolean; - canSelectImg?: boolean; - maxFiles?: number; - // timeSelect - timeGranularity?: 'second' | 'minute' | 'hour' | 'day'; - timeType?: 'point' | 'range'; - timeRangeStart?: string; - timeRangeEnd?: string; - - // @deprecated - enums?: { value: string; label: string }[]; -}; +export type VariableItemType = AppFileSelectConfigType & + InputComponentPropsType & { + type: VariableInputEnum; + description: string; + }; // tts export type AppTTSConfigType = { type: 'none' | 'web' | 'model'; @@ -241,16 +208,14 @@ export type AppAutoExecuteConfigType = { }; // File export type AppFileSelectConfigType = { - canSelectFile: boolean; + maxFiles?: number; + canSelectFile?: boolean; customPdfParse?: boolean; - canSelectImg: boolean; - maxFiles: number; -}; - -export type SystemPluginListItemType = { - _id: string; - name: string; - avatar: string; + canSelectImg?: boolean; + canSelectVideo?: boolean; + canSelectAudio?: boolean; + canSelectCustomFileExtension?: boolean; + customFileExtensionList?: string[]; }; export type AppTemplateSchemaType = { diff --git a/packages/global/core/chat/adapt.ts b/packages/global/core/chat/adapt.ts index 31dde9544..326467f1e 100644 --- a/packages/global/core/chat/adapt.ts +++ b/packages/global/core/chat/adapt.ts @@ -17,6 +17,7 @@ import type { ChatCompletionToolMessageParam } from '../../core/ai/type.d'; import { ChatCompletionRequestMessageRoleEnum } from '../../core/ai/constants'; + const GPT2Chat = { [ChatCompletionRequestMessageRoleEnum.System]: ChatRoleEnum.System, [ChatCompletionRequestMessageRoleEnum.User]: ChatRoleEnum.Human, @@ -71,6 +72,7 @@ export const chats2GPTMessages = ({ if (item.file?.type === ChatFileTypeEnum.image) { return { type: 'image_url', + key: item.file.key, image_url: { url: item.file.url } @@ -79,7 +81,8 @@ export const chats2GPTMessages = ({ return { type: 'file_url', name: item.file?.name || '', - url: item.file.url + url: item.file.url, + key: item.file.key }; } } @@ -171,6 +174,7 @@ export const chats2GPTMessages = ({ return results; }; + export const GPTMessages2Chats = ({ messages, reserveTool = true, @@ -238,7 +242,8 @@ export const GPTMessages2Chats = ({ file: { type: ChatFileTypeEnum.image, name: '', - url: item.image_url.url + url: item.image_url.url, + key: item.key } }); } else if (item.type === 'file_url') { @@ -248,7 +253,8 @@ export const GPTMessages2Chats = ({ file: { type: ChatFileTypeEnum.file, name: item.name, - url: item.url + url: item.url, + key: item.key } }); } diff --git a/packages/global/core/chat/api.d.ts b/packages/global/core/chat/api.d.ts deleted file mode 100644 index 3c98979aa..000000000 --- a/packages/global/core/chat/api.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { OutLinkChatAuthProps } from '../../support/permission/chat'; - -export type UpdateChatFeedbackProps = OutLinkChatAuthProps & { - appId: string; - chatId: string; - dataId: string; - userBadFeedback?: string; - userGoodFeedback?: string; -}; diff --git a/packages/global/core/chat/api.ts b/packages/global/core/chat/api.ts new file mode 100644 index 000000000..3d66d3890 --- /dev/null +++ b/packages/global/core/chat/api.ts @@ -0,0 +1,68 @@ +import type { OutLinkChatAuthType } from '../../support/permission/chat/type'; +import { OutLinkChatAuthSchema } from '../../support/permission/chat/type'; +import { ObjectIdSchema } from '../../common/type/mongo'; +import z from 'zod'; + +export const PresignChatFileGetUrlSchema = z + .object({ + key: z.string().min(1), + appId: ObjectIdSchema, + outLinkAuthData: OutLinkChatAuthSchema.optional() + }) + .meta({ + description: '获取对话文件预览链接', + example: { + key: '1234567890', + appId: '1234567890', + outLinkAuthData: { + shareId: '1234567890', + outLinkUid: '1234567890' + } + } + }); +export type PresignChatFileGetUrlParams = z.infer & { + outLinkAuthData?: OutLinkChatAuthType; +}; + +export const PresignChatFilePostUrlSchema = z + .object({ + filename: z.string().min(1), + appId: ObjectIdSchema, + chatId: ObjectIdSchema, + outLinkAuthData: OutLinkChatAuthSchema.optional() + }) + .meta({ + description: '获取上传对话文件预签名 URL', + example: { + filename: '1234567890', + appId: '1234567890', + chatId: '1234567890', + outLinkAuthData: { + shareId: '1234567890', + outLinkUid: '1234567890' + } + } + }); +export type PresignChatFilePostUrlParams = z.infer & { + outLinkAuthData?: OutLinkChatAuthType; +}; + +export const UpdateChatFeedbackSchema = z + .object({ + appId: z.string().min(1), + chatId: z.string().min(1), + dataId: z.string().min(1), + userBadFeedback: z.string().optional(), + userGoodFeedback: z.string().optional() + }) + .meta({ + description: '更新对话反馈', + example: { + appId: '1234567890', + chatId: '1234567890', + dataId: '1234567890', + userBadFeedback: '1234567890', + userGoodFeedback: '1234567890' + } + }); +export type UpdateChatFeedbackProps = z.infer; diff --git a/packages/global/core/chat/type.d.ts b/packages/global/core/chat/type.d.ts index 3a69f7d91..bf8eea596 100644 --- a/packages/global/core/chat/type.d.ts +++ b/packages/global/core/chat/type.d.ts @@ -51,16 +51,18 @@ export type ChatWithAppSchema = Omit & { }; /* --------- chat item ---------- */ +export type UserChatItemFileItemType = { + type: `${ChatFileTypeEnum}`; + name?: string; + key?: string; + url: string; +}; export type UserChatItemValueItemType = { type: ChatItemValueTypeEnum.text | ChatItemValueTypeEnum.file; text?: { content: string; }; - file?: { - type: `${ChatFileTypeEnum}`; - name?: string; - url: string; - }; + file?: UserChatItemFileItemType; }; export type UserChatItemType = { obj: ChatRoleEnum.Human; diff --git a/packages/global/core/chat/utils.ts b/packages/global/core/chat/utils.ts index e6fcfb530..259184d14 100644 --- a/packages/global/core/chat/utils.ts +++ b/packages/global/core/chat/utils.ts @@ -171,7 +171,8 @@ export const removeEmptyUserInput = (input?: UserChatItemValueItemType[]) => { if (item.type === ChatItemValueTypeEnum.text && !item.text?.content?.trim()) { return false; } - if (item.type === ChatItemValueTypeEnum.file && !item.file?.url) { + // type 为 'file' 时 key 和 url 不能同时为空 + if (item.type === ChatItemValueTypeEnum.file && !item.file?.key && !item.file?.url) { return false; } return true; @@ -204,7 +205,7 @@ export const getChatSourceByPublishChannel = (publishChannel: PublishChannelEnum } }; -/* +/* Merge chat responseData 1. Same tool mergeSignId (Interactive tool node) 2. Recursively merge plugin details with same mergeSignId diff --git a/packages/global/core/plugin/admin/tool/type.ts b/packages/global/core/plugin/admin/tool/type.ts new file mode 100644 index 000000000..724299f03 --- /dev/null +++ b/packages/global/core/plugin/admin/tool/type.ts @@ -0,0 +1,38 @@ +import { ParentIdSchema } from '../../../../common/parentFolder/type'; +import { SystemToolBasicConfigSchema, ToolSecretInputItemSchema } from '../../tool/type'; +import z from 'zod'; + +export const AdminSystemToolListItemSchema = SystemToolBasicConfigSchema.extend({ + id: z.string(), + parentId: ParentIdSchema, + name: z.string(), + intro: z.string().optional(), + author: z.string().optional(), + avatar: z.string().optional(), + tags: z.array(z.string()).nullish(), + + hasSystemSecret: z.boolean().optional(), + + // App tool + associatedPluginId: z.string().optional(), + + isFolder: z.boolean().optional(), + hasSecretInput: z.boolean() +}); +export type AdminSystemToolListItemType = z.infer; + +// Child config schema for update +export const ToolsetChildSchema = z.object({ + pluginId: z.string(), + name: z.string(), + systemKeyCost: z.number().optional() +}); +export const AdminSystemToolDetailSchema = AdminSystemToolListItemSchema.omit({ + hasSecretInput: true +}).extend({ + userGuide: z.string().nullish(), + inputList: z.array(ToolSecretInputItemSchema).optional(), + inputListVal: z.record(z.string(), z.any()).nullish(), + childTools: z.array(ToolsetChildSchema).optional() +}); +export type AdminSystemToolDetailType = z.infer; diff --git a/packages/global/core/plugin/schema/type.ts b/packages/global/core/plugin/schema/type.ts new file mode 100644 index 000000000..5318ccf46 --- /dev/null +++ b/packages/global/core/plugin/schema/type.ts @@ -0,0 +1,9 @@ +import z from 'zod'; + +export const TeamInstalledPluginSchema = z.object({ + _id: z.string(), + teamId: z.string(), + pluginId: z.string(), + installed: z.boolean() +}); +export type TeamInstalledPluginSchemaType = z.infer; diff --git a/packages/global/core/plugin/tool/type.ts b/packages/global/core/plugin/tool/type.ts new file mode 100644 index 000000000..1ea135a79 --- /dev/null +++ b/packages/global/core/plugin/tool/type.ts @@ -0,0 +1,57 @@ +import z from 'zod'; +import { PluginStatusEnum, PluginStatusSchema } from '../type'; + +// 无论哪种 Tool,都会有这一层配置 +export const SystemToolBasicConfigSchema = z.object({ + defaultInstalled: z.boolean().optional(), + status: PluginStatusSchema.optional().default(PluginStatusEnum.Normal), + originCost: z.number().optional(), + currentCost: z.number().optional(), + hasTokenFee: z.boolean().optional(), + systemKeyCost: z.number().optional(), + pluginOrder: z.number().optional() +}); + +export const SystemPluginToolCollectionSchema = SystemToolBasicConfigSchema.extend({ + pluginId: z.string(), + customConfig: z + .object({ + name: z.string(), + avatar: z.string().optional(), + intro: z.string().optional(), + toolDescription: z.string().optional(), + version: z.string(), + tags: z.array(z.string()).nullish(), + associatedPluginId: z.string().optional(), + userGuide: z.string().optional(), + author: z.string().optional() + }) + .optional(), + inputListVal: z.record(z.string(), z.any()).optional(), + + // @deprecated + isActive: z.boolean().optional(), + inputConfig: z + .array( + z.object({ + key: z.string(), + label: z.string(), + description: z.string().optional(), + value: z.any().optional() + }) + ) + .optional() +}); +export type SystemPluginToolCollectionType = z.infer; + +// TODO: 移动到 plugin sdk 里 +export const ToolSecretInputItemSchema = z.object({ + key: z.string(), + label: z.string(), + description: z.string().optional(), + required: z.boolean().optional(), + inputType: z.enum(['input', 'numberInput', 'secret', 'switch', 'select']), + value: z.any().optional(), + list: z.array(z.object({ label: z.string(), value: z.string() })).optional() +}); +export type ToolSecretInputItemType = z.infer; diff --git a/packages/global/core/plugin/type.ts b/packages/global/core/plugin/type.ts new file mode 100644 index 000000000..10fb05ec0 --- /dev/null +++ b/packages/global/core/plugin/type.ts @@ -0,0 +1,43 @@ +import { z } from 'zod'; +import { i18nT } from '../../../web/i18n/utils'; + +export const I18nStringSchema = z.object({ + en: z.string(), + 'zh-CN': z.string().optional(), + 'zh-Hant': z.string().optional() +}); +// I18nStringType can be either an object with language keys or a plain string +export const I18nUnioStringSchema = z.union([I18nStringSchema, z.string()]); + +export const PluginToolTagSchema = z.object({ + tagId: z.string(), + tagName: I18nUnioStringSchema, + tagOrder: z.number(), + isSystem: z.boolean() +}); +export type SystemPluginToolTagType = z.infer; + +export const PluginStatusSchema = z.union([z.literal(1), z.literal(2), z.literal(3)]); +export type PluginStatusType = z.infer; +export enum PluginStatusEnum { + Normal = 1, + SoonOffline = 2, + Offline = 3 +} +export const PluginStatusMap = { + [PluginStatusEnum.Normal]: { + label: i18nT('app:toolkit_status_normal'), + tooltip: '', + tagColor: 'blue' as const + }, + [PluginStatusEnum.SoonOffline]: { + label: i18nT('app:toolkit_status_soon_offline'), + tooltip: i18nT('app:tool_soon_offset_tips'), + tagColor: 'yellow' as const + }, + [PluginStatusEnum.Offline]: { + label: i18nT('app:toolkit_status_offline'), + tooltip: i18nT('app:tool_offset_tips'), + tagColor: 'red' as const + } +}; diff --git a/packages/global/core/workflow/constants.ts b/packages/global/core/workflow/constants.ts index 166d6dd74..fd5625d38 100644 --- a/packages/global/core/workflow/constants.ts +++ b/packages/global/core/workflow/constants.ts @@ -328,7 +328,7 @@ export enum VariableInputEnum { password = 'password', file = 'file', - modelSelect = 'modelSelect', + llmSelect = 'llmSelect', datasetSelect = 'datasetSelect', custom = 'custom', @@ -386,20 +386,26 @@ export const variableConfigs: VariableConfigType[][] = [ label: i18nT('common:core.workflow.inputType.switch'), value: VariableInputEnum.switch, defaultValueType: WorkflowIOValueTypeEnum.boolean + }, + { + icon: 'core/workflow/inputType/timePointSelect', + label: i18nT('common:core.workflow.inputType.timePointSelect'), + value: VariableInputEnum.timePointSelect, + defaultValueType: WorkflowIOValueTypeEnum.string + }, + { + icon: 'core/workflow/inputType/timeRangeSelect', + label: i18nT('common:core.workflow.inputType.timeRangeSelect'), + value: VariableInputEnum.timeRangeSelect, + defaultValueType: WorkflowIOValueTypeEnum.arrayString + }, + { + icon: 'core/workflow/inputType/model', + label: i18nT('common:core.workflow.inputType.modelSelect'), + value: VariableInputEnum.llmSelect, + defaultValueType: WorkflowIOValueTypeEnum.string } // { - // icon: 'core/workflow/inputType/timePointSelect', - // label: i18nT('common:core.workflow.inputType.timePointSelect'), - // value: VariableInputEnum.timePointSelect, - // defaultValueType: WorkflowIOValueTypeEnum.string - // }, - // { - // icon: 'core/workflow/inputType/timeRangeSelect', - // label: i18nT('common:core.workflow.inputType.timeRangeSelect'), - // value: VariableInputEnum.timeRangeSelect, - // defaultValueType: WorkflowIOValueTypeEnum.arrayString - // } - // { // icon: 'core/workflow/inputType/file', // label: i18nT('common:core.workflow.inputType.file'), // value: VariableInputEnum.file, @@ -410,14 +416,14 @@ export const variableConfigs: VariableConfigType[][] = [ // { // icon: 'core/workflow/inputType/model', // label: i18nT('common:core.workflow.inputType.modelSelect'), - // value: VariableInputEnum.modelSelect, + // value: VariableInputEnum.llmSelect, // defaultValueType: WorkflowIOValueTypeEnum.string // }, // { // icon: 'core/workflow/inputType/dataset', // label: i18nT('common:core.workflow.inputType.datasetSelect'), // value: VariableInputEnum.datasetSelect, - // defaultValueType: WorkflowIOValueTypeEnum.arrayString + // defaultValueType: WorkflowIOValueTypeEnum.selectDataset // } // ], [ diff --git a/packages/global/core/workflow/node/constant.ts b/packages/global/core/workflow/node/constant.ts index 27e5eedd1..84b3de4a5 100644 --- a/packages/global/core/workflow/node/constant.ts +++ b/packages/global/core/workflow/node/constant.ts @@ -13,11 +13,9 @@ export enum FlowNodeInputTypeEnum { // render ui JSONEditor = 'JSONEditor', addInputParam = 'addInputParam', // params input + customVariable = 'customVariable', // 外部变量 - // special input selectApp = 'selectApp', - customVariable = 'customVariable', - // ai model select selectLLMModel = 'selectLLMModel', settingLLMModel = 'settingLLMModel', @@ -28,7 +26,7 @@ export enum FlowNodeInputTypeEnum { // render ui settingDatasetQuotePrompt = 'settingDatasetQuotePrompt', hidden = 'hidden', - custom = 'custom', + custom = 'custom', // 自定义渲染 fileSelect = 'fileSelect', timePointSelect = 'timePointSelect', diff --git a/packages/global/core/workflow/runtime/type.d.ts b/packages/global/core/workflow/runtime/type.d.ts index 0d2008738..7702817f7 100644 --- a/packages/global/core/workflow/runtime/type.d.ts +++ b/packages/global/core/workflow/runtime/type.d.ts @@ -30,6 +30,8 @@ import type { } from '../template/system/interactive/type'; import type { SearchDataResponseItemType } from '../../dataset/type'; import type { localeType } from '../../../common/i18n/type'; +import { type UserChatItemValueItemType } from '../../chat/type'; + export type ExternalProviderType = { openaiAccount?: OpenaiAccountType; externalWorkflowVariables?: Record; @@ -102,7 +104,7 @@ export type SystemVariablesType = { export type RuntimeNodeItemType = { nodeId: StoreNodeItemType['nodeId']; name: StoreNodeItemType['name']; - avatar: StoreNodeItemType['avatar']; + avatar?: StoreNodeItemType['avatar']; intro?: StoreNodeItemType['intro']; toolDescription?: StoreNodeItemType['toolDescription']; flowNodeType: StoreNodeItemType['flowNodeType']; diff --git a/packages/global/core/workflow/template/input.ts b/packages/global/core/workflow/template/input.ts index 357437f2a..192019f9c 100644 --- a/packages/global/core/workflow/template/input.ts +++ b/packages/global/core/workflow/template/input.ts @@ -52,7 +52,8 @@ export const Input_Template_SettingAiModel: FlowNodeInputItemType = { export const Input_Template_System_Prompt: FlowNodeInputItemType = { key: NodeInputKeyEnum.aiSystemPrompt, renderTypeList: [FlowNodeInputTypeEnum.textarea, FlowNodeInputTypeEnum.reference], - max: 3000, + maxLength: 100000, + isRichText: true, valueType: WorkflowIOValueTypeEnum.string, label: i18nT('common:core.ai.Prompt'), description: systemPromptTip, diff --git a/packages/global/core/workflow/template/system/assignedAnswer.ts b/packages/global/core/workflow/template/system/assignedAnswer.ts index f8fb44841..48c3f2f1a 100644 --- a/packages/global/core/workflow/template/system/assignedAnswer.ts +++ b/packages/global/core/workflow/template/system/assignedAnswer.ts @@ -24,6 +24,8 @@ export const AssignedAnswerModule: FlowNodeTemplateType = { renderTypeList: [FlowNodeInputTypeEnum.textarea, FlowNodeInputTypeEnum.reference], valueType: WorkflowIOValueTypeEnum.any, required: true, + isRichText: false, + maxLength: 100000, label: i18nT('common:core.module.input.label.Response content'), description: i18nT('common:core.module.input.description.Response content'), placeholder: i18nT('common:core.module.input.description.Response content') diff --git a/packages/global/core/workflow/type/index.d.ts b/packages/global/core/workflow/type/index.d.ts index a9f34ad0a..0938f02ce 100644 --- a/packages/global/core/workflow/type/index.d.ts +++ b/packages/global/core/workflow/type/index.d.ts @@ -34,7 +34,7 @@ export type WorkflowTemplateType = { parentId?: ParentIdType; isFolder?: boolean; - avatar: string; + avatar?: string; name: I18nStringType | string; intro?: I18nStringType | string; toolDescription?: string; diff --git a/packages/global/core/workflow/type/io.d.ts b/packages/global/core/workflow/type/io.d.ts index 382b212da..d2fdbdf0e 100644 --- a/packages/global/core/workflow/type/io.d.ts +++ b/packages/global/core/workflow/type/io.d.ts @@ -15,9 +15,18 @@ export type CustomFieldConfigType = { showDescription?: boolean; }; export type InputComponentPropsType = { + key: `${NodeInputKeyEnum}` | string; + label: string; + + valueType?: WorkflowIOValueTypeEnum; // data type + required?: boolean; + defaultValue?: any; + referencePlaceholder?: string; + isRichText?: boolean; placeholder?: string; // input,textarea maxLength?: number; // input,textarea + minLength?: number; // password list?: { label: string; value: string }[]; // select @@ -27,12 +36,29 @@ export type InputComponentPropsType = { min?: number; // slider, number input precision?: number; // number input - defaultValue?: string; - llmModelType?: `${LLMModelTypeEnum}`; + // file + canSelectFile?: boolean; + canSelectImg?: boolean; + canSelectVideo?: boolean; + canSelectAudio?: boolean; + canSelectCustomFileExtension?: boolean; + customFileExtensionList?: string[]; + canLocalUpload?: boolean; + canUrlUpload?: boolean; + maxFiles?: number; + + // Time + timeGranularity?: 'day' | 'hour' | 'minute' | 'second'; + timeRangeStart?: string; + timeRangeEnd?: string; + // dynamic input customInputConfig?: CustomFieldConfigType; + + // @deprecated + enums?: { value: string; label: string }[]; }; export type InputConfigType = { key: string; @@ -50,30 +76,20 @@ export type FlowNodeInputItemType = InputComponentPropsType & { selectedTypeIndex?: number; renderTypeList: FlowNodeInputTypeEnum[]; // Node Type. Decide on a render style - key: `${NodeInputKeyEnum}` | string; - valueType?: WorkflowIOValueTypeEnum; // data type valueDesc?: string; // data desc value?: any; - label: string; debugLabel?: string; description?: string; // field desc - required?: boolean; - enum?: string; - - inputList?: InputConfigType[]; // when key === 'system_input_config', this field is used - toolDescription?: string; // If this field is not empty, it is entered as a tool + enum?: string; + inputList?: InputConfigType[]; // when key === 'system_input_config', this field is used + // render components params canEdit?: boolean; // dynamic inputs isPro?: boolean; // Pro version field isToolOutput?: boolean; - // file - canSelectFile?: boolean; - canSelectImg?: boolean; - maxFiles?: number; - deprecated?: boolean; }; diff --git a/packages/global/core/workflow/type/node.d.ts b/packages/global/core/workflow/type/node.d.ts index efc24aa41..e586b671b 100644 --- a/packages/global/core/workflow/type/node.d.ts +++ b/packages/global/core/workflow/type/node.d.ts @@ -19,16 +19,13 @@ import { ChatNodeUsageType } from '../../../support/wallet/bill/type'; import { RuntimeNodeItemType } from '../runtime/type'; import { RuntimeEdgeItemType, StoreEdgeItemType } from './edge'; import { NextApiResponse } from 'next'; -import type { - AppDetailType, - AppSchema, - McpToolConfigType, - HttpToolConfigType -} from '../../app/type'; -import type { ParentIdType } from 'common/parentFolder/type'; +import type { AppDetailType, AppSchema, HttpToolConfigType } from '../../app/type'; +import type { McpToolConfigType } from '../../app/tool/mcpTool/type'; +import type { ParentIdType } from '../../../common/parentFolder/type'; import { AppTypeEnum } from '../../app/constants'; import type { WorkflowInteractiveResponseType } from '../template/system/interactive/type'; import type { StoreSecretValueType } from '../../../common/secret/type'; +import type { PluginStatusType } from '../../plugin/type'; export type NodeToolConfigType = { mcpToolSet?: { @@ -105,6 +102,7 @@ export type PluginDataType = { name?: string; avatar?: string; error?: string; + status?: PluginStatusType; }; type HandleType = { @@ -117,6 +115,7 @@ type HandleType = { export type FlowNodeTemplateType = FlowNodeCommonType & { id: string; // node id, unique templateType: string; + status?: PluginStatusType; showSourceHandle?: boolean; showTargetHandle?: boolean; @@ -131,9 +130,9 @@ export type FlowNodeTemplateType = FlowNodeCommonType & { diagram?: string; // diagram url courseUrl?: string; // course url userGuide?: string; // user guide + tags?: string[] | null; // @deprecated - // show handle sourceHandle?: HandleType; targetHandle?: HandleType; }; @@ -143,7 +142,8 @@ export type NodeTemplateListItemType = { flowNodeType: FlowNodeTypeEnum; // render node card parentId?: ParentIdType; isFolder?: boolean; - templateType: string; + templateType?: string; + tags?: string[] | null; avatar?: string; name: string; intro?: string; // template list intro diff --git a/packages/global/core/workflow/utils.ts b/packages/global/core/workflow/utils.ts index 99b61225e..8060a4db1 100644 --- a/packages/global/core/workflow/utils.ts +++ b/packages/global/core/workflow/utils.ts @@ -39,7 +39,6 @@ import { defaultWhisperConfig } from '../app/constants'; import { IfElseResultEnum } from './template/system/ifElse/constant'; -import { type RuntimeNodeItemType } from './runtime/type'; import { Input_Template_File_Link, Input_Template_History, @@ -51,7 +50,6 @@ import { type RuntimeUserPromptType, type UserChatItemType } from '../../core/ch import { getNanoid } from '../../common/string/tools'; import { ChatRoleEnum } from '../../core/chat/constants'; import { runtimePrompt2ChatsValue } from '../../core/chat/adapt'; -import { getPluginRunContent } from '../../core/app/plugin/utils'; export const getHandleId = ( nodeId: string, @@ -262,7 +260,7 @@ export const appData2FlowNodeIO = ({ [VariableInputEnum.switch]: [FlowNodeInputTypeEnum.switch], [VariableInputEnum.password]: [FlowNodeInputTypeEnum.password], [VariableInputEnum.file]: [FlowNodeInputTypeEnum.fileSelect], - [VariableInputEnum.modelSelect]: [FlowNodeInputTypeEnum.selectLLMModel], + [VariableInputEnum.llmSelect]: [FlowNodeInputTypeEnum.selectLLMModel], [VariableInputEnum.datasetSelect]: [FlowNodeInputTypeEnum.selectDataset], [VariableInputEnum.internal]: [FlowNodeInputTypeEnum.hidden], [VariableInputEnum.custom]: [FlowNodeInputTypeEnum.input, FlowNodeInputTypeEnum.reference] @@ -385,43 +383,8 @@ export const getElseIFLabel = (i: number) => { return i === 0 ? IfElseResultEnum.IF : `${IfElseResultEnum.ELSE_IF} ${i}`; }; -// add value to plugin input node when run plugin -export const updatePluginInputByVariables = ( - nodes: RuntimeNodeItemType[], - variables: Record -) => { - return nodes.map((node) => - node.flowNodeType === FlowNodeTypeEnum.pluginInput - ? { - ...node, - inputs: node.inputs.map((input) => { - const parseValue = (() => { - try { - if ( - input.valueType === WorkflowIOValueTypeEnum.string || - input.valueType === WorkflowIOValueTypeEnum.number || - input.valueType === WorkflowIOValueTypeEnum.boolean - ) - return variables[input.key]; - - return JSON.parse(variables[input.key]); - } catch (e) { - return variables[input.key]; - } - })(); - - return { - ...input, - value: parseValue ?? input.value - }; - }) - } - : node - ); -}; - /* Get plugin runtime input user query */ -export const getPluginRunUserQuery = ({ +export const clientGetWorkflowToolRunUserQuery = ({ pluginInputs, variables, files = [] @@ -430,6 +393,25 @@ export const getPluginRunUserQuery = ({ variables: Record; files?: RuntimeUserPromptType['files']; }): UserChatItemType & { dataId: string } => { + const getPluginRunContent = ({ + pluginInputs, + variables + }: { + pluginInputs: FlowNodeInputItemType[]; + variables: Record; + }) => { + const pluginInputsWithValue = pluginInputs.map((input) => { + const { key } = input; + let value = variables?.hasOwnProperty(key) ? variables[key] : input.defaultValue; + + return { + ...input, + value + }; + }); + return JSON.stringify(pluginInputsWithValue); + }; + return { dataId: getNanoid(24), obj: ChatRoleEnum.Human, diff --git a/packages/global/openapi/api.ts b/packages/global/openapi/api.ts new file mode 100644 index 000000000..c8be011d3 --- /dev/null +++ b/packages/global/openapi/api.ts @@ -0,0 +1,7 @@ +import { z } from 'zod'; + +export const PaginationSchema = z.object({ + pageSize: z.union([z.number(), z.string()]), + offset: z.union([z.number(), z.string()]).optional(), + pageNum: z.union([z.number(), z.string()]).optional() +}); diff --git a/packages/global/openapi/core/chat/favourite/index.ts b/packages/global/openapi/core/chat/favourite/index.ts index 5d3990bda..3e6aad591 100644 --- a/packages/global/openapi/core/chat/favourite/index.ts +++ b/packages/global/openapi/core/chat/favourite/index.ts @@ -7,13 +7,14 @@ import { UpdateFavouriteAppTagsParamsSchema } from './api'; import { ObjectIdSchema } from '../../../../common/type/mongo'; +import { TagsMap } from '../../../tag'; export const ChatFavouriteAppPath: OpenAPIPath = { '/proApi/core/chat/setting/favourite/list': { get: { summary: '获取精选应用列表', description: '获取团队配置的精选应用列表,支持按名称和标签筛选', - tags: ['对话页配置'], + tags: [TagsMap.chatSetting], requestParams: { query: GetChatFavouriteListParamsSchema }, @@ -33,7 +34,7 @@ export const ChatFavouriteAppPath: OpenAPIPath = { post: { summary: '更新精选应用', description: '批量创建或更新精选应用配置,包括应用 ID、标签和排序信息', - tags: ['对话页配置'], + tags: [TagsMap.chatSetting], requestBody: { content: { 'application/json': { @@ -57,7 +58,7 @@ export const ChatFavouriteAppPath: OpenAPIPath = { put: { summary: '更新精选应用排序', description: '批量更新精选应用的显示顺序', - tags: ['对话页配置'], + tags: [TagsMap.chatSetting], requestBody: { content: { 'application/json': { @@ -89,7 +90,7 @@ export const ChatFavouriteAppPath: OpenAPIPath = { put: { summary: '更新精选应用标签', description: '批量更新精选应用的标签分类', - tags: ['对话页配置'], + tags: [TagsMap.chatSetting], requestBody: { content: { 'application/json': { @@ -113,7 +114,7 @@ export const ChatFavouriteAppPath: OpenAPIPath = { delete: { summary: '删除精选应用', description: '根据 ID 删除指定的精选应用配置', - tags: ['对话页配置'], + tags: [TagsMap.chatSetting], requestParams: { query: z.object({ id: ObjectIdSchema diff --git a/packages/global/openapi/core/chat/index.ts b/packages/global/openapi/core/chat/index.ts index cefa5df2f..b97786982 100644 --- a/packages/global/openapi/core/chat/index.ts +++ b/packages/global/openapi/core/chat/index.ts @@ -1,7 +1,61 @@ +import type { OpenAPIPath } from '../../type'; import { ChatSettingPath } from './setting'; import { ChatFavouriteAppPath } from './favourite/index'; +import { z } from 'zod'; +import { CreatePostPresignedUrlResultSchema } from '../../../../service/common/s3/type'; +import { PresignChatFileGetUrlSchema, PresignChatFilePostUrlSchema } from '../../../core/chat/api'; +import { TagsMap } from '../../tag'; -export const ChatPath = { +export const ChatPath: OpenAPIPath = { ...ChatSettingPath, - ...ChatFavouriteAppPath + ...ChatFavouriteAppPath, + + '/core/chat/presignChatFileGetUrl': { + post: { + summary: '获取对话文件预签名 URL', + description: '获取对话文件的预签名 URL', + tags: [TagsMap.chatPage], + requestBody: { + content: { + 'application/json': { + schema: PresignChatFileGetUrlSchema + } + } + }, + responses: { + 200: { + description: '成功获取对话文件预签名 URL', + content: { + 'application/json': { + schema: z.string() + } + } + } + } + } + }, + '/core/chat/presignChatFilePostUrl': { + post: { + summary: '上传对话文件预签名 URL', + description: '上传对话文件的预签名 URL', + tags: [TagsMap.chatPage], + requestBody: { + content: { + 'application/json': { + schema: PresignChatFilePostUrlSchema + } + } + }, + responses: { + 200: { + description: '成功上传对话文件预签名 URL', + content: { + 'application/json': { + schema: CreatePostPresignedUrlResultSchema + } + } + } + } + } + } }; diff --git a/packages/global/openapi/core/chat/setting/index.ts b/packages/global/openapi/core/chat/setting/index.ts index 8abd322ad..a3db7bbce 100644 --- a/packages/global/openapi/core/chat/setting/index.ts +++ b/packages/global/openapi/core/chat/setting/index.ts @@ -1,5 +1,6 @@ import type { OpenAPIPath } from '../../../type'; import { ChatSettingSchema, ChatSettingModelSchema } from '../../../../core/chat/setting/type'; +import { TagsMap } from '../../../tag'; export const ChatSettingPath: OpenAPIPath = { '/proApi/core/chat/setting/detail': { @@ -7,7 +8,7 @@ export const ChatSettingPath: OpenAPIPath = { summary: '获取对话页设置', description: '获取当前团队的对话页设置,包括 slogan、对话提示、Logo、快捷应用、已选工具和精选应用标签等配置信息', - tags: ['对话页配置'], + tags: [TagsMap.chatSetting], responses: { 200: { description: '成功返回对话页设置信息', @@ -25,7 +26,7 @@ export const ChatSettingPath: OpenAPIPath = { summary: '更新对话页设置', description: '更新团队的对话页设置配置,包括 slogan、对话提示、Logo、快捷应用、已选工具和精选应用标签等信息', - tags: ['对话页配置'], + tags: [TagsMap.chatSetting], requestBody: { content: { 'application/json': { diff --git a/packages/global/openapi/core/plugin/admin/api.ts b/packages/global/openapi/core/plugin/admin/api.ts new file mode 100644 index 000000000..399ef7c97 --- /dev/null +++ b/packages/global/openapi/core/plugin/admin/api.ts @@ -0,0 +1,52 @@ +import { I18nStringSchema, I18nUnioStringSchema } from '../../../../core/plugin/type'; +import { z } from 'zod'; + +/* ============ Pkg Plugin ============== */ +// 1. Get Pkg Plugin Upload URL Schema +export const GetPkgPluginUploadURLQuerySchema = z.object({ + filename: z.string() +}); +export type GetPkgPluginUploadURLQueryType = z.infer; +export const GetPkgPluginUploadURLResponseSchema = z.object({ + postURL: z.string(), + formData: z.record(z.string(), z.string()), + objectName: z.string() +}); +export type GetPkgPluginUploadURLResponseType = z.infer; + +// 2. Parse Uploaded Pkg Plugin Schema +export const ParseUploadedPkgPluginQuerySchema = z.object({ + objectName: z.string() +}); +export type ParseUploadedPkgPluginQueryType = z.infer; +export const ParseUploadedPkgPluginResponseSchema = z.array( + z.object({ + toolId: z.string(), + name: I18nUnioStringSchema, + description: I18nStringSchema, + icon: z.string(), + parentId: z.string().optional(), + tags: z.array(z.string()).nullish() + }) +); +export type ParseUploadedPkgPluginResponseType = z.infer< + typeof ParseUploadedPkgPluginResponseSchema +>; + +// 3. Confirm Uploaded Pkg Plugin Schema +export const ConfirmUploadPkgPluginBodySchema = z.object({ + toolIds: z.array(z.string()) +}); +export type ConfirmUploadPkgPluginBodyType = z.infer; + +// 4. Delete Pkg Plugin Schema +export const DeletePkgPluginQuerySchema = z.object({ + toolId: z.string() +}); +export type DeletePkgPluginQueryType = z.infer; + +// Install plugin from url +export const InstallPluginFromUrlBodySchema = z.object({ + downloadUrls: z.array(z.string()) +}); +export type InstallPluginFromUrlBodyType = z.infer; diff --git a/packages/global/openapi/core/plugin/admin/index.ts b/packages/global/openapi/core/plugin/admin/index.ts new file mode 100644 index 000000000..1e1368b01 --- /dev/null +++ b/packages/global/openapi/core/plugin/admin/index.ts @@ -0,0 +1,127 @@ +import type { OpenAPIPath } from '../../../type'; +import { + GetPkgPluginUploadURLQuerySchema, + GetPkgPluginUploadURLResponseSchema, + ParseUploadedPkgPluginQuerySchema, + ParseUploadedPkgPluginResponseSchema, + ConfirmUploadPkgPluginBodySchema, + DeletePkgPluginQuerySchema, + InstallPluginFromUrlBodySchema +} from './api'; +import { TagsMap } from '../../../tag'; +import { z } from 'zod'; +import { AdminPluginToolPath } from './tool'; + +export const PluginAdminPath: OpenAPIPath = { + ...AdminPluginToolPath, + + // Pkg Plugin + '/core/plugin/admin/pkg/presign': { + get: { + summary: '获取插件包上传预签名URL', + description: '获取插件包上传到存储服务的预签名URL,需要系统管理员权限', + tags: [TagsMap.pluginAdmin], + requestParams: { + query: GetPkgPluginUploadURLQuerySchema + }, + responses: { + 200: { + description: '成功获取上传URL', + content: { + 'application/json': { + schema: GetPkgPluginUploadURLResponseSchema + } + } + } + } + } + }, + '/core/plugin/admin/pkg/parse': { + get: { + summary: '解析已上传的插件包', + description: '解析已上传的插件包,返回插件包中包含的工具信息,需要系统管理员权限', + tags: [TagsMap.pluginAdmin], + requestParams: { + query: ParseUploadedPkgPluginQuerySchema + }, + responses: { + 200: { + description: '成功解析插件包', + content: { + 'application/json': { + schema: ParseUploadedPkgPluginResponseSchema + } + } + } + } + } + }, + '/core/plugin/admin/pkg/confirm': { + post: { + summary: '确认上传插件包', + description: '确认上传插件包,将解析的工具添加到系统中,需要系统管理员权限', + tags: [TagsMap.pluginAdmin], + requestBody: { + content: { + 'application/json': { + schema: ConfirmUploadPkgPluginBodySchema + } + } + }, + responses: { + 200: { + description: '成功确认上传', + content: { + 'application/json': { + schema: z.object({}) + } + } + } + } + } + }, + '/core/plugin/admin/pkg/delete': { + delete: { + summary: '删除插件包', + description: '删除指定的插件包工具,需要系统管理员权限', + tags: [TagsMap.pluginAdmin], + requestParams: { + query: DeletePkgPluginQuerySchema + }, + responses: { + 200: { + description: '成功删除插件包', + content: { + 'application/json': { + schema: z.object({}) + } + } + } + } + } + }, + '/core/plugin/admin/installWithUrl': { + post: { + summary: '从URL安装插件', + description: '从URL安装插件,需要系统管理员权限', + tags: [TagsMap.pluginAdmin], + requestBody: { + content: { + 'application/json': { + schema: InstallPluginFromUrlBodySchema + } + } + }, + responses: { + 200: { + description: '成功安装插件', + content: { + 'application/json': { + schema: z.object({}) + } + } + } + } + } + } +}; diff --git a/packages/global/openapi/core/plugin/admin/tool/api.ts b/packages/global/openapi/core/plugin/admin/tool/api.ts new file mode 100644 index 000000000..a6a3b4693 --- /dev/null +++ b/packages/global/openapi/core/plugin/admin/tool/api.ts @@ -0,0 +1,87 @@ +import type { AdminSystemToolDetailSchema } from '../../../../../core/plugin/admin/tool/type'; +import { + AdminSystemToolListItemSchema, + ToolsetChildSchema +} from '../../../../../core/plugin/admin/tool/type'; +import z from 'zod'; +import { ParentIdSchema } from '../../../../../common/parentFolder/type'; +import { PluginStatusSchema } from '../../../../../core/plugin/type'; + +// Admin tool list +export const GetAdminSystemToolsQuery = z.object({ + parentId: ParentIdSchema +}); +export type GetAdminSystemToolsQueryType = z.infer; +export const GetAdminSystemToolsResponseSchema = z.array(AdminSystemToolListItemSchema); +export type GetAdminSystemToolsResponseType = z.infer; + +// Admin tool detail +export const GetAdminSystemToolDetailQuerySchema = z.object({ + toolId: z.string() +}); +export type GetAdminSystemToolDetailQueryType = z.infer; +export type GetAdminSystemToolDetailResponseType = z.infer; + +// Update Tool Order Schema +export const UpdateToolOrderBodySchema = z.object({ + plugins: z.array( + z.object({ + pluginId: z.string(), + pluginOrder: z.number() + }) + ) +}); +export type UpdateToolOrderBodyType = z.infer; + +// Update system tool Schema +const UpdateChildToolSchema = ToolsetChildSchema.omit({ + name: true +}); +export const UpdateToolBodySchema = z.object({ + pluginId: z.string(), + status: PluginStatusSchema.optional(), + defaultInstalled: z.boolean().optional(), + originCost: z.number().optional(), + currentCost: z.number().nullish(), + systemKeyCost: z.number().optional(), + hasTokenFee: z.boolean().optional(), + inputListVal: z.record(z.string(), z.any()).nullish(), + childTools: z.array(UpdateChildToolSchema).optional(), + + // App tool fields + name: z.string().optional(), + avatar: z.string().optional(), + intro: z.string().optional(), + tagIds: z.array(z.string()).nullish(), + associatedPluginId: z.string().optional(), + userGuide: z.string().nullish(), + author: z.string().optional() +}); +export type UpdateToolBodyType = z.infer; + +// Delete system Tool +export const DeleteSystemToolQuerySchema = z.object({ + toolId: z.string() +}); +export type DeleteSystemToolQueryType = z.infer; + +/* ======= App type tool ====== */ +// Get all system plugin apps +export const GetAllSystemAppsBodySchema = z.object({ + searchKey: z.string().optional() +}); +export type GetAllSystemAppsBodyType = z.infer; +export const GetAllSystemAppsResponseSchema = z.array( + z.object({ + _id: z.string(), + avatar: z.string(), + name: z.string() + }) +); +export type GetAllSystemAppTypeToolsResponse = z.infer; + +// Create app type tool +export const CreateAppToolBodySchema = UpdateToolBodySchema.omit({ + childTools: true +}); +export type CreateAppToolBodyType = z.infer; diff --git a/packages/global/openapi/core/plugin/admin/tool/index.ts b/packages/global/openapi/core/plugin/admin/tool/index.ts new file mode 100644 index 000000000..7f949cf8e --- /dev/null +++ b/packages/global/openapi/core/plugin/admin/tool/index.ts @@ -0,0 +1,178 @@ +import type { OpenAPIPath } from '../../../../type'; +import { + CreateAppToolBodySchema, + DeleteSystemToolQuerySchema, + GetAdminSystemToolDetailQuerySchema, + GetAdminSystemToolsQuery, + GetAdminSystemToolsResponseSchema, + GetAllSystemAppsBodySchema, + GetAllSystemAppsResponseSchema, + UpdateToolBodySchema, + UpdateToolOrderBodySchema +} from './api'; +import { TagsMap } from '../../../../tag'; +import { z } from 'zod'; +import { AdminSystemToolDetailSchema } from '../../../../../core/plugin/admin/tool/type'; +import { SystemToolTagPath } from './tag'; + +export const AdminPluginToolPath: OpenAPIPath = { + '/core/plugin/admin/tool/list': { + get: { + summary: '获取系统工具列表', + description: '获取系统工具列表,需要系统管理员权限', + tags: [TagsMap.pluginToolAdmin], + requestParams: { + query: GetAdminSystemToolsQuery + }, + responses: { + '200': { + description: '成功获取系统工具列表', + content: { + 'application/json': { + schema: GetAdminSystemToolsResponseSchema + } + } + } + } + } + }, + '/core/plugin/admin/tool/detail': { + get: { + summary: '获取系统工具详情', + description: '获取系统工具详情,需要系统管理员权限', + tags: [TagsMap.pluginToolAdmin], + requestParams: { + query: GetAdminSystemToolDetailQuerySchema + }, + responses: { + '200': { + description: '成功获取系统工具详情', + content: { + 'application/json': { + schema: AdminSystemToolDetailSchema + } + } + } + } + } + }, + '/core/plugin/admin/tool/update': { + put: { + summary: '更新系统工具', + description: + '更新系统工具配置,包括基础字段和自定义字段,支持递归更新子配置,需要系统管理员权限', + tags: [TagsMap.pluginToolAdmin], + requestBody: { + content: { + 'application/json': { + schema: UpdateToolBodySchema + } + } + }, + responses: { + 200: { + description: '成功更新系统工具', + content: { + 'application/json': { + schema: z.object({}) + } + } + } + } + } + }, + '/core/plugin/admin/tool/updateOrder': { + put: { + summary: '更新系统工具顺序', + description: '批量更新系统工具的排序顺序,需要系统管理员权限', + tags: [TagsMap.pluginToolAdmin], + requestBody: { + content: { + 'application/json': { + schema: UpdateToolOrderBodySchema + } + } + }, + responses: { + 200: { + description: '成功更新系统工具顺序', + content: { + 'application/json': { + schema: z.object({}) + } + } + } + } + } + }, + '/core/plugin/admin/tool/delete': { + delete: { + summary: '删除系统工具', + description: '根据ID删除系统工具,需要系统管理员权限', + tags: [TagsMap.pluginToolAdmin], + requestParams: { + query: DeleteSystemToolQuerySchema + }, + responses: { + 200: { + description: '成功删除系统工具', + content: { + 'application/json': { + schema: z.object({}) + } + } + } + } + } + }, + // Workflow tool + '/core/plugin/admin/tool/workflow/systemApps': { + post: { + summary: '获取所有系统工具类型应用', + description: '获取所有系统工具类型应用,用于选择系统上的应用作为系统工具。需要系统管理员权限', + tags: [TagsMap.pluginToolAdmin], + requestBody: { + content: { + 'application/json': { + schema: GetAllSystemAppsBodySchema + } + } + }, + responses: { + 200: { + description: '成功获取系统工具类型应用', + content: { + 'application/json': { + schema: GetAllSystemAppsResponseSchema + } + } + } + } + } + }, + '/core/plugin/admin/tool/workflow/create': { + post: { + summary: '将系统应用设置成系统工具', + description: '将系统应用设置成系统工具,需要系统管理员权限', + tags: [TagsMap.pluginToolAdmin], + requestBody: { + content: { + 'application/json': { + schema: CreateAppToolBodySchema + } + } + }, + responses: { + 200: { + description: '成功将系统应用设置成系统工具', + content: { + 'application/json': { + schema: z.object({}) + } + } + } + } + } + }, + ...SystemToolTagPath +}; diff --git a/packages/global/openapi/core/plugin/admin/tool/tag/api.ts b/packages/global/openapi/core/plugin/admin/tool/tag/api.ts new file mode 100644 index 000000000..c67b064e5 --- /dev/null +++ b/packages/global/openapi/core/plugin/admin/tool/tag/api.ts @@ -0,0 +1,23 @@ +import { PluginToolTagSchema } from '../../../../../../core/plugin/type'; +import { z } from 'zod'; + +export const CreatePluginToolTagBodySchema = z.object({ + tagName: z.string() +}); +export type CreatePluginToolTagBody = z.infer; + +export const DeletePluginToolTagQuerySchema = z.object({ + tagId: z.string() +}); +export type DeletePluginToolTagQuery = z.infer; + +export const UpdatePluginToolTagBodySchema = z.object({ + tagId: z.string(), + tagName: z.string() +}); +export type UpdatePluginToolTagBody = z.infer; + +export const UpdatePluginToolTagOrderBodySchema = z.object({ + tags: z.array(PluginToolTagSchema) +}); +export type UpdatePluginToolTagOrderBody = z.infer; diff --git a/packages/global/openapi/core/plugin/admin/tool/tag/index.ts b/packages/global/openapi/core/plugin/admin/tool/tag/index.ts new file mode 100644 index 000000000..cc1f5f94d --- /dev/null +++ b/packages/global/openapi/core/plugin/admin/tool/tag/index.ts @@ -0,0 +1,104 @@ +import type { OpenAPIPath } from '../../../../../type'; +import { TagsMap } from '../../../../../tag'; +import { z } from 'zod'; +import { + CreatePluginToolTagBodySchema, + DeletePluginToolTagQuerySchema, + UpdatePluginToolTagBodySchema, + UpdatePluginToolTagOrderBodySchema +} from './api'; + +export const SystemToolTagPath: OpenAPIPath = { + '/core/plugin/toolTag/config/create': { + post: { + summary: '创建工具标签', + description: '创建新的工具标签,需要系统管理员权限', + tags: [TagsMap.pluginToolAdmin], + requestBody: { + content: { + 'application/json': { + schema: CreatePluginToolTagBodySchema + } + } + }, + responses: { + 200: { + description: '成功创建工具标签', + content: { + 'application/json': { + schema: z.object({}) + } + } + } + } + } + }, + '/core/plugin/toolTag/config/delete': { + delete: { + summary: '删除工具标签', + description: '根据标签ID删除工具标签,需要系统管理员权限', + tags: [TagsMap.pluginToolAdmin], + requestParams: { + query: DeletePluginToolTagQuerySchema + }, + responses: { + 200: { + description: '成功删除工具标签', + content: { + 'application/json': { + schema: z.object({}) + } + } + } + } + } + }, + '/core/plugin/toolTag/config/update': { + put: { + summary: '更新工具标签', + description: '更新工具标签的名称,需要系统管理员权限', + tags: [TagsMap.pluginToolAdmin], + requestBody: { + content: { + 'application/json': { + schema: UpdatePluginToolTagBodySchema + } + } + }, + responses: { + 200: { + description: '成功更新工具标签', + content: { + 'application/json': { + schema: z.object({}) + } + } + } + } + } + }, + '/core/plugin/toolTag/config/updateOrder': { + put: { + summary: '更新工具标签顺序', + description: '批量更新工具标签的排序顺序,需要系统管理员权限', + tags: [TagsMap.pluginToolAdmin], + requestBody: { + content: { + 'application/json': { + schema: UpdatePluginToolTagOrderBodySchema + } + } + }, + responses: { + 200: { + description: '成功更新工具标签顺序', + content: { + 'application/json': { + schema: z.object({}) + } + } + } + } + } + } +}; diff --git a/packages/global/openapi/core/plugin/index.ts b/packages/global/openapi/core/plugin/index.ts new file mode 100644 index 000000000..6510f71f0 --- /dev/null +++ b/packages/global/openapi/core/plugin/index.ts @@ -0,0 +1,12 @@ +import type { OpenAPIPath } from '../../type'; +import { MarketplacePath } from './marketplace'; +import { PluginToolTagPath } from './toolTag'; +import { PluginAdminPath } from './admin'; +import { PluginTeamPath } from './team'; + +export const PluginPath: OpenAPIPath = { + ...MarketplacePath, + ...PluginToolTagPath, + ...PluginAdminPath, + ...PluginTeamPath +}; diff --git a/packages/global/openapi/core/plugin/marketplace/api.ts b/packages/global/openapi/core/plugin/marketplace/api.ts new file mode 100644 index 000000000..56e5f5dfe --- /dev/null +++ b/packages/global/openapi/core/plugin/marketplace/api.ts @@ -0,0 +1,64 @@ +import { z } from 'zod'; +import { type ToolSimpleType } from '../../../../sdk/fastgpt-plugin'; +import { PaginationSchema } from '../../../api'; +import { PluginToolTagSchema } from '../../../../core/plugin/type'; + +const formatToolDetailSchema = z.object({}); +const formatToolSimpleSchema = z.object({}); + +// Create intersection types for extended schemas +export const MarketplaceToolListItemSchema = formatToolSimpleSchema.extend({ + downloadUrl: z.string() +}); +export type MarketplaceToolListItemType = ToolSimpleType & { + downloadUrl: string; +}; + +export const MarketplaceToolDetailItemSchema = formatToolDetailSchema.extend({ + readme: z.string().optional() +}); +export const MarketplaceToolDetailSchema = z.object({ + tools: z.array(MarketplaceToolDetailItemSchema), + downloadUrl: z.string() +}); + +// List +export const GetMarketplaceToolsBodySchema = PaginationSchema.extend({ + searchKey: z.string().optional(), + tags: z.array(z.string()).nullish() +}); +export type GetMarketplaceToolsBodyType = z.infer; + +export const MarketplaceToolsResponseSchema = z.object({ + total: z.number(), + list: z.array(MarketplaceToolListItemSchema) +}); +export type MarketplaceToolsResponseType = z.infer; + +// Detail +export const GetMarketplaceToolDetailQuerySchema = z.object({ + toolId: z.string() +}); +export type GetMarketplaceToolDetailQueryType = z.infer; + +export type GetMarketplaceToolDetailResponseType = z.infer; + +// Tags +export const GetMarketplaceToolTagsResponseSchema = z.array(PluginToolTagSchema); +export type GetMarketplaceToolTagsResponseType = z.infer< + typeof GetMarketplaceToolTagsResponseSchema +>; + +// Get installed plugins +export const GetSystemInstalledPluginsQuerySchema = z.object({ + type: z.enum(['tool']).optional() +}); +export type GetSystemInstalledPluginsQueryType = z.infer< + typeof GetSystemInstalledPluginsQuerySchema +>; +export const GetSystemInstalledPluginsResponseSchema = z.object({ + ids: z.array(z.string()) +}); +export type GetSystemInstalledPluginsResponseType = z.infer< + typeof GetSystemInstalledPluginsResponseSchema +>; diff --git a/packages/global/openapi/core/plugin/marketplace/index.ts b/packages/global/openapi/core/plugin/marketplace/index.ts new file mode 100644 index 000000000..23242634d --- /dev/null +++ b/packages/global/openapi/core/plugin/marketplace/index.ts @@ -0,0 +1,87 @@ +import { type OpenAPIPath } from '../../../type'; +import { + GetMarketplaceToolDetailQuerySchema, + GetMarketplaceToolsBodySchema, + MarketplaceToolDetailSchema, + MarketplaceToolsResponseSchema, + GetMarketplaceToolTagsResponseSchema, + GetSystemInstalledPluginsQuerySchema, + GetSystemInstalledPluginsResponseSchema +} from './api'; +import { TagsMap } from '../../../tag'; + +export const MarketplacePath: OpenAPIPath = { + '/core/plugin/admin/marketplace/installed': { + get: { + summary: '获取系统已安装插件的 ID 列表(管理员视角)', + tags: [TagsMap.pluginMarketplace], + requestParams: { + query: GetSystemInstalledPluginsQuerySchema + }, + responses: { + 200: { + description: '获取系统已安装插件的 ID 列表成功', + content: { + 'application/json': { + schema: GetSystemInstalledPluginsResponseSchema + } + } + } + } + } + }, + '/marketplace/api/tool/list': { + get: { + summary: '获取工具列表', + tags: [TagsMap.pluginMarketplace], + requestParams: { + query: GetMarketplaceToolsBodySchema + }, + responses: { + 200: { + description: '获取市场工具列表成功', + content: { + 'application/json': { + schema: MarketplaceToolsResponseSchema + } + } + } + } + } + }, + '/marketplace/api/tool/detail': { + get: { + summary: '获取单个工具详情', + tags: [TagsMap.pluginMarketplace], + requestParams: { + query: GetMarketplaceToolDetailQuerySchema + }, + responses: { + 200: { + description: '获取市场工具详情成功', + content: { + 'application/json': { + schema: MarketplaceToolDetailSchema + } + } + } + } + } + }, + '/marketplace/api/tool/tags': { + get: { + summary: '获取工具标签', + tags: [TagsMap.pluginMarketplace], + responses: { + 200: { + description: '获取市场工具标签成功', + content: { + 'application/json': { + schema: GetMarketplaceToolTagsResponseSchema + } + } + } + } + } + } +}; diff --git a/packages/global/openapi/core/plugin/team/api.ts b/packages/global/openapi/core/plugin/team/api.ts new file mode 100644 index 000000000..157501f35 --- /dev/null +++ b/packages/global/openapi/core/plugin/team/api.ts @@ -0,0 +1,27 @@ +import { PluginStatusEnum, PluginStatusSchema } from '../../../../core/plugin/type'; +import z from 'zod'; + +export const GetTeamSystemPluginListQuerySchema = z.object({ + type: z.enum(['tool']) +}); +export type GetTeamSystemPluginListQueryType = z.infer; +export const TeamPluginListItemSchema = z.object({ + id: z.string(), + avatar: z.string().optional(), + name: z.string(), + intro: z.string().optional(), + author: z.string().optional(), + tags: z.array(z.string()).nullish(), + status: PluginStatusSchema.optional().default(PluginStatusEnum.Normal), + installed: z.boolean(), + associatedPluginId: z.string().optional() +}); +export const GetTeamPluginListResponseSchema = z.array(TeamPluginListItemSchema); +export type GetTeamPluginListResponseType = z.infer; + +export const ToggleInstallPluginBodySchema = z.object({ + pluginId: z.string(), + type: z.enum(['tool']), + installed: z.boolean() +}); +export type ToggleInstallPluginBodyType = z.infer; diff --git a/packages/global/openapi/core/plugin/team/index.ts b/packages/global/openapi/core/plugin/team/index.ts new file mode 100644 index 000000000..5db69f44f --- /dev/null +++ b/packages/global/openapi/core/plugin/team/index.ts @@ -0,0 +1,66 @@ +import type { OpenAPIPath } from '../../../type'; +import { GetTeamPluginListResponseSchema, ToggleInstallPluginBodySchema } from './api'; +import { TagsMap } from '../../../tag'; +import { GetTeamToolDetailQuerySchema, TeamToolDetailSchema } from './toolApi'; + +export const PluginTeamPath: OpenAPIPath = { + '/core/plugin/team/list': { + get: { + summary: '获取团队插件列表', + description: '获取团队插件列表', + tags: [TagsMap.pluginTeam], + responses: { + 200: { + description: '获取团队插件列表成功', + content: { + 'application/json': { + schema: GetTeamPluginListResponseSchema + } + } + } + } + } + }, + '/core/plugin/team/toggleInstall': { + post: { + summary: '切换插件安装状态', + description: '切换团队插件的安装状态,支持安装或卸载插件', + tags: [TagsMap.pluginTeam], + requestBody: { + content: { + 'application/json': { + schema: ToggleInstallPluginBodySchema + } + } + }, + responses: { + 200: { + description: '请求成功', + content: {} + } + } + } + }, + + // Tool + '/core/plugin/team/toolDetail': { + get: { + summary: '获取工具卡片详情', + description: '获取工具片详情', + tags: [TagsMap.pluginTeam], + requestParams: { + query: GetTeamToolDetailQuerySchema + }, + responses: { + 200: { + description: '获取工具卡片详情成功', + content: { + 'application/json': { + schema: TeamToolDetailSchema + } + } + } + } + } + } +}; diff --git a/packages/global/openapi/core/plugin/team/toolApi.ts b/packages/global/openapi/core/plugin/team/toolApi.ts new file mode 100644 index 000000000..caac01377 --- /dev/null +++ b/packages/global/openapi/core/plugin/team/toolApi.ts @@ -0,0 +1,38 @@ +import z from 'zod'; + +export const GetTeamToolDetailQuerySchema = z.object({ + toolId: z.string() +}); +export type GetTeamToolDetailQueryType = z.infer; + +export const ToolDetailItemSchema = z.object({ + name: z.string(), + intro: z.string(), + icon: z.string().nullish(), + readme: z.string().nullish(), + versionList: z.array( + z.object({ + inputs: z.array( + z.object({ + key: z.string(), + label: z.string().nullish(), + description: z.string().nullish(), + valueType: z.string().nullish() + }) + ), + outputs: z.array( + z.object({ + key: z.string(), + label: z.string().nullish(), + description: z.string().nullish(), + valueType: z.string().nullish() + }) + ) + }) + ) +}); +export const TeamToolDetailSchema = z.object({ + tools: z.array(ToolDetailItemSchema), + downloadUrl: z.string() +}); +export type GetTeamToolDetailResponseType = z.infer; diff --git a/packages/global/openapi/core/plugin/toolTag/api.ts b/packages/global/openapi/core/plugin/toolTag/api.ts new file mode 100644 index 000000000..7a597ef2d --- /dev/null +++ b/packages/global/openapi/core/plugin/toolTag/api.ts @@ -0,0 +1,5 @@ +import { PluginToolTagSchema } from '../../../../core/plugin/type'; +import { z } from 'zod'; + +export const GetPluginToolTagsResponseSchema = z.array(PluginToolTagSchema); +export type GetPluginTagListResponse = z.infer; diff --git a/packages/global/openapi/core/plugin/toolTag/index.ts b/packages/global/openapi/core/plugin/toolTag/index.ts new file mode 100644 index 000000000..1fc265f57 --- /dev/null +++ b/packages/global/openapi/core/plugin/toolTag/index.ts @@ -0,0 +1,24 @@ +import type { OpenAPIPath } from '../../../type'; +import { GetPluginToolTagsResponseSchema } from './api'; +import { TagsMap } from '../../../tag'; +import { z } from 'zod'; + +export const PluginToolTagPath: OpenAPIPath = { + '/core/plugin/toolTag/list': { + get: { + summary: '获取工具标签列表', + description: '获取所有工具标签列表,按排序顺序返回', + tags: [TagsMap.pluginToolTag], + responses: { + 200: { + description: '成功获取工具标签列表', + content: { + 'application/json': { + schema: GetPluginToolTagsResponseSchema + } + } + } + } + } + } +}; diff --git a/packages/global/openapi/index.ts b/packages/global/openapi/index.ts index 7c4ed9cb4..323e3148f 100644 --- a/packages/global/openapi/index.ts +++ b/packages/global/openapi/index.ts @@ -1,6 +1,8 @@ import { createDocument } from 'zod-openapi'; import { ChatPath } from './core/chat'; import { ApiKeyPath } from './support/openapi'; +import { TagsMap } from './tag'; +import { PluginPath } from './core/plugin'; export const openAPIDocument = createDocument({ openapi: '3.1.0', @@ -11,7 +13,26 @@ export const openAPIDocument = createDocument({ }, paths: { ...ChatPath, - ...ApiKeyPath + ...ApiKeyPath, + ...PluginPath }, - servers: [{ url: '/api' }] + servers: [{ url: '/api' }], + 'x-tagGroups': [ + { + name: '对话', + tags: [TagsMap.chatSetting, TagsMap.chatPage] + }, + { + name: '插件相关', + tags: [TagsMap.pluginToolTag, TagsMap.pluginTeam] + }, + { + name: '插件-管理员', + tags: [TagsMap.pluginAdmin, TagsMap.pluginMarketplace, TagsMap.pluginToolAdmin] + }, + { + name: 'ApiKey', + tags: [TagsMap.apiKey] + } + ] }); diff --git a/packages/global/openapi/support/openapi/index.ts b/packages/global/openapi/support/openapi/index.ts index 5583328b1..84b9bf72e 100644 --- a/packages/global/openapi/support/openapi/index.ts +++ b/packages/global/openapi/support/openapi/index.ts @@ -1,12 +1,13 @@ import { z } from 'zod'; -import { formatSuccessResponse, getErrorResponse, type OpenAPIPath } from '../../type'; +import { type OpenAPIPath } from '../../type'; import { ApiKeyHealthParamsSchema, ApiKeyHealthResponseSchema } from './api'; +import { TagsMap } from '../../tag'; export const ApiKeyPath: OpenAPIPath = { '/support/openapi/health': { get: { summary: '检查 API Key 是否健康', - tags: ['APIKey'], + tags: [TagsMap.apiKey], requestParams: { query: ApiKeyHealthParamsSchema }, diff --git a/packages/global/openapi/tag.ts b/packages/global/openapi/tag.ts new file mode 100644 index 000000000..ddc4d8ce6 --- /dev/null +++ b/packages/global/openapi/tag.ts @@ -0,0 +1,10 @@ +export const TagsMap = { + chatPage: '对话页', + chatSetting: '对话页配置', + pluginMarketplace: '插件市场(管理员视角)', + pluginToolTag: '工具标签', + pluginAdmin: '管理员插件管理', + pluginToolAdmin: '管理员系统工具管理', + pluginTeam: '团队插件管理', + apiKey: 'APIKey' +}; diff --git a/packages/global/package.json b/packages/global/package.json index 70c0757c1..3eaf6ece5 100644 --- a/packages/global/package.json +++ b/packages/global/package.json @@ -2,7 +2,7 @@ "name": "@fastgpt/global", "version": "1.0.0", "dependencies": { - "@fastgpt-sdk/plugin": "^0.1.19", + "@fastgpt-sdk/plugin": "0.2.15", "@apidevtools/swagger-parser": "^10.1.0", "@bany/curl-to-json": "^1.2.8", "axios": "^1.12.1", diff --git a/packages/global/support/permission/chat/type.ts b/packages/global/support/permission/chat/type.ts new file mode 100644 index 000000000..026f7b00e --- /dev/null +++ b/packages/global/support/permission/chat/type.ts @@ -0,0 +1,29 @@ +import { z } from 'zod'; + +export const OutLinkChatAuthSchema = z.union([ + z + .object({ + shareId: z.string().optional(), + outLinkUid: z.string().optional() + }) + .meta({ + description: '分享链接鉴权', + example: { + shareId: '1234567890', + outLinkUid: '1234567890' + } + }), + z + .object({ + teamId: z.string().optional(), + teamToken: z.string().optional() + }) + .meta({ + description: '团队鉴权', + example: { + teamId: '1234567890', + teamToken: '1234567890' + } + }) +]); +export type OutLinkChatAuthType = z.infer; diff --git a/packages/service/common/api/pagination.ts b/packages/service/common/api/pagination.ts index f8b2149d9..b2d1118f8 100644 --- a/packages/service/common/api/pagination.ts +++ b/packages/service/common/api/pagination.ts @@ -1,7 +1,7 @@ import { CommonErrEnum } from '@fastgpt/global/common/error/code/common'; import { type ApiRequestProps } from '../../type/next'; -export function parsePaginationRequest(req: ApiRequestProps) { +export const parsePaginationRequest = (req: ApiRequestProps) => { const { pageSize = 10, pageNum = 1, @@ -18,4 +18,4 @@ export function parsePaginationRequest(req: ApiRequestProps) { pageSize: Number(pageSize), offset: offset ? Number(offset) : (Number(pageNum) - 1) * Number(pageSize) }; -} +}; diff --git a/packages/service/common/bullmq/index.ts b/packages/service/common/bullmq/index.ts index ddd6f2b8f..17c66bd0a 100644 --- a/packages/service/common/bullmq/index.ts +++ b/packages/service/common/bullmq/index.ts @@ -21,6 +21,7 @@ const defaultWorkerOpts: Omit = { export enum QueueNames { datasetSync = 'datasetSync', evaluation = 'evaluation', + s3FileDelete = 's3FileDelete', // abondoned websiteSync = 'websiteSync' } diff --git a/packages/service/common/cache/init.ts b/packages/service/common/cache/init.ts index bcc25ad86..555e63bcf 100644 --- a/packages/service/common/cache/init.ts +++ b/packages/service/common/cache/init.ts @@ -1,5 +1,5 @@ import { SystemCacheKeyEnum } from './type'; -import { refreshSystemTools } from '../../core/app/plugin/controller'; +import { refreshSystemTools } from '../../core/app/tool/controller'; export const initCache = () => { global.systemCache = { diff --git a/packages/service/common/cache/type.ts b/packages/service/common/cache/type.ts index 5aae88139..9f3d51b05 100644 --- a/packages/service/common/cache/type.ts +++ b/packages/service/common/cache/type.ts @@ -1,4 +1,4 @@ -import type { SystemPluginTemplateItemType } from '@fastgpt/global/core/app/plugin/type'; +import type { AppToolTemplateItemType } from '@fastgpt/global/core/app/tool/type'; export enum SystemCacheKeyEnum { systemTool = 'systemTool', @@ -6,7 +6,7 @@ export enum SystemCacheKeyEnum { } export type SystemCacheDataType = { - [SystemCacheKeyEnum.systemTool]: SystemPluginTemplateItemType[]; + [SystemCacheKeyEnum.systemTool]: AppToolTemplateItemType[]; [SystemCacheKeyEnum.modelPermission]: null; }; diff --git a/packages/service/common/mongo/init.ts b/packages/service/common/mongo/init.ts index 4fc57d42e..c67a395e2 100644 --- a/packages/service/common/mongo/init.ts +++ b/packages/service/common/mongo/init.ts @@ -53,20 +53,20 @@ export async function connectMongo(props: { } catch (error) {} }); - const options = { + await db.connect(url, { bufferCommands: true, - maxConnecting: maxConnecting, - maxPoolSize: maxConnecting, - minPoolSize: 20, - connectTimeoutMS: 60000, - waitQueueTimeoutMS: 60000, - socketTimeoutMS: 60000, - maxIdleTimeMS: 300000, - retryWrites: true, - retryReads: true - }; - - await db.connect(url, options); + maxConnecting: maxConnecting, // 最大连接数: 防止连接数过多时无法满足需求 + maxPoolSize: maxConnecting, // 最大连接池大小: 防止连接池过大时无法满足需求 + minPoolSize: 20, // 最小连接数: 20,防止连接数过少时无法满足需求 + connectTimeoutMS: 60000, // 连接超时: 60秒,防止连接失败时长时间阻塞 + waitQueueTimeoutMS: 60000, // 等待队列超时: 60秒,防止等待队列长时间阻塞 + socketTimeoutMS: 60000, // Socket 超时: 60秒,防止Socket连接失败时长时间阻塞 + maxIdleTimeMS: 300000, // 空闲连接超时: 5分钟,防止空闲连接长时间占用资源 + retryWrites: true, // 重试写入: 重试写入失败的操作 + retryReads: true, // 重试读取: 重试读取失败的操作 + serverSelectionTimeoutMS: 10000, // 服务器选择超时: 10秒,防止副本集故障时长时间阻塞 + w: 'majority' // 写入确认策略: 多数节点确认后返回,保证数据安全性 + }); console.log('mongo connected'); connectedCb?.(); diff --git a/packages/service/common/s3/buckets/base.ts b/packages/service/common/s3/buckets/base.ts index 330abceed..4d1183584 100644 --- a/packages/service/common/s3/buckets/base.ts +++ b/packages/service/common/s3/buckets/base.ts @@ -1,16 +1,19 @@ -import { Client, type RemoveOptions, type CopyConditions } from 'minio'; +import { Client, type RemoveOptions, type CopyConditions, InvalidObjectNameError } from 'minio'; import { type CreatePostPresignedUrlOptions, type CreatePostPresignedUrlParams, type CreatePostPresignedUrlResult, - type S3OptionsType + type S3OptionsType, + type createPreviewUrlParams, + CreateGetPresignedUrlParamsSchema } from '../type'; -import { defaultS3Options, Mimes } from '../constants'; +import { defaultS3Options, getSystemMaxFileSize, Mimes } from '../constants'; import path from 'node:path'; import { MongoS3TTL } from '../schema'; import { getNanoid } from '@fastgpt/global/common/string/tools'; import { addHours } from 'date-fns'; import { addLog } from '../../system/log'; +import { addS3DelJob } from '../mq'; export class S3BaseBucket { private _client: Client; @@ -84,8 +87,27 @@ export class S3BaseBucket { return this.client.bucketExists(this.name); } - delete(objectKey: string, options?: RemoveOptions): Promise { - return this.client.removeObject(this.name, objectKey, options); + async delete(objectKey: string, options?: RemoveOptions): Promise { + try { + if (!objectKey) return Promise.resolve(); + return await this.client.removeObject(this.name, objectKey, options); + } catch (error) { + if (error instanceof InvalidObjectNameError) { + addLog.warn(`${this.name} delete object not found: ${objectKey}`, error); + return Promise.resolve(); + } + return Promise.reject(error); + } + } + + addDeleteJob({ prefix, key }: { prefix?: string; key?: string }): Promise { + return addS3DelJob({ prefix, key, bucketName: this.name }); + } + + listObjectsV2( + ...params: Parameters extends [string, ...infer R] ? R : never + ) { + return this.client.listObjectsV2(this.name, ...params); } async createPostPresignedUrl( @@ -93,11 +115,11 @@ export class S3BaseBucket { options: CreatePostPresignedUrlOptions = {} ): Promise { try { - const { expiredHours } = options; + const { expiredHours, maxFileSize = getSystemMaxFileSize() } = options; + const formatMaxFileSize = maxFileSize * 1024 * 1024; const filename = params.filename; const ext = path.extname(filename).toLowerCase(); const contentType = Mimes[ext as keyof typeof Mimes] ?? 'application/octet-stream'; - const maxFileSize = this.options.maxFileSize; const key = (() => { if ('rawKey' in params) return params.rawKey; @@ -109,8 +131,8 @@ export class S3BaseBucket { policy.setKey(key); policy.setBucket(this.name); policy.setContentType(contentType); - if (maxFileSize) { - policy.setContentLengthRange(1, maxFileSize); + if (formatMaxFileSize) { + policy.setContentLengthRange(1, formatMaxFileSize); } policy.setExpires(new Date(Date.now() + 10 * 60 * 1000)); policy.setUserMetaData({ @@ -131,11 +153,29 @@ export class S3BaseBucket { return { url: postURL, - fields: formData + fields: formData, + maxSize: formatMaxFileSize }; } catch (error) { addLog.error('Failed to create post presigned url', error); return Promise.reject('Failed to create post presigned url'); } } + + async createExtenalUrl(params: createPreviewUrlParams) { + const parsed = CreateGetPresignedUrlParamsSchema.parse(params); + + const { key, expiredHours } = parsed; + const expires = expiredHours ? expiredHours * 60 * 60 : 30 * 60; // expires 的单位是秒 默认 30 分钟 + + return await this.externalClient.presignedGetObject(this.name, key, expires); + } + async createPreviewlUrl(params: createPreviewUrlParams) { + const parsed = CreateGetPresignedUrlParamsSchema.parse(params); + + const { key, expiredHours } = parsed; + const expires = expiredHours ? expiredHours * 60 * 60 : 30 * 60; // expires 的单位是秒 默认 30 分钟 + + return await this.client.presignedGetObject(this.name, key, expires); + } } diff --git a/packages/service/common/s3/constants.ts b/packages/service/common/s3/constants.ts index 64458fa1e..c6ca270bc 100644 --- a/packages/service/common/s3/constants.ts +++ b/packages/service/common/s3/constants.ts @@ -1,5 +1,3 @@ -import type { S3PrivateBucket } from './buckets/private'; -import type { S3PublicBucket } from './buckets/public'; import { HttpProxyAgent } from 'http-proxy-agent'; import { HttpsProxyAgent } from 'https-proxy-agent'; import type { ClientOptions } from 'minio'; @@ -29,11 +27,8 @@ export const Mimes = { export const defaultS3Options: { externalBaseURL?: string; - maxFileSize?: number; afterInit?: () => Promise | void; } & ClientOptions = { - maxFileSize: 1024 ** 3, // 1GB - useSSL: process.env.S3_USE_SSL === 'true', endPoint: process.env.S3_ENDPOINT || 'localhost', externalBaseURL: process.env.S3_EXTERNAL_BASE_URL, @@ -51,3 +46,8 @@ export const S3Buckets = { public: process.env.S3_PUBLIC_BUCKET || 'fastgpt-public', private: process.env.S3_PRIVATE_BUCKET || 'fastgpt-private' } as const; + +export const getSystemMaxFileSize = () => { + const config = global.feConfigs?.uploadFileMaxSize || 1024; // MB, default 1024MB + return config; // bytes +}; diff --git a/packages/service/common/s3/index.ts b/packages/service/common/s3/index.ts index f879e5eef..6e6729efd 100644 --- a/packages/service/common/s3/index.ts +++ b/packages/service/common/s3/index.ts @@ -1,5 +1,7 @@ import { S3PublicBucket } from './buckets/public'; import { S3PrivateBucket } from './buckets/private'; +import { addLog } from '../system/log'; +import { startS3DelWorker } from './mq'; export function initS3Buckets() { const publicBucket = new S3PublicBucket(); @@ -10,3 +12,8 @@ export function initS3Buckets() { [privateBucket.name]: privateBucket }; } + +export const initS3MQWorker = async () => { + addLog.info('Init S3 Delete Worker...'); + await startS3DelWorker(); +}; diff --git a/packages/service/common/s3/mq.ts b/packages/service/common/s3/mq.ts new file mode 100644 index 000000000..9c6ac5a5a --- /dev/null +++ b/packages/service/common/s3/mq.ts @@ -0,0 +1,77 @@ +import { getQueue, getWorker, QueueNames } from '../bullmq'; +import pLimit from 'p-limit'; +import { retryFn } from '@fastgpt/global/common/system/utils'; + +export type S3MQJobData = { + key?: string; + prefix?: string; + bucketName: string; +}; + +export const addS3DelJob = async (data: S3MQJobData): Promise => { + const queue = getQueue(QueueNames.s3FileDelete); + + await queue.add( + 'delete-s3-files', + { ...data }, + { + attempts: 3, + removeOnFail: false, + removeOnComplete: true, + backoff: { + delay: 2000, + type: 'exponential' + } + } + ); +}; +export const startS3DelWorker = async () => { + return getWorker( + QueueNames.s3FileDelete, + async (job) => { + const { prefix, bucketName, key } = job.data; + const limit = pLimit(10); + const tasks: Promise[] = []; + const bucket = s3BucketMap[bucketName]; + if (!bucket) { + return Promise.reject(`Bucket not found: ${bucketName}`); + } + + if (key) { + await bucket.delete(key); + } + if (prefix) { + return new Promise(async (resolve, reject) => { + const stream = bucket.listObjectsV2(prefix, true); + stream.on('data', async (file) => { + if (!file.name) return; + + const p = limit(() => retryFn(() => bucket.delete(file.name))); + tasks.push(p); + }); + + stream.on('end', async () => { + try { + const results = await Promise.allSettled(tasks); + const failed = results.filter((r) => r.status === 'rejected'); + if (failed.length > 0) { + reject('Some deletes failed'); + } + resolve(); + } catch (err) { + reject(err); + } + }); + + stream.on('error', (err) => { + console.error('listObjects stream error', err); + reject(err); + }); + }); + } + }, + { + concurrency: 1 + } + ); +}; diff --git a/packages/service/common/s3/sources/avatar.ts b/packages/service/common/s3/sources/avatar.ts index 9d1614da5..d8c3efb56 100644 --- a/packages/service/common/s3/sources/avatar.ts +++ b/packages/service/common/s3/sources/avatar.ts @@ -31,7 +31,10 @@ class S3AvatarSource { }) { return this.bucket.createPostPresignedUrl( { filename, teamId, source: S3Sources.avatar }, - { expiredHours: autoExpired ? 1 : undefined } // 1 Hourse + { + expiredHours: autoExpired ? 1 : undefined, // 1 Hours + maxFileSize: 5 // 5MB + } ); } diff --git a/packages/service/common/s3/sources/chat/index.ts b/packages/service/common/s3/sources/chat/index.ts new file mode 100644 index 000000000..cbe0124a2 --- /dev/null +++ b/packages/service/common/s3/sources/chat/index.ts @@ -0,0 +1,59 @@ +import { getNanoid } from '@fastgpt/global/common/string/tools'; +import { S3PrivateBucket } from '../../buckets/private'; +import { S3Sources } from '../../type'; +import { + type CheckChatFileKeys, + type DelChatFileByPrefixParams, + ChatFileUploadSchema, + DelChatFileByPrefixSchema +} from './type'; +import { MongoS3TTL } from '../../schema'; +import { addHours } from 'date-fns'; + +class S3ChatSource { + private bucket: S3PrivateBucket; + private static instance: S3ChatSource; + + constructor() { + this.bucket = new S3PrivateBucket(); + } + + static getInstance() { + return (this.instance ??= new S3ChatSource()); + } + + async createGetChatFileURL(params: { key: string; expiredHours?: number; external: boolean }) { + const { key, expiredHours = 1, external = false } = params; // 默认一个小时 + + if (external) { + return await this.bucket.createExtenalUrl({ key, expiredHours }); + } + return await this.bucket.createPreviewlUrl({ key, expiredHours }); + } + + async createUploadChatFileURL(params: CheckChatFileKeys) { + const { appId, chatId, uId, filename } = ChatFileUploadSchema.parse(params); + const rawKey = [S3Sources.chat, appId, uId, chatId, `${getNanoid(6)}-${filename}`].join('/'); + await MongoS3TTL.create({ + minioKey: rawKey, + bucketName: this.bucket.name, + expiredTime: addHours(new Date(), 24) + }); + return await this.bucket.createPostPresignedUrl({ rawKey, filename }); + } + + deleteChatFilesByPrefix(params: DelChatFileByPrefixParams) { + const { appId, chatId, uId } = DelChatFileByPrefixSchema.parse(params); + + const prefix = [S3Sources.chat, appId, uId, chatId].filter(Boolean).join('/'); + return this.bucket.addDeleteJob({ prefix }); + } + + deleteChatFileByKey(key: string) { + return this.bucket.addDeleteJob({ key }); + } +} + +export function getS3ChatSource() { + return S3ChatSource.getInstance(); +} diff --git a/packages/service/common/s3/sources/chat/type.ts b/packages/service/common/s3/sources/chat/type.ts new file mode 100644 index 000000000..a306eb172 --- /dev/null +++ b/packages/service/common/s3/sources/chat/type.ts @@ -0,0 +1,17 @@ +import { z } from 'zod'; +import { ObjectIdSchema } from '@fastgpt/global/common/type/mongo'; + +export const ChatFileUploadSchema = z.object({ + appId: ObjectIdSchema, + chatId: z.string().length(24), + uId: z.string().nonempty(), + filename: z.string().nonempty() +}); +export type CheckChatFileKeys = z.infer; + +export const DelChatFileByPrefixSchema = z.object({ + appId: ObjectIdSchema, + chatId: z.string().length(24).optional(), + uId: z.string().nonempty().optional() +}); +export type DelChatFileByPrefixParams = z.infer; diff --git a/packages/service/common/s3/type.ts b/packages/service/common/s3/type.ts index 04cfdbc54..885a00817 100644 --- a/packages/service/common/s3/type.ts +++ b/packages/service/common/s3/type.ts @@ -17,7 +17,7 @@ export type ExtensionType = keyof typeof Mimes; export type S3OptionsType = typeof defaultS3Options; -export const S3SourcesSchema = z.enum(['avatar']); +export const S3SourcesSchema = z.enum(['avatar', 'chat']); export const S3Sources = S3SourcesSchema.enum; export type S3SourceType = z.infer; @@ -37,16 +37,24 @@ export const CreatePostPresignedUrlParamsSchema = z.union([ export type CreatePostPresignedUrlParams = z.infer; export const CreatePostPresignedUrlOptionsSchema = z.object({ - expiredHours: z.number().positive().optional() // TTL in Hours, default 7 * 24 + expiredHours: z.number().positive().optional(), // TTL in Hours, default 7 * 24 + maxFileSize: z.number().positive().optional() // MB }); export type CreatePostPresignedUrlOptions = z.infer; export const CreatePostPresignedUrlResultSchema = z.object({ - url: z.string().min(1), - fields: z.record(z.string(), z.string()) + url: z.string().nonempty(), + fields: z.record(z.string(), z.string()), + maxSize: z.number().positive().optional() // bytes }); export type CreatePostPresignedUrlResult = z.infer; +export const CreateGetPresignedUrlParamsSchema = z.object({ + key: z.string().nonempty(), + expiredHours: z.number().positive().optional() +}); +export type createPreviewUrlParams = z.infer; + declare global { var s3BucketMap: { [key: string]: S3BaseBucket; diff --git a/packages/service/common/secret/utils.ts b/packages/service/common/secret/utils.ts index 8e65ff713..f54fe0c7d 100644 --- a/packages/service/common/secret/utils.ts +++ b/packages/service/common/secret/utils.ts @@ -5,6 +5,7 @@ import { HeaderSecretTypeEnum } from '@fastgpt/global/common/secret/constants'; import { isSecretValue } from '../../../global/common/secret/utils'; export const encryptSecretValue = (value: SecretValueType): SecretValueType => { + if (typeof value !== 'object' || value === null) return value; if (!value.value) { return value; } @@ -51,7 +52,19 @@ export const getSecretValue = ({ }; export const anyValueDecrypt = (value: any) => { - if (!isSecretValue(value)) return value; + const val = (() => { + try { + return JSON.parse(value); + } catch (error) { + return value; + } + })(); - return decryptSecret(value.secret); + if (typeof val === 'object' && val !== null && val.value) { + return val.value; + } + + if (!isSecretValue(val)) return val; + + return decryptSecret(val.secret); }; diff --git a/packages/service/core/ai/llm/utils.ts b/packages/service/core/ai/llm/utils.ts index ef80ae6eb..6fe9efd60 100644 --- a/packages/service/core/ai/llm/utils.ts +++ b/packages/service/core/ai/llm/utils.ts @@ -12,6 +12,8 @@ import { ChatCompletionRequestMessageRoleEnum } from '@fastgpt/global/core/ai/co import { i18nT } from '../../../../web/i18n/utils'; import { addLog } from '../../../common/system/log'; import { getImageBase64 } from '../../../common/file/image/utils'; +import { getS3ChatSource } from '../../../common/s3/sources/chat'; +import { isInternalAddress } from '../../../common/system/utils'; export const filterGPTMessageByMaxContext = async ({ messages = [], @@ -80,7 +82,7 @@ export const filterGPTMessageByMaxContext = async ({ return [...systemPrompts, ...chats]; }; -/* +/* Format requested messages 1. If not useVision, only retain text. 2. Remove file_url @@ -150,12 +152,7 @@ export const loadRequestMessages = async ({ content.map(async (item) => { if (item.type === 'image_url') { // Remove url origin - const imgUrl = (() => { - if (origin && item.image_url.url.startsWith(origin)) { - return item.image_url.url.replace(origin, ''); - } - return item.image_url.url; - })(); + const imgUrl = item.image_url.url; // base64 image if (imgUrl.startsWith('data:image/')) { @@ -164,8 +161,23 @@ export const loadRequestMessages = async ({ try { // If imgUrl is a local path, load image from local, and set url to base64 - if (imgUrl.startsWith('/') || process.env.MULTIPLE_DATA_TO_BASE64 === 'true') { - const { completeBase64: base64 } = await getImageBase64(imgUrl); + if ( + imgUrl.startsWith('/') || + process.env.MULTIPLE_DATA_TO_BASE64 === 'true' || + isInternalAddress(imgUrl) + ) { + const url = await (async () => { + if (item.key) { + try { + return await getS3ChatSource().createGetChatFileURL({ + key: item.key, + external: false + }); + } catch (error) {} + } + return imgUrl; + })(); + const { completeBase64: base64 } = await getImageBase64(url); return { ...item, @@ -185,7 +197,7 @@ export const loadRequestMessages = async ({ return; } } catch (error: any) { - if (error?.response?.status === 405) { + if (error?.response?.status === 405 || error?.response?.status === 403) { return item; } addLog.warn(`Filter invalid image: ${imgUrl}`, { error }); diff --git a/packages/service/core/ai/type.d.ts b/packages/service/core/ai/type.d.ts index 58760ad08..f091b552c 100644 --- a/packages/service/core/ai/type.d.ts +++ b/packages/service/core/ai/type.d.ts @@ -38,7 +38,7 @@ export type SystemDefaultModelType = { }; declare global { - var ModelProviderRawCache: { provider: string; value: I18nStringStrictType }[]; + var ModelProviderRawCache: { provider: string; value: I18nStringStrictType; avatar: string }[]; var ModelProviderListCache: Record; var ModelProviderMapCache: Record>; var aiproxyIdMapCache: AiproxyMapProviderType; diff --git a/packages/service/core/app/controller.ts b/packages/service/core/app/controller.ts index 4821b344d..9039fda63 100644 --- a/packages/service/core/app/controller.ts +++ b/packages/service/core/app/controller.ts @@ -1,11 +1,14 @@ import { type AppSchema } from '@fastgpt/global/core/app/type'; import { NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants'; -import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; +import { + FlowNodeInputTypeEnum, + FlowNodeTypeEnum +} from '@fastgpt/global/core/workflow/node/constant'; import { AppTypeEnum } from '@fastgpt/global/core/app/constants'; import { MongoApp } from './schema'; import type { StoreNodeItemType } from '@fastgpt/global/core/workflow/type/node'; import { encryptSecretValue, storeSecretValue } from '../../common/secret/utils'; -import { SystemToolInputTypeEnum } from '@fastgpt/global/core/app/systemTool/constants'; +import { SystemToolSecretInputTypeEnum } from '@fastgpt/global/core/app/tool/systemTool/constants'; import { type ClientSession } from '../../common/mongo'; import { MongoEvaluation } from './evaluation/evalSchema'; import { removeEvaluationJob } from './evaluation/mq'; @@ -24,6 +27,7 @@ import { removeImageByPath } from '../../common/file/image/controller'; import { mongoSessionRun } from '../../common/mongo/sessionRun'; import { MongoAppLogKeys } from './logs/logkeysSchema'; import { MongoChatItemResponse } from '../chat/chatItemResponseSchema'; +import { getS3ChatSource } from '../../common/s3/sources/chat'; export const beforeUpdateAppFormat = ({ nodes }: { nodes?: StoreNodeItemType[] }) => { if (!nodes) return; @@ -34,11 +38,14 @@ export const beforeUpdateAppFormat = ({ nodes }: { nodes?: StoreNodeItemType[] } if (input.key === NodeInputKeyEnum.headerSecret && typeof input.value === 'object') { input.value = storeSecretValue(input.value); } + if (input.renderTypeList.includes(FlowNodeInputTypeEnum.password)) { + input.value = encryptSecretValue(input.value); + } if (input.key === NodeInputKeyEnum.systemInputConfig && typeof input.value === 'object') { input.inputList?.forEach((inputItem) => { if ( inputItem.inputType === 'secret' && - input.value?.type === SystemToolInputTypeEnum.manual && + input.value?.type === SystemToolSecretInputTypeEnum.manual && input.value?.value ) { input.value.value[inputItem.key] = encryptSecretValue(input.value.value[inputItem.key]); @@ -158,80 +165,84 @@ export const onDelOneApp = async ({ ).lean(); await Promise.all(evalJobs.map((evalJob) => removeEvaluationJob(evalJob._id))); - // Delete chats - await deleteChatFiles({ appId }); - await MongoChatItemResponse.deleteMany({ - appId - }); - await MongoChatItem.deleteMany({ - appId - }); - await MongoChat.deleteMany({ - appId - }); + const del = async (app: AppSchema, session: ClientSession) => { + const appId = String(app._id); - const del = async (session: ClientSession) => { - for await (const app of apps) { - const appId = app._id; + // 删除分享链接 + await MongoOutLink.deleteMany({ + appId + }).session(session); + // Openapi + await MongoOpenApi.deleteMany({ + appId + }).session(session); - // 删除分享链接 - await MongoOutLink.deleteMany({ - appId - }).session(session); - // Openapi - await MongoOpenApi.deleteMany({ - appId - }).session(session); + // delete version + await MongoAppVersion.deleteMany({ + appId + }).session(session); - // delete version - await MongoAppVersion.deleteMany({ - appId - }).session(session); + await MongoChatInputGuide.deleteMany({ + appId + }).session(session); - await MongoChatInputGuide.deleteMany({ - appId - }).session(session); + // 删除精选应用记录 + await MongoChatFavouriteApp.deleteMany({ + teamId, + appId + }).session(session); - // 删除精选应用记录 - await MongoChatFavouriteApp.deleteMany({ - teamId, - appId - }).session(session); + // 从快捷应用中移除对应应用 + await MongoChatSetting.updateMany( + { teamId }, + { $pull: { quickAppIds: { id: String(appId) } } } + ).session(session); - // 从快捷应用中移除对应应用 - await MongoChatSetting.updateMany( - { teamId }, - { $pull: { quickAppIds: { id: String(appId) } } } - ).session(session); + // Del permission + await MongoResourcePermission.deleteMany({ + resourceType: PerResourceTypeEnum.app, + teamId, + resourceId: appId + }).session(session); - // Del permission - await MongoResourcePermission.deleteMany({ - resourceType: PerResourceTypeEnum.app, - teamId, - resourceId: appId - }).session(session); + await MongoAppLogKeys.deleteMany({ + appId + }).session(session); - await MongoAppLogKeys.deleteMany({ - appId - }).session(session); + // delete app + await MongoApp.deleteOne( + { + _id: appId + }, + { session } + ); - // delete app - await MongoApp.deleteOne( - { - _id: appId - }, - { session } - ); - - await removeImageByPath(app.avatar, session); - } + await removeImageByPath(app.avatar, session); }; - if (session) { - await del(session); - return deletedAppIds; + // Delete chats + for await (const app of apps) { + const appId = String(app._id); + await deleteChatFiles({ appId }); + await MongoChatItemResponse.deleteMany({ + appId + }); + await MongoChatItem.deleteMany({ + appId + }); + await MongoChat.deleteMany({ + appId + }); + await getS3ChatSource().deleteChatFilesByPrefix({ appId }); } - await mongoSessionRun(del); - return deletedAppIds; + for await (const app of apps) { + if (session) { + await del(app, session); + return deletedAppIds; + } + + await mongoSessionRun((session) => del(app, session)); + return deletedAppIds; + } }; diff --git a/packages/service/core/app/mcp.ts b/packages/service/core/app/mcp.ts index 1fd37869d..220a32b43 100644 --- a/packages/service/core/app/mcp.ts +++ b/packages/service/core/app/mcp.ts @@ -2,12 +2,12 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js'; import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; import type { AppSchema } from '@fastgpt/global/core/app/type'; -import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/tool/mcpTool/type'; import { addLog } from '../../common/system/log'; import { retryFn } from '@fastgpt/global/common/system/utils'; -import { PluginSourceEnum } from '@fastgpt/global/core/app/plugin/constants'; +import { AppToolSourceEnum } from '@fastgpt/global/core/app/tool/constants'; import { MongoApp } from './schema'; -import type { McpToolDataType } from '@fastgpt/global/core/app/mcpTools/type'; +import type { McpToolDataType } from '@fastgpt/global/core/app/tool/mcpTool/type'; import { UserError } from '@fastgpt/global/common/error/utils'; export class MCPClient { @@ -142,7 +142,7 @@ export const getMCPChildren = async (app: AppSchema) => { return ( app.modules[0].toolConfig?.mcpToolSet?.toolList.map((item) => ({ ...item, - id: `${PluginSourceEnum.mcp}-${id}/${item.name}`, + id: `${AppToolSourceEnum.mcp}-${id}/${item.name}`, avatar: app.avatar })) ?? [] ); @@ -159,7 +159,7 @@ export const getMCPChildren = async (app: AppSchema) => { return { avatar: app.avatar, - id: `${PluginSourceEnum.mcp}-${id}/${item.name}`, + id: `${AppToolSourceEnum.mcp}-${id}/${item.name}`, ...toolData }; }); diff --git a/packages/service/core/app/plugin/type.d.ts b/packages/service/core/app/plugin/type.d.ts deleted file mode 100644 index 5d117fc38..000000000 --- a/packages/service/core/app/plugin/type.d.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { SystemPluginListItemType } from '@fastgpt/global/core/app/type'; -import { FlowNodeTemplateTypeEnum } from '@fastgpt/global/core/workflow/constants'; -import type { WorkflowTemplateBasicType } from '@fastgpt/global/core/workflow/type'; -import type { InputConfigType } from '@fastgpt/global/core/workflow/type/io'; -import type { I18nStringStrictType } from '@fastgpt/global/sdk/fastgpt-plugin'; - -export type SystemPluginConfigSchemaType = { - pluginId: string; - - originCost: number; // n points/one time - currentCost: number; - hasTokenFee: boolean; - isActive: boolean; - pluginOrder?: number; - systemKeyCost?: number; - - customConfig?: { - name: string; - avatar: string; - intro?: string; - toolDescription?: string; - version: string; - weight?: number; - templateType: string; - associatedPluginId: string; - userGuide: string; - author?: string; - }; - inputListVal?: Record; - - // @deprecated - inputConfig?: { - // Render config input form. Find the corresponding node and replace the variable directly - key: string; - label: string; - description: string; - value?: string; - }[]; -}; - -export type TGroupType = { - typeName: I18nStringStrictType | string; - typeId: string; -}; - -export type SystemToolGroupSchemaType = { - groupId: string; - groupAvatar: string; - groupName: string; - groupTypes: TGroupType[]; - groupOrder: number; -}; diff --git a/packages/service/core/app/templates/register.ts b/packages/service/core/app/templates/register.ts index 23daf81d1..2a6d936b8 100644 --- a/packages/service/core/app/templates/register.ts +++ b/packages/service/core/app/templates/register.ts @@ -1,5 +1,5 @@ import { isProduction } from '@fastgpt/global/common/system/constants'; -import { PluginSourceEnum } from '@fastgpt/global/core/app/plugin/constants'; +import { AppToolSourceEnum } from '@fastgpt/global/core/app/tool/constants'; import { type AppTemplateSchemaType } from '@fastgpt/global/core/app/type'; import { MongoAppTemplate } from './templateSchema'; import { pluginClient } from '../../../thirdProvider/fastgptPlugin'; @@ -61,7 +61,7 @@ export const getAppTemplatesAndLoadThem = async (refresh = false) => { }; export const isCommercialTemaplte = (templateId: string) => { - return templateId.startsWith(PluginSourceEnum.commercial); + return templateId.startsWith(AppToolSourceEnum.commercial); }; declare global { diff --git a/packages/service/core/app/tool/api.ts b/packages/service/core/app/tool/api.ts index 5890515bf..aacf9fb74 100644 --- a/packages/service/core/app/tool/api.ts +++ b/packages/service/core/app/tool/api.ts @@ -1,6 +1,5 @@ -import type { I18nStringStrictType, ToolTypeEnum } from '@fastgpt/global/sdk/fastgpt-plugin'; import { RunToolWithStream } from '@fastgpt/global/sdk/fastgpt-plugin'; -import { PluginSourceEnum } from '@fastgpt/global/core/app/plugin/constants'; +import { AppToolSourceEnum } from '@fastgpt/global/core/app/tool/constants'; import { pluginClient, PLUGIN_BASE_URL, PLUGIN_TOKEN } from '../../../thirdProvider/fastgptPlugin'; import { addLog } from '../../../common/system/log'; import { retryFn } from '@fastgpt/global/common/system/utils'; @@ -12,12 +11,9 @@ export async function APIGetSystemToolList() { return res.body.map((item) => { return { ...item, - id: `${PluginSourceEnum.systemTool}-${item.id}`, - parentId: item.parentId ? `${PluginSourceEnum.systemTool}-${item.parentId}` : undefined, - avatar: - item.avatar && item.avatar.startsWith('/imgs/tools/') - ? `/api/system/plugin/tools/${item.avatar.replace('/imgs/tools/', '')}` - : item.avatar + id: `${AppToolSourceEnum.systemTool}-${item.toolId}`, + parentId: item.parentId ? `${AppToolSourceEnum.systemTool}-${item.parentId}` : undefined, + avatar: item.icon }; }); } @@ -31,15 +27,9 @@ const runToolInstance = new RunToolWithStream({ }); export const APIRunSystemTool = runToolInstance.run.bind(runToolInstance); -// Tool Types Cache -type SystemToolTypeItem = { - type: ToolTypeEnum; - name: I18nStringStrictType; -}; - -export const getSystemToolTypes = (): Promise => { +export const getSystemToolTags = () => { return retryFn(async () => { - const res = await pluginClient.tool.getType(); + const res = await pluginClient.tool.getTags(); if (res.status === 200) { const toolTypes = res.body || []; diff --git a/packages/service/core/app/plugin/controller.ts b/packages/service/core/app/tool/controller.ts similarity index 74% rename from packages/service/core/app/plugin/controller.ts rename to packages/service/core/app/tool/controller.ts index c4e392874..8010de959 100644 --- a/packages/service/core/app/plugin/controller.ts +++ b/packages/service/core/app/tool/controller.ts @@ -17,41 +17,44 @@ import { MongoApp } from '../schema'; import type { localeType } from '@fastgpt/global/common/i18n/type'; import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; import type { WorkflowTemplateBasicType } from '@fastgpt/global/core/workflow/type'; -import { type SystemPluginTemplateItemType } from '@fastgpt/global/core/app/plugin/type'; import { checkIsLatestVersion, getAppLatestVersion, getAppVersionById } from '../version/controller'; -import { type PluginRuntimeType } from '@fastgpt/global/core/app/plugin/type'; -import { MongoSystemPlugin } from './systemPluginSchema'; +import type { + AppToolRuntimeType, + AppToolTemplateItemType +} from '@fastgpt/global/core/app/tool/type'; +import { MongoSystemTool } from '../../plugin/tool/systemToolSchema'; import { PluginErrEnum } from '@fastgpt/global/common/error/code/plugin'; -import { PluginSourceEnum } from '@fastgpt/global/core/app/plugin/constants'; +import { AppToolSourceEnum } from '@fastgpt/global/core/app/tool/constants'; import { FlowNodeTemplateTypeEnum, NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants'; import { getNanoid } from '@fastgpt/global/common/string/tools'; -import { APIGetSystemToolList } from '../tool/api'; +import { APIGetSystemToolList } from './api'; import { Types } from '../../../common/mongo'; -import type { SystemPluginConfigSchemaType } from './type'; +import type { SystemPluginToolCollectionType } from '@fastgpt/global/core/plugin/tool/type'; import type { FlowNodeInputItemType, FlowNodeOutputItemType } from '@fastgpt/global/core/workflow/type/io'; -import { isProduction } from '@fastgpt/global/common/system/constants'; import { Output_Template_Error_Message } from '@fastgpt/global/core/workflow/template/output'; -import { splitCombinePluginId } from '@fastgpt/global/core/app/plugin/utils'; -import { getMCPToolRuntimeNode } from '@fastgpt/global/core/app/mcpTools/utils'; -import { getHTTPToolRuntimeNode } from '@fastgpt/global/core/app/httpTools/utils'; +import { splitCombineToolId } from '@fastgpt/global/core/app/tool/utils'; +import { getMCPToolRuntimeNode } from '@fastgpt/global/core/app/tool/mcpTool/utils'; +import { getHTTPToolRuntimeNode } from '@fastgpt/global/core/app/tool/httpTool/utils'; import { AppTypeEnum } from '@fastgpt/global/core/app/constants'; import { getMCPChildren } from '../mcp'; import { cloneDeep } from 'lodash'; import { UserError } from '@fastgpt/global/common/error/utils'; import { getCachedData } from '../../../common/cache'; import { SystemCacheKeyEnum } from '../../../common/cache/type'; +import { PluginStatusEnum } from '@fastgpt/global/core/plugin/type'; +import { MongoTeamInstalledPlugin } from '../../plugin/schema/teamInstalledPluginSchema'; -type ChildAppType = SystemPluginTemplateItemType & { +type ChildAppType = AppToolTemplateItemType & { teamId?: string; tmbId?: string; workflow?: WorkflowTemplateBasicType; @@ -61,41 +64,87 @@ type ChildAppType = SystemPluginTemplateItemType & { export const getSystemTools = () => getCachedData(SystemCacheKeyEnum.systemTool); -export const getSystemPluginByIdAndVersionId = async ( +export const getSystemToolsWithInstalled = async ({ + teamId, + isRoot +}: { + teamId: string; + isRoot: boolean; +}) => { + const [tools, { installedSet, uninstalledSet }] = await Promise.all([ + getSystemTools(), + MongoTeamInstalledPlugin.find({ teamId, pluginType: 'tool' }, 'pluginId installed') + .lean() + .then((res) => { + const installedSet = new Set(); + const uninstalledSet = new Set(); + res.forEach((item) => { + if (item.installed) { + installedSet.add(item.pluginId); + } else { + uninstalledSet.add(item.pluginId); + } + }); + return { installedSet, uninstalledSet }; + }) + ]); + + return tools.map((tool) => { + const installed = (() => { + if (installedSet.has(tool.id)) { + return true; + } + if (isRoot && !uninstalledSet.has(tool.id)) { + return true; + } + if (tool.defaultInstalled && !uninstalledSet.has(tool.id)) { + return true; + } + return false; + })(); + + return { + ...tool, + installed + }; + }); +}; + +export const getSystemToolByIdAndVersionId = async ( pluginId: string, versionId?: string ): Promise => { - const plugin = await getSystemToolById(pluginId); + const tool = await getSystemToolById(pluginId); - // Admin selected system tool - if (plugin.associatedPluginId) { - // The verification plugin is set as a system plugin - const systemPlugin = await MongoSystemPlugin.findOne( - { pluginId: plugin.id, 'customConfig.associatedPluginId': plugin.associatedPluginId }, + // App type system tool + if (tool.associatedPluginId) { + // The verification tool is set as a system tool + const systemPlugin = await MongoSystemTool.findOne( + { pluginId: tool.id, 'customConfig.associatedPluginId': tool.associatedPluginId }, 'associatedPluginId' ).lean(); if (!systemPlugin) return Promise.reject(PluginErrEnum.unExist); - const app = await MongoApp.findById(plugin.associatedPluginId).lean(); + const app = await MongoApp.findById(tool.associatedPluginId).lean(); if (!app) return Promise.reject(PluginErrEnum.unExist); const version = versionId ? await getAppVersionById({ - appId: plugin.associatedPluginId, + appId: tool.associatedPluginId, versionId, app }) - : await getAppLatestVersion(plugin.associatedPluginId, app); + : await getAppLatestVersion(tool.associatedPluginId, app); if (!version.versionId) return Promise.reject(new UserError('App version not found')); const isLatest = version.versionId ? await checkIsLatestVersion({ - appId: plugin.associatedPluginId, + appId: tool.associatedPluginId, versionId: version.versionId }) : true; return { - ...plugin, + ...tool, workflow: { nodes: version.nodes, edges: version.edges, @@ -110,22 +159,22 @@ export const getSystemPluginByIdAndVersionId = async ( } // System toolset - if (plugin.isFolder) { + if (tool.isFolder) { return { - ...plugin, + ...tool, inputs: [], outputs: [], - inputList: plugin.inputList, + inputList: tool.inputList, version: '', isLatestVersion: true }; } // System tool - const versionList = (plugin.versionList as SystemPluginTemplateItemType['versionList']) || []; + const versionList = (tool.versionList as AppToolTemplateItemType['versionList']) || []; if (versionList.length === 0) { - return Promise.reject(new UserError('Can not find plugin version list')); + return Promise.reject(new UserError('Can not find tool version list')); } const version = versionId @@ -134,7 +183,7 @@ export const getSystemPluginByIdAndVersionId = async ( const lastVersion = versionList[0]; // concat parent (if exists) input config - const parent = plugin.parentId ? await getSystemToolById(plugin.parentId) : undefined; + const parent = tool.parentId ? await getSystemToolById(tool.parentId) : undefined; if (parent?.inputList) { version?.inputs?.unshift({ key: NodeInputKeyEnum.systemInputConfig, @@ -145,7 +194,7 @@ export const getSystemPluginByIdAndVersionId = async ( } return { - ...plugin, + ...tool, inputs: version.inputs ?? [], outputs: version.outputs ?? [], version: versionId ? version?.value : '', @@ -170,12 +219,12 @@ export async function getChildAppPreviewNode({ versionId?: string; lang?: localeType; }): Promise { - const { source, pluginId } = splitCombinePluginId(appId); + const { source, pluginId } = splitCombineToolId(appId); const app: ChildAppType = await (async () => { // 1. App // 2. MCP ToolSets - if (source === PluginSourceEnum.personal) { + if (source === AppToolSourceEnum.personal) { const item = await MongoApp.findById(pluginId).lean(); if (!item) return Promise.reject(PluginErrEnum.unExist); @@ -225,7 +274,7 @@ export async function getChildAppPreviewNode({ }; } // mcp tool - else if (source === PluginSourceEnum.mcp) { + else if (source === AppToolSourceEnum.mcp) { const [parentId, toolName] = pluginId.split('/'); // 1. get parentApp const item = await MongoApp.findById(parentId).lean(); @@ -266,7 +315,7 @@ export async function getChildAppPreviewNode({ }; } // http tool - else if (source === PluginSourceEnum.http) { + else if (source === AppToolSourceEnum.http) { const [parentId, toolName] = pluginId.split('/'); const item = await MongoApp.findById(parentId).lean(); if (!item) return Promise.reject(PluginErrEnum.unExist); @@ -307,7 +356,7 @@ export async function getChildAppPreviewNode({ // 1. System Tools // 2. System Plugins configured in Pro (has associatedPluginId) else { - return getSystemPluginByIdAndVersionId(pluginId, versionId); + return getSystemToolByIdAndVersionId(pluginId, versionId); } })(); @@ -321,7 +370,7 @@ export async function getChildAppPreviewNode({ showTargetHandle?: boolean; }; }> => { - if (source === PluginSourceEnum.systemTool) { + if (source === AppToolSourceEnum.systemTool) { // system Tool or Toolsets const children = app.isFolder ? (await getSystemTools()).filter((item) => item.parentId === pluginId) @@ -350,7 +399,7 @@ export async function getChildAppPreviewNode({ systemToolSet: { toolId: app.id, toolList: children - .filter((item) => item.isActive !== false) + .filter((item) => item.status === 1 || item.status === undefined) .map((item) => ({ toolId: item.id, name: parseI18nString(item.name, lang), @@ -407,7 +456,7 @@ export async function getChildAppPreviewNode({ return { id: getNanoid(), pluginId: app.id, - templateType: app.templateType, + templateType: app.templateType ?? FlowNodeTemplateTypeEnum.tools, flowNodeType, avatar: app.avatar, name: parseI18nString(app.name, lang), @@ -430,6 +479,7 @@ export async function getChildAppPreviewNode({ hasTokenFee: app.hasTokenFee, hasSystemSecret: app.hasSystemSecret, isFolder: app.isFolder, + status: app.status, ...nodeIOConfig, outputs: nodeIOConfig.outputs.some((item) => item.type === FlowNodeOutputTypeEnum.error) @@ -451,11 +501,11 @@ export async function getChildAppRuntimeById({ id: string; versionId?: string; lang?: localeType; -}): Promise { +}): Promise { const app = await (async () => { - const { source, pluginId } = splitCombinePluginId(id); + const { source, pluginId } = splitCombineToolId(id); - if (source === PluginSourceEnum.personal) { + if (source === AppToolSourceEnum.personal) { const item = await MongoApp.findById(pluginId).lean(); if (!item) return Promise.reject(PluginErrEnum.unExist); @@ -487,7 +537,7 @@ export async function getChildAppRuntimeById({ pluginOrder: 0 }; } else { - return getSystemPluginByIdAndVersionId(pluginId, versionId); + return getSystemToolByIdAndVersionId(pluginId, versionId); } })(); @@ -506,59 +556,60 @@ export async function getChildAppRuntimeById({ }; } -const dbPluginFormat = (item: SystemPluginConfigSchemaType): SystemPluginTemplateItemType => { - const { - name, - avatar, - intro, - toolDescription, - version, - weight, - templateType, - associatedPluginId, - userGuide - } = item.customConfig!; +/* FastsGPT-tool api: */ +export const refreshSystemTools = async (): Promise => { + const workflowToolFormat = (item: SystemPluginToolCollectionType): AppToolTemplateItemType => { + const { + name, + avatar, + intro, + toolDescription, + version, + associatedPluginId, + userGuide, + author = '', + tags + } = item.customConfig!; - return { - id: item.pluginId, - isActive: item.isActive, - isFolder: false, - parentId: null, - author: item.customConfig?.author || '', - version, - name, - avatar, - intro, - toolDescription, - weight, - templateType, - originCost: item.originCost, - currentCost: item.currentCost, - hasTokenFee: item.hasTokenFee, - pluginOrder: item.pluginOrder, - systemKeyCost: item.systemKeyCost, - associatedPluginId, - userGuide, - workflow: { - nodes: [], - edges: [] - } + return { + id: item.pluginId, + status: item.status ?? PluginStatusEnum.Normal, + defaultInstalled: item.defaultInstalled ?? false, + isFolder: false, + parentId: null, + author, + version, + name, + avatar, + intro, + toolDescription, + tags, + templateType: FlowNodeTemplateTypeEnum.tools, + originCost: item.originCost, + currentCost: item.currentCost, + hasTokenFee: item.hasTokenFee, + pluginOrder: item.pluginOrder, + systemKeyCost: item.systemKeyCost, + associatedPluginId, + userGuide, + workflow: { + nodes: [], + edges: [] + } + }; }; -}; -/* FastsGPT-Pluign api: */ -export const refreshSystemTools = async (): Promise => { const tools = await APIGetSystemToolList(); // 从数据库里加载插件配置进行替换 - const systemToolsArray = await MongoSystemPlugin.find({}).lean(); + const systemToolsArray = await MongoSystemTool.find({}).lean(); const systemTools = new Map(systemToolsArray.map((plugin) => [plugin.pluginId, plugin])); - const formatTools = tools.map((item) => { + const formatTools = tools.map((item) => { const dbPluginConfig = systemTools.get(item.id); const isFolder = tools.some((tool) => tool.parentId === item.id); - const versionList = (item.versionList as SystemPluginTemplateItemType['versionList']) || []; + const versionList = (item.versionList as AppToolTemplateItemType['versionList']) || []; return { id: item.id, @@ -571,16 +622,15 @@ export const refreshSystemTools = async (): Promise item.customConfig?.associatedPluginId) - .map((item) => dbPluginFormat(item)); + .map((item) => workflowToolFormat(item)); const concatTools = [...formatTools, ...dbPlugins]; concatTools.sort((a, b) => (a.pluginOrder ?? 999) - (b.pluginOrder ?? 999)); - global.systemToolsTypeCache = {}; - concatTools.forEach((item) => { - global.systemToolsTypeCache[item.templateType] = 1; - }); - return concatTools; }; -export const getSystemToolById = async (id: string): Promise => { - const { source, pluginId } = splitCombinePluginId(id); - if (source === PluginSourceEnum.systemTool) { - const tools = await getSystemTools(); - const tool = tools.find((item) => item.id === pluginId); - if (tool) { - return cloneDeep(tool); - } - return Promise.reject(PluginErrEnum.unExist); +export const getSystemToolById = async (id: string): Promise => { + const { pluginId } = splitCombineToolId(id); + const tools = await getSystemTools(); + const tool = tools.find((item) => item.id === pluginId); + if (tool) { + return cloneDeep(tool); } - - const dbPlugin = await MongoSystemPlugin.findOne({ pluginId }).lean(); - if (!dbPlugin) return Promise.reject(PluginErrEnum.unExist); - return dbPluginFormat(dbPlugin); + return Promise.reject(PluginErrEnum.unExist); }; - -declare global { - var systemToolsTypeCache: Record; -} diff --git a/packages/service/core/app/plugin/utils.ts b/packages/service/core/app/tool/runtime/utils.ts similarity index 63% rename from packages/service/core/app/plugin/utils.ts rename to packages/service/core/app/tool/runtime/utils.ts index 848a92509..7ac7c7b39 100644 --- a/packages/service/core/app/plugin/utils.ts +++ b/packages/service/core/app/tool/runtime/utils.ts @@ -1,29 +1,29 @@ import { type ChatNodeUsageType } from '@fastgpt/global/support/wallet/bill/type'; -import { type PluginRuntimeType } from '@fastgpt/global/core/app/plugin/type'; -import { PluginSourceEnum } from '@fastgpt/global/core/app/plugin/constants'; -import { splitCombinePluginId } from '@fastgpt/global/core/app/plugin/utils'; +import { type AppToolRuntimeType } from '@fastgpt/global/core/app/tool/type'; +import { AppToolSourceEnum } from '@fastgpt/global/core/app/tool/constants'; +import { splitCombineToolId } from '@fastgpt/global/core/app/tool/utils'; /* - Plugin points calculation: + Tool points calculation: 1. 系统插件/商业版插件: - 有错误:返回 0 - 无错误:返回 单次积分 + 子流程积分(可配置) 2. 个人插件 - 返回 子流程积分 */ -export const computedPluginUsage = async ({ +export const computedAppToolUsage = async ({ plugin, childrenUsage, error }: { - plugin: PluginRuntimeType; + plugin: AppToolRuntimeType; childrenUsage: ChatNodeUsageType[]; error?: boolean; }) => { - const { source } = splitCombinePluginId(plugin.id); + const { source } = splitCombineToolId(plugin.id); const childrenUsages = childrenUsage.reduce((sum, item) => sum + (item.totalPoints || 0), 0); - if (source !== PluginSourceEnum.personal) { + if (source !== AppToolSourceEnum.personal) { if (error) return 0; const pluginCurrentCost = plugin.currentCost ?? 0; diff --git a/packages/service/core/app/tool/workflowTool/utils.ts b/packages/service/core/app/tool/workflowTool/utils.ts new file mode 100644 index 000000000..8b5825fb1 --- /dev/null +++ b/packages/service/core/app/tool/workflowTool/utils.ts @@ -0,0 +1,95 @@ +import { anyValueDecrypt, encryptSecretValue } from '../../../../common/secret/utils'; +import type { RuntimeNodeItemType } from '@fastgpt/global/core/workflow/runtime/type'; +import { + FlowNodeInputTypeEnum, + FlowNodeTypeEnum +} from '@fastgpt/global/core/workflow/node/constant'; +import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants'; +import type { FlowNodeInputItemType } from '@fastgpt/global/core/workflow/type/io'; +import type { RuntimeUserPromptType, UserChatItemType } from '@fastgpt/global/core/chat/type'; +import { getNanoid } from '@fastgpt/global/common/string/tools'; +import { ChatRoleEnum } from '@fastgpt/global/core/chat/constants'; +import { runtimePrompt2ChatsValue } from '@fastgpt/global/core/chat/adapt'; + +// add value to tool input node when run tool +export const updateWorkflowToolInputByVariables = ( + nodes: RuntimeNodeItemType[], + variables: Record +) => { + return nodes.map((node) => + node.flowNodeType === FlowNodeTypeEnum.pluginInput + ? { + ...node, + inputs: node.inputs.map((input) => { + const parseValue = (() => { + try { + if (input.renderTypeList.includes(FlowNodeInputTypeEnum.password)) { + return anyValueDecrypt(variables[input.key]); + } + if ( + input.valueType === WorkflowIOValueTypeEnum.string || + input.valueType === WorkflowIOValueTypeEnum.number || + input.valueType === WorkflowIOValueTypeEnum.boolean + ) + return variables[input.key]; + return JSON.parse(variables[input.key]); + } catch (e) { + return variables[input.key]; + } + })(); + + return { + ...input, + value: parseValue ?? input.value + }; + }) + } + : node + ); +}; + +/* Get tool runtime input user query */ +export const serverGetWorkflowToolRunUserQuery = ({ + pluginInputs, + variables, + files = [] +}: { + pluginInputs: FlowNodeInputItemType[]; + variables: Record; + files?: RuntimeUserPromptType['files']; +}): UserChatItemType & { dataId: string } => { + const getRunContent = ({ + pluginInputs, + variables + }: { + pluginInputs: FlowNodeInputItemType[]; + variables: Record; + }) => { + const pluginInputsWithValue = pluginInputs.map((input) => { + const { key } = input; + let value = variables?.hasOwnProperty(key) ? variables[key] : input.defaultValue; + + if (input.renderTypeList.includes(FlowNodeInputTypeEnum.password)) { + value = encryptSecretValue(value); + } + + return { + ...input, + value + }; + }); + return JSON.stringify(pluginInputsWithValue); + }; + + return { + dataId: getNanoid(24), + obj: ChatRoleEnum.Human, + value: runtimePrompt2ChatsValue({ + text: getRunContent({ + pluginInputs: pluginInputs, + variables + }), + files + }) + }; +}; diff --git a/packages/service/core/app/utils.ts b/packages/service/core/app/utils.ts index 70ffaea5c..a48728cb2 100644 --- a/packages/service/core/app/utils.ts +++ b/packages/service/core/app/utils.ts @@ -3,12 +3,12 @@ import { getEmbeddingModel } from '../ai/model'; import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; import { NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants'; import type { StoreNodeItemType } from '@fastgpt/global/core/workflow/type/node'; -import { getChildAppPreviewNode } from './plugin/controller'; -import { PluginSourceEnum } from '@fastgpt/global/core/app/plugin/constants'; +import { getChildAppPreviewNode } from './tool/controller'; +import { AppToolSourceEnum } from '@fastgpt/global/core/app/tool/constants'; import { authAppByTmbId } from '../../support/permission/app/auth'; import { ReadPermissionVal } from '@fastgpt/global/support/permission/constant'; import { getErrText } from '@fastgpt/global/common/error/utils'; -import { splitCombinePluginId } from '@fastgpt/global/core/app/plugin/utils'; +import { splitCombineToolId } from '@fastgpt/global/core/app/tool/utils'; import type { localeType } from '@fastgpt/global/common/i18n/type'; export async function listAppDatasetDataByTeamIdAndDatasetIds({ @@ -50,7 +50,7 @@ export async function rewriteAppWorkflowToDetail({ await Promise.all( nodes.map(async (node) => { if (!node.pluginId) return; - const { source, pluginId } = splitCombinePluginId(node.pluginId); + const { source, pluginId } = splitCombineToolId(node.pluginId); try { const [preview] = await Promise.all([ @@ -59,7 +59,7 @@ export async function rewriteAppWorkflowToDetail({ versionId: node.version, lang }), - ...(source === PluginSourceEnum.personal + ...(source === AppToolSourceEnum.personal ? [ authAppByTmbId({ tmbId: ownerTmbId, @@ -71,11 +71,12 @@ export async function rewriteAppWorkflowToDetail({ ]); node.pluginData = { + name: preview.name, + avatar: preview.avatar, + status: preview.status, diagram: preview.diagram, userGuide: preview.userGuide, - courseUrl: preview.courseUrl, - name: preview.name, - avatar: preview.avatar + courseUrl: preview.courseUrl }; node.versionLabel = preview.versionLabel; node.isLatestVersion = preview.isLatestVersion; diff --git a/packages/service/core/chat/saveChat.ts b/packages/service/core/chat/saveChat.ts index 11be54201..2b0793e83 100644 --- a/packages/service/core/chat/saveChat.ts +++ b/packages/service/core/chat/saveChat.ts @@ -17,6 +17,8 @@ import { MongoAppChatLog } from '../app/logs/chatLogsSchema'; import { writePrimary } from '../../common/mongo/utils'; import { MongoChatItemResponse } from './chatItemResponseSchema'; import { chatValue2RuntimePrompt } from '@fastgpt/global/core/chat/adapt'; +import { MongoS3TTL } from '../../common/s3/schema'; +import type { ClientSession } from '../../common/mongo'; type Props = { chatId: string; @@ -39,6 +41,40 @@ type Props = { errorMsg?: string; }; +const beforProcess = (props: Props) => { + // Remove url + props.userContent.value.forEach((item) => { + if (item.type === ChatItemValueTypeEnum.file && item.file?.key) { + item.file.url = ''; + } + }); +}; +const afterProcess = async ({ + contents, + session +}: { + contents: (UserChatItemType | AIChatItemType)[]; + session: ClientSession; +}) => { + // Remove ttl + const fileKeys = contents + .map((item) => { + if (item.value && Array.isArray(item.value)) { + return item.value.map((valueItem) => { + if (valueItem.type === ChatItemValueTypeEnum.file && valueItem.file?.key) { + return valueItem.file.key; + } + }); + } + return []; + }) + .flat() + .filter(Boolean) as string[]; + if (fileKeys.length > 0) { + await MongoS3TTL.deleteMany({ minioKey: { $in: fileKeys } }, { session }); + } +}; + const formatAiContent = ({ aiContent, durationSeconds, @@ -106,6 +142,8 @@ const getChatDataLog = async ({ }; export async function saveChat(props: Props) { + beforProcess(props); + const { chatId, appId, @@ -216,6 +254,8 @@ export async function saveChat(props: Props) { } ); + await afterProcess({ contents: processedContent, session }); + pushChatLog({ chatId, chatItemIdHuman: String(chatItemIdHuman), @@ -293,16 +333,11 @@ export async function saveChat(props: Props) { } } -export const updateInteractiveChat = async ({ - teamId, - chatId, - appId, - userContent, - aiContent, - variables, - durationSeconds, - errorMsg -}: Props) => { +export const updateInteractiveChat = async (props: Props) => { + beforProcess(props); + + const { teamId, chatId, appId, userContent, aiContent, variables, durationSeconds, errorMsg } = + props; if (!chatId) return; const chatItem = await MongoChatItem.findOne({ appId, chatId, obj: ChatRoleEnum.AI }).sort({ @@ -422,6 +457,8 @@ export const updateInteractiveChat = async ({ { session, ordered: true, ...writePrimary } ); } + + await afterProcess({ contents: [userContent, aiContent], session }); }); // Push chat data logs diff --git a/packages/service/core/chat/utils.ts b/packages/service/core/chat/utils.ts new file mode 100644 index 000000000..4c3bb7ee9 --- /dev/null +++ b/packages/service/core/chat/utils.ts @@ -0,0 +1,18 @@ +import { ChatItemValueTypeEnum } from '@fastgpt/global/core/chat/constants'; +import type { ChatItemType } from '@fastgpt/global/core/chat/type'; +import { getS3ChatSource } from '../../common/s3/sources/chat'; + +export const addPreviewUrlToChatItems = async (histories: ChatItemType[]) => { + // Presign file urls + const s3ChatSource = getS3ChatSource(); + for await (const item of histories) { + for await (const value of item.value) { + if (value.type === ChatItemValueTypeEnum.file && value.file && value.file.key) { + value.file.url = await s3ChatSource.createGetChatFileURL({ + key: value.file.key, + external: true + }); + } + } + } +}; diff --git a/packages/service/core/dataset/training/controller.ts b/packages/service/core/dataset/training/controller.ts index a2daac822..fec4f1bc8 100644 --- a/packages/service/core/dataset/training/controller.ts +++ b/packages/service/core/dataset/training/controller.ts @@ -1,18 +1,14 @@ import { MongoDatasetTraining } from './schema'; -import type { - PushDatasetDataChunkProps, - PushDatasetDataResponse -} from '@fastgpt/global/core/dataset/api.d'; +import type { PushDatasetDataResponse } from '@fastgpt/global/core/dataset/api.d'; import { TrainingModeEnum } from '@fastgpt/global/core/dataset/constants'; -import { simpleText } from '@fastgpt/global/common/string/tools'; import { type ClientSession } from '../../../common/mongo'; import { getLLMModel, getEmbeddingModel, getVlmModel } from '../../ai/model'; import { addLog } from '../../../common/system/log'; -import { getCollectionWithDataset } from '../controller'; import { mongoSessionRun } from '../../../common/mongo/sessionRun'; import { type PushDataToTrainingQueueProps } from '@fastgpt/global/core/dataset/training/type'; import { i18nT } from '../../../../web/i18n/utils'; import { getLLMMaxChunkSize } from '../../../../global/core/dataset/training/utils'; +import { retryFn } from '@fastgpt/global/common/system/utils'; export const lockTrainingDataByTeamId = async (teamId: string): Promise => { try { @@ -101,22 +97,26 @@ export async function pushDataListToTrainingQueue({ }); // insert data to db - const insertLen = data.length; + const batchSize = 500; // Batch insert size + const maxBatchesPerTransaction = 20; // Every session can insert at most 20 batches - // 使用 insertMany 批量插入 - const batchSize = 500; - const insertData = async (startIndex: number, session: ClientSession) => { - const list = data.slice(startIndex, startIndex + batchSize); + const insertDataIterative = async ( + dataToInsert: typeof data, + session: ClientSession + ): Promise => { + let insertedCount = 0; - if (list.length === 0) return; + for (let i = 0; i < dataToInsert.length; i += batchSize) { + const batch = dataToInsert.slice(i, i + batchSize); + + if (batch.length === 0) continue; - try { const result = await MongoDatasetTraining.insertMany( - list.map((item) => ({ + batch.map((item) => ({ teamId, tmbId, - datasetId: datasetId, - collectionId: collectionId, + datasetId, + collectionId, billId, mode, ...(item.q && { q: item.q }), @@ -130,34 +130,58 @@ export async function pushDataListToTrainingQueue({ })), { session, - ordered: false, + ordered: true, // 改为 true: 任何失败立即停止,事务回滚 rawResult: true, - includeResultMetadata: false // 进一步减少返回数据 + includeResultMetadata: false } ); - if (result.insertedCount !== list.length) { - return Promise.reject(`Insert data error, ${JSON.stringify(result)}`); - } - } catch (error: any) { - addLog.error(`Insert error`, error); - return Promise.reject(error); + // ordered: true 模式下,成功必定等于批次大小 + insertedCount += result.insertedCount; + + addLog.debug(`Training data insert progress: ${insertedCount}/${dataToInsert.length}`); } - return insertData(startIndex + batchSize, session); + return insertedCount; }; - if (session) { - await insertData(0, session); - } else { - await mongoSessionRun(async (session) => { - await insertData(0, session); - }); + // 大数据量分段事务处理 (避免事务超时) + const chunkSize = maxBatchesPerTransaction * batchSize; // 10,000 条 + let start = Date.now(); + + if (data.length > chunkSize) { + addLog.info(`Large dataset detected (${data.length} items), using chunked transactions`); + + let totalInserted = 0; + + for (let i = 0; i < data.length; i += chunkSize) { + const chunk = data.slice(i, i + chunkSize); + + await retryFn(async () => { + const inserted = await mongoSessionRun(async (chunkSession) => { + return insertDataIterative(chunk, chunkSession); + }); + totalInserted += inserted; + }); + } + + addLog.info(`Chunked transactions completed in ${Date.now() - start}ms`); + + return { insertLen: totalInserted }; } - return { - insertLen - }; + // 小数据量单事务处理 + if (session) { + const insertedCount = await insertDataIterative(data, session); + addLog.info(`Single transaction completed in ${Date.now() - start}ms`); + return { insertLen: insertedCount }; + } else { + const insertedCount = await mongoSessionRun(async (session) => { + return insertDataIterative(data, session); + }); + addLog.info(`Single transaction completed in ${Date.now() - start}ms`); + return { insertLen: insertedCount }; + } } export const pushDatasetToParseQueue = async ({ diff --git a/packages/service/core/plugin/schema/teamInstalledPluginSchema.ts b/packages/service/core/plugin/schema/teamInstalledPluginSchema.ts new file mode 100644 index 000000000..c4481314d --- /dev/null +++ b/packages/service/core/plugin/schema/teamInstalledPluginSchema.ts @@ -0,0 +1,34 @@ +import { TeamCollectionName } from '@fastgpt/global/support/user/team/constant'; +import { connectionMongo, getMongoModel } from '../../../common/mongo/index'; +import type { TeamInstalledPluginSchemaType } from '@fastgpt/global/core/plugin/schema/type'; + +const { Schema } = connectionMongo; + +export const collectionName = 'team_installed_plugins'; + +const TeamInstalledPluginSchema = new Schema({ + teamId: { + type: Schema.Types.ObjectId, + ref: TeamCollectionName, + required: true + }, + pluginType: { + type: String, + default: 'tool' + }, + pluginId: { + type: String, + required: true + }, + installed: { + type: Boolean, + required: true + } +}); + +TeamInstalledPluginSchema.index({ teamId: 1, pluginId: 1 }, { unique: true }); + +export const MongoTeamInstalledPlugin = getMongoModel( + collectionName, + TeamInstalledPluginSchema +); diff --git a/packages/service/core/app/plugin/pluginGroupSchema.ts b/packages/service/core/plugin/tool/pluginGroupSchema.ts similarity index 66% rename from packages/service/core/app/plugin/pluginGroupSchema.ts rename to packages/service/core/plugin/tool/pluginGroupSchema.ts index eaf149888..a18417de2 100644 --- a/packages/service/core/app/plugin/pluginGroupSchema.ts +++ b/packages/service/core/plugin/tool/pluginGroupSchema.ts @@ -1,9 +1,22 @@ +// 已弃用 +import type { I18nStringStrictType } from '@fastgpt/global/sdk/fastgpt-plugin'; import { connectionMongo, getMongoModel } from '../../../common/mongo/index'; -import { type SystemToolGroupSchemaType, type TGroupType } from './type'; const { Schema } = connectionMongo; export const collectionName = 'app_plugin_groups'; +export type TGroupType = { + typeName: I18nStringStrictType | string; + typeId: string; +}; +export type SystemToolGroupSchemaType = { + groupId: string; + groupAvatar: string; + groupName: string; + groupTypes: TGroupType[]; + groupOrder: number; +}; + const PluginGroupSchema = new Schema({ groupId: { type: String, diff --git a/packages/service/core/app/plugin/systemPluginSchema.ts b/packages/service/core/plugin/tool/systemToolSchema.ts similarity index 53% rename from packages/service/core/app/plugin/systemPluginSchema.ts rename to packages/service/core/plugin/tool/systemToolSchema.ts index c83bdc521..e8476458d 100644 --- a/packages/service/core/app/plugin/systemPluginSchema.ts +++ b/packages/service/core/plugin/tool/systemToolSchema.ts @@ -1,16 +1,21 @@ import { connectionMongo, getMongoModel } from '../../../common/mongo/index'; const { Schema } = connectionMongo; -import type { SystemPluginConfigSchemaType } from './type'; +import type { SystemPluginToolCollectionType } from '@fastgpt/global/core/plugin/tool/type'; -export const collectionName = 'app_system_plugins'; +export const collectionName = 'system_plugin_tools'; -const SystemPluginSchema = new Schema({ +const SystemToolSchema = new Schema({ pluginId: { type: String, required: true }, - isActive: { - type: Boolean + status: { + type: Number, + default: 1 + }, + defaultInstalled: { + type: Boolean, + default: false }, originCost: { type: Number, @@ -35,12 +40,13 @@ const SystemPluginSchema = new Schema({ inputListVal: Object, // @deprecated - inputConfig: Array + inputConfig: Array, + isActive: Boolean }); -SystemPluginSchema.index({ pluginId: 1 }); +SystemToolSchema.index({ pluginId: 1 }); -export const MongoSystemPlugin = getMongoModel( +export const MongoSystemTool = getMongoModel( collectionName, - SystemPluginSchema + SystemToolSchema ); diff --git a/packages/service/core/plugin/tool/tagSchema.ts b/packages/service/core/plugin/tool/tagSchema.ts new file mode 100644 index 000000000..eb82da96c --- /dev/null +++ b/packages/service/core/plugin/tool/tagSchema.ts @@ -0,0 +1,32 @@ +import { connectionMongo, getMongoModel } from '../../../common/mongo/index'; +import type { SystemPluginToolTagType } from '@fastgpt/global/core/plugin/type'; +const { Schema } = connectionMongo; + +export const collectionName = 'system_plugin_tool_tags'; + +const SystemPluginToolTagSchema = new Schema({ + tagId: { + type: String, + required: true, + unique: true + }, + tagName: { + type: Schema.Types.Mixed, + required: true + }, + tagOrder: { + type: Number, + default: 0 + }, + isSystem: { + type: Boolean, + default: false + } +}); + +SystemPluginToolTagSchema.index({ tagOrder: 1 }); + +export const MongoPluginToolTag = getMongoModel( + collectionName, + SystemPluginToolTagSchema +); diff --git a/packages/service/core/workflow/dispatch/ai/agent/index.ts b/packages/service/core/workflow/dispatch/ai/agent/index.ts index 55e553b8f..7ae5e9477 100644 --- a/packages/service/core/workflow/dispatch/ai/agent/index.ts +++ b/packages/service/core/workflow/dispatch/ai/agent/index.ts @@ -29,7 +29,7 @@ import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; import { getDocumentQuotePrompt } from '@fastgpt/global/core/ai/prompt/AIChat'; import { postTextCensor } from '../../../../chat/postTextCensor'; import type { FlowNodeInputItemType } from '@fastgpt/global/core/workflow/type/io'; -import type { McpToolDataType } from '@fastgpt/global/core/app/mcpTools/type'; +import type { McpToolDataType } from '@fastgpt/global/core/app/tool/mcpTool/type'; import type { JSONSchemaInputType } from '@fastgpt/global/core/app/jsonschema'; type Response = DispatchNodeResultType<{ diff --git a/packages/service/core/workflow/dispatch/child/runTool.ts b/packages/service/core/workflow/dispatch/child/runTool.ts index 3f6738f23..16fc45ed6 100644 --- a/packages/service/core/workflow/dispatch/child/runTool.ts +++ b/packages/service/core/workflow/dispatch/child/runTool.ts @@ -9,22 +9,23 @@ import { import { NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants'; import { MCPClient } from '../../../app/mcp'; import { getSecretValue } from '../../../../common/secret/utils'; -import type { McpToolDataType } from '@fastgpt/global/core/app/mcpTools/type'; +import type { McpToolDataType } from '@fastgpt/global/core/app/tool/mcpTool/type'; import type { HttpToolConfigType } from '@fastgpt/global/core/app/type'; import { APIRunSystemTool } from '../../../app/tool/api'; -import { MongoSystemPlugin } from '../../../app/plugin/systemPluginSchema'; -import { SystemToolInputTypeEnum } from '@fastgpt/global/core/app/systemTool/constants'; +import { MongoSystemTool } from '../../../plugin/tool/systemToolSchema'; +import { SystemToolSecretInputTypeEnum } from '@fastgpt/global/core/app/tool/systemTool/constants'; import type { StoreSecretValueType } from '@fastgpt/global/common/secret/type'; -import { getSystemToolById } from '../../../app/plugin/controller'; +import { getSystemToolById } from '../../../app/tool/controller'; import { textAdaptGptResponse } from '@fastgpt/global/core/workflow/runtime/utils'; import { pushTrack } from '../../../../common/middle/tracks/utils'; import { getNodeErrResponse } from '../utils'; -import { splitCombinePluginId } from '@fastgpt/global/core/app/plugin/utils'; +import { splitCombineToolId } from '@fastgpt/global/core/app/tool/utils'; import { getAppVersionById } from '../../../../core/app/version/controller'; import { runHTTPTool } from '../../../app/http'; +import { i18nT } from '../../../../../web/i18n/utils'; type SystemInputConfigType = { - type: SystemToolInputTypeEnum; + type: SystemToolSecretInputTypeEnum; value: StoreSecretValueType; }; @@ -61,17 +62,17 @@ export const dispatchRunTool = async (props: RunToolProps): Promise { switch (params.system_input_config?.type) { - case SystemToolInputTypeEnum.team: + case SystemToolSecretInputTypeEnum.team: return Promise.reject(new Error('This is not supported yet')); - case SystemToolInputTypeEnum.manual: + case SystemToolSecretInputTypeEnum.manual: const val = params.system_input_config.value || {}; return getSecretValue({ storeSecret: val }); - case SystemToolInputTypeEnum.system: + case SystemToolSecretInputTypeEnum.system: default: // read from mongo - const dbPlugin = await MongoSystemPlugin.findOne({ + const dbPlugin = await MongoSystemTool.findOne({ pluginId: toolConfig.systemTool?.toolId }).lean(); return dbPlugin?.inputListVal || {}; @@ -156,8 +157,8 @@ export const dispatchRunTool = async (props: RunToolProps): Promise { if ( - params.system_input_config?.type === SystemToolInputTypeEnum.team || - params.system_input_config?.type === SystemToolInputTypeEnum.manual + params.system_input_config?.type === SystemToolSecretInputTypeEnum.team || + params.system_input_config?.type === SystemToolSecretInputTypeEnum.manual ) { return 0; } @@ -191,7 +192,7 @@ export const dispatchRunTool = async (props: RunToolProps): Promise & { runtimeNodes: RuntimeNodeItemType[]; @@ -77,7 +79,7 @@ export async function dispatchWorkFlow({ concatUsage, ...data }: Props & WorkflowUsageProps): Promise { - const { res, stream, runningUserInfo, runningAppInfo, lastInteractive } = data; + const { res, stream, runningUserInfo, runningAppInfo, lastInteractive, histories, query } = data; await checkTeamAIPoints(runningUserInfo.teamId); const [{ timezone, externalProvider }, newUsageId] = await Promise.all([ @@ -128,18 +130,33 @@ export async function dispatchWorkFlow({ } } + // Add preview url to chat items + await addPreviewUrlToChatItems(histories); + for (const item of query) { + if (item.type !== ChatItemValueTypeEnum.file || !item.file?.key) continue; + item.file.url = await getS3ChatSource().createGetChatFileURL({ + key: item.file.key, + external: true + }); + } + // Get default variables + const defaultVariables = { ...externalProvider.externalWorkflowVariables, - ...getSystemVariables({ + ...(await getSystemVariables({ ...data, + query, + histories, timezone - }) + })) }; // Init some props return runWorkflow({ ...data, + query, + histories, timezone, externalProvider, defaultSkipNodeQueue: data.lastInteractive?.skipNodeQueue || data.defaultSkipNodeQueue, @@ -195,11 +212,11 @@ export const runWorkflow = async (data: RunWorkflowProps): Promise> = { ...data, + lastInteractive: data.lastInteractive?.entryNodeIds.includes(node.nodeId) + ? data.lastInteractive + : undefined, variables, histories, retainDatasetCite, @@ -735,8 +759,8 @@ export const runWorkflow = async (data: RunWorkflowProps): Promise 0 ? workflowQueue.system_memories @@ -993,7 +1015,7 @@ export const runWorkflow = async (data: RunWorkflowProps): Promise { +}): Promise => { // Get global variables(Label -> key; Key -> key) const variablesConfig = chatConfig?.variables || []; - const variablesMap = variablesConfig.reduce>((acc, item) => { + const variablesMap: Record = {}; + for await (const item of variablesConfig) { // For internal variables, ignore external input and use default value if (item.type === VariableInputEnum.password) { const val = variables[item.label] || variables[item.key] || item.defaultValue; const actualValue = anyValueDecrypt(val); - acc[item.key] = valueTypeFormat(actualValue, item.valueType); + variablesMap[item.key] = valueTypeFormat(actualValue, item.valueType); } - // API else if (variables[item.label] !== undefined) { - acc[item.key] = valueTypeFormat(variables[item.label], item.valueType); + variablesMap[item.key] = valueTypeFormat(variables[item.label], item.valueType); } // Web else if (variables[item.key] !== undefined) { - acc[item.key] = valueTypeFormat(variables[item.key], item.valueType); + variablesMap[item.key] = valueTypeFormat(variables[item.key], item.valueType); } else { - acc[item.key] = valueTypeFormat(item.defaultValue, item.valueType); + variablesMap[item.key] = valueTypeFormat(item.defaultValue, item.valueType); } - return acc; - }, {}); + } return { ...variablesMap, diff --git a/packages/service/core/workflow/dispatch/plugin/run.ts b/packages/service/core/workflow/dispatch/plugin/run.ts index 2e950fd74..fbcdfc37b 100644 --- a/packages/service/core/workflow/dispatch/plugin/run.ts +++ b/packages/service/core/workflow/dispatch/plugin/run.ts @@ -1,10 +1,11 @@ -import { - getPluginInputsFromStoreNodes, - splitCombinePluginId -} from '@fastgpt/global/core/app/plugin/utils'; +import { splitCombineToolId } from '@fastgpt/global/core/app/tool/utils'; +import { getWorkflowToolInputsFromStoreNodes } from '@fastgpt/global/core/app/tool/workflowTool/utils'; import { chatValue2RuntimePrompt } from '@fastgpt/global/core/chat/adapt'; -import { PluginSourceEnum } from '@fastgpt/global/core/app/plugin/constants'; -import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; +import { AppToolSourceEnum } from '@fastgpt/global/core/app/tool/constants'; +import { + FlowNodeInputTypeEnum, + FlowNodeTypeEnum +} from '@fastgpt/global/core/workflow/node/constant'; import { DispatchNodeResponseKeyEnum } from '@fastgpt/global/core/workflow/runtime/constants'; import type { ModuleDispatchProps } from '@fastgpt/global/core/workflow/runtime/type'; import { @@ -15,15 +16,16 @@ import { import { type DispatchNodeResultType } from '@fastgpt/global/core/workflow/runtime/type'; import { authPluginByTmbId } from '../../../../support/permission/app/auth'; import { ReadPermissionVal } from '@fastgpt/global/support/permission/constant'; -import { computedPluginUsage } from '../../../app/plugin/utils'; +import { computedAppToolUsage } from '../../../app/tool/runtime/utils'; import { filterSystemVariables, getNodeErrResponse } from '../utils'; -import { getPluginRunUserQuery } from '@fastgpt/global/core/workflow/utils'; +import { serverGetWorkflowToolRunUserQuery } from '../../../app/tool/workflowTool/utils'; import type { NodeInputKeyEnum, NodeOutputKeyEnum } from '@fastgpt/global/core/workflow/constants'; -import { getChildAppRuntimeById } from '../../../app/plugin/controller'; +import { getChildAppRuntimeById } from '../../../app/tool/controller'; import { runWorkflow } from '../index'; import { getUserChatInfo } from '../../../../support/user/team/utils'; import { dispatchRunTool } from '../child/runTool'; -import type { PluginRuntimeType } from '@fastgpt/global/core/app/plugin/type'; +import type { AppToolRuntimeType } from '@fastgpt/global/core/app/tool/type'; +import { anyValueDecrypt } from '../../../../common/secret/utils'; type RunPluginProps = ModuleDispatchProps<{ [NodeInputKeyEnum.forbidStream]?: boolean; @@ -49,12 +51,12 @@ export const dispatchRunPlugin = async (props: RunPluginProps): Promise ({ - ...input, - value: data[input.key] ?? input.value - })) + inputs: node.inputs.map((input) => { + let val = data[input.key] ?? input.value; + if (input.renderTypeList.includes(FlowNodeInputTypeEnum.password)) { + val = anyValueDecrypt(val); + } + + return { + ...input, + value: val + }; + }) }; } return { @@ -137,8 +146,8 @@ export const dispatchRunPlugin = async (props: RunPluginProps): Promise item.moduleType === FlowNodeTypeEnum.pluginOutput); - const usagePoints = await computedPluginUsage({ + const usagePoints = await computedAppToolUsage({ plugin, childrenUsage: flowUsages, error: !!output?.pluginOutput?.error diff --git a/packages/service/core/workflow/dispatch/tools/runUpdateVar.ts b/packages/service/core/workflow/dispatch/tools/runUpdateVar.ts index 15df8efd9..c0fc03739 100644 --- a/packages/service/core/workflow/dispatch/tools/runUpdateVar.ts +++ b/packages/service/core/workflow/dispatch/tools/runUpdateVar.ts @@ -11,7 +11,7 @@ import { } from '@fastgpt/global/core/workflow/runtime/utils'; import { type TUpdateListItem } from '@fastgpt/global/core/workflow/template/system/variableUpdate/type'; import { type ModuleDispatchProps } from '@fastgpt/global/core/workflow/runtime/type'; -import { removeSystemVariable } from '../utils'; +import { runtimeSystemVar2StoreType } from '../utils'; import { isValidReferenceValue } from '@fastgpt/global/core/workflow/utils'; import { valueTypeFormat } from '@fastgpt/global/core/workflow/runtime/utils'; @@ -92,11 +92,11 @@ export const dispatchUpdateVariable = async (props: Props): Promise => if (!runningAppInfo.isChildApp) { workflowStreamResponse?.({ event: SseResponseEventEnum.updateVariables, - data: removeSystemVariable( + data: runtimeSystemVar2StoreType({ variables, - externalProvider.externalWorkflowVariables, - chatConfig?.variables - ) + removeObj: externalProvider.externalWorkflowVariables, + userVariablesConfigs: chatConfig?.variables + }) }); } diff --git a/packages/service/core/workflow/dispatch/utils.ts b/packages/service/core/workflow/dispatch/utils.ts index 3200561d4..56e8b399a 100644 --- a/packages/service/core/workflow/dispatch/utils.ts +++ b/packages/service/core/workflow/dispatch/utils.ts @@ -17,8 +17,8 @@ import { } from '@fastgpt/global/core/workflow/runtime/constants'; import { getNanoid } from '@fastgpt/global/common/string/tools'; import { type SearchDataResponseItemType } from '@fastgpt/global/core/dataset/type'; -import { getMCPToolRuntimeNode } from '@fastgpt/global/core/app/mcpTools/utils'; -import { getHTTPToolRuntimeNode } from '@fastgpt/global/core/app/httpTools/utils'; +import { getMCPToolRuntimeNode } from '@fastgpt/global/core/app/tool/mcpTool/utils'; +import { getHTTPToolRuntimeNode } from '@fastgpt/global/core/app/tool/httpTool/utils'; import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; import { MongoApp } from '../../../core/app/schema'; import { getMCPChildren } from '../../../core/app/mcp'; @@ -117,11 +117,15 @@ export const checkQuoteQAValue = (quoteQA?: SearchDataResponseItemType[]) => { }; /* remove system variable */ -export const removeSystemVariable = ( - variables: Record, - removeObj: Record = {}, - userVariablesConfigs: VariableItemType[] = [] -) => { +export const runtimeSystemVar2StoreType = ({ + variables, + removeObj = {}, + userVariablesConfigs = [] +}: { + variables: Record; + removeObj?: Record; + userVariablesConfigs?: VariableItemType[]; +}) => { const copyVariables = { ...variables }; // Delete system variables @@ -140,11 +144,13 @@ export const removeSystemVariable = ( // Encrypt password variables userVariablesConfigs.forEach((item) => { const val = copyVariables[item.key]; - if (item.type === VariableInputEnum.password && typeof val === 'string') { - copyVariables[item.key] = { - value: '', - secret: encryptSecret(val) - }; + if (item.type === VariableInputEnum.password) { + if (typeof val === 'string') { + copyVariables[item.key] = { + value: '', + secret: encryptSecret(val) + }; + } } }); diff --git a/packages/service/core/workflow/utils.ts b/packages/service/core/workflow/utils.ts index 11e70791a..19cb98c8c 100644 --- a/packages/service/core/workflow/utils.ts +++ b/packages/service/core/workflow/utils.ts @@ -1,7 +1,7 @@ import { type SearchDataResponseItemType } from '@fastgpt/global/core/dataset/type'; import { countPromptTokens } from '../../common/string/tiktoken/index'; import type { RuntimeNodeItemType } from '@fastgpt/global/core/workflow/runtime/type'; -import { getSystemPluginByIdAndVersionId, getSystemTools } from '../app/plugin/controller'; +import { getSystemToolByIdAndVersionId, getSystemTools } from '../app/tool/controller'; import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; import { NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants'; import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; @@ -44,7 +44,7 @@ export async function getSystemToolRunTimeNodeFromSystemToolset({ ); const tools = await getSystemTools(); const children = tools.filter( - (item) => item.parentId === systemToolId && item.isActive !== false + (item) => item.parentId === systemToolId && (item.status === 1 || item.status === undefined) ); const nodes = await Promise.all( children.map(async (child, index) => { @@ -52,7 +52,7 @@ export async function getSystemToolRunTimeNodeFromSystemToolset({ (item) => item.toolId === child.id ); - const tool = await getSystemPluginByIdAndVersionId(child.id); + const tool = await getSystemToolByIdAndVersionId(child.id); const inputs = tool.inputs ?? []; if (toolsetInputConfig?.value) { diff --git a/packages/service/package.json b/packages/service/package.json index 47f000ea3..8a17b9367 100644 --- a/packages/service/package.json +++ b/packages/service/package.json @@ -45,6 +45,7 @@ "nextjs-cors": "^2.2.0", "node-cron": "^3.0.3", "node-xlsx": "^0.24.0", + "p-limit": "^7.2.0", "papaparse": "5.4.1", "pdfjs-dist": "4.10.38", "pg": "^8.10.0", @@ -55,9 +56,10 @@ "tunnel": "^0.0.6", "turndown": "^7.1.2", "winston": "^3.17.0", - "zod": "^3.24.2" + "zod": "^4.1.12" }, "devDependencies": { + "@types/async-retry": "^1.4.9", "@types/cookie": "^0.5.2", "@types/decompress": "^4.2.7", "@types/jsonwebtoken": "^9.0.3", diff --git a/packages/service/support/permission/app/auth.ts b/packages/service/support/permission/app/auth.ts index 55e478316..909a8831d 100644 --- a/packages/service/support/permission/app/auth.ts +++ b/packages/service/support/permission/app/auth.ts @@ -14,9 +14,9 @@ import { AppPermission } from '@fastgpt/global/support/permission/app/controller import { type PermissionValueType } from '@fastgpt/global/support/permission/type'; import { AppFolderTypeList, AppTypeEnum } from '@fastgpt/global/core/app/constants'; import { type ParentIdType } from '@fastgpt/global/common/parentFolder/type'; -import { PluginSourceEnum } from '@fastgpt/global/core/app/plugin/constants'; +import { AppToolSourceEnum } from '@fastgpt/global/core/app/tool/constants'; import { type AuthModeType, type AuthResponseType } from '../type'; -import { splitCombinePluginId } from '@fastgpt/global/core/app/plugin/utils'; +import { splitCombineToolId } from '@fastgpt/global/core/app/tool/utils'; import { AppReadChatLogPerVal } from '@fastgpt/global/support/permission/app/constant'; import { parseHeaderCert } from '../auth/common'; import { sumPer } from '@fastgpt/global/support/permission/utils'; @@ -30,8 +30,8 @@ export const authPluginByTmbId = async ({ appId: string; per: PermissionValueType; }) => { - const { source } = splitCombinePluginId(appId); - if (source === PluginSourceEnum.personal) { + const { source } = splitCombineToolId(appId); + if (source === AppToolSourceEnum.personal) { const { app } = await authAppByTmbId({ appId, tmbId, diff --git a/packages/service/support/permission/user/auth.ts b/packages/service/support/permission/user/auth.ts index 88dd38555..ea13bf655 100644 --- a/packages/service/support/permission/user/auth.ts +++ b/packages/service/support/permission/user/auth.ts @@ -45,7 +45,7 @@ export const authSystemAdmin = async ({ req }: { req: ApiRequestProps }) => { _id: result.userId }); - if (user && user.username !== 'root') { + if (!user || user.username !== 'root') { return Promise.reject(ERROR_ENUM.unAuthorization); } return result; diff --git a/packages/service/worker/htmlStr2Md/utils.ts b/packages/service/worker/htmlStr2Md/utils.ts index 4445f1143..0f0e8046d 100644 --- a/packages/service/worker/htmlStr2Md/utils.ts +++ b/packages/service/worker/htmlStr2Md/utils.ts @@ -1,15 +1,20 @@ import TurndownService from 'turndown'; import { type ImageType } from '../readFile/type'; -import { matchMdImg } from '@fastgpt/global/common/string/markdown'; import { getNanoid } from '@fastgpt/global/common/string/tools'; // @ts-ignore const turndownPluginGfm = require('joplin-turndown-plugin-gfm'); +const MAX_HTML_SIZE = 100 * 1000; // 100k characters limit + const processBase64Images = (htmlContent: string) => { - const base64Regex = /src="data:([^;]+);base64,([^"]+)"/g; + // 优化后的正则: + // 1. 使用精确的 base64 字符集 [A-Za-z0-9+/=]+ 避免回溯 + // 2. 明确捕获 mime 类型和 base64 数据 + // 3. 减少不必要的捕获组 + const base64Regex = /src="data:([^;]+);base64,([A-Za-z0-9+/=]+)"/g; const images: ImageType[] = []; - const processedHtml = htmlContent.replace(base64Regex, (match, mime, base64Data) => { + const processedHtml = htmlContent.replace(base64Regex, (_match, mime, base64Data) => { const uuid = `IMAGE_${getNanoid(12)}_IMAGE`; images.push({ uuid, @@ -63,12 +68,18 @@ export const html2md = ( // Base64 img to id, otherwise it will occupy memory when going to md const { processedHtml, images } = processBase64Images(html); + + // if html is too large, return the original html + if (processedHtml.length > MAX_HTML_SIZE) { + return { rawText: processedHtml, imageList: [] }; + } + const md = turndownService.turndown(processedHtml); - const { text, imageList } = matchMdImg(md); + // const { text, imageList } = matchMdImg(md); return { - rawText: text, - imageList: [...images, ...imageList] + rawText: md, + imageList: images }; } catch (error) { console.log('html 2 markdown error', error); diff --git a/packages/web/common/system/utils.ts b/packages/web/common/system/utils.ts index cb7e7a3e7..bc6bf645e 100644 --- a/packages/web/common/system/utils.ts +++ b/packages/web/common/system/utils.ts @@ -6,7 +6,7 @@ export const getUserFingerprint = async () => { console.log(result.visitorId); }; -export const subRoute = process.env.NEXT_PUBLIC_BASE_URL; +export const subRoute = process.env.NEXT_PUBLIC_BASE_URL || ''; export const getWebReqUrl = (url: string = '') => { if (!url) return '/'; diff --git a/packages/web/components/common/DateTimePicker/index.tsx b/packages/web/components/common/DateTimePicker/index.tsx index c22a8c913..be6784f8b 100644 --- a/packages/web/components/common/DateTimePicker/index.tsx +++ b/packages/web/components/common/DateTimePicker/index.tsx @@ -11,12 +11,12 @@ import MyIcon from '../Icon'; const DateTimePicker = ({ onChange, popPosition = 'bottom', - defaultDate = new Date(), + defaultDate, selectedDateTime, disabled, ...props }: { - onChange?: (dateTime: Date) => void; + onChange?: (dateTime: Date | undefined) => void; popPosition?: 'bottom' | 'top'; defaultDate?: Date; selectedDateTime?: Date; @@ -29,9 +29,7 @@ const DateTimePicker = ({ const [showSelected, setShowSelected] = useState(false); useEffect(() => { - if (selectedDateTime) { - setSelectedDate(selectedDateTime); - } + setSelectedDate(selectedDateTime); }, [selectedDateTime]); const formatSelected = useMemo(() => { @@ -39,7 +37,7 @@ const DateTimePicker = ({ const dateStr = format(selectedDate, 'y/MM/dd'); return dateStr; } - return format(new Date(), 'y/MM/dd'); + return ''; }, [selectedDate]); useOutsideClick({ @@ -60,7 +58,7 @@ const DateTimePicker = ({ cursor={'pointer'} bg={'myGray.50'} fontSize={'sm'} - onClick={() => setShowSelected(true)} + onClick={() => setShowSelected((state) => !state)} alignItems={'center'} {...props} > @@ -72,7 +70,7 @@ const DateTimePicker = ({ {showSelected && ( { - if (date) { - setSelectedDate(date); - onChange?.(date); - setShowSelected(false); - } + setSelectedDate(date); + onChange?.(date); + setShowSelected(false); }} /> diff --git a/packages/web/components/common/Icon/constants.ts b/packages/web/components/common/Icon/constants.ts index 1dec87576..8ea76053b 100644 --- a/packages/web/components/common/Icon/constants.ts +++ b/packages/web/components/common/Icon/constants.ts @@ -115,7 +115,7 @@ export const iconPaths = { 'common/text/t': () => import('./icons/common/text/t.svg'), 'common/thirdParty': () => import('./icons/common/thirdParty.svg'), 'common/tickFill': () => import('./icons/common/tickFill.svg'), - 'common/toolkit': () => import('./icons/common/toolkit.svg'), + 'common/plugin': () => import('./icons/common/toolkit.svg'), 'common/trash': () => import('./icons/common/trash.svg'), 'common/upRightArrowLight': () => import('./icons/common/upRightArrowLight.svg'), 'common/uploadFileFill': () => import('./icons/common/uploadFileFill.svg'), @@ -140,6 +140,8 @@ export const iconPaths = { 'core/app/inputGuides': () => import('./icons/core/app/inputGuides.svg'), 'core/app/logsLight': () => import('./icons/core/app/logsLight.svg'), 'core/app/markLight': () => import('./icons/core/app/markLight.svg'), + 'core/app/pluginFill': () => import('./icons/core/app/pluginFill.svg'), + 'core/app/pluginLight': () => import('./icons/core/app/pluginLight.svg'), 'core/app/publish/lark': () => import('./icons/core/app/publish/lark.svg'), 'core/app/publish/offiaccount': () => import('./icons/core/app/publish/offiaccount.svg'), 'core/app/publish/wechat': () => import('./icons/core/app/publish/wechat.svg'), @@ -176,7 +178,6 @@ export const iconPaths = { 'core/app/type/mcpToolsFill': () => import('./icons/core/app/type/mcpToolsFill.svg'), 'core/app/type/plugin': () => import('./icons/core/app/type/plugin.svg'), 'core/app/type/pluginFill': () => import('./icons/core/app/type/pluginFill.svg'), - 'core/app/type/pluginLight': () => import('./icons/core/app/type/pluginLight.svg'), 'core/app/type/simple': () => import('./icons/core/app/type/simple.svg'), 'core/app/type/simpleFill': () => import('./icons/core/app/type/simpleFill.svg'), 'core/app/type/workflow': () => import('./icons/core/app/type/workflow.svg'), @@ -273,10 +274,6 @@ export const iconPaths = { 'core/workflow/inputType/customVariable': () => import('./icons/core/workflow/inputType/customVariable.svg'), 'core/workflow/inputType/dataset': () => import('./icons/core/workflow/inputType/dataset.svg'), - 'core/workflow/inputType/timePointSelect': () => - import('./icons/core/workflow/inputType/timePointSelect.svg'), - 'core/workflow/inputType/timeRangeSelect': () => - import('./icons/core/workflow/inputType/timeRangeSelect.svg'), 'core/workflow/inputType/dynamic': () => import('./icons/core/workflow/inputType/dynamic.svg'), 'core/workflow/inputType/external': () => import('./icons/core/workflow/inputType/external.svg'), 'core/workflow/inputType/file': () => import('./icons/core/workflow/inputType/file.svg'), @@ -302,6 +299,10 @@ export const iconPaths = { import('./icons/core/workflow/inputType/selectLLM.svg'), 'core/workflow/inputType/switch': () => import('./icons/core/workflow/inputType/switch.svg'), 'core/workflow/inputType/textarea': () => import('./icons/core/workflow/inputType/textarea.svg'), + 'core/workflow/inputType/timePointSelect': () => + import('./icons/core/workflow/inputType/timePointSelect.svg'), + 'core/workflow/inputType/timeRangeSelect': () => + import('./icons/core/workflow/inputType/timeRangeSelect.svg'), 'core/workflow/mouse': () => import('./icons/core/workflow/mouse.svg'), 'core/workflow/publish': () => import('./icons/core/workflow/publish.svg'), 'core/workflow/redo': () => import('./icons/core/workflow/redo.svg'), @@ -386,6 +387,7 @@ export const iconPaths = { export: () => import('./icons/export.svg'), feedback: () => import('./icons/feedback.svg'), 'file/csv': () => import('./icons/file/csv.svg'), + 'file/fill/audio': () => import('./icons/file/fill/audio.svg'), 'file/fill/csv': () => import('./icons/file/fill/csv.svg'), 'file/fill/doc': () => import('./icons/file/fill/doc.svg'), 'file/fill/file': () => import('./icons/file/fill/file.svg'), @@ -396,6 +398,7 @@ export const iconPaths = { 'file/fill/pdf': () => import('./icons/file/fill/pdf.svg'), 'file/fill/ppt': () => import('./icons/file/fill/ppt.svg'), 'file/fill/txt': () => import('./icons/file/fill/txt.svg'), + 'file/fill/video': () => import('./icons/file/fill/video.svg'), 'file/fill/xlsx': () => import('./icons/file/fill/xlsx.svg'), 'file/html': () => import('./icons/file/html.svg'), 'file/indexImport': () => import('./icons/file/indexImport.svg'), @@ -434,6 +437,14 @@ export const iconPaths = { 'model/huggingface': () => import('./icons/model/huggingface.svg'), more: () => import('./icons/more.svg'), moreLine: () => import('./icons/moreLine.svg'), + 'navbar/chatFill': () => import('./icons/navbar/chatFill.svg'), + 'navbar/chatLight': () => import('./icons/navbar/chatLight.svg'), + 'navbar/dashboardFill': () => import('./icons/navbar/dashboardFill.svg'), + 'navbar/dashboardLight': () => import('./icons/navbar/dashboardLight.svg'), + 'navbar/datasetFill': () => import('./icons/navbar/datasetFill.svg'), + 'navbar/datasetLight': () => import('./icons/navbar/datasetLight.svg'), + 'navbar/userFill': () => import('./icons/navbar/userFill.svg'), + 'navbar/userLight': () => import('./icons/navbar/userLight.svg'), optimizer: () => import('./icons/optimizer.svg'), out: () => import('./icons/out.svg'), paragraph: () => import('./icons/paragraph.svg'), @@ -465,6 +476,8 @@ export const iconPaths = { 'support/bill/priceLight': () => import('./icons/support/bill/priceLight.svg'), 'support/bill/shoppingCart': () => import('./icons/support/bill/shoppingCart.svg'), 'support/bill/wallet': () => import('./icons/support/bill/wallet.svg'), + 'support/config/configFill': () => import('./icons/support/config/configFill.svg'), + 'support/config/configLight': () => import('./icons/support/config/configLight.svg'), 'support/outlink/apikeyFill': () => import('./icons/support/outlink/apikeyFill.svg'), 'support/outlink/iframeLight': () => import('./icons/support/outlink/iframeLight.svg'), 'support/outlink/share': () => import('./icons/support/outlink/share.svg'), diff --git a/packages/web/components/common/Icon/icons/common/link.svg b/packages/web/components/common/Icon/icons/common/link.svg index 9855cd94a..8cefd1527 100644 --- a/packages/web/components/common/Icon/icons/common/link.svg +++ b/packages/web/components/common/Icon/icons/common/link.svg @@ -1,3 +1,3 @@ - + diff --git a/packages/web/components/common/Icon/icons/core/app/pluginFill.svg b/packages/web/components/common/Icon/icons/core/app/pluginFill.svg new file mode 100644 index 000000000..f7ff6d393 --- /dev/null +++ b/packages/web/components/common/Icon/icons/core/app/pluginFill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/web/components/common/Icon/icons/core/app/pluginLight.svg b/packages/web/components/common/Icon/icons/core/app/pluginLight.svg new file mode 100644 index 000000000..aec2faefd --- /dev/null +++ b/packages/web/components/common/Icon/icons/core/app/pluginLight.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/web/components/common/Icon/icons/core/app/type/pluginLight.svg b/packages/web/components/common/Icon/icons/core/app/type/pluginLight.svg deleted file mode 100644 index 2a866c875..000000000 --- a/packages/web/components/common/Icon/icons/core/app/type/pluginLight.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/packages/web/components/common/Icon/icons/file/fill/audio.svg b/packages/web/components/common/Icon/icons/file/fill/audio.svg new file mode 100644 index 000000000..880352580 --- /dev/null +++ b/packages/web/components/common/Icon/icons/file/fill/audio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/web/components/common/Icon/icons/file/fill/video.svg b/packages/web/components/common/Icon/icons/file/fill/video.svg new file mode 100644 index 000000000..dbc3283d6 --- /dev/null +++ b/packages/web/components/common/Icon/icons/file/fill/video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/web/components/common/Icon/icons/navbar/chatFill.svg b/packages/web/components/common/Icon/icons/navbar/chatFill.svg new file mode 100644 index 000000000..1e5d0e7ac --- /dev/null +++ b/packages/web/components/common/Icon/icons/navbar/chatFill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/web/components/common/Icon/icons/navbar/chatLight.svg b/packages/web/components/common/Icon/icons/navbar/chatLight.svg new file mode 100644 index 000000000..0d94d8ef3 --- /dev/null +++ b/packages/web/components/common/Icon/icons/navbar/chatLight.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/web/components/common/Icon/icons/navbar/dashboardFill.svg b/packages/web/components/common/Icon/icons/navbar/dashboardFill.svg new file mode 100644 index 000000000..2edf5bbe4 --- /dev/null +++ b/packages/web/components/common/Icon/icons/navbar/dashboardFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/web/components/common/Icon/icons/navbar/dashboardLight.svg b/packages/web/components/common/Icon/icons/navbar/dashboardLight.svg new file mode 100644 index 000000000..a8908d531 --- /dev/null +++ b/packages/web/components/common/Icon/icons/navbar/dashboardLight.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/web/components/common/Icon/icons/navbar/datasetFill.svg b/packages/web/components/common/Icon/icons/navbar/datasetFill.svg new file mode 100644 index 000000000..681e74491 --- /dev/null +++ b/packages/web/components/common/Icon/icons/navbar/datasetFill.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/web/components/common/Icon/icons/navbar/datasetLight.svg b/packages/web/components/common/Icon/icons/navbar/datasetLight.svg new file mode 100644 index 000000000..3e0130601 --- /dev/null +++ b/packages/web/components/common/Icon/icons/navbar/datasetLight.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/web/components/common/Icon/icons/navbar/userFill.svg b/packages/web/components/common/Icon/icons/navbar/userFill.svg new file mode 100644 index 000000000..a6998f60a --- /dev/null +++ b/packages/web/components/common/Icon/icons/navbar/userFill.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/web/components/common/Icon/icons/navbar/userLight.svg b/packages/web/components/common/Icon/icons/navbar/userLight.svg new file mode 100644 index 000000000..642467989 --- /dev/null +++ b/packages/web/components/common/Icon/icons/navbar/userLight.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/web/components/common/Icon/icons/support/config/configFill.svg b/packages/web/components/common/Icon/icons/support/config/configFill.svg new file mode 100644 index 000000000..fc3f1fa64 --- /dev/null +++ b/packages/web/components/common/Icon/icons/support/config/configFill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/web/components/common/Icon/icons/support/config/configLight.svg b/packages/web/components/common/Icon/icons/support/config/configLight.svg new file mode 100644 index 000000000..b5cd7029d --- /dev/null +++ b/packages/web/components/common/Icon/icons/support/config/configLight.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/web/components/common/Markdown/index.tsx b/packages/web/components/common/Markdown/index.tsx new file mode 100644 index 000000000..e5bfb8bfe --- /dev/null +++ b/packages/web/components/common/Markdown/index.tsx @@ -0,0 +1,164 @@ +import React, { useMemo } from 'react'; +import ReactMarkdown from 'react-markdown'; +import RemarkGfm from 'remark-gfm'; +import RehypeExternalLinks from 'rehype-external-links'; +import { Box, Code as ChakraCode, Image, Link } from '@chakra-ui/react'; + +type MarkdownProps = { + source: string; + className?: string; +}; + +/** + * 简化版 Markdown 组件 + * 用于渲染基础的 Markdown 内容(README 等) + */ +const Markdown = ({ source, className }: MarkdownProps) => { + const components = useMemo( + () => ({ + // 图片 + img: ({ src, alt }: any) => ( + + ), + // 链接 + a: ({ href, children }: any) => ( + + {children} + + ), + // 行内代码 + code: ({ children, className }: any) => { + // 如果有 className,说明是代码块,保留原样 + if (className) { + return ( + + {children} + + ); + } + // 行内代码 + return ( + + {children} + + ); + }, + // 标题 + h1: ({ children }: any) => ( + + {children} + + ), + h2: ({ children }: any) => ( + + {children} + + ), + h3: ({ children }: any) => ( + + {children} + + ), + // 段落 + p: ({ children }: any) => ( + + {children} + + ), + // 列表 + ul: ({ children }: any) => ( + + {children} + + ), + ol: ({ children }: any) => ( + + {children} + + ), + li: ({ children }: any) => ( + + {children} + + ), + // 引用 + blockquote: ({ children }: any) => ( + + {children} + + ), + // 水平线 + hr: () => , + // 表格 + table: ({ children }: any) => ( + + + {children} + + + ), + thead: ({ children }: any) => ( + + {children} + + ), + tbody: ({ children }: any) => {children}, + tr: ({ children }: any) => ( + + {children} + + ), + th: ({ children }: any) => ( + + {children} + + ), + td: ({ children }: any) => ( + + {children} + + ) + }), + [] + ); + + return ( + + + {source} + + + ); +}; + +export default React.memo(Markdown); diff --git a/packages/web/components/common/MyDrawer/MyRightDrawer.tsx b/packages/web/components/common/MyDrawer/MyRightDrawer.tsx index e2182964d..1ff08c136 100644 --- a/packages/web/components/common/MyDrawer/MyRightDrawer.tsx +++ b/packages/web/components/common/MyDrawer/MyRightDrawer.tsx @@ -37,9 +37,9 @@ const MyRightDrawer = ({ diff --git a/packages/web/components/common/MySelect/MultipleSelect.tsx b/packages/web/components/common/MySelect/MultipleSelect.tsx index 4ba33c691..e0aca4665 100644 --- a/packages/web/components/common/MySelect/MultipleSelect.tsx +++ b/packages/web/components/common/MySelect/MultipleSelect.tsx @@ -21,7 +21,7 @@ import type { useScrollPagination } from '../../../hooks/useScrollPagination'; import MyDivider from '../MyDivider'; import { shadowLight } from '../../../styles/theme'; import { isArray } from 'lodash'; -import { useMount } from 'ahooks'; +import { useMemoEnhance } from '../../../hooks/useMemoEnhance'; const menuItemStyles: MenuItemProps = { borderRadius: 'sm', @@ -43,7 +43,7 @@ export type SelectProps = { value: T; }[]; value: T[]; - isSelectAll: boolean; + isSelectAll?: boolean; setIsSelectAll?: React.Dispatch>; placeholder?: string; @@ -62,8 +62,14 @@ export type SelectProps = { tagStyle?: FlexProps; } & Omit; +type SelectedItemType = { + icon?: string; + label: string | React.ReactNode; + value: T; +}; + const MultipleSelect = ({ - value = [], + value: initialValue = [], placeholder, list = [], onSelect, @@ -90,32 +96,29 @@ const MultipleSelect = ({ const { isOpen, onOpen, onClose } = useDisclosure(); const canInput = setInputValue !== undefined; - type SelectedItemType = { - icon?: string; - label: string | React.ReactNode; - value: T; - }; + const [visibleItems, setVisibleItems] = useState[]>([]); + const [overflowItems, setOverflowItems] = useState[]>([]); - const [visibleItems, setVisibleItems] = useState([]); - const [overflowItems, setOverflowItems] = useState([]); + const formatValue = useMemoEnhance(() => { + return Array.isArray(initialValue) ? initialValue : []; + }, [initialValue]); const selectedItems = useMemo(() => { - if (!value || !isArray(value)) return []; - return value.map((val) => { + return formatValue.map((val) => { const listItem = list.find((item) => item.value === val); return listItem || { value: val, label: String(val) }; }); - }, [value, list]); + }, [formatValue, list]); const handleKeyDown = useCallback( (e: React.KeyboardEvent) => { if (e.key === 'Backspace' && (!inputValue || inputValue === '')) { - const newValue = [...value]; + const newValue = [...formatValue]; newValue.pop(); onSelect(newValue); } }, - [inputValue, value, onSelect] + [inputValue, formatValue, onSelect] ); useEffect(() => { if (!isOpen) { @@ -131,13 +134,13 @@ const MultipleSelect = ({ return; } - if (value.includes(val)) { - onSelect(value.filter((i) => i !== val)); + if (formatValue.includes(val)) { + onSelect(formatValue.filter((i) => i !== val)); } else { - onSelect([...value, val]); + onSelect([...formatValue, val]); } }, - [isSelectAll, value, onSelect, list, setIsSelectAll] + [isSelectAll, formatValue, onSelect, list, setIsSelectAll] ); const onSelectAll = useCallback(() => { @@ -264,7 +267,7 @@ const MultipleSelect = ({ return ( <> {list.map((item, i) => { - const isSelected = isSelectAll || value.includes(item.value); + const isSelected = isSelectAll || formatValue.includes(item.value); return ( ({ })} ); - }, [list, isSelectAll, value, onclickItem]); + }, [list, isSelectAll, formatValue, onclickItem]); return ( @@ -339,7 +342,7 @@ const MultipleSelect = ({ )} - {value.length === 0 && placeholder ? ( + {formatValue.length === 0 && placeholder ? ( {placeholder} @@ -440,24 +443,28 @@ const MultipleSelect = ({ maxH={'40vh'} overflowY={'auto'} > - { - e.stopPropagation(); - e.preventDefault(); - onSelectAll(); - }} - whiteSpace={'pre-wrap'} - fontSize={'sm'} - gap={2} - mb={1} - {...menuItemStyles} - > - - {t('common:All')} - + {setIsSelectAll && ( + <> + { + e.stopPropagation(); + e.preventDefault(); + onSelectAll(); + }} + whiteSpace={'pre-wrap'} + fontSize={'sm'} + gap={2} + mb={1} + {...menuItemStyles} + > + + {t('common:All')} + - + + + )} {ScrollData ? {ListRender} : ListRender} diff --git a/packages/web/components/common/Textarea/JsonEditor/index.tsx b/packages/web/components/common/Textarea/JsonEditor/index.tsx index 2c8adf1e5..cc43302cb 100644 --- a/packages/web/components/common/Textarea/JsonEditor/index.tsx +++ b/packages/web/components/common/Textarea/JsonEditor/index.tsx @@ -51,7 +51,6 @@ const options = { }; const JSONEditor = ({ - defaultValue, value, onChange, resize, @@ -70,6 +69,7 @@ const JSONEditor = ({ const completionRegisterRef = useRef(); const monaco = useMonaco(); const triggerChar = useRef(); + const monarchProviderRegistered = useRef(false); useEffect(() => { if (!monaco) return; @@ -130,22 +130,6 @@ const JSONEditor = ({ } }); - // 自定义语法高亮 - monaco.languages.setMonarchTokensProvider('json', { - tokenizer: { - root: [ - // 匹配variables里的变量 - [new RegExp(`{{(${variables.map((item) => item.key).join('|')})}}`), 'variable'], - [/".*?"/, 'string'], // 匹配字符串 - [/[{}\[\]]/, '@brackets'], // 匹配括号 - [/[0-9]+/, 'number'], // 匹配数字 - [/true|false/, 'keyword'], // 匹配布尔值 - [/:/, 'delimiter'], // 匹配冒号 - [/,/, 'delimiter.comma'] // 匹配逗号 - ] - } - }); - return () => { completionRegisterRef.current?.dispose(); }; @@ -199,34 +183,62 @@ const JSONEditor = ({ } }, [formatedValue, toast, t]); - const beforeMount = useCallback((monaco: Monaco) => { - monaco.languages.json.jsonDefaults.setDiagnosticsOptions({ - validate: false, - allowComments: false, - schemas: [ - { - uri: 'http://myserver/foo-schema.json', // 一个假设的 URI - fileMatch: ['*'], // 匹配所有文件 - schema: {} // 空的 Schema - } - ] - }); + const beforeMount = useCallback( + (monaco: Monaco) => { + // 配置 JSON 语言诊断选项 + monaco.languages.json.jsonDefaults.setDiagnosticsOptions({ + validate: false, + allowComments: false, + schemas: [ + { + uri: 'http://myserver/foo-schema.json', // 一个假设的 URI + fileMatch: ['*'], // 匹配所有文件 + schema: {} // 空的 Schema + } + ] + }); - monaco.editor.defineTheme('JSONEditorTheme', { - base: 'vs', // 可以基于已有的主题进行定制 - inherit: true, // 继承基础主题的设置 - rules: [{ token: 'variable', foreground: '2B5FD9' }], - colors: { - 'editor.background': '#ffffff00', - 'editorLineNumber.foreground': '#aaa', - 'editorOverviewRuler.border': '#ffffff00', - 'editor.lineHighlightBackground': '#F7F8FA', - 'scrollbarSlider.background': '#E8EAEC', - 'editorIndentGuide.activeBackground': '#ddd', - 'editorIndentGuide.background': '#eee' + // 定义自定义主题 + monaco.editor.defineTheme('JSONEditorTheme', { + base: 'vs', // 可以基于已有的主题进行定制 + inherit: true, // 继承基础主题的设置 + rules: [{ token: 'variable', foreground: '2B5FD9' }], + colors: { + 'editor.background': '#ffffff00', + 'editorLineNumber.foreground': '#aaa', + 'editorOverviewRuler.border': '#ffffff00', + 'editor.lineHighlightBackground': '#F7F8FA', + 'scrollbarSlider.background': '#E8EAEC', + 'editorIndentGuide.activeBackground': '#ddd', + 'editorIndentGuide.background': '#eee' + } + }); + + // 注册自定义语法高亮(仅注册一次) + if (!monarchProviderRegistered.current) { + try { + monaco.languages.setMonarchTokensProvider('json', { + tokenizer: { + root: [ + // 匹配variables里的变量 + [new RegExp(`{{(${variables.map((item) => item.key).join('|')})}}`), 'variable'], + [/".*?"/, 'string'], // 匹配字符串 + [/[{}\[\]]/, '@brackets'], // 匹配括号 + [/[0-9]+/, 'number'], // 匹配数字 + [/true|false/, 'keyword'], // 匹配布尔值 + [/:/, 'delimiter'], // 匹配冒号 + [/,/, 'delimiter.comma'] // 匹配逗号 + ] + } + }); + monarchProviderRegistered.current = true; + } catch (error) { + console.warn('Failed to register Monaco Monarch token provider:', error); + } } - }); - }, []); + }, + [variables] + ); return ( { onChange?.(e || ''); diff --git a/packages/web/components/common/Textarea/PromptEditor/Editor.tsx b/packages/web/components/common/Textarea/PromptEditor/Editor.tsx index 2277f6b5c..606d9b54c 100644 --- a/packages/web/components/common/Textarea/PromptEditor/Editor.tsx +++ b/packages/web/components/common/Textarea/PromptEditor/Editor.tsx @@ -125,12 +125,10 @@ export default function Editor({ nodes: [ VariableNode, VariableLabelNode, - HeadingNode, - ListNode, - ListItemNode, - QuoteNode, - CodeNode, - CodeHighlightNode + // Only register rich text nodes when in rich text mode + ...(isRichText + ? [HeadingNode, ListNode, ListItemNode, QuoteNode, CodeNode, CodeHighlightNode] + : []) ], editorState: textToEditorState(value, isRichText), onError: (error: Error) => { @@ -218,14 +216,18 @@ export default function Editor({ - {variableLabels.length > 0 && ( <> )} - {variableLabels.length > 0 && } + {variables.length > 0 && ( + <> + + {/* */} + + )} { diff --git a/packages/web/components/core/plugin/tool/TagFilterBox.tsx b/packages/web/components/core/plugin/tool/TagFilterBox.tsx new file mode 100644 index 000000000..b1d322552 --- /dev/null +++ b/packages/web/components/core/plugin/tool/TagFilterBox.tsx @@ -0,0 +1,94 @@ +import { Box, Flex } from '@chakra-ui/react'; +import { useTranslation } from 'next-i18next'; +import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; +import type { SystemPluginToolTagType } from '@fastgpt/global/core/plugin/type'; +import React, { useMemo } from 'react'; + +const ToolTagFilterBox = ({ + tags, + selectedTagIds, + onTagSelect, + size = 'base' +}: { + tags: SystemPluginToolTagType[]; + selectedTagIds: string[]; + onTagSelect: (tagIds: string[]) => void; + size?: 'base' | 'sm'; +}) => { + const { t, i18n } = useTranslation(); + + const toggleTag = (tagId: string) => { + if (selectedTagIds.includes(tagId)) { + onTagSelect(selectedTagIds.filter((id) => id !== tagId)); + } else { + onTagSelect([...selectedTagIds, tagId]); + } + }; + + const tagBaseStyles = useMemo(() => { + const sizeStyles = { + base: { + px: 3, + py: 1.5, + fontSize: 'sm' + }, + sm: { + px: 2, + py: 1, + fontSize: 'xs' + } + }; + + return { + ...sizeStyles[size], + fontWeight: 'medium', + color: 'myGray.700', + border: '1px solid', + borderColor: 'myGray.200', + whiteSpace: 'nowrap', + flexShrink: 0, + cursor: 'pointer' + }; + }, [size]); + + return ( + + onTagSelect([])} + > + {t('common:All')} + + + + {tags.map((tag) => { + const isSelected = selectedTagIds.includes(tag.tagId); + return ( + toggleTag(tag.tagId)} + > + {t(parseI18nString(tag.tagName, i18n.language))} + + ); + })} + + + ); +}; + +export default React.memo(ToolTagFilterBox); diff --git a/packages/web/components/core/plugin/tool/ToolCard.tsx b/packages/web/components/core/plugin/tool/ToolCard.tsx new file mode 100644 index 000000000..af5556fed --- /dev/null +++ b/packages/web/components/core/plugin/tool/ToolCard.tsx @@ -0,0 +1,232 @@ +import { Box, Button, Flex, HStack } from '@chakra-ui/react'; +import Avatar from '../../../common/Avatar'; +import MyBox from '../../../common/MyBox'; +import React, { useMemo, useRef, useState, useEffect } from 'react'; +import { useTranslation } from 'next-i18next'; +import MyIcon from '../../../common/Icon'; +import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; +import { PluginStatusEnum } from '@fastgpt/global/core/plugin/type'; + +/* + 3 种使用场景: + 1. admin 视角插件市场:显示是否安装,无状态,显示安装/卸载 + 2. team 视角资源库:显示是否安装,状态文本,以及安装/卸载 + 3. 开放的插件市场:不显示任何状态,只显示下载按钮 +*/ +export type ToolCardItemType = { + id: string; + name: string; + description?: string; + icon?: string; + author?: string; + tags?: string[] | null; + downloadUrl?: string; + status?: number; + installed?: boolean; +}; + +const ToolCard = ({ + item, + systemTitle, + isLoading, + mode, + onClickButton, + onClickCard +}: { + item: ToolCardItemType; + systemTitle?: string; + isLoading?: boolean; + mode: 'admin' | 'team' | 'marketplace'; + onClickButton: (installed: boolean) => void; + onClickCard?: () => void; +}) => { + const { t, i18n } = useTranslation(); + const tagsContainerRef = useRef(null); + const [visibleTagsCount, setVisibleTagsCount] = useState(item.tags?.length || 0); + + useEffect(() => { + const calculate = () => { + const container = tagsContainerRef.current; + if (!container || !item.tags?.length) return; + + const containerWidth = container.offsetWidth; + const tagElements = container.querySelectorAll('[data-tag-item]'); + if (!containerWidth || !tagElements.length) return; + + let totalWidth = 0; + let count = 0; + + for (let i = 0; i < tagElements.length; i++) { + const width = totalWidth + (tagElements[i] as HTMLElement).offsetWidth + (i > 0 ? 4 : 0); + if (width + (i < tagElements.length - 1 ? 54 : 0) > containerWidth) break; + totalWidth = width; + count++; + } + + setVisibleTagsCount(Math.max(1, count)); + }; + + const timer = setTimeout(calculate, 0); + const observer = new ResizeObserver(calculate); + if (tagsContainerRef.current) observer.observe(tagsContainerRef.current); + + return () => { + clearTimeout(timer); + observer.disconnect(); + }; + }, [item.tags]); + + const statusMap = useMemo(() => { + if (mode === 'marketplace') return null; + + const pluginStatusMap: Record = + { + [PluginStatusEnum.Offline]: { + label: t('app:toolkit_status_offline'), + color: 'red.600' + }, + [PluginStatusEnum.SoonOffline]: { + label: t('app:toolkit_status_soon_offline'), + color: 'yellow.600' + } + }; + + const installedStatusMap = item.installed + ? { + label: t('app:toolkit_installed'), + color: 'myGray.500', + icon: 'common/check' + } + : null; + + if (mode === 'admin') { + return installedStatusMap; + } + + if (mode === 'team') { + if (item.status && pluginStatusMap[item.status]) { + return pluginStatusMap[item.status]; + } + return installedStatusMap; + } + }, [item.installed, item.status]); + + return ( + + + + + {parseI18nString(item.name, i18n.language)} + + {statusMap && ( + + {statusMap.icon && } + {statusMap.label} + + )} + + + + {parseI18nString(item.description || '', i18n.language) || + t('app:templateMarket.no_intro')} + + + + {item.tags?.slice(0, visibleTagsCount).map((tag) => { + return ( + + {tag} + + ); + })} + {item.tags && item.tags.length > visibleTagsCount && ( + + +{item.tags.length - visibleTagsCount} + + )} + + + + {`by ${item.author || systemTitle || 'FastGPT'}`} + {mode === 'marketplace' ? ( + + ) : ( + + )} + + + ); +}; + +export default React.memo(ToolCard); diff --git a/packages/web/components/core/plugin/tool/ToolDetailDrawer.tsx b/packages/web/components/core/plugin/tool/ToolDetailDrawer.tsx new file mode 100644 index 000000000..fcb0dc6a4 --- /dev/null +++ b/packages/web/components/core/plugin/tool/ToolDetailDrawer.tsx @@ -0,0 +1,458 @@ +import React, { useMemo, useState, useEffect } from 'react'; +import { + Box, + Button, + Drawer, + DrawerBody, + DrawerContent, + DrawerHeader, + DrawerOverlay, + Flex, + VStack, + Accordion, + AccordionItem, + AccordionButton, + AccordionPanel, + AccordionIcon +} from '@chakra-ui/react'; +import { useTranslation } from 'next-i18next'; +import Avatar from '../../../common/Avatar'; +import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; +import MyIconButton from '../../../common/Icon/button'; +import LightRowTabs from '../../../common/Tabs/LightRowTabs'; +import type { + FlowNodeInputItemType, + FlowNodeOutputItemType +} from '@fastgpt/global/core/workflow/type/io'; +import { type ToolCardItemType } from './ToolCard'; +import MyBox from '../../../common/MyBox'; +import Markdown from '../../../common/Markdown'; +import type { ToolDetailType } from '@fastgpt/global/sdk/fastgpt-plugin'; +import { FlowValueTypeMap } from '@fastgpt/global/core/workflow/node/constant'; +import type { GetTeamToolDetailResponseType } from '@fastgpt/global/openapi/core/plugin/team/toolApi'; +import type { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants'; + +type toolDetailType = ToolDetailType & { + versionList?: Array<{ + value: string; + description?: string; + inputs?: Array; + outputs?: Array; + }>; + courseUrl?: string; + readme?: string; + userGuide?: string; + currentCost?: number; + hasSystemSecret?: boolean; + secretInputConfig?: Array<{}>; + inputList?: Array; +}; + +const ParamSection = ({ + title, + params +}: { + title: string; + params: (FlowNodeInputItemType | FlowNodeOutputItemType)[]; +}) => { + const { i18n } = useTranslation(); + + return ( + + + + + {title} + + + {params.map((param, index) => { + const isInput = 'required' in param; + return ( + + + {isInput && param.required && ( + + * + + )} + {parseI18nString(param.label || param.key, i18n.language)} + + {FlowValueTypeMap[param.valueType as WorkflowIOValueTypeEnum]?.label || 'String'} + + + {param.description && ( + + {parseI18nString(param.description, i18n.language)} + + )} + {index !== params.length - 1 && } + + ); + })} + + ); +}; + +const SubToolAccordionItem = ({ tool }: { tool: any }) => { + const { t, i18n } = useTranslation(); + + return ( + + + + + {parseI18nString(tool.name, i18n.language)} + + + {tool.intro || parseI18nString(tool.description, i18n.language)} + + + + + + + {/* + + {!!tool?.currentCost ? ( + + {t('app:toolkit_call_points_label')} + {tool?.currentCost} + + ) : ( + t('app:toolkit_no_call_points') + )} + */} + {tool.versionList && tool.versionList.length > 0 && ( + + {tool.versionList[0]?.inputs && tool.versionList[0].inputs.length > 0 && ( + + )} + {tool.versionList[0]?.outputs && tool.versionList[0].outputs.length > 0 && ( + + )} + + )} + + + ); +}; + +const ToolDetailDrawer = ({ + onClose, + selectedTool, + onToggleInstall, + systemTitle, + onFetchDetail, + isLoading, + showPoint, + mode +}: { + onClose: () => void; + selectedTool: ToolCardItemType; + onToggleInstall: (installed: boolean) => void; + systemTitle?: string; + onFetchDetail?: (toolId: string) => Promise; + isLoading?: boolean; + showPoint: boolean; + mode: 'admin' | 'team' | 'marketplace'; +}) => { + const { t, i18n } = useTranslation(); + const [activeTab, setActiveTab] = useState<'guide' | 'params'>('params'); + const [toolDetail, setToolDetail] = useState< + { tools: Array; downloadUrl: string } | undefined + >(undefined); + const [loading, setLoading] = useState(false); + const [readmeContent, setReadmeContent] = useState(''); + const [isInstalled, setIsInstalled] = useState(selectedTool.installed); + + const isDownload = useMemo(() => { + return mode === 'marketplace'; + }, [mode]); + + useEffect(() => { + const fetchToolDetail = async () => { + if (onFetchDetail && selectedTool?.id) { + setLoading(true); + try { + const detail = await onFetchDetail(selectedTool.id); + setToolDetail(detail as any); + } finally { + setLoading(false); + } + } + }; + + fetchToolDetail(); + }, []); + + const isToolSet = useMemo(() => { + if (!toolDetail?.tools || !Array.isArray(toolDetail?.tools) || toolDetail?.tools.length === 0) { + return false; + } + const subTools = toolDetail?.tools.filter((subTool: any) => subTool.parentId); + return subTools.length > 0; + }, [toolDetail?.tools]); + + const parentTool = useMemo(() => { + const parentTool = toolDetail?.tools.find((tool: toolDetailType) => !tool.parentId); + return { + ...parentTool, + tags: selectedTool.tags + }; + }, [selectedTool.tags, toolDetail?.tools]); + const subTools = useMemo(() => { + if (!isToolSet || !toolDetail?.tools) return []; + return toolDetail?.tools.filter((subTool: toolDetailType) => !!subTool.parentId); + }, [isToolSet, toolDetail?.tools]); + + useEffect(() => { + const fetchReadme = async () => { + if (!toolDetail) return; + const readmeUrl = parentTool?.readme; + if (!readmeUrl) return; + + try { + const response = await fetch(readmeUrl); + if (!response.ok) { + throw new Error(`Failed to fetch README: ${response.status}`); + } + let content = await response.text(); + + const baseUrl = readmeUrl.substring(0, readmeUrl.lastIndexOf('/') + 1); + + content = content.replace( + /!\[([^\]]*)\]\(\.\/([^)]+)\)/g, + (match, alt, path) => `![${alt}](${baseUrl}${path})` + ); + content = content.replace( + /!\[([^\]]*)\]\((?!http|https|\/\/)([^)]+)\)/g, + (match, alt, path) => `![${alt}](${baseUrl}${path})` + ); + setReadmeContent(content); + } catch (error) { + console.error('Failed to fetch README:', error); + setReadmeContent(''); + } + }; + + fetchReadme(); + }, [parentTool?.readme]); + + return ( + + + + + + + + {parseI18nString(parentTool?.name || '', i18n.language)} + + + + + + + + + + {parentTool?.tags?.map((tag: string) => ( + + {tag} + + ))} + + + {parseI18nString(parentTool?.description || '', i18n.language)} + + + {`by ${parentTool?.author || systemTitle || 'FastGPT'}`} + + + + + + {showPoint && ( + + + {t('app:toolkit_call_points_label')} + + + {!!parentTool?.currentCost + ? parentTool?.currentCost + : t('app:toolkit_no_call_points')} + + + )} + + + + {t('app:toolkit_activation_label')} + + + {parentTool?.hasSystemSecret || + (parentTool?.secretInputConfig && parentTool?.secretInputConfig.length > 0) || + (parentTool?.inputList && parentTool?.inputList.length > 0) + ? t('app:toolkit_activation_required') + : t('app:toolkit_activation_not_required')} + + + + + { + if (value === 'guide' && parentTool?.courseUrl) { + window.open(parentTool?.courseUrl, '_blank'); + } else { + setActiveTab(value as 'guide' | 'params'); + } + }} + gap={4} + /> + + + + + {activeTab === 'guide' && ( + + {(readmeContent || parentTool?.userGuide) && ( + + + + )} + + )} + + {activeTab === 'params' && ( + + {isToolSet && subTools.length > 0 && ( + + {subTools.map((subTool: ToolDetailType) => ( + + ))} + + )} + + {!isToolSet && ( + <> + {parentTool?.versionList?.[0]?.inputs && + parentTool?.versionList?.[0]?.inputs.length > 0 && ( + + )} + {parentTool?.versionList?.[0]?.outputs && + parentTool?.versionList?.[0]?.outputs.length > 0 && ( + + )} + + )} + + )} + + + + + + ); +}; + +export default React.memo(ToolDetailDrawer); diff --git a/packages/web/core/workflow/constants.ts b/packages/web/core/workflow/constants.ts index bc1227bef..4d6b1f2e9 100644 --- a/packages/web/core/workflow/constants.ts +++ b/packages/web/core/workflow/constants.ts @@ -1,6 +1,5 @@ import { FlowNodeTemplateTypeEnum } from '@fastgpt/global/core/workflow/constants'; import { i18nT } from '../../i18n/utils'; -import type { SystemToolGroupSchemaType } from '../../../service/core/app/plugin/type'; import { AppTemplateTypeEnum } from '@fastgpt/global/core/app/constants'; import { type TemplateTypeSchemaType } from '@fastgpt/global/core/app/type'; @@ -31,14 +30,6 @@ export const workflowSystemNodeTemplateList: { } ]; -export const defaultGroup: SystemToolGroupSchemaType = { - groupId: 'systemPlugin', - groupAvatar: 'core/app/type/pluginLight', - groupName: i18nT('app:core.module.template.System Tools'), - groupOrder: 0, - groupTypes: [] // from getPluginGroups -}; - export const defaultTemplateTypes: TemplateTypeSchemaType[] = [ { typeName: i18nT('common:templateTags.Writing'), diff --git a/packages/web/hooks/useI18n.ts b/packages/web/hooks/useI18n.ts index 016fbbda4..ac26bcd0b 100644 --- a/packages/web/hooks/useI18n.ts +++ b/packages/web/hooks/useI18n.ts @@ -37,7 +37,17 @@ export const useI18nLng = () => { }; const onChangeLng = async (lng: string) => { - const lang = languageMap[lng] || 'en'; + let lang = languageMap[lng]; + + // 如果没有直接映射,尝试智能回退 + if (!lang) { + const langPrefix = lng.split('-')[0]; + // 中文相关语言优先回退到简体中文 + if (langPrefix === 'zh') { + lang = LangEnum.zh_CN; + } + } + const prevLang = getLang(); setLang(lang); @@ -54,7 +64,17 @@ export const useI18nLng = () => { if (getLang() && !forceGetDefaultLng) return onChangeLng(getLang() as string); - const lang = languageMap[navigator.language] || 'en'; + // 尝试精确匹配浏览器语言 + let lang = languageMap[navigator.language]; + + // 如果没有精确匹配,尝试匹配语言前缀 + if (!lang) { + const browserLangPrefix = navigator.language.split('-')[0]; + // 中文语言环境下优先回退到简体中文 + if (browserLangPrefix === 'zh') { + lang = LangEnum.zh_CN; + } + } // currentLng not in userLang return onChangeLng(lang); diff --git a/packages/web/hooks/usePagination.tsx b/packages/web/hooks/usePagination.tsx index e8f5f87e1..545a27153 100644 --- a/packages/web/hooks/usePagination.tsx +++ b/packages/web/hooks/usePagination.tsx @@ -68,6 +68,7 @@ export function usePagination( const { t } = useTranslation(); const [isLoading, { setTrue, setFalse }] = useBoolean(false); + const [error, setError] = useState(null); const [pageNum, setPageNum] = useState(numPage); const [pageSize, setPageSize] = useState(defaultPageSize); @@ -88,6 +89,7 @@ export function usePagination( if (noMore && num !== 1) return; setTrue(); + setError(null); try { const res = await api({ @@ -139,6 +141,7 @@ export function usePagination( onChange?.(num); } catch (error: any) { + setError(error); if (error.code !== 'ERR_CANCELED') { toast({ title: getErrText(error, t('common:core.chat.error.data_error')), @@ -372,6 +375,7 @@ export function usePagination( data, setData, isLoading, + error, Pagination, ScrollData, getData: fetchData, diff --git a/packages/web/hooks/useStep.tsx b/packages/web/hooks/useStep.tsx index 2d33c8c24..251ca195a 100644 --- a/packages/web/hooks/useStep.tsx +++ b/packages/web/hooks/useStep.tsx @@ -1,9 +1,7 @@ import { Box, Flex, - IconButton, Step, - StepDescription, StepIcon, StepIndicator, StepNumber, diff --git a/packages/web/i18n/en/app.json b/packages/web/i18n/en/app.json index 13e74b501..a6f92a989 100644 --- a/packages/web/i18n/en/app.json +++ b/packages/web/i18n/en/app.json @@ -60,6 +60,7 @@ "chat_debug": "Chat Preview", "chat_logs": "Logs", "chat_logs_tips": "Logs will record the online, shared, and API (requires chatId) conversation records of this app.", + "click_to_config": "Go to configuration", "code_applied_successfully": "Code applied successfully", "code_function_describe": "Describe your code function, enter \"/\" to select the variable", "config_ai_model_params": "Click to configure AI model related properties", @@ -68,6 +69,7 @@ "confirm_copy_app_tip": "The system will create an app with the same configuration for you, but permissions will not be copied. Please confirm!", "confirm_del_app_tip": "Are you sure you want to delete 【{{name}}】 and all of its chat history?", "confirm_delete_folder_tip": "Confirm to delete this folder? All apps and corresponding conversation records under it will be deleted. Please confirm!", + "confirm_delete_tool": "Confirm to delete this tool?", "copilot_config_message": "Current Node Configuration Information: \n Code Type: {{codeType}} \n Current Code: \\\\`\\\\`\\\\`{{codeType}} \n{{code}} \\\\`\\\\`\\\\` \n Input Parameters: {{inputs}} \n Output Parameters: {{outputs}}", "copilot_confirm_message": "The original configuration has been received to understand the current code structure and input and output parameters. \nPlease explain your optimization requirements.", "copy_one_app": "Create Duplicate", @@ -86,10 +88,41 @@ "cron.every_month": "Run Monthly", "cron.every_week": "Run Weekly", "cron.interval": "Run at Intervals", + "custom_plugin": "Custom Plugin", + "custom_plugin_associated_plugin_label": "Associated Plugin", + "custom_plugin_associated_plugin_placeholder": "Enter plugin name or appId to search", + "custom_plugin_associated_plugin_required": "Associated applications cannot be empty", + "custom_plugin_author_label": "Author Name", + "custom_plugin_author_placeholder": "Default to system name", + "custom_plugin_call_price_label": "Call Price (n points/time)", + "custom_plugin_click_upload_avatar": "Click to upload avatar", + "custom_plugin_config_success": "Configuration successful", + "custom_plugin_config_title": "{{name}} Configuration", + "custom_plugin_create": "Create Plugin", + "custom_plugin_default_installed_label": "Default Installed", + "custom_plugin_delete_success": "Delete successful", + "custom_plugin_duplicate": "Duplicate ID", + "custom_plugin_has_token_fee_label": "Charge Token Fee", + "custom_plugin_intro_label": "Introduction", + "custom_plugin_intro_placeholder": "Add an introduction for this application", + "custom_plugin_name_label": "Name", + "custom_plugin_name_required": "Application name cannot be empty", + "custom_plugin_parse_error": "Plugin parsing failed", + "custom_plugin_plugin_status_label": "Plugin Status", + "custom_plugin_tags_label": "Tags", + "custom_plugin_tags_max_limit": "You can only select up to 3 tags", + "custom_plugin_update": "Update", + "custom_plugin_upload_failed": "Upload failed", + "custom_plugin_uploaded": "Uploaded", + "custom_plugin_uploading": "Uploading...", + "custom_plugin_user_guide_label": "User Guide", + "custom_plugin_user_guide_placeholder": "Use markdown syntax", "dataset": "dataset", "dataset_search_tool_description": "Call the \"Semantic Search\" and \"Full-text Search\" capabilities to find reference content that may be related to the problem from the \"Knowledge Base\". \nPrioritize calling this tool to assist in answering user questions.", + "dataset_select": "Optional knowledge base", "day": "Day", "deleted": "App deleted", + "document": "document", "document_quote": "Document Reference", "document_quote_tip": "Usually used to accept user-uploaded document content (requires document parsing), and can also be used to reference other string data.", "document_upload": "Document Upload", @@ -99,15 +132,19 @@ "execute_time": "Execution Time", "export_config_successful": "Configuration copied, some sensitive information automatically filtered. Please check for any remaining sensitive data.", "export_configs": "Export", + "fastgpt_marketplace": "FastGPT plug-in market", "feedback_count": "User Feedback", "file_quote_link": "Files", "file_recover": "File will overwrite current content", + "file_types": "Optional file types", "file_upload": "File Upload", "file_upload_tip": "Once enabled, documents/images can be uploaded. Documents are retained for 7 days, images for 15 days. Using this feature may incur additional costs. To ensure a good experience, please choose an AI model with a larger context length when using this feature.", + "find_more_tools": "Explore more", "go_to_chat": "Go to Conversation", "go_to_run": "Go to Execution", "http_toolset_add_tips": "Click the \"Add\" button to add tools", "http_toolset_config_tips": "Click \"Start Configuration\" to add tools", + "image": "picture", "image_upload": "Image Upload", "image_upload_tip": "How to activate model image recognition capabilities", "import_configs": "Import", @@ -126,6 +163,7 @@ "llm_not_support_vision": "This model does not support image recognition", "llm_use_vision": "Vision", "llm_use_vision_tip": "After clicking on the model selection, you can see whether the model supports image recognition and the ability to control whether to start image recognition. \nAfter starting image recognition, the model will read the image content in the file link, and if the user question is less than 500 words, it will automatically parse the image in the user question.", + "local_upload": "Local upload", "log_chat_logs": "Dialogue log", "log_detail": "Log details", "logs_app_data": "Data board", @@ -153,7 +191,7 @@ "logs_keys_customFeedback": "Custom Feedback", "logs_keys_errorCount": "Error Count", "logs_keys_feedback": "User Feedback", - "logs_keys_lastConversationTime": "Last Conversation Time", + "logs_keys_lastConversationTime": "last conversation time", "logs_keys_messageCount": "Message Count", "logs_keys_points": "Points Consumed", "logs_keys_responseTime": "Average Response Time", @@ -223,6 +261,8 @@ "plugin_cost_per_times": "{{cost}} points/time", "plugin_dispatch": "Plugin Invocation", "plugin_dispatch_tip": "Adds extra capabilities to the model. The specific plugins to be invoked will be autonomously decided by the model.\nIf a plugin is selected, the Dataset invocation will automatically be treated as a special plugin.", + "plugin_offline_tips": "Your system does not have direct access to plugin market data,\n\nPlease manually copy the URL and go to get more plugins", + "plugin_offline_url": "URL", "pro_modal_feature_1": "External organization structure integration and multi-tenancy", "pro_modal_feature_2": "Team-exclusive application showcase page", "pro_modal_feature_3": "Knowledge base enhanced indexing", @@ -293,10 +333,76 @@ "tool_detail": "Tool details", "tool_input_param_tip": "This plugin requires configuration of related information to run properly.", "tool_not_active": "This tool has not been activated yet", + "tool_offset_tips": "This tool is no longer available and will interrupt application operation. Please replace it immediately.", "tool_params_description_tips": "The description of parameter functions, if used as tool invocation parameters, affects the model tool invocation effect.", "tool_run_free": "This tool runs without points consumption", + "tool_soon_offset_tips": "This tool will be offline in the future. For the sake of your business stability, please replace it as soon as possible.", "tool_tip": "When executed as a tool, is this field used as a tool response result?", "tool_type_tools": "tool", + "plugin_db": "Plugins", + "toolkit_activation_label": "Key Activation", + "toolkit_activation_not_required": "No Activation", + "toolkit_activation_required": "Activation Required", + "toolkit_add_resource": "Add resources", + "toolkit_author": "Author", + "toolkit_basic_config": "Basic Configuration", + "toolkit_basic_info": "Basic Information", + "toolkit_call_points": "Call Points", + "toolkit_call_points_label": "Call Points", + "toolkit_config_system_key": "Configure System Key", + "toolkit_contribute_resource": "Contribute Resource", + "toolkit_default_install": "Default Install", + "toolkit_import_resource": "Import/update resources", + "toolkit_inputs": "Input Parameters", + "toolkit_install": "Install", + "toolkit_installed": "Installed", + "toolkit_key_price": "Key Price", + "toolkit_marketplace_download": "Download", + "toolkit_marketplace_download_count": "{{count}} downloads", + "toolkit_marketplace_faq": "FAQ", + "toolkit_marketplace_search_placeholder": "Search tools", + "toolkit_marketplace_submit_request": "Submit Request", + "toolkit_marketplace_title": "Explore more plugins", + "toolkit_name": "Name", + "toolkit_no_call_points": "This tool does not require call points", + "toolkit_no_params_info": "No parameter information available", + "toolkit_no_plugins": "No plugins", + "toolkit_no_user_guide": "No user guide available", + "toolkit_official": "Official", + "toolkit_open_marketplace": "Open Marketplace", + "toolkit_outputs": "Output Parameters", + "toolkit_params_description": "Parameters", + "toolkit_plugin_status": "Plugin Status", + "toolkit_select_app": "Select an existing app", + "toolkit_status": "Status", + "toolkit_status_normal": "Normal", + "toolkit_status_offline": "Offline", + "toolkit_status_soon_offline": "Soon Offline", + "toolkit_system_key": "System Key", + "toolkit_system_key_configured": "Configured", + "toolkit_system_key_cost": "System Key Price (n points/time)", + "toolkit_system_key_enable": "Enable System Key", + "toolkit_system_key_not_configured": "Not Configured", + "toolkit_system_key_tip": "For tools that require a key, you can configure a system key. Users can use the system key by paying points.", + "toolkit_system_tool_config": "System Tool Configuration", + "toolkit_tags": "Tags", + "toolkit_tags_add": "Add Tag", + "toolkit_tags_delete_confirm": "Confirm delete this tag?", + "toolkit_tags_duplicate_name": "Duplicate tag name", + "toolkit_tags_enter_name": "Enter tag name", + "toolkit_tags_manage": "tag management", + "toolkit_tags_manage_title": "Plugin Tag Management", + "toolkit_tags_name": "Tag name", + "toolkit_tags_total": "Total {{count}} tags", + "toolkit_token_fee": "Token Points", + "toolkit_token_fee_tip": "After enabling this switch, users need to pay the Token points in the plugin when using it, and call points will also be charged at the same time", + "toolkit_tool_config": "{{name}} Configuration", + "toolkit_tool_list": "Tool List", + "toolkit_tool_name": "Tool Name", + "toolkit_uninstall": "Uninstall", + "toolkit_uninstalled": "Uninstalled", + "toolkit_update_failed": "Update failed", + "toolkit_user_guide": "User Guide", "tools_no_description": "This tool has not been introduced ~", "transition_to_workflow": "Convert to Workflow", "transition_to_workflow_create_new_placeholder": "Create a new app instead of modifying the current app", @@ -337,8 +443,18 @@ "type.hidden": "Hide app", "type_not_recognized": "App type not recognized", "un_auth": "No permission", + "upload_file_exists_filtered": "Duplicate files have been automatically filtered.", + "upload_file_extension_type_canSelectAudio": "Audio", + "upload_file_extension_type_canSelectCustomFileExtension": "Custom file extension type", + "upload_file_extension_type_canSelectCustomFileExtension_placeholder": "file extension name", + "upload_file_extension_type_canSelectFile": "Documents", + "upload_file_extension_type_canSelectImg": "Image", + "upload_file_extension_type_canSelectVideo": "Video", + "upload_file_extension_types": "Supported file types", "upload_file_max_amount": "Maximum File Quantity", "upload_file_max_amount_tip": "Maximum number of files uploaded in a single round of conversation", + "upload_method": "Upload method", + "url_upload": "File link", "variable.internal_type_desc": "Use only inside the workflow and will not appear in the dialog box", "variable.select type_desc": "The input box will be displayed in the site conversation and run preview, and this variable will not be displayed in the sharing link.", "variable.textarea_type_desc": "Allows users to input up to 4000 characters in the dialogue box.", @@ -362,6 +478,8 @@ "workflow.form_input_description_placeholder": "For example: \nAdd your information", "workflow.form_input_tip": " This module can configure multiple inputs to guide users in entering specific content.", "workflow.input_description_tip": "You can add a description to explain to users what they need to input", + "workflow.plugin_offline_error": "This plugin is offline and cannot be run", + "workflow.plugin_soon_offline_warning": "This plugin will be offline soon, please replace it as soon as possible", "workflow.read_files": "Document Parse", "workflow.read_files_result": "Document Parsing Result", "workflow.read_files_result_desc": "Original document text, consisting of file names and document content, separated by hyphens between multiple files.", diff --git a/packages/web/i18n/en/chat.json b/packages/web/i18n/en/chat.json index ea59e6ec2..2e708049a 100644 --- a/packages/web/i18n/en/chat.json +++ b/packages/web/i18n/en/chat.json @@ -12,6 +12,7 @@ "chat_test_app": "Debug-{{name}}", "citations": "{{num}} References", "click_contextual_preview": "Click to see contextual preview", + "click_to_add_url": "Click to add link", "completion_finish_close": "Disconnection", "completion_finish_content_filter": "Trigger safe wind control", "completion_finish_function_call": "Function Calls", @@ -23,6 +24,7 @@ "config_input_guide": "Set Up Input Guide", "config_input_guide_lexicon": "Set Up Lexicon", "config_input_guide_lexicon_title": "Set Up Lexicon", + "confirm_to_clear_share_chat_history": "Are you sure you want to clear all chat history?", "content_empty": "No Content", "contextual": "{{num}} Contexts", "contextual_preview": "Contextual Preview {{num}} Items", @@ -75,6 +77,7 @@ "response.child total points": "Sub-workflow point consumption", "response.dataset_concat_length": "Combined total", "response.node_inputs": "Node Inputs", + "response.node_name": "Node name", "response_embedding_model": "Vector model", "response_embedding_model_tokens": "Vector Model Tokens", "response_hybrid_weight": "Embedding : Full text = {{emb}} : {{text}}", diff --git a/packages/web/i18n/en/common.json b/packages/web/i18n/en/common.json index 0a11bc546..1c91d903b 100644 --- a/packages/web/i18n/en/common.json +++ b/packages/web/i18n/en/common.json @@ -158,7 +158,7 @@ "code_error.outlink_error.invalid_link": "Invalid Share Link", "code_error.outlink_error.link_not_exist": "Share Link Does Not Exist", "code_error.outlink_error.un_auth_user": "Identity Verification Failed", - "code_error.plugin_error.not_exist": "The tool does not exist", + "code_error.plugin_error.not_exist": "Tool deleted", "code_error.plugin_error.un_auth": "No permission to operate the tool", "code_error.system_error.community_version_num_limit": "Exceeded Open Source Version Limit, Please Upgrade to Commercial Version: https://fastgpt.io", "code_error.system_error.license_app_amount_limit": "Exceed the maximum number of applications in the system", @@ -824,6 +824,11 @@ "error.inheritPermissionError": "Inherit permission Error", "error.invalid_params": "Invalid parameter", "error.missingParams": "Insufficient parameters", + "error.s3_upload_auth_failed": "No permission to upload file", + "error.s3_upload_bucket_not_found": "bucket not found", + "error.s3_upload_file_too_large": "File must be smaller than {{max}}", + "error.s3_upload_network_error": "Network abnormality", + "error.s3_upload_timeout": "Upload timed out", "error.send_auth_code_too_frequently": "Please do not obtain verification code frequently", "error.too_many_request": "Too many request", "error.unKnow": "An Unexpected Error Occurred", @@ -870,6 +875,7 @@ "input.Repeat Value": "Duplicate Value", "input_name": "Enter a Name", "invalid_time": "Validity period", + "invalid_url": "Invalid URL format", "invalid_variable": "Invalid Variable", "is_open": "Is Open", "is_requesting": "Requesting...", @@ -914,10 +920,12 @@ "name_is_empty": "Name Cannot Be Empty", "navbar.Account": "Account", "navbar.Chat": "Chat", + "navbar.Config": "administrator", "navbar.Datasets": "Dataset", "navbar.Studio": "Studio", "navbar.Toolkit": "Toolkit", "navbar.Tools": "Tools", + "navbar.plugin": "Plugins", "new_create": "Create New", "next_step": "Next", "no": "No", @@ -1220,7 +1228,7 @@ "support.wallet.usage.Time": "Generation Time", "support.wallet.usage.Token Length": "Token Length", "support.wallet.usage.Total": "Total Amount", - "support.wallet.usage.Total points": "AI Points Consumption", + "support.wallet.usage.Total points": "Total credit", "support.wallet.usage.Usage Detail": "Usage Details", "support.wallet.usage.Whisper": "Voice Input", "sure_delete_tool_cannot_undo": "Are you sure to delete the tool? \nThis operation cannot be withdrawn", diff --git a/packages/web/i18n/zh-CN/app.json b/packages/web/i18n/zh-CN/app.json index b41320f1e..efe4b2768 100644 --- a/packages/web/i18n/zh-CN/app.json +++ b/packages/web/i18n/zh-CN/app.json @@ -62,6 +62,7 @@ "chat_debug": "调试预览", "chat_logs": "对话日志", "chat_logs_tips": "日志会记录该应用的在线、分享和 API(需填写 chatId)对话记录", + "click_to_config": "去配置", "code_applied_successfully": "代码应用成功", "code_function_describe": "描述你的代码功能,输入“/”可选择变量", "config_ai_model_params": "点击配置 AI 模型相关属性", @@ -70,6 +71,7 @@ "confirm_copy_app_tip": "系统将为您创建一个相同配置应用,但权限不会进行复制,请确认!", "confirm_del_app_tip": "确认删除 【{{name}}】 及其所有聊天记录?", "confirm_delete_folder_tip": "确认删除该文件夹?将会删除它下面所有应用及对应的聊天记录,请确认!", + "confirm_delete_tool": "确认删除该工具?", "copilot_config_message": "`当前节点配置信息: \n代码类型:{{codeType}} \n当前代码: \\`\\`\\`{{codeType}} \n{{code}} \\`\\`\\` \n输入参数: {{inputs}} \n输出参数: {{outputs}}`", "copilot_confirm_message": "已接收到原始配置,了解当前代码结构和输入输出参数。请说明您的优化需求。", "copy_one_app": "创建副本", @@ -88,10 +90,42 @@ "cron.every_month": "每月执行", "cron.every_week": "每周执行", "cron.interval": "间隔执行", + "custom_plugin": "自定义插件", + "custom_plugin_associated_plugin_label": "关联插件", + "custom_plugin_associated_plugin_placeholder": "输入插件名或 appId 查找插件", + "custom_plugin_associated_plugin_required": "关联应用不能为空", + "custom_plugin_author_label": "作者名称", + "custom_plugin_author_placeholder": "默认为系统名", + "custom_plugin_call_price_label": "调用价格 (n积分/次)", + "custom_plugin_click_upload_avatar": "点击上传头像", + "custom_plugin_config_success": "配置成功", + "custom_plugin_config_title": "{{name}}配置", + "custom_plugin_create": "新建插件", + "custom_plugin_default_installed_label": "默认安装", + "custom_plugin_delete_success": "删除成功", + "custom_plugin_duplicate": "ID 重复", + "custom_plugin_has_token_fee_label": "是否收取 Token 费用", + "custom_plugin_intro_label": "介绍", + "custom_plugin_intro_placeholder": "为这个应用添加一个介绍", + "custom_plugin_name_label": "取个名字", + "custom_plugin_name_required": "应用名不能为空", + "custom_plugin_parse_error": "插件解析失败", + "custom_plugin_parsing": "解析中...", + "custom_plugin_plugin_status_label": "插件状态", + "custom_plugin_tags_label": "标签", + "custom_plugin_tags_max_limit": "最多只能选择3个标签", + "custom_plugin_update": "更新", + "custom_plugin_upload_failed": "上传失败", + "custom_plugin_uploaded": "已上传", + "custom_plugin_uploading": "上传中...", + "custom_plugin_user_guide_label": "使用说明", + "custom_plugin_user_guide_placeholder": "使用 markdown 语法", "dataset": "知识库", "dataset_search_tool_description": "调用“语义检索”和“全文检索”能力,从“知识库”中查找可能与问题相关的参考内容。优先调用该工具来辅助回答用户的问题。", + "dataset_select": "可选知识库", "day": "日", "deleted": "应用已删除", + "document": "文档", "document_quote": "文档引用", "document_quote_tip": "通常用于接受用户上传的文档内容(这需要文档解析),也可以用于引用其他字符串数据。", "document_upload": "文档上传", @@ -102,15 +136,19 @@ "execute_time": "执行时间", "export_config_successful": "已复制配置,自动过滤部分敏感信息,请注意检查是否仍有敏感数据", "export_configs": "导出配置", + "fastgpt_marketplace": "FastGPT 插件市场", "feedback_count": "用户反馈", "file_quote_link": "文件链接", "file_recover": "文件将覆盖当前内容", + "file_types": "可选文件类型", "file_upload": "文件上传", "file_upload_tip": "开启后,可以上传文档/图片。文档保留7天,图片保留15天。使用该功能可能产生较多额外费用。为保证使用体验,使用该功能时,请选择上下文长度较大的AI模型。", + "find_more_tools": "探索更多", "go_to_chat": "去对话", "go_to_run": "去运行", "http_toolset_add_tips": "点击添加按钮来添加工具", "http_toolset_config_tips": "点击开始配置来添加工具", + "image": "图片", "image_upload": "图片上传", "image_upload_tip": "如何启动模型图片识别能力", "import_configs": "导入配置", @@ -129,6 +167,7 @@ "llm_not_support_vision": "该模型不支持图片识别", "llm_use_vision": "图片识别", "llm_use_vision_tip": "点击模型选择后,可以看到模型是否支持图片识别以及控制是否启动图片识别的能力。启动图片识别后,模型会读取文件链接里图片内容,并且如果用户问题少于 500 字,会自动解析用户问题中的图片。", + "local_upload": "本地上传", "log_chat_logs": "对话日志", "log_detail": "日志详情", "logs_app_data": "数据看板", @@ -157,7 +196,7 @@ "logs_keys_customFeedback": "自定义反馈", "logs_keys_errorCount": "报错数量", "logs_keys_feedback": "用户反馈", - "logs_keys_lastConversationTime": "上次对话时间", + "logs_keys_lastConversationTime": "最后对话时间", "logs_keys_messageCount": "消息总数", "logs_keys_points": "积分消耗", "logs_keys_responseTime": "平均响应时长", @@ -235,6 +274,8 @@ "plugin_cost_per_times": "{{cost}} 积分/次", "plugin_dispatch": "插件调用", "plugin_dispatch_tip": "给模型附加获取外部数据的能力,具体调用哪些插件,将由模型自主决定,所有插件都将以非流模式运行。\n若选择了插件,知识库调用将自动作为一个特殊的插件。", + "plugin_offline_tips": "您的系统无法直接访问插件市场数据,\n请手动复制网址并前往,以获得更多插件", + "plugin_offline_url": "网址", "pro_modal_feature_1": "外部组织架构接入与多租户", "pro_modal_feature_2": "团队专属的应用展示页", "pro_modal_feature_3": "知识库增强索引", @@ -309,10 +350,76 @@ "tool_detail": "工具详情", "tool_input_param_tip": "该插件正常运行需要配置相关信息", "tool_not_active": "该工具尚未激活", + "tool_offset_tips": "该工具已无法使用,将中断应用运行,请立即替换", "tool_params_description_tips": "参数功能的描述,若作为工具调用参数,影响模型工具调用效果", "tool_run_free": "该工具运行无积分消耗", + "tool_soon_offset_tips": "该工具将在后续下线,为了您的业务稳定,请尽快替换", "tool_tip": "作为工具执行时,该字段是否作为工具响应结果", "tool_type_tools": "工具", + "plugin": "资源库", + "toolkit_activation_label": "密钥激活", + "toolkit_activation_not_required": "免激活", + "toolkit_activation_required": "需要激活", + "toolkit_add_resource": "添加插件", + "toolkit_author": "作者", + "toolkit_basic_config": "基础配置", + "toolkit_basic_info": "基本信息", + "toolkit_call_points": "调用积分", + "toolkit_call_points_label": "调用积分", + "toolkit_config_system_key": "是否配置系统密钥", + "toolkit_contribute_resource": "贡献插件", + "toolkit_default_install": "默认安装", + "toolkit_import_resource": "导入/更新插件", + "toolkit_inputs": "输入参数", + "toolkit_install": "安装", + "toolkit_installed": "已安装", + "toolkit_key_price": "密钥价格", + "toolkit_marketplace_download": "下载", + "toolkit_marketplace_download_count": "{{count}} 次下载", + "toolkit_marketplace_faq": "常见问题", + "toolkit_marketplace_search_placeholder": "搜索插件", + "toolkit_marketplace_submit_request": "提交需求", + "toolkit_marketplace_title": "探索更多插件", + "toolkit_name": "名称", + "toolkit_no_call_points": "该工具无需调用积分", + "toolkit_no_params_info": "暂无参数信息", + "toolkit_no_plugins": "暂无插件", + "toolkit_no_user_guide": "暂无使用说明", + "toolkit_official": "官方", + "toolkit_open_marketplace": "打开插件市场", + "toolkit_outputs": "输出参数", + "toolkit_params_description": "参数说明", + "toolkit_plugin_status": "插件状态", + "toolkit_select_app": "选择现有应用", + "toolkit_status": "状态", + "toolkit_status_normal": "正常", + "toolkit_status_offline": "已下线", + "toolkit_status_soon_offline": "即将下线", + "toolkit_system_key": "系统密钥", + "toolkit_system_key_configured": "已配置", + "toolkit_system_key_cost": "系统密钥价格(n积分/次)", + "toolkit_system_key_enable": "是否配置系统密钥", + "toolkit_system_key_not_configured": "未配置", + "toolkit_system_key_tip": "对于需要密钥的工具,您可为其配置系统密钥,用户可通过支付积分的方式使用系统密钥。", + "toolkit_system_tool_config": "系统工具配置", + "toolkit_tags": "标签", + "toolkit_tags_add": "添加标签", + "toolkit_tags_delete_confirm": "确认删除该标签?", + "toolkit_tags_duplicate_name": "标签名重复", + "toolkit_tags_enter_name": "输入标签名称", + "toolkit_tags_manage": "标签管理", + "toolkit_tags_manage_title": "工具标签管理", + "toolkit_tags_name": "标签名称", + "toolkit_tags_total": "共 {{count}} 个标签", + "toolkit_token_fee": "Token 积分", + "toolkit_token_fee_tip": "开启该开关后,用户使用该插件,需要支付插件中Token的积分,并且同时会收取调用积分", + "toolkit_tool_config": "{{name}}配置", + "toolkit_tool_list": "工具列表", + "toolkit_tool_name": "工具名", + "toolkit_uninstall": "卸载", + "toolkit_uninstalled": "未安装", + "toolkit_update_failed": "更新失败", + "toolkit_user_guide": "使用说明", "tools_no_description": "这个工具没有介绍~", "transition_to_workflow": "转成工作流", "transition_to_workflow_create_new_placeholder": "创建一个新的应用,而不是修改当前应用", @@ -354,8 +461,18 @@ "type.hidden": "隐藏应用", "type_not_recognized": "未识别到应用类型", "un_auth": "无权限", + "upload_file_exists_filtered": "已自动过滤重复文件", + "upload_file_extension_type_canSelectAudio": "音频", + "upload_file_extension_type_canSelectCustomFileExtension": "自定义文件扩展类型", + "upload_file_extension_type_canSelectCustomFileExtension_placeholder": "文件扩展名", + "upload_file_extension_type_canSelectFile": "文档", + "upload_file_extension_type_canSelectImg": "图片", + "upload_file_extension_type_canSelectVideo": "视频", + "upload_file_extension_types": "支持上传的类型", "upload_file_max_amount": "最大文件数量", "upload_file_max_amount_tip": "单轮对话中最大上传文件数量", + "upload_method": "上传方式", + "url_upload": "文件链接", "variable.internal_type_desc": "仅在工作流内部使用,不会出现在对话框中", "variable.select type_desc": "会在站内对话和运行预览中显示输入框,在分享链接中不会显示此变量", "variable.textarea_type_desc": "允许用户最多输入4000字的对话框。", @@ -379,6 +496,8 @@ "workflow.form_input_description_placeholder": "例如:\n补充您的信息", "workflow.form_input_tip": "该模块可以配置多种输入,引导用户输入特定内容。", "workflow.input_description_tip": "你可以添加一段说明文字,用以向用户说明需要输入的内容", + "workflow.plugin_offline_error": "该插件已下线,无法运行", + "workflow.plugin_soon_offline_warning": "该插件即将下线,建议尽快更换", "workflow.read_files": "文档解析", "workflow.read_files_result": "文档解析结果", "workflow.read_files_result_desc": "文档原文,由文件名和文档内容组成,多个文件之间通过横线隔开。", diff --git a/packages/web/i18n/zh-CN/chat.json b/packages/web/i18n/zh-CN/chat.json index 780c686eb..3123d3576 100644 --- a/packages/web/i18n/zh-CN/chat.json +++ b/packages/web/i18n/zh-CN/chat.json @@ -12,6 +12,7 @@ "chat_test_app": "调试-{{name}}", "citations": "{{num}}条引用", "click_contextual_preview": "点击查看上下文预览", + "click_to_add_url": "点击添加链接", "completion_finish_close": "连接断开", "completion_finish_content_filter": "触发安全风控", "completion_finish_function_call": "函数调用", @@ -23,6 +24,7 @@ "config_input_guide": "配置输入引导", "config_input_guide_lexicon": "配置词库", "config_input_guide_lexicon_title": "配置词库", + "confirm_to_clear_share_chat_history": "确认清空所有聊天记录?", "content_empty": "内容为空", "contextual": "{{num}}条上下文", "contextual_preview": "上下文预览 {{num}} 条", @@ -75,6 +77,7 @@ "response.child total points": "子工作流积分消耗", "response.dataset_concat_length": "合并后总数", "response.node_inputs": "节点输入", + "response.node_name": "节点名", "response_embedding_model": "向量模型", "response_embedding_model_tokens": "向量模型 Tokens", "response_hybrid_weight": "语义检索 : 全文检索 = {{emb}} : {{text}}", diff --git a/packages/web/i18n/zh-CN/common.json b/packages/web/i18n/zh-CN/common.json index 9d5590285..049389a6e 100644 --- a/packages/web/i18n/zh-CN/common.json +++ b/packages/web/i18n/zh-CN/common.json @@ -158,7 +158,7 @@ "code_error.outlink_error.invalid_link": "分享链接无效", "code_error.outlink_error.link_not_exist": "分享链接不存在", "code_error.outlink_error.un_auth_user": "身份校验失败", - "code_error.plugin_error.not_exist": "工具不存在", + "code_error.plugin_error.not_exist": "工具已删除", "code_error.plugin_error.un_auth": "无权操作该工具", "code_error.system_error.community_version_num_limit": "超出社区版数量限制,请升级商业版: https://fastgpt.in", "code_error.system_error.license_app_amount_limit": "超出系统最大应用数量", @@ -206,6 +206,7 @@ "confirm_update": "确认更新", "contact_way": "通知接收", "contribute_app_template": "贡献模板", + "copy_link": "复制链接", "copy_successful": "复制成功", "copy_to_clipboard": "复制到剪贴板", "core.Chat": "对话", @@ -342,7 +343,7 @@ "core.chat.Feedback Submit": "提交反馈", "core.chat.Feedback Success": "反馈成功!", "core.chat.Finish Speak": "语音输入完成", - "core.chat.History": "记录", + "core.chat.History": "历史记录", "core.chat.History Amount": "{{amount}} 条记录", "core.chat.Mark": "标注预期回答", "core.chat.Mark Description": "当前标注功能为测试版。\n\n点击添加标注后,需要选择一个知识库,以便存储标注数据。你可以通过该功能快速的标注问题和预期回答,以便引导模型下次的回答。\n\n目前,标注功能同知识库其他数据一样,受模型的影响,不代表标注后 100% 符合预期。\n\n标注数据仅单向与知识库同步,如果知识库修改了该标注数据,日志展示的标注数据无法同步。", @@ -825,6 +826,11 @@ "error.inheritPermissionError": "权限继承错误", "error.invalid_params": "参数无效", "error.missingParams": "参数缺失", + "error.s3_upload_auth_failed": "无权上传文件", + "error.s3_upload_bucket_not_found": "找不到存储桶", + "error.s3_upload_file_too_large": "文件需小于 {{max}}", + "error.s3_upload_network_error": "网络异常", + "error.s3_upload_timeout": "上传超时", "error.send_auth_code_too_frequently": "请勿频繁获取验证码", "error.too_many_request": "请求太频繁了,请稍后重试", "error.unKnow": "出现了点意外~", @@ -871,6 +877,7 @@ "input.Repeat Value": "有重复的值", "input_name": "取个名字", "invalid_time": "有效期", + "invalid_url": "无效的 URL 格式", "invalid_variable": "无效变量", "is_open": "是否开启", "is_requesting": "请求中……", @@ -915,10 +922,12 @@ "name_is_empty": "名称不能为空", "navbar.Account": "账号", "navbar.Chat": "聊天", + "navbar.Config": "管理员", "navbar.Datasets": "知识库", "navbar.Studio": "工作台", "navbar.Toolkit": "工具箱", "navbar.Tools": "工具", + "navbar.plugin": "插件库", "new_create": "新建", "next_step": "下一步", "no": "否", @@ -1222,7 +1231,7 @@ "support.wallet.usage.Time": "生成时间", "support.wallet.usage.Token Length": "token 长度", "support.wallet.usage.Total": "总金额", - "support.wallet.usage.Total points": "AI 积分消耗", + "support.wallet.usage.Total points": "AI 积分总消耗", "support.wallet.usage.Usage Detail": "使用详情", "support.wallet.usage.Whisper": "语音输入", "sure_delete_tool_cannot_undo": "是否确认删除该工具?该操作无法撤回", diff --git a/packages/web/i18n/zh-Hant/app.json b/packages/web/i18n/zh-Hant/app.json index a13316d8d..7df4bb65e 100644 --- a/packages/web/i18n/zh-Hant/app.json +++ b/packages/web/i18n/zh-Hant/app.json @@ -60,6 +60,7 @@ "chat_debug": "聊天預覽", "chat_logs": "對話紀錄", "chat_logs_tips": "紀錄會記錄此應用程式的線上、分享和 API(需填寫 chatId)對話紀錄", + "click_to_config": "去配置", "code_applied_successfully": "代碼應用成功", "code_function_describe": "描述你的代碼功能,輸入“/”可選擇變量", "config_ai_model_params": "點選設定 AI 模型相關屬性", @@ -68,6 +69,7 @@ "confirm_copy_app_tip": "系統將為您建立一個相同設定的應用程式,但權限不會複製,請確認!", "confirm_del_app_tip": "確認刪除【{{name}}】及其所有聊天紀錄?", "confirm_delete_folder_tip": "確認刪除這個資料夾?將會刪除它底下所有應用程式及對應的對話紀錄,請確認!", + "confirm_delete_tool": "確認刪除該工具?", "copilot_config_message": "當前節點配置信息: \n代碼類型:{{codeType}} \n當前代碼: \\\\`\\\\`\\\\`{{codeType}} \n{{code}} \\\\`\\\\`\\\\` \n輸入參數: {{inputs}} \n輸出參數: {{outputs}}", "copilot_confirm_message": "已接收到原始配置,了解當前代碼結構和輸入輸出參數。\n請說明您的優化需求。", "copy_one_app": "建立副本", @@ -86,10 +88,41 @@ "cron.every_month": "每月執行", "cron.every_week": "每週執行", "cron.interval": "間隔執行", + "custom_plugin": "自訂外掛", + "custom_plugin_associated_plugin_label": "關聯外掛", + "custom_plugin_associated_plugin_placeholder": "輸入外掛名稱或 appId 尋找外掛", + "custom_plugin_associated_plugin_required": "關聯應用不能為空", + "custom_plugin_author_label": "作者名稱", + "custom_plugin_author_placeholder": "預設為系統名稱", + "custom_plugin_call_price_label": "呼叫價格 (n積分/次)", + "custom_plugin_click_upload_avatar": "點擊上傳頭像", + "custom_plugin_config_success": "配置成功", + "custom_plugin_config_title": "{{name}}配置", + "custom_plugin_create": "新建外掛", + "custom_plugin_default_installed_label": "預設安裝", + "custom_plugin_delete_success": "刪除成功", + "custom_plugin_duplicate": "ID 重複", + "custom_plugin_has_token_fee_label": "是否收取 Token 費用", + "custom_plugin_intro_label": "介紹", + "custom_plugin_intro_placeholder": "為這個應用程式新增一個介紹", + "custom_plugin_name_label": "取個名字", + "custom_plugin_name_required": "應用程式名稱不能為空", + "custom_plugin_parse_error": "插件解析失敗", + "custom_plugin_plugin_status_label": "外掛狀態", + "custom_plugin_tags_label": "標籤", + "custom_plugin_tags_max_limit": "最多只能選擇3個標籤", + "custom_plugin_update": "更新", + "custom_plugin_upload_failed": "上傳失敗", + "custom_plugin_uploaded": "已上傳", + "custom_plugin_uploading": "上傳中...", + "custom_plugin_user_guide_label": "使用說明", + "custom_plugin_user_guide_placeholder": "使用 markdown 語法", "dataset": "知識庫", "dataset_search_tool_description": "呼叫「語意搜尋」和「全文搜尋」功能,從「知識庫」中尋找可能與問題相關的參考內容。優先呼叫這個工具來協助回答使用者的問題。", + "dataset_select": "可選知識庫", "day": "日", "deleted": "應用已刪除", + "document": "文件", "document_quote": "文件引用", "document_quote_tip": "通常用於接受使用者上傳的文件內容(這需要文件解析),也可以用於引用其他字串資料。", "document_upload": "文件上傳", @@ -99,15 +132,19 @@ "execute_time": "執行時間", "export_config_successful": "已複製設定,自動過濾部分敏感資訊,請注意檢查是否仍有敏感資料", "export_configs": "匯出設定", + "fastgpt_marketplace": "FastGPT 插件市場", "feedback_count": "使用者回饋", "file_quote_link": "檔案連結", "file_recover": "檔案將會覆蓋目前內容", + "file_types": "可選文件類型", "file_upload": "檔案上傳", "file_upload_tip": "開啟後,可以上傳文件/圖片。文件保留 7 天,圖片保留 15 天。使用這個功能可能產生較多額外費用。為了確保使用體驗,使用這個功能時,請選擇上下文長度較大的 AI 模型。", + "find_more_tools": "探索更多", "go_to_chat": "前往對話", "go_to_run": "前往執行", "http_toolset_add_tips": "點擊添加按鈕來添加工具", "http_toolset_config_tips": "點擊開始配置來添加工具", + "image": "圖片", "image_upload": "圖片上傳", "image_upload_tip": "如何啟用模型圖片辨識功能", "import_configs": "匯入設定", @@ -126,6 +163,7 @@ "llm_not_support_vision": "這個模型不支援圖片辨識", "llm_use_vision": "圖片辨識", "llm_use_vision_tip": "點選模型選擇後,可以看到模型是否支援圖片辨識以及控制是否啟用圖片辨識的功能。啟用圖片辨識後,模型會讀取檔案連結中的圖片內容,並且如果使用者問題少於 500 字,會自動解析使用者問題中的圖片。", + "local_upload": "本地上傳", "log_chat_logs": "對話日誌", "log_detail": "日誌詳情", "logs_app_data": "數據看板", @@ -153,7 +191,7 @@ "logs_keys_customFeedback": "自訂回饋", "logs_keys_errorCount": "錯誤數量", "logs_keys_feedback": "使用者回饋", - "logs_keys_lastConversationTime": "上次對話時間", + "logs_keys_lastConversationTime": "最後對話時間", "logs_keys_messageCount": "訊息總數", "logs_keys_points": "積分消耗", "logs_keys_responseTime": "平均回應時長", @@ -223,6 +261,8 @@ "plugin_cost_per_times": "{{cost}} 積分/次", "plugin_dispatch": "外掛呼叫", "plugin_dispatch_tip": "賦予模型取得外部資料的能力,具體呼叫哪些外掛,將由模型自主決定,所有外掛都將以非串流模式執行。\n若選擇了外掛,知識庫呼叫將自動作為一個特殊的外掛。", + "plugin_offline_tips": "您的系統無法直接訪問插件市場數據,\n請手動複製網址並前往,以獲得更多插件", + "plugin_offline_url": "網址", "pro_modal_feature_1": "外部組織架構接入與多租戶", "pro_modal_feature_2": "團隊專屬的應用展示頁", "pro_modal_feature_3": "知識庫增強索引", @@ -293,10 +333,75 @@ "tool_detail": "工具詳情", "tool_input_param_tip": "這個外掛正常執行需要設定相關資訊", "tool_not_active": "該工具尚未激活", + "tool_offset_tips": "該工具已無法使用,將中斷應用運行,請立即替換", "tool_params_description_tips": "參數功能的描述,若作為工具調用參數,影響模型工具調用效果", "tool_run_free": "該工具運行無積分消耗", + "tool_soon_offset_tips": "該工具將在後續下線,為了您的業務穩定,請盡快替換", "tool_tip": "作為工具執行時,該字段是否作為工具響應結果", "tool_type_tools": "工具", + "plugin_db": "資源庫", + "toolkit_activation_label": "密鑰激活", + "toolkit_activation_not_required": "免激活", + "toolkit_activation_required": "需要激活", + "toolkit_add_resource": "添加資源", + "toolkit_author": "作者", + "toolkit_basic_config": "基礎配置", + "toolkit_basic_info": "基本信息", + "toolkit_call_points": "調用積分", + "toolkit_call_points_label": "調用積分", + "toolkit_config_system_key": "是否配置系統密鑰", + "toolkit_contribute_resource": "貢獻資源", + "toolkit_default_install": "默認安裝", + "toolkit_import_resource": "導入/更新資源", + "toolkit_inputs": "輸入參數", + "toolkit_install": "安裝", + "toolkit_installed": "已安裝", + "toolkit_key_price": "密鑰價格", + "toolkit_marketplace_download": "下載", + "toolkit_marketplace_download_count": "{{count}} 次下載", + "toolkit_marketplace_faq": "常見問題", + "toolkit_marketplace_search_placeholder": "搜索插件", + "toolkit_marketplace_submit_request": "提交需求", + "toolkit_marketplace_title": "探索更多資源", + "toolkit_name": "名稱", + "toolkit_no_call_points": "該工具無需調用積分", + "toolkit_no_params_info": "暫無參數信息", + "toolkit_no_plugins": "暫無插件", + "toolkit_no_user_guide": "暫無使用說明", + "toolkit_official": "官方", + "toolkit_open_marketplace": "打開資源市場", + "toolkit_outputs": "輸出參數", + "toolkit_params_description": "參數說明", + "toolkit_plugin_status": "插件狀態", + "toolkit_select_app": "選擇現有應用", + "toolkit_status": "狀態", + "toolkit_status_normal": "正常", + "toolkit_status_offline": "下線", + "toolkit_status_soon_offline": "即將下線", + "toolkit_system_key": "系統密鑰", + "toolkit_system_key_configured": "已配置", + "toolkit_system_key_cost": "系統密鑰價格(n積分/次)", + "toolkit_system_key_enable": "是否配置系統密鑰", + "toolkit_system_key_not_configured": "未配置", + "toolkit_system_key_tip": "對於需要密鑰的工具,您可為其配置系統密鑰,用戶可通過支付積分的方式使用系統密鑰。", + "toolkit_system_tool_config": "系統工具配置", + "toolkit_tags": "標籤", + "toolkit_tags_add": "添加標籤", + "toolkit_tags_delete_confirm": "確認刪除該標籤?", + "toolkit_tags_enter_name": "輸入標籤名稱", + "toolkit_tags_manage": "標籤管理", + "toolkit_tags_manage_title": "工具標籤管理", + "toolkit_tags_name": "標籤名稱", + "toolkit_tags_total": "共 {{count}} 個標籤", + "toolkit_token_fee": "Token 積分", + "toolkit_token_fee_tip": "開啟該開關後,用戶使用該插件,需要支付插件中Token的積分,並且同時會收取調用積分", + "toolkit_tool_config": "{{name}}配置", + "toolkit_tool_list": "工具列表", + "toolkit_tool_name": "工具名", + "toolkit_uninstall": "卸載", + "toolkit_uninstalled": "未安裝", + "toolkit_update_failed": "更新失敗", + "toolkit_user_guide": "使用說明", "tools_no_description": "這個工具沒有介紹~", "transition_to_workflow": "轉換成工作流程", "transition_to_workflow_create_new_placeholder": "建立新的應用程式,而不是修改目前應用程式", @@ -337,8 +442,18 @@ "type.hidden": "隱藏應用", "type_not_recognized": "未識別到應用程式類型", "un_auth": "無權限", + "upload_file_exists_filtered": "已自動過濾重複檔案", + "upload_file_extension_type_canSelectAudio": "音頻", + "upload_file_extension_type_canSelectCustomFileExtension": "自定義文件擴展類型", + "upload_file_extension_type_canSelectCustomFileExtension_placeholder": "文件擴展名", + "upload_file_extension_type_canSelectFile": "文檔", + "upload_file_extension_type_canSelectImg": "圖片", + "upload_file_extension_type_canSelectVideo": "視頻", + "upload_file_extension_types": "支持上傳的類型", "upload_file_max_amount": "最大檔案數量", "upload_file_max_amount_tip": "單輪對話中最大上傳檔案數量", + "upload_method": "上傳方式", + "url_upload": "文件鏈接", "variable.internal_type_desc": "僅在工作流內部使用,不會出現在對話框中", "variable.select type_desc": "會在站內對話和運行預覽中顯示輸入框,在分享鏈接中不會顯示此變量", "variable.textarea_type_desc": "允許使用者最多輸入 4000 字的對話框。", @@ -362,6 +477,8 @@ "workflow.form_input_description_placeholder": "例如:\n補充您的資訊", "workflow.form_input_tip": "這個模組可以設定多種輸入,引導使用者輸入特定內容。", "workflow.input_description_tip": "您可以新增一段說明文字,用來向使用者說明需要輸入的內容", + "workflow.plugin_offline_error": "該插件已下線,無法運行", + "workflow.plugin_soon_offline_warning": "該插件即將下線,建議儘快更換", "workflow.read_files": "檔案解析", "workflow.read_files_result": "檔案解析結果", "workflow.read_files_result_desc": "檔案原文,由檔案名稱和檔案內容組成,多個檔案之間透過橫線分隔。", diff --git a/packages/web/i18n/zh-Hant/chat.json b/packages/web/i18n/zh-Hant/chat.json index b67743ff0..ff04f633d 100644 --- a/packages/web/i18n/zh-Hant/chat.json +++ b/packages/web/i18n/zh-Hant/chat.json @@ -12,6 +12,7 @@ "chat_test_app": "除錯-{{name}}", "citations": "{{num}} 筆引用", "click_contextual_preview": "點選檢視上下文預覽", + "click_to_add_url": "點擊添加鏈接", "completion_finish_close": "連接斷開", "completion_finish_content_filter": "觸發安全風控", "completion_finish_function_call": "函式呼叫", @@ -23,6 +24,7 @@ "config_input_guide": "設定輸入導引", "config_input_guide_lexicon": "設定詞彙庫", "config_input_guide_lexicon_title": "設定詞彙庫", + "confirm_to_clear_share_chat_history": "確認清空所有聊天記錄?", "content_empty": "無內容", "contextual": "{{num}} 筆上下文", "contextual_preview": "上下文預覽 {{num}} 筆", @@ -75,6 +77,7 @@ "response.child total points": "子工作流程點數消耗", "response.dataset_concat_length": "合併總數", "response.node_inputs": "節點輸入", + "response.node_name": "節點名", "response_embedding_model": "向量模型", "response_embedding_model_tokens": "向量模型 Tokens", "response_hybrid_weight": "語義檢索 : 全文檢索 = {{emb}} : {{text}}", diff --git a/packages/web/i18n/zh-Hant/common.json b/packages/web/i18n/zh-Hant/common.json index 0a3ee744a..e6df24186 100644 --- a/packages/web/i18n/zh-Hant/common.json +++ b/packages/web/i18n/zh-Hant/common.json @@ -158,7 +158,7 @@ "code_error.outlink_error.invalid_link": "分享連結無效", "code_error.outlink_error.link_not_exist": "分享連結不存在", "code_error.outlink_error.un_auth_user": "身份驗證失敗", - "code_error.plugin_error.not_exist": "工具不存在", + "code_error.plugin_error.not_exist": "工具已刪除", "code_error.plugin_error.un_auth": "無權操作該工具", "code_error.system_error.community_version_num_limit": "超出開源版數量限制,請升級商業版:https://fastgpt.io", "code_error.system_error.license_app_amount_limit": "超出系統最大應用數量", @@ -823,6 +823,11 @@ "error.inheritPermissionError": "繼承權限錯誤", "error.invalid_params": "參數無效", "error.missingParams": "參數不足", + "error.s3_upload_auth_failed": "無權上傳文件", + "error.s3_upload_bucket_not_found": "找不到存儲桶", + "error.s3_upload_file_too_large": "文件需小於 {{max}}", + "error.s3_upload_network_error": "網絡異常", + "error.s3_upload_timeout": "上傳超時", "error.send_auth_code_too_frequently": "請勿頻繁取得驗證碼", "error.too_many_request": "請求太頻繁了,請稍後重試", "error.unKnow": "發生未預期的錯誤", @@ -869,6 +874,7 @@ "input.Repeat Value": "重複的值", "input_name": "輸入名稱", "invalid_time": "有效期", + "invalid_url": "無效的 URL 格式", "invalid_variable": "無效變數", "is_open": "是否開啟", "is_requesting": "請求中...", @@ -917,6 +923,7 @@ "navbar.Studio": "工作區", "navbar.Toolkit": "工具箱", "navbar.Tools": "工具", + "navbar.plugin": "插件庫", "new_create": "建立新項目", "next_step": "下一步", "no": "否", @@ -1219,7 +1226,7 @@ "support.wallet.usage.Time": "產生時間", "support.wallet.usage.Token Length": "Token 長度", "support.wallet.usage.Total": "總金額", - "support.wallet.usage.Total points": "AI 點數消耗", + "support.wallet.usage.Total points": "AI 積分總消耗", "support.wallet.usage.Usage Detail": "使用詳細資訊", "support.wallet.usage.Whisper": "語音輸入", "sure_delete_tool_cannot_undo": "是否確認刪除該工具?\n該操作無法撤回", diff --git a/packages/web/package.json b/packages/web/package.json index 72e2d09d9..9f3e6ea21 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -41,7 +41,10 @@ "react-photo-view": "^1.2.6", "recharts": "^2.15.0", "use-context-selector": "^1.4.4", - "zustand": "^4.3.5" + "zustand": "^4.3.5", + "react-markdown": "^9.0.1", + "rehype-external-links": "^3.0.0", + "remark-gfm": "^4.0.1" }, "devDependencies": { "@types/js-cookie": "^3.0.5", diff --git a/packages/web/styles/theme.ts b/packages/web/styles/theme.ts index 73e134b57..ba50380ef 100644 --- a/packages/web/styles/theme.ts +++ b/packages/web/styles/theme.ts @@ -80,6 +80,24 @@ const Button = defineStyleConfig({ w: '30px', borderRadius: 'sm' }, + base: { + fontSize: 'sm', + px: '4', + py: 0, + h: '34px', + minH: '34px', + fontWeight: 'medium', + borderRadius: 'sm' + }, + baseSquare: { + fontSize: 'sm', + px: '0', + py: 0, + h: '34px', + w: '34px', + fontWeight: 'medium', + borderRadius: 'sm' + }, md: { fontSize: 'sm', px: '4', @@ -306,7 +324,7 @@ const Button = defineStyleConfig({ } }, defaultProps: { - size: 'md', + size: 'base', variant: 'primary' } }); @@ -876,7 +894,7 @@ export const theme = extendTheme({ xxl: '1.25rem' }, shadows: { - 1: '0px 1px 2px 0px rgba(19, 51, 107, 0.05), 0px 0px 1px 0px rgba(19, 51, 107, 0.08)', + 1: '0 1px 2px 0 rgba(19, 51, 107, 0.05), 0 0 1px 0 rgba(19, 51, 107, 0.08)', 1.5: '0px 1px 2px 0px rgba(19, 51, 107, 0.10), 0px 0px 1px 0px rgba(19, 51, 107, 0.15)', 2: '0px 4px 4px 0px rgba(19, 51, 107, 0.05), 0px 0px 1px 0px rgba(19, 51, 107, 0.08)', 3: '0px 4px 10px 0px rgba(19, 51, 107, 0.08), 0px 0px 1px 0px rgba(19, 51, 107, 0.08)', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 694b01e7e..0e04082b2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,8 +72,8 @@ importers: specifier: ^1.2.8 version: 1.2.8 '@fastgpt-sdk/plugin': - specifier: ^0.1.19 - version: 0.1.19(@types/node@20.14.0) + specifier: 0.2.15 + version: 0.2.15(@types/node@20.14.0) axios: specifier: ^1.12.1 version: 1.12.1 @@ -258,6 +258,9 @@ importers: node-xlsx: specifier: ^0.24.0 version: 0.24.0 + p-limit: + specifier: ^7.2.0 + version: 7.2.0 papaparse: specifier: 5.4.1 version: 5.4.1 @@ -289,9 +292,12 @@ importers: specifier: ^3.17.0 version: 3.17.0 zod: - specifier: ^3.24.2 - version: 3.25.51 + specifier: ^4.1.12 + version: 4.1.12 devDependencies: + '@types/async-retry': + specifier: ^1.4.9 + version: 1.4.9 '@types/cookie': specifier: ^0.5.2 version: 0.5.4 @@ -436,12 +442,21 @@ importers: react-i18next: specifier: 14.1.2 version: 14.1.2(i18next@23.16.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-markdown: + specifier: ^9.0.1 + version: 9.1.0(@types/react@18.3.1)(react@18.3.1) react-photo-view: specifier: ^1.2.6 version: 1.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) recharts: specifier: ^2.15.0 version: 2.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rehype-external-links: + specifier: ^3.0.0 + version: 3.0.0 + remark-gfm: + specifier: ^4.0.1 + version: 4.0.1 use-context-selector: specifier: ^1.4.4 version: 1.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.26.0) @@ -645,8 +660,8 @@ importers: specifier: ^1.4.4 version: 1.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.26.0) zod: - specifier: ^3.24.2 - version: 3.24.2 + specifier: ^4.1.12 + version: 4.1.12 devDependencies: '@next/bundle-analyzer': specifier: ^15.5.6 @@ -706,6 +721,85 @@ importers: specifier: ^3.0.2 version: 3.1.1(@types/debug@4.1.12)(@types/node@20.17.24)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1) + projects/marketplace: + dependencies: + '@chakra-ui/anatomy': + specifier: 2.2.1 + version: 2.2.1 + '@chakra-ui/icons': + specifier: 2.1.1 + version: 2.1.1(@chakra-ui/system@2.6.1(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.0(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@chakra-ui/next-js': + specifier: 2.4.2 + version: 2.4.2(@chakra-ui/react@2.10.7(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.0(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(framer-motion@9.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(next@14.2.33(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.85.1))(react@18.3.1) + '@chakra-ui/react': + specifier: 2.10.7 + version: 2.10.7(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.0(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(framer-motion@9.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@chakra-ui/styled-system': + specifier: 2.9.1 + version: 2.9.1 + '@chakra-ui/system': + specifier: 2.6.1 + version: 2.6.1(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.0(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(react@18.3.1) + '@fastgpt/global': + specifier: workspace:* + version: link:../../packages/global + '@fastgpt/service': + specifier: workspace:* + version: link:../../packages/service + '@fastgpt/web': + specifier: workspace:* + version: link:../../packages/web + i18next: + specifier: 23.16.8 + version: 23.16.8 + next: + specifier: 14.2.33 + version: 14.2.33(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.85.1) + next-i18next: + specifier: 15.4.2 + version: 15.4.2(i18next@23.16.8)(next@14.2.33(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.85.1))(react-i18next@14.1.2(i18next@23.16.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + react: + specifier: 18.3.1 + version: 18.3.1 + react-dom: + specifier: 18.3.1 + version: 18.3.1(react@18.3.1) + react-i18next: + specifier: 14.1.2 + version: 14.1.2(i18next@23.16.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + zod: + specifier: ^4.1.12 + version: 4.1.12 + devDependencies: + '@svgr/webpack': + specifier: ^6.5.1 + version: 6.5.1 + '@types/node': + specifier: ^20 + version: 20.17.24 + '@types/react': + specifier: ^18 + version: 18.3.1 + '@types/react-dom': + specifier: ^18 + version: 18.3.0 + eslint: + specifier: ^8 + version: 8.57.1 + eslint-config-next: + specifier: 14.2.33 + version: 14.2.33(eslint@8.57.1)(typescript@5.8.2) + postcss: + specifier: ^8 + version: 8.5.6 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.18(tsx@4.20.6)(yaml@2.8.1) + typescript: + specifier: ^5 + version: 5.8.2 + projects/mcp_server: dependencies: '@fastgpt/global': @@ -830,6 +924,10 @@ importers: packages: + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -2234,8 +2332,8 @@ packages: resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@fastgpt-sdk/plugin@0.1.19': - resolution: {integrity: sha512-1UY7fcTy9Ve/SoH8dxeYOX+0uyvqVLwQDrQGpqRt8QbCdCsnH7ohqBbgZLITuq2UbgF4s9EN0BUNGtTEtEmNCw==} + '@fastgpt-sdk/plugin@0.2.15': + resolution: {integrity: sha512-z2JMoQ02gDHDM3feWemY10GyI9g0AH9g1IUAuqSfThkmPMhdLGsB4B6V6r2aSCUCb9FbdNqJblzriPYH9VtP9w==} '@fastify/accept-negotiator@1.1.0': resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} @@ -2989,18 +3087,30 @@ packages: '@next/env@14.2.32': resolution: {integrity: sha512-n9mQdigI6iZ/DF6pCTwMKeWgF2e8lg7qgt5M7HXMLtyhZYMnf/u905M18sSpPmHL9MKp9JHo56C6jrD2EvWxng==} + '@next/env@14.2.33': + resolution: {integrity: sha512-CgVHNZ1fRIlxkLhIX22flAZI/HmpDaZ8vwyJ/B0SDPTBuLZ1PJ+DWMjCHhqnExfmSQzA/PbZi8OAc7PAq2w9IA==} + '@next/env@15.3.5': resolution: {integrity: sha512-7g06v8BUVtN2njAX/r8gheoVffhiKFVt4nx74Tt6G4Hqw9HCLYQVx/GkH2qHvPtAHZaUNZ0VXAa0pQP6v1wk7g==} '@next/eslint-plugin-next@14.2.26': resolution: {integrity: sha512-SPEj1O5DAVTPaWD9XPupelfT2APNIgcDYD2OzEm328BEmHaglhmYNUvxhzfJYDr12AgAfW4V3UHSV93qaeELJA==} + '@next/eslint-plugin-next@14.2.33': + resolution: {integrity: sha512-DQTJFSvlB+9JilwqMKJ3VPByBNGxAGFTfJ7BuFj25cVcbBy7jm88KfUN+dngM4D3+UxZ8ER2ft+WH9JccMvxyg==} + '@next/swc-darwin-arm64@14.2.32': resolution: {integrity: sha512-osHXveM70zC+ilfuFa/2W6a1XQxJTvEhzEycnjUaVE8kpUS09lDpiDDX2YLdyFCzoUbvbo5r0X1Kp4MllIOShw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@next/swc-darwin-arm64@14.2.33': + resolution: {integrity: sha512-HqYnb6pxlsshoSTubdXKu15g3iivcbsMXg4bYpjL2iS/V6aQot+iyF4BUc2qA/J/n55YtvE4PHMKWBKGCF/+wA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@next/swc-darwin-arm64@15.3.5': resolution: {integrity: sha512-lM/8tilIsqBq+2nq9kbTW19vfwFve0NR7MxfkuSUbRSgXlMQoJYg+31+++XwKVSXk4uT23G2eF/7BRIKdn8t8w==} engines: {node: '>= 10'} @@ -3013,6 +3123,12 @@ packages: cpu: [x64] os: [darwin] + '@next/swc-darwin-x64@14.2.33': + resolution: {integrity: sha512-8HGBeAE5rX3jzKvF593XTTFg3gxeU4f+UWnswa6JPhzaR6+zblO5+fjltJWIZc4aUalqTclvN2QtTC37LxvZAA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-darwin-x64@15.3.5': resolution: {integrity: sha512-WhwegPQJ5IfoUNZUVsI9TRAlKpjGVK0tpJTL6KeiC4cux9774NYE9Wu/iCfIkL/5J8rPAkqZpG7n+EfiAfidXA==} engines: {node: '>= 10'} @@ -3025,6 +3141,12 @@ packages: cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-gnu@14.2.33': + resolution: {integrity: sha512-JXMBka6lNNmqbkvcTtaX8Gu5by9547bukHQvPoLe9VRBx1gHwzf5tdt4AaezW85HAB3pikcvyqBToRTDA4DeLw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-gnu@15.3.5': resolution: {integrity: sha512-LVD6uMOZ7XePg3KWYdGuzuvVboxujGjbcuP2jsPAN3MnLdLoZUXKRc6ixxfs03RH7qBdEHCZjyLP/jBdCJVRJQ==} engines: {node: '>= 10'} @@ -3037,6 +3159,12 @@ packages: cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-musl@14.2.33': + resolution: {integrity: sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-musl@15.3.5': resolution: {integrity: sha512-k8aVScYZ++BnS2P69ClK7v4nOu702jcF9AIHKu6llhHEtBSmM2zkPGl9yoqbSU/657IIIb0QHpdxEr0iW9z53A==} engines: {node: '>= 10'} @@ -3049,6 +3177,12 @@ packages: cpu: [x64] os: [linux] + '@next/swc-linux-x64-gnu@14.2.33': + resolution: {integrity: sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-gnu@15.3.5': resolution: {integrity: sha512-2xYU0DI9DGN/bAHzVwADid22ba5d/xrbrQlr2U+/Q5WkFUzeL0TDR963BdrtLS/4bMmKZGptLeg6282H/S2i8A==} engines: {node: '>= 10'} @@ -3061,6 +3195,12 @@ packages: cpu: [x64] os: [linux] + '@next/swc-linux-x64-musl@14.2.33': + resolution: {integrity: sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-musl@15.3.5': resolution: {integrity: sha512-TRYIqAGf1KCbuAB0gjhdn5Ytd8fV+wJSM2Nh2is/xEqR8PZHxfQuaiNhoF50XfY90sNpaRMaGhF6E+qjV1b9Tg==} engines: {node: '>= 10'} @@ -3073,6 +3213,12 @@ packages: cpu: [arm64] os: [win32] + '@next/swc-win32-arm64-msvc@14.2.33': + resolution: {integrity: sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-arm64-msvc@15.3.5': resolution: {integrity: sha512-h04/7iMEUSMY6fDGCvdanKqlO1qYvzNxntZlCzfE8i5P0uqzVQWQquU1TIhlz0VqGQGXLrFDuTJVONpqGqjGKQ==} engines: {node: '>= 10'} @@ -3085,12 +3231,24 @@ packages: cpu: [ia32] os: [win32] + '@next/swc-win32-ia32-msvc@14.2.33': + resolution: {integrity: sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + '@next/swc-win32-x64-msvc@14.2.32': resolution: {integrity: sha512-2N0lSoU4GjfLSO50wvKpMQgKd4HdI2UHEhQPPPnlgfBJlOgJxkjpkYBqzk08f1gItBB6xF/n+ykso2hgxuydsA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@next/swc-win32-x64-msvc@14.2.33': + resolution: {integrity: sha512-nOjfZMy8B94MdisuzZo9/57xuFVLHJaDj5e/xrduJp9CV2/HrfxTRH2fbyLe+K9QT41WBLUd4iXX3R7jBp0EUg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@next/swc-win32-x64-msvc@15.3.5': resolution: {integrity: sha512-5fhH6fccXxnX2KhllnGhkYMndhOiLOLEiVGYjP2nizqeGWkN10sA9taATlXwake2E2XMvYZjjz0Uj7T0y+z1yw==} engines: {node: '>= 10'} @@ -3936,6 +4094,9 @@ packages: '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + '@types/async-retry@1.4.9': + resolution: {integrity: sha512-s1ciZQJzRh3708X/m3vPExr5KJlzlZJvXsKpbtE2luqNcbROr64qU+3KpJsYHqWMeaxI839OvXf9PrUSw1Xtyg==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -4224,6 +4385,9 @@ packages: '@types/request-ip@0.0.37': resolution: {integrity: sha512-uw6/i3rQnpznxD7LtLaeuZytLhKZK6bRoTS6XVJlwxIOoOpEBU7bgKoVXDNtOg4Xl6riUKHa9bjMVrL6ESqYlQ==} + '@types/retry@0.12.5': + resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} + '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -4757,6 +4921,9 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -4767,6 +4934,9 @@ packages: arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -5077,6 +5247,10 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -5476,6 +5650,11 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + csso@4.2.0: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} @@ -5851,6 +6030,9 @@ packages: dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5873,6 +6055,9 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -6100,6 +6285,15 @@ packages: typescript: optional: true + eslint-config-next@14.2.33: + resolution: {integrity: sha512-e2W+waB+I5KuoALAtKZl3WVDU4Q1MS6gF/gdcwHh0WOAkHf4TZI6dPjd25wKhlZFAsFrVKy24Z7/IwOhn8dHBw==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -7457,6 +7651,10 @@ packages: node-notifier: optional: true + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + jiti@2.6.0: resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} hasBin: true @@ -7735,6 +7933,10 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -8411,6 +8613,9 @@ packages: resolution: {integrity: sha512-M6DIQjTqKeqXH5HLbLMxwcK5XfXHw30u5ap6EZmu7QVmcF/gnh2wS/EOiQ4MTbXz/vQeoXrmycPlVRM00WSslg==} engines: {node: '>= 8.0'} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + named-placeholders@1.1.3: resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} engines: {node: '>=12.0.0'} @@ -8487,6 +8692,24 @@ packages: sass: optional: true + next@14.2.33: + resolution: {integrity: sha512-GiKHLsD00t4ACm1p00VgrI0rUFAC9cRDGReKyERlM57aeEZkOQGcZTpIbsGn0b562FTPJWmYfKwplfO9EaT6ng==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + next@15.3.5: resolution: {integrity: sha512-RkazLBMMDJSJ4XZQ81kolSpwiCt907l0xcgcpF4xC2Vml6QVcPNXW0NQRwQ80FFtSn7UM52XN0anaw8TEJXaiw==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} @@ -8602,6 +8825,10 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} @@ -8731,6 +8958,10 @@ packages: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} + p-limit@7.2.0: + resolution: {integrity: sha512-ATHLtwoTNDloHRFFxFJdHnG6n2WUeFjaR8XQMFdKIv0xkXjrER8/iG9iu265jOM95zXHAfv9oTkqhrfbIzosrQ==} + engines: {node: '>=20'} + p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -8978,14 +9209,53 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.1.0: + resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -9342,6 +9612,9 @@ packages: react: '>=17' react-dom: '>=17' + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -10063,6 +10336,11 @@ packages: stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + superagent@8.1.2: resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} engines: {node: '>=6.4.0 <13 || >=14'} @@ -10114,6 +10392,11 @@ packages: tailwind-merge@2.6.0: resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + tailwindcss@3.4.18: + resolution: {integrity: sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==} + engines: {node: '>=14.0.0'} + hasBin: true + tailwindcss@4.1.14: resolution: {integrity: sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==} @@ -10177,6 +10460,13 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thread-stream@3.1.0: resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} @@ -10303,6 +10593,9 @@ packages: resolution: {integrity: sha512-Du/ZW2RfwV/D4cmA5rXafYjBQVuvu4qGiEEla4EmEHVHgRdx68Gftx7i66jn2bzHPwSVZY36Ae6OuDn9el4ZKA==} engines: {node: '>=14.13.1'} + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-jest@29.2.6: resolution: {integrity: sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} @@ -11136,6 +11429,10 @@ packages: resolution: {integrity: sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw==} engines: {node: '>=12.20'} + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + zhead@2.2.4: resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==} @@ -11163,12 +11460,12 @@ packages: zod@3.24.1: resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} - zod@3.24.2: - resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} - zod@3.25.51: resolution: {integrity: sha512-TQSnBldh+XSGL+opiSIq0575wvDPqu09AqWe1F7JhUMKY+M91/aGlK4MhpVNO7MgYfHcVCB1ffwAUTJzllKJqg==} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.1.11: resolution: {integrity: sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==} @@ -11201,6 +11498,8 @@ packages: snapshots: + '@alloc/quick-lru@5.2.0': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 @@ -12128,6 +12427,14 @@ snapshots: next: 14.2.32(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.85.1) react: 18.3.1 + '@chakra-ui/next-js@2.4.2(@chakra-ui/react@2.10.7(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.0(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(framer-motion@9.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(next@14.2.33(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.85.1))(react@18.3.1)': + dependencies: + '@chakra-ui/react': 2.10.7(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@emotion/styled@11.11.0(@emotion/react@11.11.1(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(framer-motion@9.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@emotion/cache': 11.14.0 + '@emotion/react': 11.11.1(@types/react@18.3.1)(react@18.3.1) + next: 14.2.33(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.85.1) + react: 18.3.1 + '@chakra-ui/object-utils@2.1.0': {} '@chakra-ui/react-use-safe-layout-effect@2.1.0(react@18.3.1)': @@ -12730,11 +13037,11 @@ snapshots: '@eslint/js@8.57.1': {} - '@fastgpt-sdk/plugin@0.1.19(@types/node@20.14.0)': + '@fastgpt-sdk/plugin@0.2.15(@types/node@20.14.0)': dependencies: '@fortaine/fetch-event-source': 3.0.6 - '@ts-rest/core': 3.52.1(@types/node@20.14.0)(zod@3.25.51) - zod: 3.25.51 + '@ts-rest/core': 3.52.1(@types/node@20.14.0)(zod@3.25.76) + zod: 3.25.76 transitivePeerDependencies: - '@types/node' @@ -13640,60 +13947,93 @@ snapshots: '@next/env@14.2.32': {} + '@next/env@14.2.33': {} + '@next/env@15.3.5': {} '@next/eslint-plugin-next@14.2.26': dependencies: glob: 10.3.10 + '@next/eslint-plugin-next@14.2.33': + dependencies: + glob: 10.3.10 + '@next/swc-darwin-arm64@14.2.32': optional: true + '@next/swc-darwin-arm64@14.2.33': + optional: true + '@next/swc-darwin-arm64@15.3.5': optional: true '@next/swc-darwin-x64@14.2.32': optional: true + '@next/swc-darwin-x64@14.2.33': + optional: true + '@next/swc-darwin-x64@15.3.5': optional: true '@next/swc-linux-arm64-gnu@14.2.32': optional: true + '@next/swc-linux-arm64-gnu@14.2.33': + optional: true + '@next/swc-linux-arm64-gnu@15.3.5': optional: true '@next/swc-linux-arm64-musl@14.2.32': optional: true + '@next/swc-linux-arm64-musl@14.2.33': + optional: true + '@next/swc-linux-arm64-musl@15.3.5': optional: true '@next/swc-linux-x64-gnu@14.2.32': optional: true + '@next/swc-linux-x64-gnu@14.2.33': + optional: true + '@next/swc-linux-x64-gnu@15.3.5': optional: true '@next/swc-linux-x64-musl@14.2.32': optional: true + '@next/swc-linux-x64-musl@14.2.33': + optional: true + '@next/swc-linux-x64-musl@15.3.5': optional: true '@next/swc-win32-arm64-msvc@14.2.32': optional: true + '@next/swc-win32-arm64-msvc@14.2.33': + optional: true + '@next/swc-win32-arm64-msvc@15.3.5': optional: true '@next/swc-win32-ia32-msvc@14.2.32': optional: true + '@next/swc-win32-ia32-msvc@14.2.33': + optional: true + '@next/swc-win32-x64-msvc@14.2.32': optional: true + '@next/swc-win32-x64-msvc@14.2.33': + optional: true + '@next/swc-win32-x64-msvc@15.3.5': optional: true @@ -14714,10 +15054,10 @@ snapshots: '@trysound/sax@0.2.0': {} - '@ts-rest/core@3.52.1(@types/node@20.14.0)(zod@3.25.51)': + '@ts-rest/core@3.52.1(@types/node@20.14.0)(zod@3.25.76)': optionalDependencies: '@types/node': 20.14.0 - zod: 3.25.51 + zod: 3.25.76 '@tsconfig/node10@1.0.11': {} @@ -14732,6 +15072,10 @@ snapshots: tslib: 2.8.1 optional: true + '@types/async-retry@1.4.9': + dependencies: + '@types/retry': 0.12.5 + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.26.10 @@ -15090,6 +15434,8 @@ snapshots: dependencies: '@types/node': 20.17.24 + '@types/retry@0.12.5': {} + '@types/semver@7.5.8': {} '@types/send@0.17.4': @@ -15457,7 +15803,7 @@ snapshots: '@vue/shared': 3.5.13 estree-walker: 2.0.2 magic-string: 0.30.17 - postcss: 8.5.3 + postcss: 8.5.6 source-map-js: 1.2.1 '@vue/compiler-sfc@3.5.22': @@ -15816,6 +16162,8 @@ snapshots: ansi-styles@6.2.1: {} + any-promise@1.3.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -15825,6 +16173,8 @@ snapshots: arg@4.1.3: {} + arg@5.0.2: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -16250,6 +16600,8 @@ snapshots: callsites@3.1.0: {} + camelcase-css@2.0.1: {} + camelcase@5.3.1: {} camelcase@6.3.0: {} @@ -16663,6 +17015,8 @@ snapshots: css-what@6.1.0: {} + cssesc@3.0.0: {} + csso@4.2.0: dependencies: css-tree: 1.1.3 @@ -17029,6 +17383,8 @@ snapshots: asap: 2.0.6 wrappy: 1.0.2 + didyoumean@1.2.2: {} + diff-sequences@29.6.3: {} diff@4.0.2: {} @@ -17043,6 +17399,8 @@ snapshots: dependencies: path-type: 4.0.0 + dlv@1.1.3: {} + doctrine@2.1.0: dependencies: esutils: 2.0.3 @@ -17417,6 +17775,26 @@ snapshots: - eslint-plugin-import-x - supports-color + eslint-config-next@14.2.33(eslint@8.57.1)(typescript@5.8.2): + dependencies: + '@next/eslint-plugin-next': 14.2.33 + '@rushstack/eslint-patch': 1.11.0 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1)(typescript@5.8.2) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.2) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.9.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) + eslint-plugin-react: 7.37.4(eslint@8.57.1) + eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1) + optionalDependencies: + typescript: 5.8.2 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 @@ -17425,6 +17803,21 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1))(eslint@8.57.1): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.0 + eslint: 8.57.1 + get-tsconfig: 4.10.0 + is-bun-module: 1.3.0 + oxc-resolver: 5.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.12 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + transitivePeerDependencies: + - supports-color + eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.31.0)(eslint@8.56.0): dependencies: '@nolyfill/is-core-module': 1.0.39 @@ -17466,6 +17859,17 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.2) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.9.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1))(eslint@8.57.1) + transitivePeerDependencies: + - supports-color + eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 @@ -17506,6 +17910,35 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.2) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.2))(eslint-import-resolver-typescript@3.9.0)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 @@ -19400,6 +19833,8 @@ snapshots: - supports-color - ts-node + jiti@1.21.7: {} + jiti@2.6.0: optional: true @@ -19645,6 +20080,8 @@ snapshots: lilconfig@2.1.0: {} + lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} lint-staged@13.3.0: @@ -20702,6 +21139,12 @@ snapshots: seq-queue: 0.0.5 sqlstring: 2.3.3 + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + named-placeholders@1.1.3: dependencies: lru-cache: 7.18.3 @@ -20756,6 +21199,18 @@ snapshots: react: 18.3.1 react-i18next: 14.1.2(i18next@23.16.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next-i18next@15.4.2(i18next@23.16.8)(next@14.2.33(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.85.1))(react-i18next@14.1.2(i18next@23.16.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.10 + '@types/hoist-non-react-statics': 3.3.6 + core-js: 3.41.0 + hoist-non-react-statics: 3.3.2 + i18next: 23.16.8 + i18next-fs-backend: 2.6.0 + next: 14.2.33(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.85.1) + react: 18.3.1 + react-i18next: 14.1.2(i18next@23.16.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next-i18next@15.4.2(i18next@23.16.8)(next@15.3.5(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.85.1))(react-i18next@14.1.2(i18next@23.16.8)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1): dependencies: '@babel/runtime': 7.26.10 @@ -20849,6 +21304,33 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@14.2.33(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.85.1): + dependencies: + '@next/env': 14.2.33 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001751 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.26.10)(react@18.3.1) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.33 + '@next/swc-darwin-x64': 14.2.33 + '@next/swc-linux-arm64-gnu': 14.2.33 + '@next/swc-linux-arm64-musl': 14.2.33 + '@next/swc-linux-x64-gnu': 14.2.33 + '@next/swc-linux-x64-musl': 14.2.33 + '@next/swc-win32-arm64-msvc': 14.2.33 + '@next/swc-win32-ia32-msvc': 14.2.33 + '@next/swc-win32-x64-msvc': 14.2.33 + '@opentelemetry/api': 1.9.0 + sass: 1.85.1 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + next@15.3.5(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.85.1): dependencies: '@next/env': 15.3.5 @@ -20964,6 +21446,8 @@ snapshots: object-assign@4.1.1: {} + object-hash@3.0.0: {} + object-inspect@1.13.4: {} object-keys@1.1.1: {} @@ -21146,6 +21630,10 @@ snapshots: dependencies: yocto-queue: 1.2.0 + p-limit@7.2.0: + dependencies: + yocto-queue: 1.2.1 + p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -21383,13 +21871,40 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.4.31: + postcss-import@15.1.0(postcss@8.5.6): dependencies: - nanoid: 3.3.9 - picocolors: 1.1.1 - source-map-js: 1.2.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 - postcss@8.5.3: + postcss-js@4.1.0(postcss@8.5.6): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.6 + + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.6)(yaml@2.8.1): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 1.21.7 + postcss: 8.5.6 + tsx: 4.20.6 + yaml: 2.8.1 + + postcss-nested@6.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.31: dependencies: nanoid: 3.3.9 picocolors: 1.1.1 @@ -21802,6 +22317,10 @@ snapshots: - '@types/react' - immer + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -22699,6 +23218,16 @@ snapshots: stylis@4.3.6: {} + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + superagent@8.1.2: dependencies: component-emitter: 1.3.1 @@ -22757,6 +23286,34 @@ snapshots: tailwind-merge@2.6.0: {} + tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-import: 15.1.0(postcss@8.5.6) + postcss-js: 4.1.0(postcss@8.5.6) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.6)(yaml@2.8.1) + postcss-nested: 6.2.0(postcss@8.5.6) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - tsx + - yaml + tailwindcss@4.1.14: {} tapable@2.2.1: {} @@ -22837,6 +23394,14 @@ snapshots: text-table@0.2.0: {} + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + thread-stream@3.1.0: dependencies: real-require: 0.2.0 @@ -22925,6 +23490,8 @@ snapshots: ts-deepmerge@7.0.3: {} + ts-interface-checker@0.1.13: {} + ts-jest@29.2.6(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@20.17.24)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.24)(typescript@5.8.2)))(typescript@5.8.2): dependencies: bs-logger: 0.2.6 @@ -23451,7 +24018,7 @@ snapshots: vite@5.4.14(@types/node@24.0.13)(lightningcss@1.30.1)(sass@1.85.1)(terser@5.39.0): dependencies: esbuild: 0.21.5 - postcss: 8.5.3 + postcss: 8.5.6 rollup: 4.35.0 optionalDependencies: '@types/node': 24.0.13 @@ -23463,7 +24030,7 @@ snapshots: vite@6.2.2(@types/node@20.17.24)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.11 - postcss: 8.5.3 + postcss: 8.5.6 rollup: 4.35.0 optionalDependencies: '@types/node': 20.17.24 @@ -23478,7 +24045,7 @@ snapshots: vite@6.2.2(@types/node@24.0.13)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.11 - postcss: 8.5.3 + postcss: 8.5.6 rollup: 4.35.0 optionalDependencies: '@types/node': 24.0.13 @@ -23932,6 +24499,8 @@ snapshots: yocto-queue@1.2.0: {} + yocto-queue@1.2.1: {} + zhead@2.2.4: {} zhlint@0.7.4(@types/node@24.0.13)(lightningcss@1.30.1)(sass@1.85.1)(terser@5.39.0)(typescript@5.8.2): @@ -23976,10 +24545,10 @@ snapshots: zod@3.24.1: {} - zod@3.24.2: {} - zod@3.25.51: {} + zod@3.25.76: {} + zod@4.1.11: {} zod@4.1.12: {} diff --git a/projects/app/.env.template b/projects/app/.env.template index 21af4f6ce..0fbeda94a 100644 --- a/projects/app/.env.template +++ b/projects/app/.env.template @@ -76,9 +76,10 @@ SIGNOZ_BASE_URL= SIGNOZ_SERVICE_NAME= SIGNOZ_STORE_LEVEL=warn +# 插件市场 +MARKETPLACE_URL=https://marketplace.fastgpt.cn + # 安全配置 -# 对话文件 n 天过期 -CHAT_FILE_EXPIRE_TIME=7 # 启动 IP 限流(true),部分接口增加了 ip 限流策略,防止非正常请求操作。 USE_IP_LIMIT=false # 工作流最大运行次数,避免极端的死循环情况 diff --git a/projects/app/next.config.js b/projects/app/next.config.js index a8f63a764..6f8e2bf93 100644 --- a/projects/app/next.config.js +++ b/projects/app/next.config.js @@ -115,7 +115,7 @@ const nextConfig = { // 启用持久化缓存 config.cache = { type: 'filesystem', - name: isServer ? 'server' : 'client', + name: 'client', buildDependencies: { config: [__filename] }, diff --git a/projects/app/package.json b/projects/app/package.json index aa6b143cf..e1ae1069c 100644 --- a/projects/app/package.json +++ b/projects/app/package.json @@ -1,6 +1,6 @@ { "name": "app", - "version": "4.13.2", + "version": "4.14.0", "private": false, "scripts": { "dev": "npm run build:workers && next dev", @@ -69,7 +69,7 @@ "request-ip": "^3.3.0", "sass": "^1.58.3", "use-context-selector": "^1.4.4", - "zod": "^3.24.2" + "zod": "^4.1.12" }, "devDependencies": { "@next/bundle-analyzer": "^15.5.6", diff --git a/projects/app/src/components/Layout/WorkorderButton.tsx b/projects/app/src/components/Layout/WorkorderButton.tsx index 582f14981..7177b46c5 100644 --- a/projects/app/src/components/Layout/WorkorderButton.tsx +++ b/projects/app/src/components/Layout/WorkorderButton.tsx @@ -14,7 +14,7 @@ import { useMemo } from 'react'; const WorkOrderShowRouter: { [key: string]: boolean } = { '/dashboard/apps': true, '/dataset/list': true, - '/toolkit': true + '/plugin': true }; function WorkorderButton() { diff --git a/projects/app/src/components/Layout/navbar.tsx b/projects/app/src/components/Layout/navbar.tsx index a36233179..fecc08db3 100644 --- a/projects/app/src/components/Layout/navbar.tsx +++ b/projects/app/src/components/Layout/navbar.tsx @@ -3,7 +3,6 @@ import { Box, type BoxProps, Flex, Link, type LinkProps } from '@chakra-ui/react import { useRouter } from 'next/router'; import { useUserStore } from '@/web/support/user/useUserStore'; import { useChatStore } from '@/web/core/chat/context/useChatStore'; -import { HUMAN_ICON } from '@fastgpt/global/common/system/constants'; import NextLink from 'next/link'; import Badge from '../Badge'; import Avatar from '@fastgpt/web/components/common/Avatar'; @@ -47,15 +46,15 @@ const Navbar = ({ unread }: { unread: number }) => { () => [ { label: t('common:navbar.Chat'), - icon: 'core/chat/chatLight', - activeIcon: 'core/chat/chatFill', + icon: 'navbar/chatLight', + activeIcon: 'navbar/chatFill', link: `/chat?appId=${lastChatAppId}&pane=${lastPane}`, activeLink: ['/chat'] }, { label: t('common:navbar.Studio'), - icon: 'core/app/aiLight', - activeIcon: 'core/app/aiFill', + icon: 'navbar/dashboardLight', + activeIcon: 'navbar/dashboardFill', link: `/dashboard/apps`, activeLink: [ '/dashboard/apps', @@ -69,15 +68,22 @@ const Navbar = ({ unread }: { unread: number }) => { }, { label: t('common:navbar.Datasets'), - icon: 'core/dataset/datasetLight', - activeIcon: 'core/dataset/datasetFill', + icon: 'navbar/datasetLight', + activeIcon: 'navbar/datasetFill', link: `/dataset/list`, activeLink: ['/dataset/list', '/dataset/detail'] }, + { + label: t('common:navbar.plugin'), + icon: 'core/app/pluginLight', + activeIcon: 'core/app/pluginFill', + link: '/plugin/tool', + activeLink: ['/plugin/tool'] + }, { label: t('common:navbar.Account'), - icon: 'support/user/userLight', - activeIcon: 'support/user/userFill', + icon: 'navbar/userLight', + activeIcon: 'navbar/userFill', link: '/account/info', activeLink: [ '/account/bill', @@ -91,13 +97,24 @@ const Navbar = ({ unread }: { unread: number }) => { '/account/promotion', '/account/model' ] - } + }, + ...(userInfo?.username === 'root' + ? [ + { + label: t('common:navbar.Config'), + icon: 'support/config/configLight', + activeIcon: 'support/config/configFill', + link: '/config/tool', + activeLink: ['/config/tool', '/config/tool/marketplace'] + } + ] + : []) ], - [lastChatAppId, lastPane, t] + [lastChatAppId, lastPane, t, userInfo?.username] ); const isSecondNavbarPage = useMemo(() => { - return ['/toolkit'].includes(router.pathname); + return ['/plugin'].includes(router.pathname); }, [router.pathname]); return ( @@ -166,8 +183,8 @@ const Navbar = ({ unread }: { unread: number }) => { name: item.icon as any, color: 'myGray.400' })} - width={'20px'} - height={'20px'} + width={'24px'} + height={'24px'} /> { const router = useRouter(); + const { userInfo } = useUserStore(); const { t } = useTranslation(); const { lastChatAppId, lastPane } = useChatStore(); @@ -45,6 +47,13 @@ const NavbarPhone = ({ unread }: { unread: number }) => { activeLink: ['/dataset/list', '/dataset/detail'], unread: 0 }, + { + label: t('common:navbar.plugin'), + icon: 'core/app/pluginLight', + activeIcon: 'core/app/pluginFill', + link: '/plugin/tool', + activeLink: ['/plugin/tool'] + }, { label: t('common:navbar.Account'), icon: 'support/user/userLight', @@ -62,9 +71,20 @@ const NavbarPhone = ({ unread }: { unread: number }) => { '/account/model' ], unread - } + }, + ...(userInfo?.username === 'root' + ? [ + { + label: t('common:navbar.Config'), + icon: 'support/config/configLight', + activeIcon: 'support/config/configFill', + link: '/config/tool', + activeLink: ['/config/tool', '/config/tool/marketplace'] + } + ] + : []) ], - [t, lastChatAppId, lastPane, unread] + [lastChatAppId, lastPane, t, userInfo?.username] ); return ( diff --git a/projects/app/src/components/Select/AIModelSelector.tsx b/projects/app/src/components/Select/AIModelSelector.tsx index 8a21e2bd1..104f8cb3b 100644 --- a/projects/app/src/components/Select/AIModelSelector.tsx +++ b/projects/app/src/components/Select/AIModelSelector.tsx @@ -13,9 +13,17 @@ import React, { useCallback, useMemo, useState } from 'react'; type Props = SelectProps & { disableTip?: string; noOfLines?: ResponsiveValue; + cacheModel?: boolean; }; -const OneRowSelector = ({ list, onChange, disableTip, noOfLines, ...props }: Props) => { +const OneRowSelector = ({ + list, + onChange, + disableTip, + noOfLines, + cacheModel = true, + ...props +}: Props) => { const { t } = useTranslation(); const { llmModelList, @@ -30,7 +38,9 @@ const OneRowSelector = ({ list, onChange, disableTip, noOfLines, ...props }: Pro const { data: myModels } = useRequest2( async () => { const set = await getMyModelList(); - set.add(props.value); + if (cacheModel) { + set.add(props.value); + } return set; }, { diff --git a/projects/app/src/components/Select/FileSelector.tsx b/projects/app/src/components/Select/FileSelector.tsx deleted file mode 100644 index bf10bd09c..000000000 --- a/projects/app/src/components/Select/FileSelector.tsx +++ /dev/null @@ -1,125 +0,0 @@ -import { useTranslation } from 'next-i18next'; -import type { UseFormReturn } from 'react-hook-form'; -import { useFieldArray } from 'react-hook-form'; -import { useFileUpload } from '../core/chat/ChatContainer/ChatBox/hooks/useFileUpload'; -import { useEffect } from 'react'; -import { isEqual } from 'lodash'; -import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; -import { Button, Flex } from '@chakra-ui/react'; -import MyIcon from '@fastgpt/web/components/common/Icon'; -import FilePreview from '../core/chat/ChatContainer/components/FilePreview'; -import EmptyTip from '@fastgpt/web/components/common/EmptyTip'; -import { useChatStore } from '@/web/core/chat/context/useChatStore'; - -const FileSelector = ({ - onChange, - value, - - form, - fieldName, - - canSelectFile = true, - canSelectImg = false, - maxFiles = 5, - setUploading, - - isDisabled = false -}: { - onChange: (...event: any[]) => void; - value: any; - - form?: UseFormReturn; - fieldName?: string; - - canSelectFile?: boolean; - canSelectImg?: boolean; - maxFiles?: number; - setUploading?: (uploading: boolean) => void; - - isDisabled?: boolean; -}) => { - const { t } = useTranslation(); - - const { appId, chatId, outLinkAuthData } = useChatStore(); - const fileCtrl = useFieldArray({ - control: form?.control, - name: fieldName as any - }); - const { - File, - fileList, - selectFileIcon, - uploadFiles, - onOpenSelectFile, - onSelectFile, - removeFiles, - replaceFiles, - hasFileUploading - } = useFileUpload({ - fileSelectConfig: { - canSelectFile, - canSelectImg, - maxFiles - }, - outLinkAuthData, - appId, - chatId, - fileCtrl: fileCtrl as any - }); - - useEffect(() => { - if (!Array.isArray(value)) { - replaceFiles([]); - return; - } - - // compare file names and update if different - const valueFileNames = value.map((item) => item.name); - const currentFileNames = fileList.map((item) => item.name); - if (!isEqual(valueFileNames, currentFileNames)) { - replaceFiles(value); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [value]); - - useRequest2(uploadFiles, { - manual: false, - errorToast: t('common:upload_file_error'), - refreshDeps: [fileList] - }); - - useEffect(() => { - setUploading?.(hasFileUploading); - onChange( - fileList.map((item) => ({ - type: item.type, - name: item.name, - url: item.url, - icon: item.icon - })) - ); - }, [fileList, hasFileUploading, onChange, setUploading]); - - return ( - <> - - - - - {fileList.length === 0 && } - - onSelectFile({ files })} /> - - ); -}; - -export default FileSelector; diff --git a/projects/app/src/components/common/Textarea/MyTextarea/index.tsx b/projects/app/src/components/common/Textarea/MyTextarea/index.tsx index 219e4a2f8..4108261f3 100644 --- a/projects/app/src/components/common/Textarea/MyTextarea/index.tsx +++ b/projects/app/src/components/common/Textarea/MyTextarea/index.tsx @@ -1,4 +1,4 @@ -import React, { useRef, useState } from 'react'; +import React, { useCallback, useLayoutEffect, useRef } from 'react'; import { Box, @@ -100,7 +100,27 @@ const Editor = React.memo(function Editor({ showResize?: boolean; }) { const { t } = useTranslation(); - const [scrollHeight, setScrollHeight] = useState(0); + const cursorPositionRef = useRef(null); + + // 使用 useRef 保存 onChange,避免依赖变化导致 handleChange 重新创建 + const onChangeRef = useRef(onChange); + onChangeRef.current = onChange; + + // 使用 useLayoutEffect 同步恢复光标位置,避免闪烁 + useLayoutEffect(() => { + if (textareaRef.current && cursorPositionRef.current !== null) { + const pos = cursorPositionRef.current; + textareaRef.current.setSelectionRange(pos, pos); + cursorPositionRef.current = null; + } + }); + + // 移除 onChange 依赖,使 handleChange 引用永远稳定 + const handleChange = useCallback((e: React.ChangeEvent) => { + // 保存光标位置 + cursorPositionRef.current = e.target.selectionStart; + onChangeRef.current?.(e); + }, []); return ( @@ -120,25 +140,25 @@ const Editor = React.memo(function Editor({ {...props} maxH={`${maxH}px`} minH={`${minH}px`} - onChange={(e) => { - setScrollHeight(e.target.scrollHeight); - onChange?.(e); - }} + onChange={handleChange} /> - {onOpenModal && maxH && scrollHeight > Number(maxH) && ( - - - - - - )} + {onOpenModal && + maxH && + textareaRef.current && + textareaRef.current.scrollHeight > Number(maxH) && ( + + + + + + )} ); }); diff --git a/projects/app/src/components/core/app/FileSelect.tsx b/projects/app/src/components/core/app/FileSelect.tsx index 6ba44f6b2..18ca6c328 100644 --- a/projects/app/src/components/core/app/FileSelect.tsx +++ b/projects/app/src/components/core/app/FileSelect.tsx @@ -7,12 +7,13 @@ import { ModalBody, useDisclosure, HStack, - Switch, ModalFooter, type BoxProps, - Checkbox + Checkbox, + VStack, + Input } from '@chakra-ui/react'; -import React, { useMemo } from 'react'; +import React, { useState } from 'react'; import { useTranslation } from 'next-i18next'; import type { AppFileSelectConfigType } from '@fastgpt/global/core/app/type.d'; import MyModal from '@fastgpt/web/components/common/MyModal'; @@ -23,8 +24,13 @@ import { useMount } from 'ahooks'; import { useSystemStore } from '@/web/common/system/useSystemStore'; import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip'; import MyTag from '@fastgpt/web/components/common/Tag/index'; -import MyDivider from '@fastgpt/web/components/common/MyDivider'; -import { defaultAppSelectFileConfig } from '@fastgpt/global/core/app/constants'; +import type { FileExtensionKeyType } from '@fastgpt/global/core/app/constants'; +import { + defaultAppSelectFileConfig, + defaultFileExtensionTypes +} from '@fastgpt/global/core/app/constants'; +import InputSlider from '@fastgpt/web/components/common/MySlider/InputSlider'; +import { shadowLight } from '@fastgpt/web/styles/theme'; const FileSelect = ({ forbidVision = false, @@ -41,13 +47,61 @@ const FileSelect = ({ const { isOpen, onOpen, onClose } = useDisclosure(); const maxSelectFiles = Math.min(feConfigs?.uploadFileMaxAmount ?? 20, 30); - const formLabel = useMemo( - () => - value.canSelectFile || value.canSelectImg - ? t('common:core.app.whisper.Open') - : t('common:core.app.whisper.Close'), - [t, value.canSelectFile, value.canSelectImg] - ); + const [localValue, setLocalValue] = useState(value); + const [isAddingCustomFileExtension, setIsAddingCustomFileExtension] = useState(false); + const [customFileExtension, setCustomFileExtension] = useState('.'); + + const canUploadFile = + value.canSelectFile || + value.canSelectImg || + value.canSelectVideo || + value.canSelectAudio || + value.canSelectCustomFileExtension; + const formLabel = canUploadFile + ? t('common:core.app.whisper.Open') + : t('common:core.app.whisper.Close'); + + const handleCheckboxChange = (type: FileExtensionKeyType, checked: boolean) => { + if (type === 'canSelectFile') { + setLocalValue((state) => ({ + ...state, + canSelectFile: checked + })); + } else if (type === 'canSelectImg') { + setLocalValue((state) => ({ + ...state, + canSelectImg: checked + })); + } else if (type === 'canSelectVideo') { + setLocalValue((state) => ({ + ...state, + canSelectVideo: checked + })); + } else if (type === 'canSelectAudio') { + setLocalValue((state) => ({ + ...state, + canSelectAudio: checked + })); + } else if (type === 'canSelectCustomFileExtension') { + setLocalValue((state) => ({ + ...state, + canSelectCustomFileExtension: checked + })); + } + }; + + const handleConfirmCustomFileExtension = () => { + const exists = localValue?.customFileExtensionList?.includes(customFileExtension); + if (customFileExtension !== '.' && !exists) { + setLocalValue((state) => ({ + ...state, + customFileExtensionList: [...(state.customFileExtensionList || []), customFileExtension] + })); + handleCheckboxChange('canSelectCustomFileExtension', true); + } + setCustomFileExtension('.'); + setIsAddingCustomFileExtension(false); + }; // Close select img switch when vision is forbidden useMount(() => { @@ -74,7 +128,10 @@ const FileSelect = ({ size={'sm'} mr={'-5px'} color={'myGray.600'} - onClick={onOpen} + onClick={() => { + setLocalValue(value); + onOpen(); + }} > {formLabel} @@ -84,110 +141,256 @@ const FileSelect = ({ title={t('app:file_upload')} isOpen={isOpen} onClose={onClose} + w={'500px'} > - - {t('app:document_upload')} - { - onChange({ - ...value, - canSelectFile: e.target.checked - }); - }} - /> - - {value.canSelectFile && feConfigs.showCustomPdfParse && ( - <> - - { - onChange({ - ...value, - customPdfParse: e.target.checked - }); - }} - > - {t('app:pdf_enhance_parse')} - - - {feConfigs?.show_pay && ( - - {t('app:pdf_enhance_parse_price', { - price: feConfigs.customPdfParsePrice || 0 - })} - - )} - - - - )} - - {t('app:image_upload')} - {forbidVision ? ( - - {t('app:llm_not_support_vision')} - - ) : ( - { - onChange({ - ...value, - canSelectImg: e.target.checked - }); - }} - /> - )} - - {!forbidVision && ( - - {t('app:image_upload_tip')} - - - )} - - + {t('app:upload_file_max_amount')} - - + { - onChange({ - ...value, + setLocalValue((state) => ({ + ...state, maxFiles: e - }); + })); }} /> + + + {t('app:upload_file_extension_types')} + + + {Object.entries(defaultFileExtensionTypes).map(([type, exts]) => + type === 'canSelectCustomFileExtension' ? ( + + { + handleCheckboxChange('canSelectCustomFileExtension', e.target.checked); + }} + > + + {t('app:upload_file_extension_type_canSelectCustomFileExtension')} + + + {localValue.customFileExtensionList?.map((ext) => ( + + {ext} + { + e.stopPropagation(); + e.preventDefault(); + setLocalValue((state) => ({ + ...state, + customFileExtensionList: ( + state.customFileExtensionList || [] + ).filter((prev) => prev !== ext) + })); + }} + > + + + + ))} + + { + e.stopPropagation(); + e.preventDefault(); + setIsAddingCustomFileExtension(true); + }} + > + {isAddingCustomFileExtension ? ( + + setCustomFileExtension( + `.${e.target.value.replace(/^\./, '').trim()}` + ) + } + onBlur={handleConfirmCustomFileExtension} + onKeyDown={(e) => { + if (e.key.toLowerCase() !== 'enter') return; + handleConfirmCustomFileExtension(); + }} + /> + ) : ( + + + + {t( + 'app:upload_file_extension_type_canSelectCustomFileExtension_placeholder' + )} + + + )} + + + + + ) : ( + + + handleCheckboxChange(type as FileExtensionKeyType, e.target.checked) + } + > + + {t(`app:upload_file_extension_type_${type}`)} + + + {exts.map((ext) => ext.slice(1)).join('/')} + + + + ) + )} + + + + {localValue.canSelectFile && feConfigs?.showCustomPdfParse && ( + + { + setLocalValue((state) => ({ + ...state, + customPdfParse: e.target.checked + })); + }} + > + {t('app:pdf_enhance_parse')} + + + {feConfigs?.show_pay && ( + + {t('app:pdf_enhance_parse_price', { + price: feConfigs.customPdfParsePrice || 0 + })} + + )} + + )} - diff --git a/projects/app/src/components/core/app/VariableEdit.tsx b/projects/app/src/components/core/app/VariableEdit.tsx index 1c7704dfd..0978f07eb 100644 --- a/projects/app/src/components/core/app/VariableEdit.tsx +++ b/projects/app/src/components/core/app/VariableEdit.tsx @@ -49,11 +49,8 @@ export const defaultVariable: VariableItemType = { canSelectImg: true, maxFiles: 5, timeGranularity: 'day', - timeType: 'point', - timeRangeStart: new Date( - new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).setHours(0, 0, 0, 0) - ).toISOString(), - timeRangeEnd: new Date(new Date().setHours(0, 0, 0, 0)).toISOString() + timeRangeStart: undefined, + timeRangeEnd: undefined }; export const addVariable = () => { @@ -102,14 +99,6 @@ const VariableEdit = ({ const handleTypeChange = useCallback( (newType: VariableInputEnum) => { const defaultValIsNumber = !isNaN(Number(value.defaultValue)); - const currentType = value.type; - - const isCurrentTimeType = - currentType === VariableInputEnum.timePointSelect || - currentType === VariableInputEnum.timeRangeSelect; - const isNewTimeType = - newType === VariableInputEnum.timePointSelect || - newType === VariableInputEnum.timeRangeSelect; if ( newType === VariableInputEnum.select || @@ -119,27 +108,9 @@ const VariableEdit = ({ setValue('defaultValue', ''); } - // Set time-related default values when switching from non-time type to time type - if (!isCurrentTimeType && isNewTimeType) { - setValue('defaultValue', ''); - setValue('timeGranularity', 'day'); - setValue( - 'timeRangeStart', - new Date( - new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).setHours(0, 0, 0, 0) - ).toISOString() - ); - setValue('timeRangeEnd', new Date(new Date().setHours(0, 0, 0, 0)).toISOString()); - } - - // Clear default value when switching from time type to other types - if (isCurrentTimeType && !isNewTimeType) { - setValue('defaultValue', ''); - } - setValue('type', newType); }, - [setValue, value.defaultValue, value.type] + [setValue, value.defaultValue] ); const formatVariables = useMemo(() => { @@ -191,39 +162,6 @@ const VariableEdit = ({ return; } - if ( - data.type !== VariableInputEnum.select && - data.type !== VariableInputEnum.multipleSelect && - data.list - ) { - delete data.list; - } - - if (data.type !== VariableInputEnum.file) { - delete data.canSelectFile; - delete data.canSelectImg; - delete data.maxFiles; - } - - if ( - data.type !== VariableInputEnum.timePointSelect && - data.type !== VariableInputEnum.timeRangeSelect - ) { - delete data.timeGranularity; - delete data.timeRangeStart; - delete data.timeRangeEnd; - } else if (data.type === VariableInputEnum.timePointSelect) { - data.defaultValue = new Date(new Date().setHours(0, 0, 0, 0)).toISOString(); - } else if (data.type === VariableInputEnum.timeRangeSelect) { - data.defaultValue = [ - data.timeRangeStart || - new Date( - new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).setHours(0, 0, 0, 0) - ).toISOString(), - data.timeRangeEnd || new Date(new Date().setHours(0, 0, 0, 0)).toISOString() - ]; - } - if (data.type === VariableInputEnum.custom || data.type === VariableInputEnum.internal) { data.required = false; } else { @@ -232,6 +170,14 @@ const VariableEdit = ({ .find((item) => item.value === data.type)?.defaultValueType; } + // Remove undefined keys + Object.keys(data).forEach((key) => { + if (data[key as keyof VariableItemType] === undefined) { + delete data[key as keyof VariableItemType]; + } + }); + + console.log(data); const onChangeVariable = (() => { if (data.key) { return variables.map((item) => { diff --git a/projects/app/src/components/core/app/formRender/FileSelector.tsx b/projects/app/src/components/core/app/formRender/FileSelector.tsx new file mode 100644 index 000000000..1d1f16037 --- /dev/null +++ b/projects/app/src/components/core/app/formRender/FileSelector.tsx @@ -0,0 +1,506 @@ +import type { DragEvent } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; +import type { UserInputFileItemType } from '../../chat/ChatContainer/ChatBox/type'; +import { + Box, + CircularProgress, + HStack, + IconButton, + Input, + InputGroup, + VStack +} from '@chakra-ui/react'; +import MyBox from '@fastgpt/web/components/common/MyBox'; +import MyIcon from '@fastgpt/web/components/common/Icon'; +import { ChatFileTypeEnum } from '@fastgpt/global/core/chat/constants'; +import { getFileIcon } from '@fastgpt/global/common/file/icon'; +import type { AppFileSelectConfigType } from '@fastgpt/global/core/app/type'; +import { useSystemStore } from '@/web/common/system/useSystemStore'; +import { getUploadFileType } from '@fastgpt/global/core/app/constants'; +import { useToast } from '@fastgpt/web/hooks/useToast'; +import { useTranslation } from 'next-i18next'; +import { useSelectFile } from '@/web/common/file/hooks/useSelectFile'; +import { getNanoid } from '@fastgpt/global/common/string/tools'; +import MyDivider from '@fastgpt/web/components/common/MyDivider'; +import MyAvatar from '@fastgpt/web/components/common/Avatar'; +import { z } from 'zod'; +import { clone } from 'lodash'; +import { getPresignedChatFileGetUrl, getUploadChatFilePresignedUrl } from '@/web/common/file/api'; +import { useContextSelector } from 'use-context-selector'; +import { ChatBoxContext } from '../../chat/ChatContainer/ChatBox/Provider'; +import { POST } from '@/web/common/api/request'; +import { getErrText } from '@fastgpt/global/common/error/utils'; +import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; +import { useDebounceEffect } from 'ahooks'; +import { formatFileSize, parseUrlToFileType } from '@fastgpt/global/common/file/tools'; + +const FileSelector = ({ + fileUrls, + onChange, + maxFiles, + canSelectFile, + canSelectImg, + canSelectVideo, + canSelectAudio, + canSelectCustomFileExtension, + customFileExtensionList, + canLocalUpload, + canUrlUpload +}: AppFileSelectConfigType & { + fileUrls: string[]; + onChange: (e: string[]) => void; + canLocalUpload?: boolean; + canUrlUpload?: boolean; +}) => { + const { feConfigs } = useSystemStore(); + const { toast } = useToast(); + const { t } = useTranslation(); + + const outLinkAuthData = useContextSelector(ChatBoxContext, (v) => v.outLinkAuthData); + const appId = useContextSelector(ChatBoxContext, (v) => v.appId); + const chatId = useContextSelector(ChatBoxContext, (v) => v.chatId); + + const [cloneFiles, setCloneFiles] = useState( + fileUrls + .map((url) => { + const fileType = parseUrlToFileType(url); + if (!fileType) return null as unknown as UserInputFileItemType; + + return { + id: getNanoid(6), + name: fileType.name || url, + type: fileType.type, + icon: getFileIcon(fileType.name || url), + url: fileType.url, + status: 1, + key: url.startsWith('chat/') ? url : undefined + }; + }) + .filter(Boolean) as UserInputFileItemType[] + ); + // 采用异步更新顶层的方式 + useDebounceEffect( + () => { + onChange(cloneFiles.map((file) => file.key || file.url || '').filter(Boolean)); + }, + [cloneFiles], + { + wait: 1000 + } + ); + + const fileType = useMemo(() => { + return getUploadFileType({ + canSelectFile, + canSelectImg, + canSelectVideo, + canSelectAudio, + canSelectCustomFileExtension, + customFileExtensionList + }); + }, [ + canSelectFile, + canSelectImg, + canSelectVideo, + canSelectAudio, + canSelectCustomFileExtension, + customFileExtensionList + ]); + const maxSelectFiles = maxFiles ?? 10; + const maxSize = (feConfigs?.uploadFileMaxSize || 1024) * 1024 * 1024; // nkb + const canSelectFileAmount = maxSelectFiles - cloneFiles.length; + const isMaxSelected = canSelectFileAmount <= 0; + + // Selector props + const [isDragging, setIsDragging] = useState(false); + const onSelectFile = useCallback( + async (files: File[]) => { + if (files.length > maxSelectFiles) { + files = files.slice(0, maxSelectFiles); + toast({ + status: 'warning', + title: t('chat:file_amount_over', { max: maxSelectFiles }) + }); + } + const filterFilesByMaxSize = files.filter((file) => file.size <= maxSize); + if (filterFilesByMaxSize.length < files.length) { + toast({ + status: 'warning', + title: t('file:some_file_size_exceeds_limit', { maxSize: formatFileSize(maxSize) }) + }); + } + + const loadFiles = await Promise.all( + filterFilesByMaxSize.map( + (file) => + new Promise((resolve, reject) => { + if (file.type.includes('image')) { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = () => { + const item: UserInputFileItemType = { + id: getNanoid(6), + rawFile: file, + type: ChatFileTypeEnum.image, + name: file.name, + icon: reader.result as string, + status: 0 + }; + resolve(item); + }; + reader.onerror = () => { + reject(reader.error); + }; + } else { + resolve({ + id: getNanoid(6), + rawFile: file, + type: ChatFileTypeEnum.file, + name: file.name, + icon: getFileIcon(file.name), + status: 0 + }); + } + }) + ) + ); + setCloneFiles((state) => [...loadFiles, ...state]); + }, + [maxSelectFiles, maxSize, t, toast] + ); + const handleDragEnter = (e: DragEvent) => { + e.preventDefault(); + setIsDragging(true); + }; + const handleDragLeave = (e: DragEvent) => { + e.preventDefault(); + setIsDragging(false); + }; + const handleDrop = async (e: DragEvent) => { + e.preventDefault(); + setIsDragging(false); + + const filterTypeReg = new RegExp( + `(${fileType + .split(',') + .map((item) => item.trim()) + .join('|')})$`, + 'i' + ); + const items = e.dataTransfer.items; + + const firstEntry = items[0].webkitGetAsEntry(); + + if (firstEntry?.isDirectory && items.length === 1) { + { + const readFile = (entry: any) => { + return new Promise((resolve) => { + entry.file((file: File) => { + if (filterTypeReg.test(file.name)) { + onSelectFile([file]); + } + resolve(file); + }); + }); + }; + const traverseFileTree = (dirReader: any) => { + return new Promise((resolve) => { + let fileNum = 0; + dirReader.readEntries(async (entries: any[]) => { + for await (const entry of entries) { + if (entry.isFile) { + await readFile(entry); + fileNum++; + } else if (entry.isDirectory) { + await traverseFileTree(entry.createReader()); + } + } + + // chrome: readEntries will return 100 entries at most + if (fileNum === 100) { + await traverseFileTree(dirReader); + } + resolve(''); + }); + }); + }; + + for await (const item of items) { + const entry = item.webkitGetAsEntry(); + if (entry) { + if (entry.isFile) { + await readFile(entry); + } else if (entry.isDirectory) { + //@ts-ignore + await traverseFileTree(entry.createReader()); + } + } + } + } + } else if (firstEntry?.isFile) { + const files = Array.from(e.dataTransfer.files); + + onSelectFile(files.filter((item) => filterTypeReg.test(item.name))); + } else { + return toast({ + title: t('file:upload_error_description'), + status: 'error' + }); + } + }; + const { File, onOpen } = useSelectFile({ + fileType, + multiple: canSelectFileAmount > 1, + maxCount: canSelectFileAmount + }); + const uploadFiles = useCallback(async () => { + const filterFiles = cloneFiles.filter((item) => item.status === 0); + if (filterFiles.length === 0) return; + + setCloneFiles((state) => state.map((item) => ({ ...item, status: 1 }))); + + await Promise.allSettled( + filterFiles.map(async (file) => { + const copyFile = clone(file); + if (!copyFile.rawFile) return; + copyFile.status = 1; + + try { + // Get Upload Post Presigned URL + const { url, fields } = await getUploadChatFilePresignedUrl({ + filename: copyFile.rawFile.name, + appId, + chatId, + outLinkAuthData + }); + + // Upload File to S3 + const formData = new FormData(); + Object.entries(fields).forEach(([k, v]) => formData.set(k, v)); + formData.set('file', copyFile.rawFile); + await POST(url, formData, { + headers: { + 'Content-Type': 'multipart/form-data; charset=utf-8' + }, + onUploadProgress: (e) => { + if (!e.total) return; + const percent = Math.round((e.loaded / e.total) * 100); + copyFile.process = percent; + setCloneFiles((state) => + state.map((item) => (item.id === file.id ? { ...item, process: percent } : item)) + ); + } + }); + const previewUrl = await getPresignedChatFileGetUrl({ + key: fields.key, + appId, + outLinkAuthData + }); + + // Update file url and key + copyFile.url = previewUrl; + copyFile.key = fields.key; + console.log(previewUrl, 232); + setCloneFiles((state) => + state.map((item) => + item.id === file.id ? { ...item, url: previewUrl, key: fields.key } : item + ) + ); + } catch (error) { + setCloneFiles((state) => + state.map((item) => + item.id === file.id ? { ...item, error: getErrText(error) } : item + ) + ); + } + }) + ); + }, [appId, chatId, cloneFiles, outLinkAuthData]); + // Watch newfiles,and upload + useRequest2(uploadFiles, { + refreshDeps: [cloneFiles], + manual: false + }); + + // Url upload props + const [urlInput, setUrlInput] = useState(''); + const handleAddUrl = useCallback( + (url: string) => { + if (!url) return; + + const urlSchema = z.string().url(); + const result = urlSchema.safeParse(url); + if (!result.success) { + return toast({ + title: t('common:invalid_url'), + status: 'error' + }); + } + + const trimmedUrl = url.trim(); + if (trimmedUrl) { + setCloneFiles((state) => [ + ...state, + { + id: getNanoid(6), + status: 1, + type: 'file', + url: trimmedUrl, + name: trimmedUrl, + icon: 'common/link' + } + ]); + } + + setUrlInput(''); + }, + [t, toast] + ); + + const handleDeleteFile = useCallback((id: string) => { + setCloneFiles((state) => state.filter((file) => file.id !== id)); + }, []); + + return ( + <> + {/* Selector */} + + {canLocalUpload && ( + e.preventDefault(), + onDragLeave: handleDragLeave, + onDrop: handleDrop, + onClick: onOpen + })} + > + + {isMaxSelected ? ( + <> + + {t('file:reached_max_file_count')} + + + ) : ( + <> + + {isDragging + ? t('file:release_the_mouse_to_upload_the_file') + : t('file:select_and_drag_file_tip')} + + onSelectFile(files)} /> + + )} + + )} + {canUrlUpload && ( + + + + setUrlInput(e.target.value)} + onBlur={(e) => handleAddUrl(e.target.value)} + border={'1.5px dashed'} + borderColor={'myGray.250'} + borderRadius={'md'} + pl={8} + py={1.5} + placeholder={ + isMaxSelected ? t('file:reached_max_file_count') : t('chat:click_to_add_url') + } + /> + + + )} + + + {/* Preview */} + {cloneFiles.length > 0 && ( + <> + + + {cloneFiles.map((file) => { + return ( + + + + + {file.name} + + + {/* Status icon */} + {!!file.url || !!file.error ? ( + } + onClick={() => handleDeleteFile(file.id)} + /> + ) : ( + + + + )} + + {file.error && ( + + {file.error} + + )} + + ); + })} + + + )} + + ); +}; + +export default React.memo(FileSelector); diff --git a/projects/app/src/components/core/app/formRender/LabelAndForm.tsx b/projects/app/src/components/core/app/formRender/LabelAndForm.tsx index 7de4ce2de..3ddbcde6f 100644 --- a/projects/app/src/components/core/app/formRender/LabelAndForm.tsx +++ b/projects/app/src/components/core/app/formRender/LabelAndForm.tsx @@ -44,6 +44,7 @@ const LabelAndFormRender = ({ form: UseFormReturn; fieldName: string; + isDisabled?: boolean; minLength?: number; } & SpecificProps & BoxProps) => { @@ -62,8 +63,13 @@ const LabelAndFormRender = ({ name={props.fieldName} rules={{ validate: (value) => { - if (!required) return true; if (typeof value === 'number' || typeof value === 'boolean') return true; + if (inputType === InputTypeEnum.password && props.minLength) { + if (!value || typeof value !== 'object' || !value.value) return false; + return value.value.length >= props.minLength; + } + if (!required) return true; + return !!value; }, ...(!!props?.minLength @@ -79,6 +85,7 @@ const LabelAndFormRender = ({ return ( void; + onDateTimeChange: (date: Date | undefined) => void; popPosition?: 'top' | 'bottom'; timeGranularity?: 'day' | 'hour' | 'minute' | 'second'; minDate?: Date; @@ -14,17 +14,25 @@ type TimeInputProps = { }; const TimeInput: React.FC = ({ - value, + value: initialValue, onDateTimeChange, popPosition = 'bottom', timeGranularity = 'second', minDate, maxDate }) => { + const formatValue = useMemo(() => { + const val = initialValue ? new Date(initialValue) : undefined; + // 判断有效性 + if (!val) return undefined; + if (isNaN(val.getTime())) return undefined; + return val; + }, [initialValue]); + const { t } = useTranslation(); - const hour = value ? value.getHours() : 0; - const minute = value ? value.getMinutes() : 0; - const second = value ? value.getSeconds() : 0; + const hour = formatValue ? formatValue.getHours() : 0; + const minute = formatValue ? formatValue.getMinutes() : 0; + const second = formatValue ? formatValue.getSeconds() : 0; const validateAndSetDateTime = (newDate: Date) => { if (minDate && newDate < minDate) { @@ -38,26 +46,31 @@ const TimeInput: React.FC = ({ onDateTimeChange(newDate); }; - const handleDateChange = (date: Date) => { + const handleDateChange = (date: Date | undefined) => { + if (!date) { + onDateTimeChange(undefined); + return; + } + const newDate = new Date(date); newDate.setHours(hour, minute, second); validateAndSetDateTime(newDate); }; const handleHourChange = (newHour?: number) => { - const newDate = value ? new Date(value) : new Date(); + const newDate = formatValue ? formatValue : new Date(); newDate.setHours(newHour || 0); validateAndSetDateTime(newDate); }; const handleMinuteChange = (newMinute?: number) => { - const newDate = value ? new Date(value) : new Date(); + const newDate = formatValue ? formatValue : new Date(); newDate.setMinutes(newMinute || 0); validateAndSetDateTime(newDate); }; const handleSecondChange = (newSecond?: number) => { - const newDate = value ? new Date(value) : new Date(); + const newDate = formatValue ? formatValue : new Date(); newDate.setSeconds(newSecond || 0); validateAndSetDateTime(newDate); }; @@ -69,7 +82,7 @@ const TimeInput: React.FC = ({ return ( { const { @@ -26,13 +29,11 @@ const InputRender = (props: InputRenderProps) => { bg = 'white' } = props; - const [isPasswordEditing, setIsPasswordEditing] = useState(false); - - if (customRender) { - return <>{customRender(props)}; - } - const { t } = useSafeTranslation(); + const { llmModelList } = useSystemStore(); + + // Password + const [isPasswordEditing, setIsPasswordEditing] = useState(false); const isSelectAll = useMemo(() => { return ( @@ -43,85 +44,94 @@ const InputRender = (props: InputRenderProps) => { // @ts-ignore }, [inputType, value, props.list?.length]); - const commonProps = { - value, - onChange, - isDisabled, - isInvalid, - placeholder: t(placeholder as any), - bg - }; + const commonProps = useMemoEnhance( + () => ({ + value, + onChange, + isDisabled, + isInvalid, + placeholder: t(placeholder as any), + bg + }), + [bg, isDisabled, isInvalid, onChange, placeholder, t, value] + ); - const renderInput = () => { - if (inputType === InputTypeEnum.input) { - return ( - - ); - } + if (customRender) { + return <>{customRender(props)}; + } - if (inputType === InputTypeEnum.textarea) { - return ( - - ); - } + if (inputType === InputTypeEnum.input) { + return ( + + ); + } - if (inputType === InputTypeEnum.password) { - const isPasswordConfigured = isSecretValue(value); - return !isPasswordConfigured || isPasswordEditing ? ( - setIsPasswordEditing(false)} - autoComplete="new-password" - data-form-type="other" - /> - ) : ( - - - - - {t('common:had_auth_value')} - - + if (inputType === InputTypeEnum.textarea) { + return ( + + ); + } + + if (inputType === InputTypeEnum.password) { + const isPasswordConfigured = isSecretValue(value); + const val = typeof value === 'object' && value !== null ? value.value : ''; + + return !isPasswordConfigured || isPasswordEditing ? ( + { + const val = e.target.value; + onChange({ + value: val, + secret: '' + }); + }} + value={val} + type="password" + autoFocus={isPasswordEditing} + onBlur={() => setIsPasswordEditing(false)} + autoComplete="new-password" + data-form-type="other" + data-lpignore="true" + /> + ) : ( + + + + + {t('common:had_auth_value')} + + + {!isDisabled && ( } @@ -129,157 +139,197 @@ const InputRender = (props: InputRenderProps) => { variant="ghost" color={'myGray.500'} _hover={{ color: 'primary.600' }} - isDisabled={isDisabled} onClick={() => setIsPasswordEditing(true)} /> - - ); - } + )} + + ); + } - if (inputType === InputTypeEnum.numberInput) { - return ( - - ); - } + if (inputType === InputTypeEnum.numberInput) { + return ( + + ); + } - if (inputType === InputTypeEnum.switch) { - return ( - onChange(e.target.checked)} - isDisabled={isDisabled} - /> - ); - } + if (inputType === InputTypeEnum.switch) { + return ( + onChange(e.target.checked)} + isDisabled={isDisabled} + /> + ); + } - if (inputType === InputTypeEnum.select) { - const list = - props.list || props.enums?.map((item) => ({ label: item.value, value: item.value })) || []; - return ; - } + if (inputType === InputTypeEnum.select) { + const list = + props.list || props.enums?.map((item) => ({ label: item.value, value: item.value })) || []; + return ; + } - if (inputType === InputTypeEnum.multipleSelect) { - const list = - props.list || props.enums?.map((item) => ({ label: item.value, value: item.value })) || []; - return ( - - {...commonProps} - h={10} - list={list} - value={value} - onSelect={onChange} - isSelectAll={isSelectAll} - itemWrap - /> - ); - } + if (inputType === InputTypeEnum.multipleSelect) { + const list = + props.list || props.enums?.map((item) => ({ label: item.value, value: item.value })) || []; + return ( + + {...commonProps} + h={10} + list={list} + value={value} + onSelect={onChange} + isSelectAll={isSelectAll} + itemWrap + /> + ); + } - if (inputType === InputTypeEnum.JSONEditor) { - return ; - } + if (inputType === InputTypeEnum.JSONEditor) { + return ; + } - if (inputType === InputTypeEnum.selectLLMModel) { - return ( - ({ - value: item.model, - label: item.name - })) || [] - } - /> - ); - } + if (inputType === InputTypeEnum.selectLLMModel) { + return ( + ({ + value: item.model, + label: item.name + })) || [] + } + /> + ); + } - if (inputType === InputTypeEnum.fileSelect) { - return ( - - ); - } + if (inputType === InputTypeEnum.fileSelect) { + return ( + + ); + } - if (inputType === InputTypeEnum.timePointSelect) { - const { timeRangeStart, timeRangeEnd } = props; - return ( - onChange(date.toISOString())} - timeGranularity={props.timeGranularity} - minDate={timeRangeStart ? new Date(timeRangeStart) : undefined} - maxDate={timeRangeEnd ? new Date(timeRangeEnd) : undefined} - /> - ); - } + if (inputType === InputTypeEnum.selectDataset) { + const list = props.dataset?.map((item: any) => ({ + label: item.name, + value: item.datasetId, + icon: item.avatar, + iconSize: '1.5rem' + })); - if (inputType === InputTypeEnum.timeRangeSelect) { - const { timeRangeStart, timeRangeEnd } = props; - const rangeArray = Array.isArray(value) ? value : [null, null]; - const [startDate, endDate] = rangeArray; - return ( - - - - {t('app:time_range_start')} - - { - const newArray = [...rangeArray]; - newArray[0] = date.toISOString(); - onChange(newArray); - }} - timeGranularity={props.timeGranularity} - maxDate={ - endDate ? new Date(endDate) : timeRangeEnd ? new Date(timeRangeEnd) : undefined - } - minDate={timeRangeStart ? new Date(timeRangeStart) : undefined} - /> - - - - {t('app:time_range_end')} - - { - const newArray = [...rangeArray]; - newArray[1] = date.toISOString(); - onChange(newArray); - }} - timeGranularity={props.timeGranularity} - minDate={ - startDate - ? new Date(startDate) - : timeRangeStart - ? new Date(timeRangeStart) - : undefined - } - maxDate={timeRangeEnd ? new Date(timeRangeEnd) : undefined} - /> + const selectedValues = Array.isArray(value) + ? value.map((item: any) => (typeof item === 'string' ? item : item.datasetId)) + : []; + + return ( + + {...commonProps} + h={10} + list={list ?? []} + value={selectedValues} + onSelect={(selectedVals) => { + onChange( + selectedVals.map((val) => { + const item = list?.find((l) => l.value === val); + return item + ? { + name: item.label, + datasetId: item.value, + icon: item.icon + } + : { name: val, datasetId: val, icon: '' }; + }) + ); + }} + isSelectAll={selectedValues.length === list?.length && list?.length > 0} + itemWrap + /> + ); + } + + if (inputType === InputTypeEnum.timePointSelect) { + const { timeRangeStart, timeRangeEnd, defaultValue } = props; + const val = value || defaultValue; + return ( + onChange(date ? date.toISOString() : undefined)} + timeGranularity={props.timeGranularity} + minDate={timeRangeStart ? new Date(timeRangeStart) : undefined} + maxDate={timeRangeEnd ? new Date(timeRangeEnd) : undefined} + /> + ); + } + + if (inputType === InputTypeEnum.timeRangeSelect) { + const { timeRangeStart, timeRangeEnd } = props; + const rangeArray = Array.isArray(value) ? value : [null, null]; + const [startDate, endDate] = rangeArray; + return ( + + + + {t('app:time_range_start')} + { + const newArray = [...rangeArray]; + newArray[0] = date ? date.toISOString() : undefined; + onChange(newArray); + }} + timeGranularity={props.timeGranularity} + maxDate={ + endDate ? new Date(endDate) : timeRangeEnd ? new Date(timeRangeEnd) : undefined + } + minDate={timeRangeStart ? new Date(timeRangeStart) : undefined} + /> - ); - } + + + {t('app:time_range_end')} + + { + const newArray = [...rangeArray]; + newArray[1] = date ? date.toISOString() : undefined; + onChange(newArray); + }} + timeGranularity={props.timeGranularity} + minDate={ + startDate + ? new Date(startDate) + : timeRangeStart + ? new Date(timeRangeStart) + : undefined + } + maxDate={timeRangeEnd ? new Date(timeRangeEnd) : undefined} + /> + + + ); + } - return null; - }; - - return {renderInput()}; + return null; }; export default InputRender; diff --git a/projects/app/src/components/core/app/formRender/type.d.ts b/projects/app/src/components/core/app/formRender/type.d.ts index 951f03e38..98d03beef 100644 --- a/projects/app/src/components/core/app/formRender/type.d.ts +++ b/projects/app/src/components/core/app/formRender/type.d.ts @@ -7,6 +7,7 @@ import type { VariableInputEnum } from '@fastgpt/global/core/workflow/constants' import type { UseFormReturn } from 'react-hook-form'; import type { BoxProps } from '@chakra-ui/react'; import type { EditorProps } from '@fastgpt/web/components/common/Textarea/PromptEditor/Editor'; +import type { AppFileSelectConfigType } from '@fastgpt/global/core/app/type'; type CommonRenderProps = { placeholder?: string; @@ -27,12 +28,14 @@ type SpecificProps = variableLabels?: EditorVariableLabelPickerType[]; title?: string; maxLength?: number; + isRichText?: boolean; } & { ExtensionPopover?: EditorProps['ExtensionPopover']; }) | { // password inputType: InputTypeEnum.password; + minLength?: number; } | { // numberInput @@ -52,6 +55,12 @@ type SpecificProps = // old version enums?: { value: string }[]; } + | { + // selectDataset + inputType: InputTypeEnum.selectDataset; + list?: { label: string; value: string }[]; + dataset?: { name: string; datasetId: string; avatar: string }[]; + } | { // JSONEditor inputType: InputTypeEnum.JSONEditor; @@ -61,16 +70,15 @@ type SpecificProps = inputType: InputTypeEnum.selectLLMModel; modelList?: { model: string; name: string }[]; } - | { + | ({ // fileSelect inputType: InputTypeEnum.fileSelect; - canSelectFile?: boolean; - canSelectImg?: boolean; - maxFiles?: number; setUploading?: React.Dispatch>; form?: UseFormReturn; fieldName?: string; - } + canLocalUpload?: boolean; + canUrlUpload?: boolean; + } & AppFileSelectConfigType) | { // timePointSelect inputType: InputTypeEnum.timePointSelect; diff --git a/projects/app/src/components/core/app/formRender/utils.ts b/projects/app/src/components/core/app/formRender/utils.ts index 55606ab41..0ed8ae317 100644 --- a/projects/app/src/components/core/app/formRender/utils.ts +++ b/projects/app/src/components/core/app/formRender/utils.ts @@ -20,6 +20,8 @@ export const variableInputTypeToInputType = ( if (inputType === VariableInputEnum.file) return InputTypeEnum.fileSelect; if (inputType === VariableInputEnum.timePointSelect) return InputTypeEnum.timePointSelect; if (inputType === VariableInputEnum.timeRangeSelect) return InputTypeEnum.timeRangeSelect; + if (inputType === VariableInputEnum.datasetSelect) return InputTypeEnum.selectDataset; + if (inputType === VariableInputEnum.llmSelect) return InputTypeEnum.selectLLMModel; if (inputType === VariableInputEnum.custom || inputType === VariableInputEnum.internal) return valueTypeToInputType(valueType); return InputTypeEnum.JSONEditor; @@ -31,6 +33,7 @@ export const nodeInputTypeToInputType = (inputTypes: FlowNodeInputTypeEnum[] = [ if (inputType === FlowNodeInputTypeEnum.input) return InputTypeEnum.input; if (inputType === FlowNodeInputTypeEnum.textarea) return InputTypeEnum.textarea; + if (inputType === FlowNodeInputTypeEnum.password) return InputTypeEnum.password; if (inputType === FlowNodeInputTypeEnum.numberInput) return InputTypeEnum.numberInput; if (inputType === FlowNodeInputTypeEnum.switch) return InputTypeEnum.switch; if (inputType === FlowNodeInputTypeEnum.select) return InputTypeEnum.select; diff --git a/projects/app/src/components/core/app/plugin/CostTooltip.tsx b/projects/app/src/components/core/app/tool/CostTooltip.tsx similarity index 100% rename from projects/app/src/components/core/app/plugin/CostTooltip.tsx rename to projects/app/src/components/core/app/tool/CostTooltip.tsx diff --git a/projects/app/src/components/core/chat/ChatContainer/ChatBox/Input/ChatInput.tsx b/projects/app/src/components/core/chat/ChatContainer/ChatBox/Input/ChatInput.tsx index 0e87d496d..3fa6508d8 100644 --- a/projects/app/src/components/core/chat/ChatContainer/ChatBox/Input/ChatInput.tsx +++ b/projects/app/src/components/core/chat/ChatContainer/ChatBox/Input/ChatInput.tsx @@ -80,6 +80,9 @@ const ChatInput = ({ selectFileLabel, showSelectFile, showSelectImg, + showSelectVideo, + showSelectAudio, + showSelectCustomFileExtension, removeFiles, replaceFiles, hasFileUploading @@ -92,6 +95,12 @@ const ChatInput = ({ }); const havInput = !!inputValue || fileList.length > 0; const canSendMessage = havInput && !hasFileUploading; + const canUploadFile = + showSelectFile || + showSelectImg || + showSelectVideo || + showSelectAudio || + showSelectCustomFileExtension; // Upload files useRequest2(uploadFiles, { @@ -201,7 +210,7 @@ const ChatInput = ({ }} onPaste={(e) => { const clipboardData = e.clipboardData; - if (clipboardData && (showSelectFile || showSelectImg)) { + if (clipboardData && canUploadFile) { const items = clipboardData.items; const files = Array.from(items) .map((item) => (item.kind === 'file' ? item.getAsFile() : undefined)) @@ -233,8 +242,7 @@ const ChatInput = ({ offFocus, setValue, handleSend, - showSelectFile, - showSelectImg, + canUploadFile, onSelectFile ] ); @@ -266,7 +274,7 @@ const ChatInput = ({ {/* Attachment and Voice Group */} {/* file selector button */} - {(showSelectFile || showSelectImg) && ( + {canUploadFile && ( {/* Divider Container */} - {((whisperConfig?.open && !inputValue) || showSelectFile || showSelectImg) && ( + {((whisperConfig?.open && !inputValue) || canUploadFile) && ( @@ -353,8 +361,8 @@ const ChatInput = ({ ); }, [ isPc, - showSelectFile, - showSelectImg, + InputLeftComponent, + canUploadFile, selectFileLabel, selectFileIcon, File, @@ -366,8 +374,7 @@ const ChatInput = ({ onOpenSelectFile, onSelectFile, handleSend, - onStop, - InputLeftComponent + onStop ]); const activeStyles: FlexProps = { @@ -381,7 +388,7 @@ const ChatInput = ({ onDrop={(e) => { e.preventDefault(); - if (!(showSelectFile || showSelectImg)) return; + if (!canUploadFile) return; const files = Array.from(e.dataTransfer.files); const droppedFiles = files.filter((file) => fileTypeFilter(file)); diff --git a/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/ChatItem.tsx b/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/ChatItem.tsx index 50733e5a0..894ed8b38 100644 --- a/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/ChatItem.tsx +++ b/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/ChatItem.tsx @@ -177,7 +177,7 @@ const ChatItem = (props: Props) => { return colorMap[statusBoxData.status]; }, [statusBoxData?.status]); - /* + /* 1. The interactive node is divided into n dialog boxes. 2. Auto-complete the last textnode */ diff --git a/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/VariableInputForm.tsx b/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/VariableInputForm.tsx index e1e9cb0b6..bd2fdfbb6 100644 --- a/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/VariableInputForm.tsx +++ b/projects/app/src/components/core/chat/ChatContainer/ChatBox/components/VariableInputForm.tsx @@ -14,7 +14,7 @@ import LabelAndFormRender from '@/components/core/app/formRender/LabelAndForm'; import { variableInputTypeToInputType } from '@/components/core/app/formRender/utils'; import type { VariableItemType } from '@fastgpt/global/core/app/type'; -const VariableInput = ({ +const VariableInputForm = ({ chatForm, chatStarted, chatType @@ -71,6 +71,8 @@ const VariableInput = ({ internalVariableList.length > 0 || externalVariableList.length > 0; + const isDisabled = chatType === ChatTypeEnum.log; + return hasVariables ? ( @@ -101,6 +103,7 @@ const VariableInput = ({ return ( { const showSelectFile = fileSelectConfig?.canSelectFile; const showSelectImg = fileSelectConfig?.canSelectImg; + const showSelectVideo = fileSelectConfig?.canSelectVideo; + const showSelectAudio = fileSelectConfig?.canSelectAudio; + const showSelectCustomFileExtension = fileSelectConfig?.canSelectCustomFileExtension; + const canUploadFile = + showSelectFile || + showSelectImg || + showSelectVideo || + showSelectAudio || + showSelectCustomFileExtension; const maxSelectFiles = fileSelectConfig?.maxFiles ?? 10; const maxSize = (feConfigs?.uploadFileMaxSize || 1024) * 1024 * 1024; // nkb const canSelectFileAmount = maxSelectFiles - fileList.length; const { icon: selectFileIcon, label: selectFileLabel } = useMemo(() => { - if (showSelectFile && showSelectImg) { - return { - icon: 'core/chat/fileSelect', - label: t('chat:select_file_img') - }; - } else if (showSelectFile) { + if (canUploadFile) { return { icon: 'core/chat/fileSelect', label: t('chat:select_file') }; - } else if (showSelectImg) { - return { - icon: 'core/chat/imgSelect', - label: t('chat:select_img') - }; } return {}; - }, [showSelectFile, showSelectImg, t]); + }, [canUploadFile, t]); + + const fileType = useMemo(() => { + return getUploadFileType({ + canSelectFile: showSelectFile, + canSelectImg: showSelectImg, + canSelectVideo: showSelectVideo, + canSelectAudio: showSelectAudio, + canSelectCustomFileExtension: showSelectCustomFileExtension, + customFileExtensionList: fileSelectConfig?.customFileExtensionList + }); + }, [ + fileSelectConfig?.customFileExtensionList, + showSelectAudio, + showSelectCustomFileExtension, + showSelectFile, + showSelectImg, + showSelectVideo + ]); const { File, onOpen: onOpenSelectFile } = useSelectFile({ - fileType: `${showSelectImg ? 'image/*,' : ''} ${showSelectFile ? documentFileType : ''}`, + fileType, multiple: true, maxCount: canSelectFileAmount }); @@ -156,27 +175,39 @@ export const useFileUpload = (props: UseFileUploadOptions) => { try { const fileIndex = fileList.findIndex((item) => item.id === file.id)!; - // Start upload and update process - const { previewUrl } = await uploadFile2DB({ - file: copyFile.rawFile, - bucketName: 'chat', - data: { - appId, - ...outLinkAuthData - }, - metadata: { - chatId - }, - percentListen(e) { - copyFile.process = e; - if (!copyFile.url) { - updateFiles(fileIndex, copyFile); - } - } + // Get Upload Post Presigned URL + const { url, fields, maxSize } = await getUploadChatFilePresignedUrl({ + filename: copyFile.rawFile.name, + appId, + chatId, + outLinkAuthData }); - // Update file url + // Upload File to S3 + const formData = new FormData(); + Object.entries(fields).forEach(([k, v]) => formData.set(k, v)); + formData.set('file', copyFile.rawFile); + await POST(url, formData, { + headers: { + 'Content-Type': 'multipart/form-data; charset=utf-8' + }, + onUploadProgress: (e) => { + if (!e.total) return; + const percent = Math.round((e.loaded / e.total) * 100); + copyFile.process = percent; + updateFiles(fileIndex, copyFile); + } + }).catch((error) => Promise.reject(parseS3UploadError({ t, error, maxSize }))); + + const previewUrl = await getPresignedChatFileGetUrl({ + key: fields.key, + appId, + outLinkAuthData + }); + + // Update file url and key copyFile.url = previewUrl; + copyFile.key = fields.key; updateFiles(fileIndex, copyFile); } catch (error) { errorFileIndex.push(fileList.findIndex((item) => item.id === file.id)!); @@ -216,6 +247,9 @@ export const useFileUpload = (props: UseFileUploadOptions) => { selectFileLabel, showSelectFile, showSelectImg, + showSelectVideo, + showSelectAudio, + showSelectCustomFileExtension, removeFiles, replaceFiles, hasFileUploading diff --git a/projects/app/src/components/core/chat/ChatContainer/ChatBox/index.tsx b/projects/app/src/components/core/chat/ChatContainer/ChatBox/index.tsx index afe90eb8c..48ea03814 100644 --- a/projects/app/src/components/core/chat/ChatContainer/ChatBox/index.tsx +++ b/projects/app/src/components/core/chat/ChatContainer/ChatBox/index.tsx @@ -63,6 +63,7 @@ import TimeBox from './components/TimeBox'; import MyBox from '@fastgpt/web/components/common/MyBox'; import { VariableInputEnum } from '@fastgpt/global/core/workflow/constants'; import { valueTypeFormat } from '@fastgpt/global/core/workflow/runtime/utils'; +import { formatTime2YMDHMS } from '@fastgpt/global/common/string/time'; const FeedbackModal = dynamic(() => import('./components/FeedbackModal')); const ReadFeedbackModal = dynamic(() => import('./components/ReadFeedbackModal')); @@ -179,7 +180,7 @@ const ChatBox = ({ (item) => item.type !== VariableInputEnum.custom && item.type !== VariableInputEnum.internal ); - /* + /* 对话已经开始的标记: 1. 保证 appId 一致。 2. 有对话记录/手动点了开始/默认没有需要填写的变量。 @@ -462,12 +463,19 @@ const ChatBox = ({ // Only declared variables are kept const requestVariables: Record = {}; variableList?.forEach((item) => { - const val = + let val = variables[item.key] === '' || variables[item.key] === undefined || variables[item.key] === null ? item.defaultValue : variables[item.key]; + + if (item.type === VariableInputEnum.timePointSelect && val) { + val = formatTime2YMDHMS(new Date(val)); + } else if (item.type === VariableInputEnum.timeRangeSelect && val) { + val = val.map((item: string) => (item ? formatTime2YMDHMS(new Date(item)) : '')); + } + requestVariables[item.key] = valueTypeFormat(val, item.valueType); }); @@ -493,7 +501,8 @@ const ChatBox = ({ type: file.type, name: file.name, url: file.url || '', - icon: file.icon || '' + icon: file.icon || '', + key: file.key || '' } })), ...(text @@ -544,7 +553,14 @@ const ChatBox = ({ // 这里,无论是否为交互模式,最后都是 Human 的消息。 const messages = chats2GPTMessages({ - messages: newChatList.slice(0, -1), + messages: newChatList.slice(0, -1).map((item) => { + if (item.obj === ChatRoleEnum.Human) { + item.files?.forEach((file) => { + file.url = ''; + }); + } + return item; + }), reserveId: true, reserveTool: true }); diff --git a/projects/app/src/components/core/chat/ChatContainer/ChatBox/type.d.ts b/projects/app/src/components/core/chat/ChatContainer/ChatBox/type.d.ts index 4a274c78e..122a7a625 100644 --- a/projects/app/src/components/core/chat/ChatContainer/ChatBox/type.d.ts +++ b/projects/app/src/components/core/chat/ChatContainer/ChatBox/type.d.ts @@ -12,7 +12,9 @@ export type UserInputFileItemType = { icon: string; // img is base64 status: 0 | 1; // 0: uploading, 1: success url?: string; + key?: string; // S3 key for the file process?: number; + error?: string; }; export type ChatBoxInputFormType = { diff --git a/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/components/RenderInput.tsx b/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/components/RenderInput.tsx index 110d784ee..7b6592896 100644 --- a/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/components/RenderInput.tsx +++ b/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/components/RenderInput.tsx @@ -253,10 +253,17 @@ const RenderInput = () => { name={inputKey} rules={{ validate: (value) => { - if (!input.required) return true; - if (input.valueType === WorkflowIOValueTypeEnum.boolean) { - return value !== undefined; + if (isDisabledInput) return true; + if ( + input.renderTypeList.includes(FlowNodeInputTypeEnum.password) && + input.minLength + ) { + if (!value || typeof value !== 'object' || !value.value) return false; + return value.value.length >= input.minLength; } + if (typeof value === 'number' || typeof value === 'boolean') return true; + if (!input.required) return true; + return !!value; } }} @@ -274,6 +281,7 @@ const RenderInput = () => { form={variablesForm} fieldName={inputKey} modelList={llmModelList} + isRichText={false} /> ); }} diff --git a/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/context.tsx b/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/context.tsx index d8c677d3f..207aa8a6e 100644 --- a/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/context.tsx +++ b/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/context.tsx @@ -15,7 +15,7 @@ import { SseResponseEventEnum } from '@fastgpt/global/core/workflow/runtime/cons import { useTranslation } from 'next-i18next'; import { type ChatBoxInputFormType } from '../ChatBox/type'; import { chats2GPTMessages } from '@fastgpt/global/core/chat/adapt'; -import { getPluginRunUserQuery } from '@fastgpt/global/core/workflow/utils'; +import { clientGetWorkflowToolRunUserQuery } from '@fastgpt/global/core/workflow/utils'; import { cloneDeep } from 'lodash'; import { ChatItemContext } from '@/web/core/chat/context/chatItemContext'; import { ChatRecordContext } from '@/web/core/chat/context/chatRecordContext'; @@ -193,7 +193,7 @@ const PluginRunContextProvider = ({ setChatRecords([ { - ...getPluginRunUserQuery({ + ...clientGetWorkflowToolRunUserQuery({ pluginInputs, variables, files: files as RuntimeUserPromptType['files'] diff --git a/projects/app/src/components/core/chat/components/Interactive/InteractiveComponents.tsx b/projects/app/src/components/core/chat/components/Interactive/InteractiveComponents.tsx index de086a48c..422b4c381 100644 --- a/projects/app/src/components/core/chat/components/Interactive/InteractiveComponents.tsx +++ b/projects/app/src/components/core/chat/components/Interactive/InteractiveComponents.tsx @@ -100,6 +100,7 @@ export const FormInputComponent = React.memo(function FormInputComponent({ min={input.min} max={input.max} list={input.list} + isRichText={false} /> ); }} diff --git a/projects/app/src/components/core/chat/components/WholeResponseModal.tsx b/projects/app/src/components/core/chat/components/WholeResponseModal.tsx index 31240d672..fd067d98a 100644 --- a/projects/app/src/components/core/chat/components/WholeResponseModal.tsx +++ b/projects/app/src/components/core/chat/components/WholeResponseModal.tsx @@ -136,10 +136,7 @@ export const WholeResponseContent = ({ > {/* common info */} <> - + {activeModule?.totalPoints !== undefined && ( startMongoWatch() - }); + await Promise.all([ + connectMongo({ + db: connectionMongo, + url: MONGO_URL, + connectedCb: () => startMongoWatch() + }), + initBullMQWorkers() + ]); connectMongo({ db: connectionLogMongo, url: MONGO_LOG_URL @@ -68,7 +73,7 @@ export async function register() { await Promise.all([ preLoadWorker().catch(), getSystemTools(), - initSystemPluginGroups(), + initSystemPluginTags(), initAppTemplateTypes() ]); diff --git a/projects/app/src/pageComponents/app/detail/HTTPTools/ChatTest.tsx b/projects/app/src/pageComponents/app/detail/HTTPTools/ChatTest.tsx index ca2781705..c1d814324 100644 --- a/projects/app/src/pageComponents/app/detail/HTTPTools/ChatTest.tsx +++ b/projects/app/src/pageComponents/app/detail/HTTPTools/ChatTest.tsx @@ -11,7 +11,7 @@ import { type HttpToolConfigType } from '@fastgpt/global/core/app/type'; import { useForm } from 'react-hook-form'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import Markdown from '@/components/Markdown'; -import { postRunHTTPTool } from '@/web/core/app/api/plugin'; +import { postRunHTTPTool } from '@/web/core/app/api/tool'; import { type StoreSecretValueType } from '@fastgpt/global/common/secret/type'; import { valueTypeToInputType } from '@/components/core/app/formRender/utils'; import { getNodeInputTypeFromSchemaInputType } from '@fastgpt/global/core/app/jsonschema'; diff --git a/projects/app/src/pageComponents/app/detail/HTTPTools/EditForm.tsx b/projects/app/src/pageComponents/app/detail/HTTPTools/EditForm.tsx index 75a284013..661096d99 100644 --- a/projects/app/src/pageComponents/app/detail/HTTPTools/EditForm.tsx +++ b/projects/app/src/pageComponents/app/detail/HTTPTools/EditForm.tsx @@ -20,7 +20,7 @@ import { type HttpToolConfigType } from '@fastgpt/global/core/app/type'; import MyModal from '@fastgpt/web/components/common/MyModal'; import Avatar from '@fastgpt/web/components/common/Avatar'; import MyBox from '@fastgpt/web/components/common/MyBox'; -import { putUpdateHttpPlugin } from '@/web/core/app/api/plugin'; +import { putUpdateHttpPlugin } from '@/web/core/app/api/tool'; import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip'; import SchemaConfigModal from './SchemaConfigModal'; import ManualToolModal from './ManualToolModal'; diff --git a/projects/app/src/pageComponents/app/detail/HTTPTools/ManualToolModal.tsx b/projects/app/src/pageComponents/app/detail/HTTPTools/ManualToolModal.tsx index ba0f9f29d..96924d40f 100644 --- a/projects/app/src/pageComponents/app/detail/HTTPTools/ManualToolModal.tsx +++ b/projects/app/src/pageComponents/app/detail/HTTPTools/ManualToolModal.tsx @@ -46,7 +46,7 @@ import HeaderAuthForm from '@/components/common/secret/HeaderAuthForm'; import type { StoreSecretValueType } from '@fastgpt/global/common/secret/type'; import MyIcon from '@fastgpt/web/components/common/Icon'; import HttpInput from '@fastgpt/web/components/common/Input/HttpInput'; -import { putUpdateHttpPlugin } from '@/web/core/app/api/plugin'; +import { putUpdateHttpPlugin } from '@/web/core/app/api/tool'; import type { HttpToolConfigType } from '@fastgpt/global/core/app/type'; import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; import CurlImportModal from './CurlImportModal'; diff --git a/projects/app/src/pageComponents/app/detail/HTTPTools/SchemaConfigModal.tsx b/projects/app/src/pageComponents/app/detail/HTTPTools/SchemaConfigModal.tsx index c4cd9fe98..324b04089 100644 --- a/projects/app/src/pageComponents/app/detail/HTTPTools/SchemaConfigModal.tsx +++ b/projects/app/src/pageComponents/app/detail/HTTPTools/SchemaConfigModal.tsx @@ -19,14 +19,14 @@ import { } from '@chakra-ui/react'; import { useToast } from '@fastgpt/web/hooks/useToast'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; -import { getApiSchemaByUrl, putUpdateHttpPlugin } from '@/web/core/app/api/plugin'; +import { getApiSchemaByUrl, putUpdateHttpPlugin } from '@/web/core/app/api/tool'; import { useForm } from 'react-hook-form'; import type { HttpToolsType } from '@/pageComponents/dashboard/apps/HttpToolsCreateModal'; import { useContextSelector } from 'use-context-selector'; import { AppContext } from '../context'; import HttpInput from '@fastgpt/web/components/common/Input/HttpInput'; import MyIcon from '@fastgpt/web/components/common/Icon'; -import { pathData2ToolList } from '@fastgpt/global/core/app/httpTools/utils'; +import { pathData2ToolList } from '@fastgpt/global/core/app/tool/httpTool/utils'; import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; import { str2OpenApiSchema } from '@fastgpt/global/core/app/jsonschema'; import { diff --git a/projects/app/src/pageComponents/app/detail/Logs/LogChart.tsx b/projects/app/src/pageComponents/app/detail/Logs/LogChart.tsx index 0edad7986..e3188860b 100644 --- a/projects/app/src/pageComponents/app/detail/Logs/LogChart.tsx +++ b/projects/app/src/pageComponents/app/detail/Logs/LogChart.tsx @@ -782,7 +782,6 @@ const HeaderControl = ({ [t] ); - console.log(showSourceSelector); return ( {showSourceSelector && ( diff --git a/projects/app/src/pageComponents/app/detail/Logs/LogTable.tsx b/projects/app/src/pageComponents/app/detail/Logs/LogTable.tsx index 1ad9ef2e9..368ad7a37 100644 --- a/projects/app/src/pageComponents/app/detail/Logs/LogTable.tsx +++ b/projects/app/src/pageComponents/app/detail/Logs/LogTable.tsx @@ -149,8 +149,8 @@ const LogTable = ({ filename: 'chat_logs.csv', body: { appId, - dateStart: dateRange.from || new Date(), - dateEnd: addDays(dateRange.to || new Date(), 1), + dateStart: dayjs(dateRange.from || new Date()).format(), + dateEnd: dayjs(addDays(dateRange.to || new Date(), 1)).format(), sources: isSelectAllSource ? undefined : chatSources, tmbIds: isSelectAllTmb ? undefined : selectTmbIds, chatSearch, diff --git a/projects/app/src/pageComponents/app/detail/MCPTools/ChatTest.tsx b/projects/app/src/pageComponents/app/detail/MCPTools/ChatTest.tsx index f88096d62..2064d0fbd 100644 --- a/projects/app/src/pageComponents/app/detail/MCPTools/ChatTest.tsx +++ b/projects/app/src/pageComponents/app/detail/MCPTools/ChatTest.tsx @@ -7,11 +7,11 @@ import ChatRecordContextProvider from '@/web/core/chat/context/chatRecordContext import { Box, Button, Flex, HStack } from '@chakra-ui/react'; import { cardStyles } from '../constants'; import { useTranslation } from 'next-i18next'; -import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/tool/mcpTool/type'; import { useForm } from 'react-hook-form'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import Markdown from '@/components/Markdown'; -import { postRunMCPTool } from '@/web/core/app/api/plugin'; +import { postRunMCPTool } from '@/web/core/app/api/tool'; import { type StoreSecretValueType } from '@fastgpt/global/common/secret/type'; import { valueTypeToInputType } from '@/components/core/app/formRender/utils'; import { getNodeInputTypeFromSchemaInputType } from '@fastgpt/global/core/app/jsonschema'; diff --git a/projects/app/src/pageComponents/app/detail/MCPTools/Edit.tsx b/projects/app/src/pageComponents/app/detail/MCPTools/Edit.tsx index 5f9b5dd74..5d2f90a57 100644 --- a/projects/app/src/pageComponents/app/detail/MCPTools/Edit.tsx +++ b/projects/app/src/pageComponents/app/detail/MCPTools/Edit.tsx @@ -7,7 +7,7 @@ import AppCard from './AppCard'; import ChatTest from './ChatTest'; import MyBox from '@fastgpt/web/components/common/MyBox'; import EditForm from './EditForm'; -import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/tool/mcpTool/type'; import { type StoreSecretValueType } from '@fastgpt/global/common/secret/type'; const Edit = ({ diff --git a/projects/app/src/pageComponents/app/detail/MCPTools/EditForm.tsx b/projects/app/src/pageComponents/app/detail/MCPTools/EditForm.tsx index 172e002fa..2bf63f695 100644 --- a/projects/app/src/pageComponents/app/detail/MCPTools/EditForm.tsx +++ b/projects/app/src/pageComponents/app/detail/MCPTools/EditForm.tsx @@ -7,12 +7,12 @@ import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { AppContext } from '../context'; import { useContextSelector } from 'use-context-selector'; import MyIconButton from '@fastgpt/web/components/common/Icon/button'; -import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/tool/mcpTool/type'; import MyModal from '@fastgpt/web/components/common/MyModal'; import Avatar from '@fastgpt/web/components/common/Avatar'; import MyBox from '@fastgpt/web/components/common/MyBox'; import type { getMCPToolsBody } from '@/pages/api/support/mcp/client/getTools'; -import { getMCPTools } from '@/web/core/app/api/plugin'; +import { getMCPTools } from '@/web/core/app/api/tool'; import HeaderAuthConfig from '@/components/common/secret/HeaderAuthConfig'; import { type StoreSecretValueType } from '@fastgpt/global/common/secret/type'; diff --git a/projects/app/src/pageComponents/app/detail/MCPTools/Header.tsx b/projects/app/src/pageComponents/app/detail/MCPTools/Header.tsx index cf7ad7fd4..783f14228 100644 --- a/projects/app/src/pageComponents/app/detail/MCPTools/Header.tsx +++ b/projects/app/src/pageComponents/app/detail/MCPTools/Header.tsx @@ -8,8 +8,8 @@ import { getAppFolderPath } from '@/web/core/app/api/app'; import { useCallback } from 'react'; import { useRouter } from 'next/router'; import { useSystemStore } from '@/web/common/system/useSystemStore'; -import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; -import { postUpdateMCPTools } from '@/web/core/app/api/plugin'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/tool/mcpTool/type'; +import { postUpdateMCPTools } from '@/web/core/app/api/tool'; import { type StoreSecretValueType } from '@fastgpt/global/common/secret/type'; const Header = ({ diff --git a/projects/app/src/pageComponents/app/detail/MCPTools/index.tsx b/projects/app/src/pageComponents/app/detail/MCPTools/index.tsx index 81fe6709c..e647f9edd 100644 --- a/projects/app/src/pageComponents/app/detail/MCPTools/index.tsx +++ b/projects/app/src/pageComponents/app/detail/MCPTools/index.tsx @@ -5,7 +5,7 @@ import Edit from './Edit'; import { useContextSelector } from 'use-context-selector'; import { AppContext } from '../context'; import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; -import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/tool/mcpTool/type'; import { type StoreSecretValueType } from '@fastgpt/global/common/secret/type'; const MCPTools = () => { diff --git a/projects/app/src/pageComponents/app/detail/Plugin/Header.tsx b/projects/app/src/pageComponents/app/detail/Plugin/Header.tsx index e83e8627b..e3c2fba1f 100644 --- a/projects/app/src/pageComponents/app/detail/Plugin/Header.tsx +++ b/projects/app/src/pageComponents/app/detail/Plugin/Header.tsx @@ -106,6 +106,10 @@ const Header = () => { ) ); } + }, + { + manual: true, + refreshDeps: [onSaveApp, setPast, flowData2StoreData, appDetail.chatConfig] } ); @@ -157,8 +161,7 @@ const Header = () => { } aria-label={''} - size={'xs'} - w={'1rem'} + size={'xsSquare'} variant={'ghost'} onClick={isSaved ? onBack : onOpenBackConfirm} /> diff --git a/projects/app/src/pageComponents/app/detail/SimpleApp/components/ConfigToolModal.tsx b/projects/app/src/pageComponents/app/detail/SimpleApp/components/ConfigToolModal.tsx index aa3b5c73b..407df20de 100644 --- a/projects/app/src/pageComponents/app/detail/SimpleApp/components/ConfigToolModal.tsx +++ b/projects/app/src/pageComponents/app/detail/SimpleApp/components/ConfigToolModal.tsx @@ -17,8 +17,8 @@ import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip'; import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel'; import SecretInputModal, { type ToolParamsFormType -} from '@/pageComponents/app/plugin/SecretInputModal'; -import { SystemToolInputTypeMap } from '@fastgpt/global/core/app/systemTool/constants'; +} from '@/pageComponents/app/tool/SecretInputModal'; +import { SystemToolSecretInputTypeMap } from '@fastgpt/global/core/app/tool/systemTool/constants'; import { useBoolean } from 'ahooks'; const ConfigToolModal = ({ @@ -119,7 +119,7 @@ const ConfigToolModal = ({ } return t('workflow:tool_active_config_type', { - type: t(SystemToolInputTypeMap[val.type]?.text as any) + type: t(SystemToolSecretInputTypeMap[val.type]?.text as any) }); })()} @@ -164,6 +164,7 @@ const ConfigToolModal = ({ return ( {appForm.selectedTools.map((item) => { const toolError = formatToolError(item.pluginData?.error); + const status = item.status || item.pluginData?.status; return ( @@ -113,6 +116,13 @@ const ToolSelect = ({ > {item.name} + {status !== undefined && status !== PluginStatusEnum.Normal && ( + + + {t(PluginStatusMap[status].label)} + + + )} {toolError && ( void }) => { const { t } = useTranslation(); const { appDetail } = useContextSelector(AppContext, (v) => v); - const [templateType, setTemplateType] = useState(TemplateTypeEnum.systemPlugin); + const [templateType, setTemplateType] = useState(TemplateTypeEnum.appTool); const [parentId, setParentId] = useState(''); const [searchKey, setSearchKey] = useState(''); + const [selectedTagIds, setSelectedTagIds] = useState([]); const { - data: templates = [], + data: rawTemplates = [], runAsync: loadTemplates, loading: isLoading } = useRequest2( @@ -95,10 +82,10 @@ const ToolSelectModal = ({ onClose, ...props }: Props & { onClose: () => void }) parentId?: ParentIdType; searchVal?: string; }) => { - if (type === TemplateTypeEnum.systemPlugin) { - return getSystemPlugTemplates({ parentId, searchKey: searchVal }); - } else if (type === TemplateTypeEnum.teamPlugin) { - return getTeamPlugTemplates({ + if (type === TemplateTypeEnum.appTool) { + return getAppToolTemplates({ parentId, searchKey: searchVal }); + } else if (type === TemplateTypeEnum.teamApp) { + return getTeamAppTemplates({ parentId, searchKey: searchVal }).then((res) => res.filter((app) => app.id !== appDetail._id)); @@ -114,11 +101,21 @@ const ToolSelectModal = ({ onClose, ...props }: Props & { onClose: () => void }) } ); + const templates = useMemo(() => { + if (selectedTagIds.length === 0 || templateType !== TemplateTypeEnum.appTool) { + return rawTemplates; + } + return rawTemplates.filter((template) => { + // @ts-ignore + return template.tags?.some((tag) => selectedTagIds.includes(tag)); + }); + }, [rawTemplates, selectedTagIds, templateType]); + const { data: paths = [] } = useRequest2( () => { - if (templateType === TemplateTypeEnum.teamPlugin) + if (templateType === TemplateTypeEnum.teamApp) return getAppFolderPath({ sourceId: parentId, type: 'current' }); - return getSystemPluginPaths({ sourceId: parentId, type: 'current' }); + return getAppToolPaths({ sourceId: parentId, type: 'current' }); }, { manual: false, @@ -126,6 +123,10 @@ const ToolSelectModal = ({ onClose, ...props }: Props & { onClose: () => void }) } ); + const { data: allTags = [] } = useRequest2(getPluginToolTags, { + manual: false + }); + const onUpdateParentId = useCallback( (parentId: ParentIdType) => { loadTemplates({ @@ -158,12 +159,12 @@ const ToolSelectModal = ({ onClose, ...props }: Props & { onClose: () => void }) { icon: 'phoneTabbar/tool', label: t('common:navbar.Toolkit'), - value: TemplateTypeEnum.systemPlugin + value: TemplateTypeEnum.appTool }, { - icon: 'core/modules/teamPlugin', + icon: 'support/user/userLightSmall', label: t('common:core.module.template.Team app'), - value: TemplateTypeEnum.teamPlugin + value: TemplateTypeEnum.teamApp } ]} py={'5px'} @@ -181,13 +182,23 @@ const ToolSelectModal = ({ onClose, ...props }: Props & { onClose: () => void }) value={searchKey} onChange={(e) => setSearchKey(e.target.value)} placeholder={ - templateType === TemplateTypeEnum.systemPlugin + templateType === TemplateTypeEnum.appTool ? t('common:search_tool') : t('app:search_app') } /> + {templateType === TemplateTypeEnum.appTool && allTags.length > 0 && ( + + + + )} {/* route components */} {!searchKey && parentId && ( @@ -195,7 +206,7 @@ const ToolSelectModal = ({ onClose, ...props }: Props & { onClose: () => void }) )} - + (); const onCloseConfigTool = useCallback(() => setConfigTool(undefined), []); @@ -234,7 +245,7 @@ const RenderList = React.memo(function RenderList({ const { runAsync: onClickAdd, loading: isLoading } = useRequest2( async (template: NodeTemplateListItemType) => { - const res = await getPreviewPluginNode({ appId: template.id }); + const res = await getToolPreviewNode({ appId: template.id }); /* Invalid plugin check 1. Reference type. but not tool description; @@ -321,274 +332,169 @@ const RenderList = React.memo(function RenderList({ } ); - const { data: pluginGroups = [] } = useRequest2(getPluginGroups, { - manual: false - }); - - const formatTemplatesArray = useMemo(() => { - const data = (() => { - if (type === TemplateTypeEnum.systemPlugin) { - return pluginGroups.map((group) => { - const map = group.groupTypes.reduce< - Record< - string, - { - list: NodeTemplateListItemType[]; - label: string; - } - > - >((acc, item) => { - acc[item.typeId] = { - list: [], - label: t(parseI18nString(item.typeName, i18n.language)) - }; - return acc; - }, {}); - - templates.forEach((item) => { - if (map[item.templateType]) { - map[item.templateType].list.push({ - ...item, - name: t(parseI18nString(item.name, i18n.language)), - intro: t(parseI18nString(item.intro, i18n.language)) - }); - } - }); - return { - label: group.groupName, - list: Object.entries(map) - .map(([type, { list, label }]) => ({ - type, - label, - list - })) - .filter((item) => item.list.length > 0) - }; - }); - } - - // Team apps - return [ - { - list: [ - { - list: templates, - type: '', - label: '' - } - ], - label: '' - } - ]; - })(); - - return data.filter(({ list }) => list.length > 0); - }, [i18n.language, pluginGroups, t, templates, type]); - - const gridStyle = useMemo(() => { - if (type === TemplateTypeEnum.teamPlugin) { - return { - gridTemplateColumns: ['1fr', '1fr'], - py: 2, - avatarSize: '2rem' - }; - } - - return { - gridTemplateColumns: ['1fr', '1fr 1fr'], - py: 3, - avatarSize: '1.75rem' - }; - }, [type]); - - const PluginListRender = useMemoizedFn(({ list = [] }: { list: NodeTemplateListType }) => { - const isSystemTool = type === TemplateTypeEnum.systemPlugin; + const PluginListRender = useMemoizedFn(() => { + const isSystemTool = type === TemplateTypeEnum.appTool; return ( <> - {list.map((item, i) => { - return ( - - - - {t(item.label as any)} - - - - {item.list.map((template) => { - const selected = selectedTools.some((tool) => tool.pluginId === template.id); - - return ( - - - - - {t(template.name as any)} - - {isSystemTool && ( - - By {template.author || feConfigs?.systemTitle} - - )} - - - {t(template.intro as any) || t('common:core.workflow.Not intro')} - - {isSystemTool && ( - - )} - - } - > - + {templates.length > 0 ? ( + + {templates.map((template) => { + const selected = selectedTools.some((tool) => tool.pluginId === template.id); + return ( + + - - {t(template.name as any)} + + {t(parseI18nString(template.name, i18n.language))} - - {selected ? ( - - ) : template.flowNodeType === 'toolSet' ? ( - - - - - ) : template.isFolder ? ( - - ) : ( - + {isSystemTool && ( + + By {template.author || feConfigs?.systemTitle} + )} - - ); - })} - - - ); - })} + + {t(parseI18nString(template.intro || '', i18n.language)) || + t('common:core.workflow.Not intro')} + + {isSystemTool && ( + + )} + + } + > + + + + + {t(parseI18nString(template.name, i18n.language))} + + + + {selected ? ( + + ) : template.flowNodeType === 'toolSet' ? ( + + + + + ) : template.isFolder ? ( + + ) : ( + + )} + + + ); + })} + + ) : ( + + )} ); }); - return templates.length === 0 ? ( - - ) : ( - <> - - {formatTemplatesArray.length > 1 ? ( - <> - {formatTemplatesArray.map(({ list, label }, index) => ( - - - {t(label as any)} - - - - - - - ))} - - ) : ( - - )} - - + return ( + + + + + {type === TemplateTypeEnum.appTool && ( + router.push('/toolkit/tools')} + gap={1} + bottom={0} + right={[3, 6]} + position="absolute" + zIndex={2} + > + {t('app:find_more_tools')} + + + )} {!!configTool && ( )} - + ); }); diff --git a/projects/app/src/pageComponents/app/detail/Workflow/Header.tsx b/projects/app/src/pageComponents/app/detail/Workflow/Header.tsx index e83e8627b..27788fd97 100644 --- a/projects/app/src/pageComponents/app/detail/Workflow/Header.tsx +++ b/projects/app/src/pageComponents/app/detail/Workflow/Header.tsx @@ -84,7 +84,6 @@ const Header = () => { versionName?: string; }) => { const data = flowData2StoreData(); - if (data) { await onSaveApp({ ...data, @@ -106,6 +105,10 @@ const Header = () => { ) ); } + }, + { + manual: true, + refreshDeps: [onSaveApp, setPast, flowData2StoreData, appDetail.chatConfig] } ); diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/NodeTemplatesModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/NodeTemplatesModal.tsx index 515d82ea9..8cb45319c 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/NodeTemplatesModal.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/NodeTemplatesModal.tsx @@ -29,7 +29,10 @@ const NodeTemplatesModal = ({ isOpen, onClose }: ModuleTemplateListProps) => { templatesIsLoading, templates, onUpdateTemplateType, - onUpdateParentId + onUpdateParentId, + selectedTagIds, + setSelectedTagIds, + toolTags } = useNodeTemplates(); const onAddNode = useMemoizedFn(async ({ newNodes }: { newNodes: Node[] }) => { @@ -86,6 +89,9 @@ const NodeTemplatesModal = ({ isOpen, onClose }: ModuleTemplateListProps) => { searchKey={searchKey} setSearchKey={setSearchKey} onUpdateParentId={onUpdateParentId} + selectedTagIds={selectedTagIds} + setSelectedTagIds={setSelectedTagIds} + toolTags={toolTags} /> { templatesIsLoading, templates, onUpdateTemplateType, - onUpdateParentId + onUpdateParentId, + toolTags, + selectedTagIds, + setSelectedTagIds } = useNodeTemplates(); const onAddNode = useMemoizedFn(async ({ newNodes }: { newNodes: Node[] }) => { @@ -121,6 +124,9 @@ const NodeTemplatesPopover = () => { onUpdateParentId={onUpdateParentId} searchKey={searchKey} setSearchKey={setSearchKey} + toolTags={toolTags} + selectedTagIds={selectedTagIds} + setSelectedTagIds={setSelectedTagIds} /> >; onUpdateTemplateType: (type: TemplateTypeEnum) => void; onUpdateParentId: (parentId: string) => void; + + selectedTagIds: string[]; + setSelectedTagIds: (e: string[]) => any; + toolTags: SystemPluginToolTagType[]; }; const NodeTemplateListHeader = ({ @@ -37,7 +43,10 @@ const NodeTemplateListHeader = ({ searchKey, setSearchKey, onUpdateTemplateType, - onUpdateParentId + onUpdateParentId, + selectedTagIds, + setSelectedTagIds, + toolTags }: NodeTemplateListHeaderProps) => { const { t } = useTranslation(); const { feConfigs } = useSystemStore(); @@ -46,9 +55,9 @@ const NodeTemplateListHeader = ({ // Get paths const { data: paths = [] } = useRequest2( () => { - if (templateType === TemplateTypeEnum.teamPlugin) + if (templateType === TemplateTypeEnum.teamApp) return getAppFolderPath({ sourceId: parentId, type: 'current' }); - return getSystemPluginPaths({ sourceId: parentId, type: 'current' }); + return getAppToolPaths({ sourceId: parentId, type: 'current' }); }, { manual: false, @@ -71,12 +80,12 @@ const NodeTemplateListHeader = ({ { icon: 'phoneTabbar/tool', label: t('common:navbar.Toolkit'), - value: TemplateTypeEnum.systemPlugin + value: TemplateTypeEnum.appTool }, { - icon: 'core/modules/teamPlugin', + icon: 'support/user/userLightSmall', label: t('common:core.module.template.Team app'), - value: TemplateTypeEnum.teamPlugin + value: TemplateTypeEnum.teamApp } ]} width={'100%'} @@ -113,8 +122,7 @@ const NodeTemplateListHeader = ({ )} {/* Search */} - {(templateType === TemplateTypeEnum.teamPlugin || - templateType === TemplateTypeEnum.systemPlugin) && ( + {(templateType === TemplateTypeEnum.teamApp || templateType === TemplateTypeEnum.appTool) && ( @@ -124,7 +132,7 @@ const NodeTemplateListHeader = ({ h={'full'} bg={'myGray.50'} placeholder={ - templateType === TemplateTypeEnum.teamPlugin + templateType === TemplateTypeEnum.teamApp ? t('common:plugin.Search_app') : t('common:search_tool') } @@ -133,7 +141,7 @@ const NodeTemplateListHeader = ({ /> - {!isPopover && templateType === TemplateTypeEnum.teamPlugin && ( + {!isPopover && templateType === TemplateTypeEnum.teamApp && ( )} - {!isPopover && - templateType === TemplateTypeEnum.systemPlugin && - feConfigs.systemPluginCourseUrl && ( - window.open(feConfigs.systemPluginCourseUrl)} - gap={1} - ml={4} - > - {t('common:plugin.contribute')} - - - )} + {templateType === TemplateTypeEnum.appTool && ( + router.push('/plugin/tool')} + gap={1} + ml={4} + > + {t('app:find_more_tools')} + + + )} )} + {/* Tag filter */} + {templateType === TemplateTypeEnum.appTool && + selectedTagIds !== undefined && + setSelectedTagIds && ( + + + + )} {/* paths */} - {(templateType === TemplateTypeEnum.teamPlugin || - templateType === TemplateTypeEnum.systemPlugin) && + {(templateType === TemplateTypeEnum.teamApp || templateType === TemplateTypeEnum.appTool) && !searchKey && parentId && ( diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/list.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/list.tsx index 5b894fa75..17b83d12a 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/list.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/list.tsx @@ -12,9 +12,7 @@ import { css } from '@chakra-ui/react'; import { useTranslation } from 'next-i18next'; -import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; -import { getPluginGroups, getPreviewPluginNode } from '@/web/core/app/api/plugin'; -import EmptyTip from '@fastgpt/web/components/common/EmptyTip'; +import { getToolPreviewNode } from '@/web/core/app/api/tool'; import type { FlowNodeItemType, NodeTemplateListItemType, @@ -25,7 +23,7 @@ import { useMemoizedFn } from 'ahooks'; import MyIcon from '@fastgpt/web/components/common/Icon'; import MyAvatar from '@fastgpt/web/components/common/Avatar'; import MyTooltip from '@fastgpt/web/components/common/MyTooltip'; -import CostTooltip from '@/components/core/app/plugin/CostTooltip'; +import CostTooltip from '@/components/core/app/tool/CostTooltip'; import { FlowNodeTypeEnum, AppNodeFlowNodeTypeMap @@ -45,7 +43,6 @@ import { NodeInputKeyEnum, NodeOutputKeyEnum } from '@fastgpt/global/core/workfl import { nodeTemplate2FlowNode } from '@/web/core/workflow/utils'; import { useToast } from '@fastgpt/web/hooks/useToast'; import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; -import { useSafeTranslation } from '@fastgpt/web/hooks/useSafeTranslation'; import { useSystemStore } from '@/web/common/system/useSystemStore'; import { WorkflowModalContext } from '../../../context/workflowModalContext'; @@ -73,13 +70,13 @@ const NodeTemplateListItem = ({ isPopover?: boolean; onUpdateParentId: (parentId: string) => void; }) => { - const { t } = useSafeTranslation(); + const { t } = useTranslation(); const { feConfigs } = useSystemStore(); const { screenToFlowPosition } = useReactFlow(); const handleParams = useContextSelector(WorkflowModalContext, (v) => v.handleParams); const isToolHandle = handleParams?.handleId === 'selectedTools'; - const isSystemTool = templateType === TemplateTypeEnum.systemPlugin; + const isSystemTool = templateType === TemplateTypeEnum.appTool; return ( - - {t(template.name as any)} + + + {t(template.name as any)} + {/* Folder right arrow */} {template.isFolder && ( @@ -224,10 +221,6 @@ const NodeTemplateList = ({ const { getNodeList, getNodeById } = useContextSelector(WorkflowBufferDataContext, (v) => v); const handleParams = useContextSelector(WorkflowModalContext, (v) => v.handleParams); - const { data: pluginGroups = [] } = useRequest2(getPluginGroups, { - manual: false - }); - const handleAddNode = useCallback( async ({ template, @@ -240,7 +233,7 @@ const NodeTemplateList = ({ const templateNode = await (async () => { try { if (AppNodeFlowNodeTypeMap[template.flowNodeType]) { - return await getPreviewPluginNode({ appId: template.id }); + return await getToolPreviewNode({ appId: template.id }); } const baseTemplate = moduleTemplatesFlat.find((item) => item.id === template.id); @@ -370,7 +363,7 @@ const NodeTemplateList = ({ }, {}); templates.forEach((item) => { - if (map[item.templateType]) { + if (item.templateType && map[item.templateType]) { map[item.templateType].list.push({ ...item, name: t(item.name as any), @@ -393,48 +386,6 @@ const NodeTemplateList = ({ ]; } - if (templateType === TemplateTypeEnum.systemPlugin) { - console.log(pluginGroups, 222); - return pluginGroups.map((group) => { - const map = group.groupTypes.reduce< - Record< - string, - { - list: NodeTemplateListItemType[]; - label: string; - } - > - >((acc, item) => { - acc[item.typeId] = { - list: [], - label: t(parseI18nString(item.typeName, i18n.language)) - }; - return acc; - }, {}); - - templates.forEach((item) => { - if (map[item.templateType]) { - map[item.templateType].list.push({ - ...item, - name: t(parseI18nString(item.name, i18n.language)), - intro: t(parseI18nString(item.intro, i18n.language)) - }); - } - }); - return { - label: group.groupName, - list: Object.entries(map) - .map(([type, { list, label }]) => ({ - type, - label, - list - })) - .filter((item) => item.list.length > 0) - }; - }); - } - - // Team apps return [ { label: '', @@ -442,16 +393,20 @@ const NodeTemplateList = ({ { type: '', label: '', - list: templates + list: templates.map((item) => ({ + ...item, + name: t(parseI18nString(item.name, i18n.language)), + intro: t(parseI18nString(item.intro || '', i18n.language)) + })) } ] } ]; })(); return data.filter(({ list }) => list.length > 0); - }, [templateType, templates, t, pluginGroups, i18n.language]); + }, [templateType, templates, t, i18n.language]); - const PluginListRender = useMemoizedFn(({ list = [] }: { list: NodeTemplateListType }) => { + const NodeListRender = useMemoizedFn(({ list = [] }: { list: NodeTemplateListType }) => { return ( <> {list.map((item) => { @@ -478,7 +433,7 @@ const NodeTemplateList = ({ @@ -500,9 +455,7 @@ const NodeTemplateList = ({ ); }); - return templates.length === 0 ? ( - - ) : ( + return ( 1 ? 2 : 5}> {formatTemplatesArrayData.length > 1 ? ( @@ -522,13 +475,13 @@ const NodeTemplateList = ({ - + ))} ) : ( - + )} diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/useNodeTemplates.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/useNodeTemplates.tsx index 0348db493..695bb358c 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/useNodeTemplates.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/NodeTemplates/useNodeTemplates.tsx @@ -3,13 +3,14 @@ import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { useSystemStore } from '@/web/common/system/useSystemStore'; import type { NodeTemplateListItemType } from '@fastgpt/global/core/workflow/type/node'; import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; -import { getTeamPlugTemplates, getSystemPlugTemplates } from '@/web/core/app/api/plugin'; +import { getTeamAppTemplates, getAppToolTemplates } from '@/web/core/app/api/tool'; import { TemplateTypeEnum } from './header'; import { useContextSelector } from 'use-context-selector'; import { WorkflowBufferDataContext } from '../../../context/workflowInitContext'; import type { ParentIdType } from '@fastgpt/global/common/parentFolder/type'; import { useDebounceEffect } from 'ahooks'; import { AppContext } from '@/pageComponents/app/detail/context'; +import { getPluginToolTags } from '@/web/core/plugin/toolTag/api'; export const useNodeTemplates = () => { const { feConfigs } = useSystemStore(); @@ -26,6 +27,11 @@ export const useNodeTemplates = () => { (v) => v ); + const [selectedTagIds, setSelectedTagIds] = useState([]); + const { data: toolTags = [] } = useRequest2(getPluginToolTags, { + manual: false + }); + const { data: basicNodes } = useRequest2( async () => { if (templateType === TemplateTypeEnum.basic) { @@ -72,31 +78,34 @@ export const useNodeTemplates = () => { ); const { - data: teamAndSystemApps, + data: teamAndSystemTools, loading: templatesIsLoading, runAsync: loadNodeTemplates } = useRequest2( async ({ parentId, type = templateType, - searchVal + searchVal, + tags }: { parentId?: ParentIdType; type?: TemplateTypeEnum; searchVal?: string; + tags?: string[]; }) => { - if (type === TemplateTypeEnum.teamPlugin) { + if (type === TemplateTypeEnum.teamApp) { // app, workflow-plugin, mcp - return getTeamPlugTemplates({ + return getTeamAppTemplates({ parentId, searchKey: searchVal }).then((res) => res.filter((app) => app.id !== appId)); } - if (type === TemplateTypeEnum.systemPlugin) { + if (type === TemplateTypeEnum.appTool) { // systemTool - return getSystemPlugTemplates({ + return getAppToolTemplates({ searchKey: searchVal, - parentId + parentId, + tags }); } }, @@ -113,7 +122,7 @@ export const useNodeTemplates = () => { return; } - loadNodeTemplates({ parentId, searchVal: searchKey }); + loadNodeTemplates({ parentId, searchVal: searchKey, tags: selectedTagIds }); }, [searchKey], { @@ -135,18 +144,26 @@ export const useNodeTemplates = () => { searchKeyLock.current = true; setSearchKey(''); setParentId(''); + setSelectedTagIds([]); setTemplateType(type); loadNodeTemplates({ type }); }, [loadNodeTemplates] ); + const onUpdateSelectedTagIds = useCallback( + (tags: string[]) => { + setSelectedTagIds(tags); + loadNodeTemplates({ parentId, searchVal: searchKey, tags }); + }, + [loadNodeTemplates, parentId, searchKey] + ); const templates = useMemo(() => { if (templateType === TemplateTypeEnum.basic) { return basicNodes || []; } - return teamAndSystemApps || []; - }, [basicNodes, teamAndSystemApps, templateType]); + return teamAndSystemTools || []; + }, [basicNodes, teamAndSystemTools, templateType]); return { templateType, @@ -156,6 +173,9 @@ export const useNodeTemplates = () => { onUpdateParentId, onUpdateTemplateType, searchKey, - setSearchKey + setSearchKey, + selectedTagIds, + setSelectedTagIds: onUpdateSelectedTagIds, + toolTags }; }; diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/ToolParamConfig.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/ToolParamConfig.tsx index a83352ace..5045ba1fd 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/ToolParamConfig.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/components/ToolParamConfig.tsx @@ -6,17 +6,16 @@ import { Box, Button } from '@chakra-ui/react'; import { useBoolean } from 'ahooks'; import { useContextSelector } from 'use-context-selector'; import { WorkflowBufferDataContext } from '../../context/workflowInitContext'; -import { SystemToolInputTypeMap } from '@fastgpt/global/core/app/systemTool/constants'; +import { SystemToolSecretInputTypeMap } from '@fastgpt/global/core/app/tool/systemTool/constants'; import SecretInputModal, { type ToolParamsFormType -} from '@/pageComponents/app/plugin/SecretInputModal'; +} from '@/pageComponents/app/tool/SecretInputModal'; import { WorkflowActionsContext } from '../../context/workflowActionsContext'; const ToolConfig = ({ nodeId, inputs }: { nodeId?: string; inputs?: FlowNodeInputItemType[] }) => { const { t } = useTranslation(); const onChangeNode = useContextSelector(WorkflowActionsContext, (v) => v.onChangeNode); - const getNodeById = useContextSelector(WorkflowBufferDataContext, (v) => v.getNodeById); - const node = getNodeById(nodeId); + const node = useContextSelector(WorkflowBufferDataContext, (v) => v.getNodeById(nodeId)); const inputConfig = inputs?.find((item) => item.key === NodeInputKeyEnum.systemInputConfig); const inputList = inputConfig?.inputList; @@ -29,7 +28,7 @@ const ToolConfig = ({ nodeId, inputs }: { nodeId?: string; inputs?: FlowNodeInpu } return t('workflow:tool_active_config_type', { - type: t(SystemToolInputTypeMap[val.type]?.text as any) + type: t(SystemToolSecretInputTypeMap[val.type]?.text as any) }); }, [inputConfig?.value, t]); diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoop.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoop.tsx index 6a5fa8d4e..18a98e1f0 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoop.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoop.tsx @@ -48,7 +48,7 @@ const NodeLoop = ({ data, selected }: NodeProps) => { WorkflowLayoutContext, (v) => v.resetParentNodeSizeAndPosition ); - const computedResult = useMemo(() => { + const computedResult = useMemoEnhance(() => { return { nodeWidth: Math.round( Number(inputs.find((input) => input.key === NodeInputKeyEnum.nodeWidth)?.value) || 500 @@ -146,6 +146,8 @@ const NodeLoop = ({ data, selected }: NodeProps) => { setTimeout(() => { resetParentNodeSizeAndPosition(nodeId); }, 50); + + // eslint-disable-next-line react-hooks/exhaustive-deps }, [size?.height]); return ( diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoopStart.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoopStart.tsx index 54f672587..9af4c4afd 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoopStart.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/Loop/NodeLoopStart.tsx @@ -85,50 +85,56 @@ const NodeLoopStart = ({ data, selected }: NodeProps) => { } }, [loopStartNode?.outputs, nodeId, onChangeNode, loopItemInputType, t]); - return ( - - - - - - - - - - - - - {outputs.map((output) => ( - - - {output.valueType && } + const Render = useMemo(() => { + return ( + + + + +
{t('workflow:Variable_name')}{t('common:core.workflow.Value type')}
- - - {t(output.label as any)} - - {FlowValueTypeMap[output.valueType]?.label}
+ + + + - ))} - -
+ {t('workflow:Variable_name')} + {t('common:core.workflow.Value type')}
-
+ + + {outputs.map((output) => ( + + + + + {t(output.label as any)} + + + {output.valueType && {FlowValueTypeMap[output.valueType]?.label}} + + ))} + + + +
-
- - ); + + ); + }, [data, outputs, selected, t]); + + return Render; }; export default React.memo(NodeLoopStart); diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeLaf.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeLaf.tsx index f807d4525..79e80cb7c 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeLaf.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeLaf.tsx @@ -8,7 +8,7 @@ import { NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants'; import { useTranslation } from 'next-i18next'; import { getLafAppDetail } from '@/web/support/laf/api'; import MySelect from '@fastgpt/web/components/common/MySelect'; -import { getApiSchemaByUrl } from '@/web/core/app/api/plugin'; +import { getApiSchemaByUrl } from '@/web/core/app/api/tool'; import { useUserStore } from '@/web/support/user/useUserStore'; import { useSystemStore } from '@/web/common/system/useSystemStore'; import { ChevronRightIcon } from '@chakra-ui/icons'; diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputEditModal.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputEditModal.tsx index 3037901a4..5a9946403 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputEditModal.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputEditModal.tsx @@ -61,9 +61,9 @@ const FieldEditModal = ({ defaultValueType: WorkflowIOValueTypeEnum.string }, { - icon: 'core/workflow/inputType/jsonEditor', - label: t('common:core.workflow.inputType.JSON Editor'), - value: [FlowNodeInputTypeEnum.JSONEditor, FlowNodeInputTypeEnum.reference], + icon: 'core/workflow/inputType/password', + label: t('common:core.workflow.inputType.password'), + value: [FlowNodeInputTypeEnum.password], defaultValueType: WorkflowIOValueTypeEnum.string }, { @@ -212,6 +212,13 @@ const FieldEditModal = ({ data.key = data.label; + // Remove undefined keys + Object.keys(data).forEach((key) => { + if (data[key as keyof FlowNodeInputItemType] === undefined) { + delete data[key as keyof FlowNodeInputItemType]; + } + }); + if (action === 'confirm') { onSubmit(data); onClose(); @@ -224,7 +231,7 @@ const FieldEditModal = ({ reset(defaultInput); } }, - [defaultValue.key, defaultValueType, isEdit, keys, onSubmit, t, toast, onClose, reset] + [defaultValue.key, keys, toast, t, defaultValueType, isEdit, onSubmit, onClose, reset] ); const onSubmitError = useCallback( (e: Object) => { diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx index 73c856437..1718cea61 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx @@ -1,8 +1,10 @@ import { Box, Button, + Checkbox, Flex, FormControl, + Grid, HStack, Input, Stack, @@ -23,20 +25,26 @@ import MultipleSelect, { } from '@fastgpt/web/components/common/MySelect/MultipleSelect'; import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip'; import JsonEditor from '@fastgpt/web/components/common/Textarea/JsonEditor'; -import React, { useMemo } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import { useFieldArray, type UseFormReturn } from 'react-hook-form'; import { useTranslation } from 'next-i18next'; import MyIcon from '@fastgpt/web/components/common/Icon'; +import Avatar from '@fastgpt/web/components/common/Avatar'; import DndDrag, { Draggable } from '@fastgpt/web/components/common/DndDrag'; import MyTextarea from '@/components/common/Textarea/MyTextarea'; import MyNumberInput from '@fastgpt/web/components/common/Input/NumberInput'; import TimeInput from '@/components/core/app/formRender/TimeInput'; -import ChatFunctionTip from '@/components/core/app/Tip'; import MySlider from '@/components/Slider'; import { useSystemStore } from '@/web/common/system/useSystemStore'; import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel'; import RadioGroup from '@fastgpt/web/components/common/Radio/RadioGroup'; +import { DatasetSelectModal } from '@/components/core/app/DatasetSelectModal'; +import type { EmbeddingModelItemType } from '@fastgpt/global/core/ai/model.d'; +import AIModelSelector from '@/components/Select/AIModelSelector'; +import { useMemoEnhance } from '@fastgpt/web/hooks/useMemoEnhance'; +import type { FlowNodeInputItemType } from '@fastgpt/global/core/workflow/type/io'; +import { formatTime2YMDHMS } from '@fastgpt/global/common/string/time'; const InputTypeConfig = ({ form, @@ -64,20 +72,29 @@ const InputTypeConfig = ({ }) => { const { t } = useTranslation(); const defaultListValue = { label: t('common:None'), value: '' }; - const { feConfigs } = useSystemStore(); + const { feConfigs, llmModelList } = useSystemStore(); - const typeLabels = { - name: { - formInput: t('common:core.module.input_name'), - plugin: t('common:core.module.Field Name'), - variable: t('workflow:Variable_name') - }, - description: { - formInput: t('common:core.module.input_description'), - plugin: t('workflow:field_description'), - variable: t('workflow:variable_description') - } - }; + const availableModels = useMemoEnhance(() => { + return llmModelList.map((model) => ({ + value: model.model, + label: model.name + })); + }, [llmModelList]); + + const typeLabels = useMemo(() => { + return { + name: { + formInput: t('common:core.module.input_name'), + plugin: t('common:core.module.Field Name'), + variable: t('workflow:Variable_name') + }, + description: { + formInput: t('common:core.module.input_description'), + plugin: t('workflow:field_description'), + variable: t('workflow:variable_description') + } + }; + }, [t]); const { register, setValue, handleSubmit, control, watch } = form; const maxLength = watch('maxLength'); @@ -88,12 +105,28 @@ const InputTypeConfig = ({ const valueType = watch('valueType'); const timeGranularity = watch('timeGranularity'); - const timeType = watch('timeType'); const timeRangeStart = watch('timeRangeStart'); const timeRangeEnd = watch('timeRangeEnd'); + const timeRangeStartDefault = + inputType === VariableInputEnum.timeRangeSelect && Array.isArray(defaultValue) + ? defaultValue?.[0] + : undefined; + const timeRangeEndDefault = + inputType === VariableInputEnum.timeRangeSelect && Array.isArray(defaultValue) + ? defaultValue?.[1] + : undefined; const maxFiles = watch('maxFiles'); const maxSelectFiles = Math.min(feConfigs?.uploadFileMaxAmount ?? 20, 50); + const canSelectFile = watch('canSelectFile'); + const canSelectImg = watch('canSelectImg'); + const canLocalUpload = watch('canLocalUpload'); + const canUrlUpload = watch('canUrlUpload'); + + const [isDatasetSelectOpen, setIsDatasetSelectOpen] = useState(false); + const [datasetList, setDatasetList] = useState< + { name: string; datasetId: string; avatar: string }[] + >([]); const selectValueTypeList = watch('customInputConfig.selectValueTypeList'); const { isSelectAll: isSelectAllValueType, setIsSelectAll: setIsSelectAllValueType } = @@ -153,18 +186,21 @@ const InputTypeConfig = ({ }, [inputType]); const showDefaultValue = useMemo(() => { - const list = [ - FlowNodeInputTypeEnum.input, - FlowNodeInputTypeEnum.JSONEditor, - FlowNodeInputTypeEnum.numberInput, - FlowNodeInputTypeEnum.switch, - FlowNodeInputTypeEnum.select, - FlowNodeInputTypeEnum.multipleSelect, - VariableInputEnum.custom, - VariableInputEnum.internal - ]; + const map = { + [FlowNodeInputTypeEnum.input]: true, + [FlowNodeInputTypeEnum.JSONEditor]: true, + [FlowNodeInputTypeEnum.numberInput]: true, + [FlowNodeInputTypeEnum.switch]: true, + [FlowNodeInputTypeEnum.select]: true, + [FlowNodeInputTypeEnum.multipleSelect]: true, + [VariableInputEnum.custom]: true, + [VariableInputEnum.internal]: true, + [VariableInputEnum.timePointSelect]: true, + [VariableInputEnum.timeRangeSelect]: true, + [VariableInputEnum.llmSelect]: true + }; - return list.includes(inputType as FlowNodeInputTypeEnum); + return map[inputType as keyof typeof map]; }, [inputType]); const showIsToolInput = useMemo(() => { @@ -180,9 +216,84 @@ const InputTypeConfig = ({ return type === 'plugin' && list.includes(inputType as FlowNodeInputTypeEnum); }, [inputType, type]); + const filterValidField = useCallback( + (data: Record) => { + const commonData: Record = { + renderTypeList: data.renderTypeList, + type: data.type, + + key: data.key, + label: data.label, + valueType: data.valueType, + valueDesc: data.valueDesc, + description: data.description, + toolDescription: data.toolDescription, + required: data.required, + defaultValue: data.defaultValue + }; + + switch (inputType) { + case FlowNodeInputTypeEnum.input: + case FlowNodeInputTypeEnum.textarea: + commonData.maxLength = data.maxLength; + break; + case FlowNodeInputTypeEnum.numberInput: + commonData.max = data.max; + commonData.min = data.min; + break; + case FlowNodeInputTypeEnum.select: + case FlowNodeInputTypeEnum.multipleSelect: + commonData.list = data.list; + break; + case FlowNodeInputTypeEnum.addInputParam: + commonData.customInputConfig = data.customInputConfig; + break; + case FlowNodeInputTypeEnum.fileSelect: + commonData.canSelectFile = data.canSelectFile; + commonData.canSelectImg = data.canSelectImg; + commonData.canSelectVideo = data.canSelectVideo; + commonData.canSelectAudio = data.canSelectAudio; + commonData.canSelectCustomFileExtension = data.canSelectCustomFileExtension; + commonData.customFileExtensionList = data.customFileExtensionList; + commonData.canLocalUpload = data.canLocalUpload; + commonData.canUrlUpload = data.canUrlUpload; + commonData.maxFiles = data.maxFiles; + break; + case FlowNodeInputTypeEnum.timePointSelect: + case FlowNodeInputTypeEnum.timeRangeSelect: + commonData.timeGranularity = data.timeGranularity; + commonData.timeRangeStart = data.timeRangeStart; + commonData.timeRangeEnd = data.timeRangeEnd; + case FlowNodeInputTypeEnum.password: + commonData.minLength = data.minLength; + break; + } + + if (commonData.timeRangeStart) { + commonData.timeRangeStart = formatTime2YMDHMS(new Date(commonData.timeRangeStart)); + } + if (commonData.timeRangeEnd) { + commonData.timeRangeEnd = formatTime2YMDHMS(new Date(commonData.timeRangeEnd)); + } + if (inputType === FlowNodeInputTypeEnum.timePointSelect && commonData.defaultValue) { + commonData.defaultValue = formatTime2YMDHMS(new Date(commonData.defaultValue)); + } else if ( + inputType === FlowNodeInputTypeEnum.timeRangeSelect && + Array.isArray(commonData.defaultValue) + ) { + commonData.defaultValue = commonData.defaultValue.map((item) => + item ? formatTime2YMDHMS(new Date(item)) : '' + ); + } + + return commonData; + }, + [inputType] + ); + return ( - + {typeLabels.name[type] || typeLabels.name.formInput} @@ -409,7 +520,7 @@ const InputTypeConfig = ({ onChange={(e) => { setValue('defaultValue', e); }} - defaultValue={defaultValue} + value={defaultValue} /> )} {(inputType === FlowNodeInputTypeEnum.switch || @@ -460,6 +571,63 @@ const InputTypeConfig = ({ } /> )} + {inputType === VariableInputEnum.timePointSelect && ( + { + setValue('defaultValue', date); + }} + popPosition="top" + timeGranularity={timeGranularity} + minDate={timeRangeStart ? new Date(timeRangeStart) : undefined} + maxDate={timeRangeEnd ? new Date(timeRangeEnd) : undefined} + /> + )} + {inputType === VariableInputEnum.timeRangeSelect && ( + + + + {t('app:time_range_start')} + + { + setValue('defaultValue', [date, timeRangeEndDefault]); + }} + popPosition="top" + timeGranularity={timeGranularity} + minDate={timeRangeStart ? new Date(timeRangeStart) : undefined} + maxDate={timeRangeEndDefault ? new Date(timeRangeEndDefault) : undefined} + /> + + + + {t('app:time_range_end')} + + { + setValue('defaultValue', [timeRangeStartDefault, date]); + }} + popPosition="top" + timeGranularity={timeGranularity} + minDate={timeRangeStartDefault ? new Date(timeRangeStartDefault) : undefined} + maxDate={timeRangeEnd ? new Date(timeRangeEnd) : undefined} + /> + + + )} + {inputType === VariableInputEnum.llmSelect && ( + + { + setValue('defaultValue', model); + }} + /> + + )} )} @@ -612,28 +780,100 @@ const InputTypeConfig = ({ )} - - {(inputType === FlowNodeInputTypeEnum.fileSelect || - inputType === VariableInputEnum.file) && ( + {/* TODO: 适配新的文件上传 */} + {inputType === VariableInputEnum.file && ( <> - {t('app:document_upload')} + {t('app:file_types')} - + + { + if (e.target.checked) { + setValue('canSelectFile', true); + } else { + setValue('canSelectFile', false); + } + }} + > + {t('app:document')} + + + { + if (e.target.checked) { + setValue('canSelectImg', true); + } else { + setValue('canSelectImg', false); + } + }} + > + {t('app:image')} + + - - - - {t('app:image_upload')} - - + + + {t('app:upload_method')} + + + { + if (e.target.checked) { + setValue('canLocalUpload', true); + } else { + setValue('canLocalUpload', false); + } + }} + > + {t('app:local_upload')} + + { + if (e.target.checked) { + setValue('canUrlUpload', true); + } else { + setValue('canUrlUpload', false); + } + }} + > + {t('app:url_upload')} + - - {t('app:image_upload_tip')} - - - + {t('app:upload_file_max_amount')} @@ -660,6 +900,69 @@ const InputTypeConfig = ({ )} + {inputType === VariableInputEnum.datasetSelect && ( + <> + + + {t('app:dataset_select')} + + + + {datasetList.length > 0 && datasetList?.[0].datasetId !== '' && ( + + {datasetList.map((item) => ( + + + {item.name} + + ))} + + )} + + + 0 + ? datasetList + .filter((item) => item.datasetId === defaultValue) + .map((item) => ({ + datasetId: item.datasetId, + name: item.name, + avatar: item.avatar, + vectorModel: {} as EmbeddingModelItemType + })) + : [] + } + onChange={(selectedDatasets) => { + const newDatasetList = selectedDatasets.map((item: any) => ({ + name: item.name, + datasetId: item.datasetId, + avatar: item.avatar + })); + setDatasetList(newDatasetList); + setValue('dataset', newDatasetList); + }} + onClose={() => setIsDatasetSelectOpen(false)} + /> + + )} + {inputType === VariableInputEnum.password && ( @@ -677,14 +980,17 @@ const InputTypeConfig = ({ )} - + - - - - ); -} - -export default UploadSystemToolModal; diff --git a/projects/app/src/pageComponents/app/plugin/SecretInputModal.tsx b/projects/app/src/pageComponents/app/tool/SecretInputModal.tsx similarity index 94% rename from projects/app/src/pageComponents/app/plugin/SecretInputModal.tsx rename to projects/app/src/pageComponents/app/tool/SecretInputModal.tsx index 348a58c7e..49bd0bc43 100644 --- a/projects/app/src/pageComponents/app/plugin/SecretInputModal.tsx +++ b/projects/app/src/pageComponents/app/tool/SecretInputModal.tsx @@ -8,7 +8,7 @@ import { ModalFooter, useDisclosure } from '@chakra-ui/react'; -import { SystemToolInputTypeEnum } from '@fastgpt/global/core/app/systemTool/constants'; +import { SystemToolSecretInputTypeEnum } from '@fastgpt/global/core/app/tool/systemTool/constants'; import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel'; import LeftRadio from '@fastgpt/web/components/common/Radio/LeftRadio'; import { useTranslation } from 'next-i18next'; @@ -22,13 +22,13 @@ import IconButton from '@/pageComponents/account/team/OrgManage/IconButton'; import MyModal from '@fastgpt/web/components/common/MyModal'; import InputRender from '@/components/core/app/formRender'; import { secretInputTypeToInputType } from '@/components/core/app/formRender/utils'; -import { getSystemPlugTemplates } from '@/web/core/app/api/plugin'; +import { getAppToolTemplates } from '@/web/core/app/api/tool'; import type { NodeTemplateListItemType } from '@fastgpt/global/core/workflow/type/node'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { InputTypeEnum } from '@/components/core/app/formRender/constant'; export type ToolParamsFormType = { - type: SystemToolInputTypeEnum; + type: SystemToolSecretInputTypeEnum; value?: StoreSecretValueType; }; @@ -64,7 +64,9 @@ const SecretInputModal = ({ const defaultValue = inputConfig.value; return ( defaultValue || { - type: hasSystemSecret ? SystemToolInputTypeEnum.system : SystemToolInputTypeEnum.manual, + type: hasSystemSecret + ? SystemToolSecretInputTypeEnum.system + : SystemToolSecretInputTypeEnum.manual, value: inputList?.reduce( (acc, item) => { @@ -82,7 +84,7 @@ const SecretInputModal = ({ const { data: childTools = [] } = useRequest2( async () => { if (!isFolder) return []; - return getSystemPlugTemplates({ parentId }); + return getAppToolTemplates({ parentId }); }, { manual: false, @@ -121,9 +123,9 @@ const SecretInputModal = ({ { title: t('app:system_secret'), desc: t('app:tool_active_system_config_desc'), - value: SystemToolInputTypeEnum.system, + value: SystemToolSecretInputTypeEnum.system, children: - configType === SystemToolInputTypeEnum.system && hasCost ? ( + configType === SystemToolSecretInputTypeEnum.system && hasCost ? ( {isFolder ? ( <> @@ -205,9 +207,9 @@ const SecretInputModal = ({ t('app:manual_secret') ), desc: t('app:tool_active_manual_config_desc'), - value: SystemToolInputTypeEnum.manual, + value: SystemToolSecretInputTypeEnum.manual, children: - configType === SystemToolInputTypeEnum.manual ? ( + configType === SystemToolSecretInputTypeEnum.manual ? ( <> {inputList.map((item, i) => { const inputKey = `value.${item.key}.value` as any; diff --git a/projects/app/src/pageComponents/chat/ChatSetting/ToolSelectModal.tsx b/projects/app/src/pageComponents/chat/ChatSetting/ToolSelectModal.tsx index 273472168..28f8a2e51 100644 --- a/projects/app/src/pageComponents/chat/ChatSetting/ToolSelectModal.tsx +++ b/projects/app/src/pageComponents/chat/ChatSetting/ToolSelectModal.tsx @@ -2,35 +2,16 @@ import React, { useCallback, useMemo, useState } from 'react'; import MyModal from '@fastgpt/web/components/common/MyModal'; import { useTranslation } from 'next-i18next'; -import { - Accordion, - AccordionButton, - AccordionIcon, - AccordionItem, - AccordionPanel, - Box, - Button, - css, - Flex, - Grid -} from '@chakra-ui/react'; +import { Box, Button, Flex, Grid } from '@chakra-ui/react'; import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; -import type { localeType } from '@fastgpt/global/common/i18n/type'; -import FillRowTabs from '@fastgpt/web/components/common/Tabs/FillRowTabs'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import EmptyTip from '@fastgpt/web/components/common/EmptyTip'; import { type FlowNodeTemplateType, - type NodeTemplateListItemType, - type NodeTemplateListType + type NodeTemplateListItemType } from '@fastgpt/global/core/workflow/type/node.d'; import MyIcon from '@fastgpt/web/components/common/Icon'; -import { - getPluginGroups, - getPreviewPluginNode, - getSystemPlugTemplates, - getSystemPluginPaths -} from '@/web/core/app/api/plugin'; +import { getToolPreviewNode, getAppToolTemplates, getAppToolPaths } from '@/web/core/app/api/tool'; import MyBox from '@fastgpt/web/components/common/MyBox'; import { type ParentIdType } from '@fastgpt/global/common/parentFolder/type'; import FolderPath from '@/components/common/folder/Path'; @@ -45,8 +26,10 @@ import { useToast } from '@fastgpt/web/hooks/useToast'; import { workflowStartNodeId } from '@/web/core/app/constants'; import ConfigToolModal from '@/pageComponents/app/detail/SimpleApp/components/ConfigToolModal'; import type { ChatSettingType } from '@fastgpt/global/core/chat/setting/type'; -import CostTooltip from '@/components/core/app/plugin/CostTooltip'; +import CostTooltip from '@/components/core/app/tool/CostTooltip'; import { useSystemStore } from '@/web/common/system/useSystemStore'; +import ToolTagFilterBox from '@fastgpt/web/components/core/plugin/tool/TagFilterBox'; +import { getPluginToolTags } from '@/web/core/plugin/toolTag/api'; type Props = { selectedTools: ChatSettingType['selectedTools']; @@ -66,9 +49,10 @@ const ToolSelectModal = ({ onClose, ...props }: Props & { onClose: () => void }) const { t } = useTranslation(); const [parentId, setParentId] = useState(''); const [searchKey, setSearchKey] = useState(''); + const [selectedTagIds, setSelectedTagIds] = useState([]); const { - data: templates = [], + data: rawTemplates = [], runAsync: loadTemplates, loading: isLoading } = useRequest2( @@ -79,7 +63,7 @@ const ToolSelectModal = ({ onClose, ...props }: Props & { onClose: () => void }) parentId?: ParentIdType; searchVal?: string; }) => { - return getSystemPlugTemplates({ parentId, searchKey: searchVal }); + return getAppToolTemplates({ parentId, searchKey: searchVal }); }, { onSuccess(_, [{ parentId = '' }]) { @@ -90,9 +74,22 @@ const ToolSelectModal = ({ onClose, ...props }: Props & { onClose: () => void }) } ); + const { data: allTags = [] } = useRequest2(getPluginToolTags, { + manual: false + }); + + const templates = useMemo(() => { + if (selectedTagIds.length === 0) { + return rawTemplates; + } + return rawTemplates.filter((template) => { + return template.tags?.some((tag) => selectedTagIds.includes(tag)); + }); + }, [rawTemplates, selectedTagIds]); + const { data: paths = [] } = useRequest2( () => { - return getSystemPluginPaths({ sourceId: parentId, type: 'current' }); + return getAppToolPaths({ sourceId: parentId, type: 'current' }); }, { manual: false, @@ -135,6 +132,17 @@ const ToolSelectModal = ({ onClose, ...props }: Props & { onClose: () => void }) /> + {/* Tag filter */} + {allTags.length > 0 && ( + + + + )} {/* route components */} {!searchKey && parentId && ( @@ -143,7 +151,12 @@ const ToolSelectModal = ({ onClose, ...props }: Props & { onClose: () => void }) )} - + @@ -158,10 +171,12 @@ const RenderList = React.memo(function RenderList({ onRemoveTool, setParentId, selectedTools, - chatConfig = {} + chatConfig = {}, + allTags }: Props & { templates: NodeTemplateListItemType[]; setParentId: (parentId: ParentIdType) => any; + allTags: Array<{ tagId: string; tagName: any }>; }) { const { t, i18n } = useTranslation(); const { feConfigs } = useSystemStore(); @@ -172,7 +187,7 @@ const RenderList = React.memo(function RenderList({ const { runAsync: onClickAdd, loading: isLoading } = useRequest2( async (template: NodeTemplateListItemType) => { - const res = await getPreviewPluginNode({ appId: template.id }); + const res = await getToolPreviewNode({ appId: template.id }); /* Invalid plugin check 1. Reference type. but not tool description; @@ -259,239 +274,148 @@ const RenderList = React.memo(function RenderList({ } ); - const { data: pluginGroups = [] } = useRequest2(getPluginGroups, { - manual: false - }); - - const formatTemplatesArray = useMemo(() => { - return pluginGroups.map((group) => { - const map = group.groupTypes.reduce< - Record< - string, - { - list: NodeTemplateListItemType[]; - label: string; - } - > - >((acc, item) => { - acc[item.typeId] = { - list: [], - label: t(parseI18nString(item.typeName, i18n.language)) - }; - return acc; - }, {}); - - templates.forEach((item) => { - if (map[item.templateType]) { - map[item.templateType].list.push({ - ...item, - name: t(parseI18nString(item.name, i18n.language)), - intro: t(parseI18nString(item.intro, i18n.language)) - }); - } - }); - return { - label: group.groupName, - list: Object.entries(map) - .map(([type, { list, label }]) => ({ - type, - label, - list - })) - .filter((item) => item.list.length > 0) - }; - }); - }, [i18n.language, pluginGroups, t, templates]); - const gridStyle = { gridTemplateColumns: ['1fr', '1fr 1fr'], py: 3, avatarSize: '1.75rem' }; - const PluginListRender = useMemoizedFn(({ list = [] }: { list: NodeTemplateListType }) => { + const PluginListRender = useMemoizedFn(() => { return ( <> - {list.map((item, i) => { - return ( - - - - {t(item.label as any)} - - - - {item.list.map((template) => { - const selected = selectedTools.some((tool) => tool.pluginId === template.id); + {templates.length > 0 ? ( + + {templates.map((template) => { + const selected = selectedTools.some((tool) => tool.pluginId === template.id); - return ( - - - - - {template.name} - - - By {template.author || feConfigs?.systemTitle} - - - - {template.intro || t('common:core.workflow.Not intro')} - - - - } - > - + return ( + + - - {t(template.name as any)} + + {template.name} + + + By {template.author || feConfigs?.systemTitle} - - {selected ? ( - - ) : template.flowNodeType === 'toolSet' ? ( - - - - - ) : template.isFolder ? ( - - ) : ( - - )} - - ); - })} - -
- ); - })} + + {template.intro || t('common:core.workflow.Not intro')} + + +
+ } + > + + + + + {t(parseI18nString(template.name, i18n.language))} + + + + {selected ? ( + + ) : template.flowNodeType === 'toolSet' ? ( + + + + + ) : template.isFolder ? ( + + ) : ( + + )} + + + ); + })} + + ) : ( + + )} ); }); - return templates.length === 0 ? ( - - ) : ( + return ( <> - - {formatTemplatesArray.length > 1 ? ( - <> - {formatTemplatesArray.map(({ list, label }, index) => ( - - - {t(label as any)} - - - - - - - ))} - - ) : ( - - )} - + {!!configTool && ( { () => llmModelList.map((model) => ({ value: model.model, label: model.name })), [llmModelList] ); - const [selectedModel, setSelectedModel] = useLocalStorageState('chat_home_model', { + const [selectedModel, setSelectedModel] = useLocalStorageState('chat_home_model', { defaultValue: defaultModels.llm?.model }); @@ -237,7 +240,7 @@ const HomeChatWindow = ({ myApps }: Props) => { const tools: FlowNodeTemplateType[] = await Promise.all( selectedToolIds.map(async (toolId) => { - const node = await getPreviewPluginNode({ appId: toolId }); + const node = await getToolPreviewNode({ appId: toolId }); node.inputs = node.inputs.map((input) => { const tool = availableTools.find((tool) => tool.pluginId === toolId); const value = tool?.inputs?.[input.key]; @@ -288,6 +291,7 @@ const HomeChatWindow = ({ myApps }: Props) => { {availableModels.length > 0 && ( { const handlePaneChange = useContextSelector(ChatSettingContext, (v) => v.handlePaneChange); const pane = useContextSelector(ChatSettingContext, (v) => v.pane); + const isAdmin = !!userInfo?.team.permission.hasManagePer; const isSettingPane = pane === ChatSidebarPaneEnum.SETTING; return ( @@ -26,12 +27,12 @@ const ChatSliderFooter = () => { - {userInfo?.username} + {userInfo?.team?.memberName} - {feConfigs.isPlus && ( + {feConfigs.isPlus && isAdmin && ( { const pane = useContextSelector(ChatSettingContext, (v) => v.pane); const handlePaneChange = useContextSelector(ChatSettingContext, (v) => v.handlePaneChange); + const enableHome = useContextSelector(ChatSettingContext, (v) => v.chatSettings?.enableHome); const appName = useContextSelector(ChatItemContext, (v) => v.chatBoxData?.app.name); const appAvatar = useContextSelector(ChatItemContext, (v) => v.chatBoxData?.app.avatar); @@ -61,33 +62,35 @@ const ChatSliderHeader = ({ title, banner }: Props) => { - { - handlePaneChange(ChatSidebarPaneEnum.HOME); - onCloseSlider(); - setChatId(); - }} - > - { + handlePaneChange(ChatSidebarPaneEnum.HOME); + onCloseSlider(); + setChatId(); }} > - - - {t('chat:sidebar.home')} - - - + + + + {t('chat:sidebar.home')} + + + + )} { diff --git a/projects/app/src/pageComponents/config/ImportPluginModal.tsx b/projects/app/src/pageComponents/config/ImportPluginModal.tsx new file mode 100644 index 000000000..72c5100b8 --- /dev/null +++ b/projects/app/src/pageComponents/config/ImportPluginModal.tsx @@ -0,0 +1,385 @@ +import React, { useState, useCallback } from 'react'; +import { Box, Button, Flex, HStack, VStack } from '@chakra-ui/react'; +import MyRightDrawer from '@fastgpt/web/components/common/MyDrawer/MyRightDrawer'; +import MyIcon from '@fastgpt/web/components/common/Icon'; +import { useTranslation } from 'react-i18next'; +import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; +import FileSelectorBox, { type SelectFileItemType } from '@/components/Select/FileSelectorBox'; +import { postS3UploadFile } from '@/web/common/file/api'; +import { + getPkgPluginUploadURL, + parseUploadedPkgPlugin, + confirmPkgPluginUpload +} from '@/web/core/plugin/admin/api'; +import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; +import Avatar from '@fastgpt/web/components/common/Avatar'; +import { getDocPath } from '@/web/common/system/doc'; +import { getMarketPlaceToolTags } from '@/web/core/plugin/marketplace/api'; +import { useToast } from '@fastgpt/web/hooks/useToast'; +import type { GetAdminSystemToolsResponseType } from '@fastgpt/global/openapi/core/plugin/admin/tool/api'; +import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip'; + +type UploadedPluginFile = SelectFileItemType & { + status: 'uploading' | 'parsing' | 'success' | 'error' | 'duplicate'; + errorMsg?: string; + toolId?: string; + toolName?: string; + toolIntro?: string; + toolTags?: string[]; +}; + +const ImportPluginModal = ({ + onClose, + onSuccess, + tools +}: { + onClose: () => void; + onSuccess?: () => void; + tools: GetAdminSystemToolsResponseType; +}) => { + const { t, i18n } = useTranslation(); + const { toast } = useToast(); + + const [selectFiles, setSelectFiles] = useState([]); + const [uploadedFiles, setUploadedFiles] = useState([]); + + const { data: allTags = [] } = useRequest2(getMarketPlaceToolTags, { + manual: false + }); + + const uploadAndParseFile = async (file: UploadedPluginFile) => { + try { + setUploadedFiles((prev) => + prev.map((f) => + f.name === file.name ? { ...f, status: 'uploading', errorMsg: undefined } : f + ) + ); + + const presignedData = await getPkgPluginUploadURL({ filename: file.name }); + + const formData = new FormData(); + Object.entries(presignedData.formData).forEach(([key, value]) => { + formData.append(key, value); + }); + formData.append('file', file.file); + + await postS3UploadFile(presignedData.postURL, formData); + + setUploadedFiles((prev) => + prev.map((f) => (f.name === file.name ? { ...f, status: 'parsing' } : f)) + ); + + const parseResult = await parseUploadedPkgPlugin({ objectName: presignedData.objectName }); + + const parentId = parseResult.find((item) => !item.parentId)?.toolId; + if (!parentId) { + return Promise.reject(new Error(`${t('app:custom_plugin_parse_error')}`)); + } + const toolDetail = parseResult.find((item) => item.toolId === parentId); + if (!toolDetail) { + return Promise.reject(new Error(`${t('app:custom_plugin_parse_error')}`)); + } + const isDuplicated = tools.some((tool) => tool.id.includes(toolDetail.toolId)); + + setUploadedFiles((prev) => + prev.map((f) => + f.name === file.name + ? { + ...f, + status: isDuplicated ? 'duplicate' : 'success', + toolId: parentId, + toolName: parseI18nString(toolDetail.name || '', i18n.language), + icon: toolDetail.icon || '', + toolIntro: parseI18nString(toolDetail.description || '', i18n.language) || '', + toolTags: + toolDetail.tags?.map((tag) => { + const currentTag = allTags.find((item) => item.tagId === tag); + return parseI18nString(currentTag?.tagName || '', i18n.language) || ''; + }) || [] + } + : f + ) + ); + } catch (error: any) { + setUploadedFiles((prev) => + prev.map((f) => (f.name === file.name ? { ...f, status: 'error', errorMsg: error } : f)) + ); + } + }; + + const { runAsync: handleBatchUpload, loading: uploadLoading } = useRequest2( + async (files: SelectFileItemType[]) => { + const newUploadedFiles: UploadedPluginFile[] = files.map((f) => ({ + ...f, + status: 'uploading' as const + })); + setUploadedFiles((prev) => [...prev, ...newUploadedFiles]); + + for (const file of newUploadedFiles) { + await uploadAndParseFile(file); + } + }, + { + manual: true + } + ); + + const onSelectFiles = useCallback( + (files: SelectFileItemType[]) => { + const currentUploadFiles = files.filter( + (file) => !selectFiles.some((f) => f.name === file.name) + ); + const filteredFiles = files.filter( + (file) => !uploadedFiles.some((f) => f.name === file.name) + ); + + if (filteredFiles.length !== currentUploadFiles.length) { + toast({ + title: t('app:upload_file_exists_filtered'), + status: 'info' + }); + } + setSelectFiles(filteredFiles); + + if (filteredFiles.length > 0) { + handleBatchUpload(filteredFiles); + } + }, + [handleBatchUpload, t, toast, uploadedFiles] + ); + + const handleRetry = async (file: UploadedPluginFile) => { + await uploadAndParseFile(file); + }; + + const handleDelete = (file: UploadedPluginFile) => { + setUploadedFiles((prev) => prev.filter((f) => f.name !== file.name)); + setSelectFiles((prev) => prev.filter((f) => f.name !== file.name)); + }; + + const { runAsync: handleConfirmImport, loading: confirmLoading } = useRequest2( + async () => { + const successToolIds = uploadedFiles + .filter((file) => file.status === 'success' && file.toolId) + .map((file) => file.toolId!); + + await confirmPkgPluginUpload({ toolIds: successToolIds }); + }, + { + manual: true, + onSuccess: () => { + setUploadedFiles([]); + onSuccess?.(); + onClose(); + } + } + ); + + return ( + + + + + + + + + + + {t('common:name')} + + + {t('app:toolkit_tags')} + + + {t('common:Intro')} + + + {t('common:Status')} + + + {t('common:Action')} + + + + {uploadedFiles.length > 0 && ( + + {uploadedFiles.map((item, index) => ( + + + + + {item.status === 'success' && item.toolName ? item.toolName : item.name} + + + + {item.status === 'success' && item.toolTags && item.toolTags.length > 0 ? ( + item.toolTags.map((tag, tagIndex) => ( + + {tag} + + )) + ) : ( + - + )} + + + {item.status === 'success' && item.toolIntro ? item.toolIntro : '-'} + + + {(item.status === 'uploading' || item.status === 'parsing') && ( + + {item.status === 'uploading' + ? t('app:custom_plugin_uploading') + : t('app:custom_plugin_parsing')} + + )} + {item.status === 'duplicate' && ( + + {t('app:custom_plugin_duplicate')} + + )} + {item.status === 'success' && ( + + {t('app:custom_plugin_uploaded')} + + )} + {item.status === 'error' && ( + + {t('app:custom_plugin_upload_failed')} + + + )} + + + {item.status === 'error' && ( + handleRetry(item)} + cursor={'pointer'} + _hover={{ + bg: 'myGray.100', + rounded: 'md', + color: 'primary.600' + }} + > + + + )} + handleDelete(item)} + cursor={'pointer'} + _hover={{ + bg: 'myGray.100', + rounded: 'md', + color: 'red.600' + }} + > + + + + + ))} + + )} + + + + + + + + ); +}; + +export default ImportPluginModal; diff --git a/projects/app/src/pageComponents/config/TagManageModal.tsx b/projects/app/src/pageComponents/config/TagManageModal.tsx new file mode 100644 index 000000000..a01f520d4 --- /dev/null +++ b/projects/app/src/pageComponents/config/TagManageModal.tsx @@ -0,0 +1,315 @@ +import { Box, Button, Flex, Input, ModalBody, ModalFooter } from '@chakra-ui/react'; +import type { SystemPluginToolTagType } from '@fastgpt/global/core/plugin/type'; +import MyModal from '@fastgpt/web/components/common/MyModal'; +import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; +import { useEffect, useRef, useState } from 'react'; +import MyIcon from '@fastgpt/web/components/common/Icon'; +import PopoverConfirm from '@fastgpt/web/components/common/MyPopover/PopoverConfirm'; +import DndDrag, { Draggable } from '@fastgpt/web/components/common/DndDrag/index'; +import { useTranslation } from 'next-i18next'; +import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; +import { nanoid } from 'nanoid'; +import { + createPluginToolTag, + deletePluginToolTag, + updatePluginToolTag, + updatePluginToolTagOrder +} from '@/web/core/plugin/admin/tool/api'; +import { getPluginToolTags } from '@/web/core/plugin/toolTag/api'; +import { useToast } from '@fastgpt/web/hooks/useToast'; + +const TagManageModal = ({ onClose }: { onClose: () => void }) => { + const { t, i18n } = useTranslation(); + const { toast } = useToast(); + const newTagInputRef = useRef(null); + + const [localTags, setLocalTags] = useState([]); + const [editingTagId, setEditingTagId] = useState(null); + const [inputValue, setInputValue] = useState(''); + + const checkTagNameDuplicate = (tagName: string, excludeTagId?: string): boolean => { + return localTags.some((tag) => { + if (excludeTagId && tag.tagId === excludeTagId) { + return false; + } + const existingName = parseI18nString(tag.tagName, i18n.language); + return existingName === tagName; + }); + }; + + const { + data: tags = [], + run: loadTags, + loading + } = useRequest2(getPluginToolTags, { + manual: false + }); + useEffect(() => { + setLocalTags(tags); + }, [tags]); + + useEffect(() => { + if (editingTagId && newTagInputRef.current) { + newTagInputRef.current?.focus(); + } + }, [editingTagId]); + + const { runAsync: handleAddTag } = useRequest2( + async (tagName: string) => { + await createPluginToolTag({ tagName }); + }, + { + onSuccess: () => { + setEditingTagId(null); + setInputValue(''); + loadTags(); + } + } + ); + + const { runAsync: handleUpdateTag } = useRequest2( + async (tagId: string, tagName: string) => { + await updatePluginToolTag({ tagId, tagName }); + }, + { + onSuccess: () => { + setEditingTagId(null); + setInputValue(''); + loadTags(); + } + } + ); + + const { runAsync: handleDeleteTag } = useRequest2( + async (tag: SystemPluginToolTagType) => { + await deletePluginToolTag({ tagId: tag.tagId }); + }, + { + onSuccess: () => { + loadTags(); + } + } + ); + + const { runAsync: handleUpdateOrder } = useRequest2( + async (newList: SystemPluginToolTagType[]) => { + await updatePluginToolTagOrder({ tags: newList }); + }, + { + onSuccess: () => { + loadTags(); + } + } + ); + + return ( + + + + + + {t('app:toolkit_tags_total', { count: localTags.length })} + + + + + + {editingTagId && !localTags.find((tag) => tag.tagId === editingTagId) && ( + + setInputValue(e.target.value)} + onBlur={() => { + const trimmedValue = inputValue.trim(); + if (trimmedValue) { + if (checkTagNameDuplicate(trimmedValue)) { + toast({ + title: t('app:toolkit_tags_duplicate_name'), + status: 'warning' + }); + setEditingTagId(null); + setInputValue(''); + } else { + handleAddTag(trimmedValue); + } + } else { + setEditingTagId(null); + setInputValue(''); + } + }} + /> + + )} + + + onDragEndCb={async (tags: SystemPluginToolTagType[]) => { + const newList = tags.map((item, index) => ({ + ...item, + tagOrder: index + })); + setLocalTags(newList); + await handleUpdateOrder(newList); + }} + dataList={localTags} + > + {({ provided }) => ( + + {localTags.map((tag, index) => { + const isEditing = editingTagId === tag.tagId; + const displayName = parseI18nString(tag.tagName, i18n.language); + + return ( + + {(provided, snapshot) => ( + + {isEditing ? ( + setInputValue(e.target.value)} + onBlur={() => { + const trimmedValue = inputValue.trim(); + if (editingTagId && trimmedValue) { + if (checkTagNameDuplicate(trimmedValue, editingTagId)) { + toast({ + title: t('app:toolkit_tags_duplicate_name'), + status: 'warning' + }); + setEditingTagId(null); + setInputValue(''); + } else { + handleUpdateTag(editingTagId, trimmedValue); + } + } else { + setEditingTagId(null); + setInputValue(''); + } + }} + /> + ) : ( + + + + + + {t(displayName)} + + + + {!tag.isSystem && ( + <> + { + setEditingTagId(tag.tagId); + setInputValue(displayName); + }} + > + + + + + + } + onConfirm={() => handleDeleteTag(tag)} + /> + + )} + + )} + + )} + + ); + })} + + )} + + + + + + + + ); +}; + +export default TagManageModal; diff --git a/projects/app/src/pageComponents/config/tool/SystemToolConfigModal.tsx b/projects/app/src/pageComponents/config/tool/SystemToolConfigModal.tsx new file mode 100644 index 000000000..b1deb39e6 --- /dev/null +++ b/projects/app/src/pageComponents/config/tool/SystemToolConfigModal.tsx @@ -0,0 +1,384 @@ +import React from 'react'; +import { + Box, + Button, + HStack, + Input, + ModalBody, + ModalFooter, + Switch, + Flex, + Text, + Table, + Thead, + Tr, + Th, + Tbody, + Td, + TableContainer +} from '@chakra-ui/react'; +import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; +import MyModal from '@fastgpt/web/components/common/MyModal'; +import { useForm } from 'react-hook-form'; +import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip'; +import MyNumberInput from '@fastgpt/web/components/common/Input/NumberInput'; +import PopoverConfirm from '@fastgpt/web/components/common/MyPopover/PopoverConfirm'; +import { deletePkgPlugin } from '@/web/core/plugin/admin/api'; +import { getAdminSystemToolDetail, putAdminUpdateTool } from '@/web/core/plugin/admin/tool/api'; +import type { AdminSystemToolDetailType } from '@fastgpt/global/core/plugin/admin/tool/type'; +import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; +import type { InputConfigType } from '@fastgpt/global/core/workflow/type/io'; +import MyDivider from '@fastgpt/web/components/common/MyDivider'; +import { PluginStatusEnum } from '@fastgpt/global/core/plugin/type'; +import MySelect from '@fastgpt/web/components/common/MySelect'; +import { useTranslation } from 'next-i18next'; + +const COST_LIMITS = { max: 1000, min: 0, step: 0.1 }; + +const SystemToolConfigModal = ({ + toolId, + onSuccess, + onClose +}: { + toolId: string; + onSuccess: () => void; + onClose: () => void; +}) => { + const { t } = useTranslation(); + const { register, reset, handleSubmit, setValue, watch, control } = + useForm(); + + const { data: tool, loading } = useRequest2(() => getAdminSystemToolDetail({ toolId }), { + onSuccess(res) { + reset(res); + }, + manual: false + }); + + const [inputList, status, defaultInstalled, inputListVal, childTools] = watch([ + 'inputList', + 'status', + 'defaultInstalled', + 'inputListVal', + 'childTools' + ]); + + // 是否显示系统密钥配置 + const showSystemSecretInput = !!inputList && inputList.length > 0; + + const { runAsync: onSubmit, loading: submitting } = useRequest2( + (formData: AdminSystemToolDetailType) => + putAdminUpdateTool({ + ...formData, + pluginId: toolId, + childTools: formData.childTools?.map((tool) => { + return { + pluginId: tool.pluginId, + systemKeyCost: tool.systemKeyCost + }; + }) + }), + { + successToast: t('common:Config') + t('common:Success'), + onSuccess() { + onSuccess(); + onClose(); + } + } + ); + + const { runAsync: onDelete, loading: deleteLoading } = useRequest2( + () => deletePkgPlugin({ toolId: toolId.split('-')[1] }), + { + onSuccess() { + onSuccess(); + onClose(); + } + } + ); + + // Secret input render + const renderInputField = (item: InputConfigType) => { + const labelSection = ( + + + {item.required && ( + + * + + )} + {item.label} + + {item.description && } + + ); + + if (item.inputType === 'switch') { + return ( + + {labelSection} + + + + + ); + } + + return ( + + {labelSection} + + + + + ); + }; + + const systemConfigSection = showSystemSecretInput && !!inputListVal && ( + <> + + + {!tool?.isFolder && ( + + + {t('app:toolkit_system_key_cost')} + + + + )} + {tool?.inputList?.map(renderInputField)} + + ); + + return ( + + + {tool?.isFolder ? ( + + + + {t('app:toolkit_basic_config')} + + + + + {t('app:toolkit_plugin_status')} + + + width={'120px'} + value={status} + list={[ + { label: t('app:toolkit_status_normal'), value: PluginStatusEnum.Normal }, + { + label: t('app:toolkit_status_soon_offline'), + value: PluginStatusEnum.SoonOffline + }, + { label: t('app:toolkit_status_offline'), value: PluginStatusEnum.Offline } + ]} + onChange={(e) => { + setValue('status', e); + if (e !== PluginStatusEnum.Normal) { + setValue('defaultInstalled', false); + } + }} + /> + + + + + {t('app:toolkit_default_install')} + + { + const newDefaultInstalled = e.target.checked; + setValue('defaultInstalled', newDefaultInstalled); + if (newDefaultInstalled && status !== PluginStatusEnum.Normal) { + setValue('status', PluginStatusEnum.Normal); + } + }} + /> + + + {showSystemSecretInput && ( + <> + + + {t('app:toolkit_config_system_key')} + + { + const val = e.target.checked; + if (val) { + setValue('inputListVal', {}); + } else { + setValue('inputListVal', null); + } + }} + /> + + {systemConfigSection} + + )} + + + + + {t('app:toolkit_tool_list')} + + + + + + + {/* */} + + + + + {childTools?.map((tool, index) => { + return ( + + + + + ); + })} + +
+ {t('app:toolkit_tool_name')} + + {t('common:Status')} + + {t('app:toolkit_key_price')} +
+ + {parseI18nString(tool.name)} + + + +
+
+
+
+ ) : ( + + + + {t('app:toolkit_plugin_status')} + + + width={'120px'} + value={status} + list={[ + { label: t('app:toolkit_status_normal'), value: PluginStatusEnum.Normal }, + { + label: t('app:toolkit_status_soon_offline'), + value: PluginStatusEnum.SoonOffline + }, + { label: t('app:toolkit_status_offline'), value: PluginStatusEnum.Offline } + ]} + onChange={(e) => { + setValue('status', e); + if (e !== PluginStatusEnum.Normal) { + setValue('defaultInstalled', false); + } + }} + /> + + + + + {t('app:toolkit_default_install')} + + { + const newDefaultInstalled = e.target.checked; + setValue('defaultInstalled', newDefaultInstalled); + if (newDefaultInstalled && status !== PluginStatusEnum.Normal) { + setValue('status', PluginStatusEnum.Normal); + } + }} + /> + + + {showSystemSecretInput && ( + <> + + + {t('app:toolkit_config_system_key')} + + { + const val = e.target.checked; + if (val) { + // @ts-ignore + setValue('inputListVal', {}); + } else { + setValue('inputListVal', undefined); + } + }} + /> + + {systemConfigSection} + + )} + + )} +
+ + + {t('common:Delete')} + + } + /> + + + + + + +
+ ); +}; + +export default SystemToolConfigModal; diff --git a/projects/app/src/pageComponents/config/tool/ToolRow.tsx b/projects/app/src/pageComponents/config/tool/ToolRow.tsx new file mode 100644 index 000000000..1cfd1ca21 --- /dev/null +++ b/projects/app/src/pageComponents/config/tool/ToolRow.tsx @@ -0,0 +1,214 @@ +import { Box, Flex, Switch, Checkbox } from '@chakra-ui/react'; +import Avatar from '@fastgpt/web/components/common/Avatar'; +import type { + DraggableProvided, + DraggableStateSnapshot +} from '@fastgpt/web/components/common/DndDrag'; +import MyIcon from '@fastgpt/web/components/common/Icon'; +import MyBox from '@fastgpt/web/components/common/MyBox'; +import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; +import { useTranslation } from 'next-i18next'; +import { putAdminUpdateTool } from '@/web/core/plugin/admin/tool/api'; +import React, { useRef, useState, useEffect } from 'react'; +import { PluginStatusEnum } from '@fastgpt/global/core/plugin/type'; +import type { AdminSystemToolListItemType } from '@fastgpt/global/core/plugin/admin/tool/type'; +import type { GetAdminSystemToolsResponseType } from '@fastgpt/global/openapi/core/plugin/admin/tool/api'; + +const ToolRow = ({ + tool, + setEditingToolId, + setLocalTools, + provided, + snapshot +}: { + tool: AdminSystemToolListItemType; + setEditingToolId: (toolId: string) => void; + setLocalTools: React.Dispatch>; + provided: DraggableProvided; + snapshot: DraggableStateSnapshot; +}) => { + const { t, i18n } = useTranslation(); + + const { runAsync: updateSystemTool, loading } = useRequest2( + async (updateFields: { + defaultInstalled?: boolean; + hasTokenFee?: boolean; + status?: PluginStatusEnum; + }) => { + return putAdminUpdateTool({ + ...tool, + pluginId: tool.id, + defaultInstalled: updateFields.defaultInstalled, + hasTokenFee: updateFields.hasTokenFee, + status: updateFields.status + }); + }, + { + onSuccess: (_, updateFields) => { + setLocalTools((prev) => + prev.map((item) => (item.id === tool.id ? { ...item, ...updateFields[0] } : item)) + ); + }, + errorToast: t('app:toolkit_update_failed') + } + ); + + return ( + { + setEditingToolId(tool.id); + }} + > + + { + e.stopPropagation(); + }} + _hover={{ bg: 'myGray.05' }} + {...provided.dragHandleProps} + > + + + + + {tool?.name} + + {/* {tool?.isOfficial && ( + + {t('app:toolkit_official')} + + )} */} + + + {tool.tags && tool.tags.length > 0 ? ( + + {tool.tags.map((tag, index) => ( + + {tag} + + ))} + + ) : ( + + - + + )} + + + {tool?.intro || '-'} + + + + {tool.status === PluginStatusEnum.Offline + ? t('app:toolkit_status_offline') + : tool.status === PluginStatusEnum.SoonOffline + ? t('app:toolkit_status_soon_offline') + : t('app:toolkit_status_normal')} + + + + { + e.stopPropagation(); + e.preventDefault(); + const newDefaultInstalled = !tool?.defaultInstalled; + const updateFields: { + defaultInstalled: boolean; + status?: number; + } = { + defaultInstalled: newDefaultInstalled + }; + if (newDefaultInstalled && tool.status !== PluginStatusEnum.Normal) { + updateFields.status = PluginStatusEnum.Normal; + } + updateSystemTool(updateFields); + }} + > + + + + + {tool?.associatedPluginId ? ( + { + e.stopPropagation(); + e.preventDefault(); + updateSystemTool({ + hasTokenFee: !tool?.hasTokenFee + }); + }} + pl={2} + > + + + ) : ( + - + )} + + + {!!tool?.hasSecretInput ? ( + + {tool?.hasSystemSecret + ? t('app:toolkit_system_key_configured') + : t('app:toolkit_system_key_not_configured')} + + ) : ( + - + )} + + + ); +}; + +export default React.memo(ToolRow); diff --git a/projects/app/src/pageComponents/config/tool/WorkflowToolConfigModal.tsx b/projects/app/src/pageComponents/config/tool/WorkflowToolConfigModal.tsx new file mode 100644 index 000000000..13e888253 --- /dev/null +++ b/projects/app/src/pageComponents/config/tool/WorkflowToolConfigModal.tsx @@ -0,0 +1,489 @@ +import React, { useMemo, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { + Box, + Button, + Flex, + HStack, + Input, + ModalBody, + ModalFooter, + Switch, + Textarea, + useDisclosure +} from '@chakra-ui/react'; +import MyModal from '@fastgpt/web/components/common/MyModal'; +import Avatar from '@fastgpt/web/components/common/Avatar'; +import { useUploadAvatar } from '@fastgpt/web/common/file/hooks/useUploadAvatar'; +import { getUploadAvatarPresignedUrl } from '@/web/common/file/api'; +import { useToast } from '@fastgpt/web/hooks/useToast'; +import MyTooltip from '@fastgpt/web/components/common/MyTooltip'; +import { getPluginToolTags } from '@/web/core/plugin/toolTag/api'; +import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; +import PopoverConfirm from '@fastgpt/web/components/common/MyPopover/PopoverConfirm'; +import MyNumberInput from '@fastgpt/web/components/common/Input/NumberInput'; +import { PluginStatusEnum } from '@fastgpt/global/core/plugin/type'; +import MySelect from '@fastgpt/web/components/common/MySelect'; +import MultipleSelect, { + useMultipleSelect +} from '@fastgpt/web/components/common/MySelect/MultipleSelect'; +import { useTranslation } from 'next-i18next'; +import type { UpdateToolBodyType } from '@fastgpt/global/openapi/core/plugin/admin/tool/api'; +import { + delAdminSystemTool, + getAdminAllSystemAppTool, + getAdminSystemToolDetail, + postAdminCreateAppTypeTool, + putAdminUpdateTool +} from '@/web/core/plugin/admin/tool/api'; +import { parseI18nString } from '@fastgpt/global/common/i18n/utils'; + +export const defaultForm: UpdateToolBodyType = { + pluginId: '', + defaultInstalled: false, + name: '', + avatar: 'core/app/type/pluginFill', + intro: '', + status: PluginStatusEnum.Normal, + hasTokenFee: false, + originCost: 0, + currentCost: 0, + userGuide: '', + author: '', + associatedPluginId: '' +}; + +const WorkflowToolConfigModal = ({ + toolId, + onSuccess, + onClose +}: { + toolId: string; + onSuccess: () => void; + onClose: () => void; +}) => { + const { t, i18n } = useTranslation(); + const { toast } = useToast(); + + const { value: selectedTags, setValue: setSelectedTags } = useMultipleSelect([], false); + + const { register, reset, setValue, watch, handleSubmit } = useForm({ + defaultValues: defaultForm + }); + const name = watch('name'); + const avatar = watch('avatar'); + const associatedPluginId = watch('associatedPluginId'); + const currentCost = watch('currentCost'); + const status = watch('status'); + const defaultInstalled = watch('defaultInstalled'); + + React.useEffect(() => { + setValue('tagIds', selectedTags); + }, [selectedTags, setValue]); + + useRequest2( + async () => { + if (toolId) { + const res = await getAdminSystemToolDetail({ toolId }); + const form: UpdateToolBodyType = { + pluginId: res.id, + status: res.status, + defaultInstalled: res.defaultInstalled, + originCost: res.originCost, + currentCost: res.currentCost, + systemKeyCost: res.systemKeyCost, + hasTokenFee: res.hasTokenFee, + inputListVal: res.inputListVal, + name: res.name, + avatar: res.avatar, + intro: res.intro, + tagIds: res.tags || [], + associatedPluginId: res.associatedPluginId, + userGuide: res.userGuide || '', + author: res.author + }; + setSelectedTags(res.tags || []); + return form; + } + return defaultForm; + }, + { + onSuccess(res) { + reset(res); + }, + manual: false + } + ); + + const isEdit = !!toolId; + + const [searchKey, setSearchKey] = useState(''); + const [lastPluginId, setLastPluginId] = useState(''); + + const { data: apps = [], loading: loadingPlugins } = useRequest2( + () => getAdminAllSystemAppTool({ searchKey }), + { + manual: false, + refreshDeps: [searchKey] + } + ); + + const { data: tags = [], loading: loadingTags } = useRequest2(getPluginToolTags, { + manual: false + }); + const pluginTypeSelectList = useMemo( + () => + tags?.map((tag) => ({ + label: parseI18nString(tag.tagName, i18n.language), + value: tag.tagId + })) || [], + [i18n.language, tags] + ); + + const currentApp = useMemo(() => { + return apps.find((item) => item._id === associatedPluginId); + }, [apps, associatedPluginId]); + + const { + isOpen: isOpenAppListMenu, + onClose: onCloseAppListMenu, + onOpen: onOpenAppListMenu + } = useDisclosure(); + + const { + Component: AvatarUploader, + handleFileSelectorOpen: handleAvatarSelectorOpen, + uploading: isUploadingAvatar + } = useUploadAvatar(getUploadAvatarPresignedUrl, { + onSuccess(avatarUrl) { + setValue('avatar', avatarUrl); + } + }); + + const { runAsync: onSubmit, loading: isSubmitting } = useRequest2( + (data: UpdateToolBodyType) => { + if (!data.associatedPluginId) { + return Promise.reject(t('app:custom_plugin_associated_plugin_required')); + } + + const formatData: UpdateToolBodyType = { + ...data, + pluginId: toolId + }; + + if (formatData.pluginId) { + return putAdminUpdateTool(formatData); + } + + return postAdminCreateAppTypeTool(formatData); + }, + { + manual: true, + successToast: t('app:custom_plugin_config_success'), + onSuccess: () => { + onSuccess(); + onClose(); + }, + onError() {}, + refreshDeps: [toolId] + } + ); + + const { runAsync: onDelete, loading: isDeleting } = useRequest2(delAdminSystemTool, { + onSuccess() { + toast({ + title: t('app:custom_plugin_delete_success'), + status: 'success' + }); + onSuccess(); + onClose(); + } + }); + + return ( + + + + + + {t('app:custom_plugin_name_label')} + + + + + + + + + + {t('app:custom_plugin_intro_label')} + +

)nOpmYNfYX6pn#_`o6!3d6z%mh34tzGvM`!rAfD`3? z!R>8tn}yZYkd@J;eIKygP{~%Jzeh%PqEWH+sIj^2pm@Le{hb?dN-AY=6%$hi@5*kk z?zsNUYFlxtXHM4HYd=3Y5mn&M`>PvkgP-UwhyxMG2ZL7%>%4oSKp1<`h?NTz-jRm< z+u#!8Ck~(;bYEed-j~C@6gCQgW=9ao<&U%*Vp0`K!|;L2Ouls3g6XBvjZ471f9q6j zY#=@;QQWrc3M(~r6!3U3BU4{zO-vZN=rh-5gtD4!)tX&SjCp-(+TGh-;=~YF4|al@ zQ6Zu7F6qBc-99i~(agZ-3=BxQE&4AzbNN~97cWa@Bwk{d>+|<1Vrifne2K2r;3NRr zy~pjz-S#igI~IW<)xul1S!st6YWWmwkb(8p6m`A9#PoDDi>s9!;Ik2tx;!2G(Ob`> z-{WE-G2PAxxpj-()j^M4q4%WVe_Vjke2uto-^Lm?Z`txv6avS$4E%&V4jvN9h>Hfg zmci)HYdlSW&`o9Xv%E(t!I-{pvXuZn{m)uOm9_BNW?Oh6zOq;tiCVg# zcxlGH35Oh+n~Tm-6zjvm*Ce?Q8}#E}%U^MC8xIlSIE}1(*t?=cLQ!_dj#P!wZX!_K%J>?TYykNYn;d?6?SN9NSAg zB;=>;?2`1640Pgc49%?!;x#o@IEX-96bA&t4hL~~e0+4^NL|X)f`RpmP+>~<(Z5j( z{i1IH`l$rWK&}1X*Zbe^Z~Z@iMPmC%Gj#Kq{O{`_sVL?D{tUnWfBCkqL}KNO^fx$& zCrC&Ij&61JwY4(2!-uAfzM}7RSSi2L;_&e5-CTs0-lzzY3LiG&mYZ1ND1Zk8gKrnN zw~2^}yB2oO>J{=;OxAIKcXke5X*fEW!*<1#OoEO=MU`3~y=hMy%>#!^Y##XOG11aG zW(6T5J@iw_&CS0DWmtKIvx{q>hes{6D|c@HMyi{JlRM74K86*aNrT&_BfJXvfQ30f zpCh|AI~%ef83Y9l-_IDuJck=!_kj47w)bU(an*p<;?ar7b}03|>BM|)o0&Sqx>udN zh_UQ^gn|%fpD%^_Cx^y0tf6ag2D-og%0d5{Y;{z`zKWKCVHRE!wEYi$73v)EiIQ8c zudSsI(8tOOn+>QrJ6EKz^q@bZ6{Cc&_4@H&EZzsZL9}7+v&Rr!ygz?EQ*kyB#G3#4 z3wBA#=GA2zL@MPj?f092aZJ1H-6kJmEHN_4*dMZ7wp>bpOD_*%C>^;<9!h zVsl{qsbeBH^JR~K&A(%3rl%~uB093-Zi&_aF@qY17#-CRe=!s~o>wv4BJq<2C!($R#su0Ui@AU1P_x8@zfy7EkVKR;ku6BFaFXyT8)+x z5rno81^S&|(loKvI9;ZUKHF%5LMFz`{M@z?Y)AfrWdv9W6?J+D-)NwXKRs>M@5p}Z zI@QGIkWpP(iLL3%GM+FN>gIS^;=J7-5+d)!CrmR@%-Av4#Gss`;>1Tw>jIDMt;c)1 zq5g z?!OPD%Z*8R(YG3|qs#{BvE`+akj@fSa@~&;3*+MA0^6J3I&PK?rlpEfQc!-wgn*3k zDhFTSJ(33;<6vT{RXc9gU$zMeiu26Y+OnZhA|t)eHXG!C8`_gp_ceh6T(`NV$9>us zm>U+(aLAoX%gw>gVR?I7pwD+BEj;}5VT0uY739-(#|}=HkjsP74;wG3pPA`bF77{E zaYqLSLn$mFh||*+a^B*vNB_?5Vzu*l59;Rp z?o@8xdLQAf5>BjYCX_gZ~C?(R+tIg zItL5;KbRPg+wFIlE zh#B~PIMjD41A zk9Xhi33G07$<@+axau9NIF?&9>7v7Z4{)##R+64OV}g%WDE`c0Q2`aB^GM9pJ5 z?+%tp?M@?6V4$64!lwYhl~nWH*aREdnl@9!82k#pe3GHJn5sM9SsS*Y5)632{A=lZ z$zWe}^CZ?YybnTI*SBu+Z{GA9T{7-H)+&I$Q(1ZQOs8DggGh$i^x7cq> zBEEeCGZ$`Xy};wYJ*)5U7Gh&~^B3t_R1i{9x`u{X4Go2fUpKmWSj*39BO(^^-o0(mst5~MTcf+wkSeQ|%T^+QQx{F( zQ-pdx3lkGb&?6QW2%GVembUZovPm_?ZsO#W8aD!>gop@rZtkjMb9!AEe7NGR4Y1~~HhlrZ8YG$M_4=5>xsE#^U%@8u;gn?aa8-}-Tc}?dHs%s1b zrW+jGZC}+mtwl;ffq!>ndtr0<@~WJYGBG_pGCf@x7x&}WukQg8OX(Y4iv!?w1Hu+} zmqn*3B4vhwjxH{mlI#BxuNrmIA2waoZ)VE6krfr0B_$=p(Q)zj$PCm~-)edqVQHKS z@Ise~{VrcQCkp)Ka&q{?+L@V{U~Ve&;HPQ{7Y`%swRbTiMN?=~;qJnJ+SjLhu2EFE zp}e~Kq=$vY$VgfITO`7%^-D)IQ_0f)w20o}-8F9{Qi}ZiwfT9daT z{Oau~D-}&KoYbqr{8=RJmGWIF<+ZCzrN2MgOG!V(if4TMJ$QG7(rNOUp#kV2pD{}u zF!Bdie+)>jxur9QwSNwR@bTD&1{-m4DRJ?vVJi)F4UI1)LPTNUyHZgRJ(nIe0;}8) zHC8>JI8fX!jn=?`)+#b3H8rE4Ks&|M&K6%>+(%LzrKVcF!9sUETbX|j;2vaw+Bn4CxLcjsiuyMhNnk{2LNkBU;E zwRd)QaOO!Ksi~{eVo}8pTjdg?KDP!Bs*c1K6|t5Ls!(#n4r7$EFW}J@4rxa>e*~PIdLx@$7Mu zh>qd?tVOI7n2JIUv9Ky0E;WCmS6c`&D5I^d6yt@rssEmbdQTDE8(v^dmNGoyR^$F~ zsHmc{HL8=(kb1t=@JL8#3BWO-1g7V zE~CnnS$T-e@LmgvNV14d-sX_{#^2O|aGA&)2|D|2#al>!_xftqO7rtKS2MNC&Ib0c zkJTWG%>-MtBQ>lP7jb0P`y~FCDd{wHXR5a?^ z?lmS`0IF#w30w{xt^p-ucSp1xeFCx#ed@SFLG}3-`6fyI`D^I<-h(u=S9rfV@t%s% z>2r1U;^F8Suk+5FKkA(;HuXmRfa-5A0%s-!gb zIno&wO~Z_Qq8c%)IB z#0cU7aD9uG!nln7RJw1~b#PqR{`;Fu&a?5Csx|nt+tq1Xfazp8G7M+>VoIO*``xKK zTYDC@os_IoJ2y&cq(#KO>rz`<`oo_}+xl>dCW5Q@&hoCydcEhQy)WL(bw+BcU%=Jw zKcNhN@Ovw9)Aq7HBpdX%-fC13b{)6pQeh2YBgogj%ve2B5ZSktk%438vSOW^m^do7 zz)an^;6584-_~L>ADqr=+(v&~jyl5U?P=$CPcbn1H*$?jUSC`cMj5mf2mbRTUjeXH zu!I)UL2A!?RK@T9SHP-Van>5iL7)TaOBSJ!y3cjR$>c}>N)HwyGA*`@@K54vXufzC5kUxMZkZ!L1q zfM&IHwR$}59b|MJv-f$eut8Hti~tTHE32uUjl`9SAN(^oPWmJ4Jl||)-4t7rfj#^BrG!NHdZD-e{Q}^DozGs+ zlr-dzFM3hb$v4<+7d1BSk!YW+{EQRJE_r*t+culTXJwREtu$~lA4EOnzAZPZ`K*6W zSpXC3)wr*Z&p)rnsa)yl_u#q6A&GacCklE5L-3`wVQ-$qi#B0Dy?Qu@YkFgOpKSg{ zi;mA9?0ew3p3h2$;}^iA^UK-Zo}=z=yImH6&=RZr5+GP72o5H$ zf=S-*3zY`4Mpt_h_(ZHGP{@_zmxWE@?#ZuX_YR>y=zh@zI)+AHi z!tz_8M#Ws;3r4;sg#_M*d$tV=Ax7opT*Ti41H7)xI=80%yS42dN;qT|nga(dMz0Jf zxIVYA$;!)LL07f~uR=marGJ!@Nc6H{r(&9~F7)M?p~&8u+bS%FKRC+^F_O*`EZp;L zCBY{W5+q`jU@;|r_ddbA^^|zp>cApzA6m}n2F0AV=Cy66q77^Bcin5ZqS6#?px}XKCjPp(3N6CBKU$ z&f$UGXy}T{pqF^@B5*hw3McTil4i30*Cy|EDUq!N3n6*4Q(vZVkdogewM_Z4{h_n7 z2!@aPbh&Z&ie|z>h(Pqa^3RKli#P3qCW-7zhL^PS^r?6lI0<|XIYB{hp*~bod%Z2J zbPZ;V9>>##mWQU)f>`^AXci!=WOU%gcA+ znX+p6T+{Wj=xO8{oQAq$-(UQ`I-Yjk&rr`H;!USY@<)qr4;rkuFb1Hx5*z|8}Tgp5RhunSXk%e z=I9usGy&_TC?UavHYXaWIm5m+}rzz0->|^W7-s^NAs=Zu^#rGLeR(iD%_x zw9v1NsbqA#ZIw%mqk<4nZSDQ@Wg-0{p8#BncFpPo^%6be)%#Dtz)t*N(nf%M&FHhS zvhng0?w;QZyR9Lwob2rl$vv3cOooO6M6NFwBnug6ox{!%qusc8cq8kF(6Pf7Y<%FB z{bToLr`v69IAe@W0l(wVk$%6O?5p%IStrMq(5S1YOOJn6gt`_ospy34{E2j4JCs#c z?mn_Y3zVV_+nRL#R!6#nw*&EB?LES6!kobvb_@5y!}Z7SSQBGL=J+y8i|S+FpBx{L zIK+nmK!&!~wQU-wi=d3mXM=b(5VAkxXvJ4#7dY~5dnM0JA?ByYNfvD8mj%jQTe}eO zyMW>e6Z=5*sWQX0V3U(ZS104yX=Xmq3TnnRMn^tZ@%l%U3=X94&(Ejw3kYCge#WC{ zFZE`BX7*+RCJmuM!LrhF=y-TAs^}}NP*on;oOTy~YDSm(360|!{g>5Mq`?mvqpRb* zFWn^9rm9qHYOr3t%H_5k8&5T-No|l%O5|9&IN3e&E3xGy>(;QzU%F~=o~p8(sm<*k z;q$Kl2f&4~MIgJGwDXjmkieV=0x=EYX)2nUimH6~-?hm}8UM-yr!c@BB$!$=Uh7!217-;58pp<1_N{zS z(EL!)2*H2P8=s(wE!q3%A;IbCd7h@LiKeC!0+C2Fq{nVB8!B?uQ?7e<=6b!Z!-#zQ zVr=E@TcU*p1L2duK~ARj&dyH52&b($ z@qFv^%?hmzdl~aas9Aa+nJ2N)Y>w(w6kX?ab-e}Cll|lEZ~^NkzeLM~Cgp#72hZ>v zO8S4?e56tu`^ziFd|7g?Zf=kZxo#X>7l=_bn2`>~I(3YZoE+E@iIDGDqgj%rp0M-`Dl4i_ew@_8@`NLc;YAI6*CQ z6OMgCn@2IxD%$pRWE_?z_-&CJr{pZC7N-t&{1;2n$$DoI^9e7PXZ$h#oiQ3M!-8C- zi1RrX=@6OFxg^8Oe3`u=odL73Wk;BEH7$pW%TO=z!L!b~)+*5G7QG@~cnYAe$!b~s zN3L%b!==pm*$3|n!95$3Ou|YxUq6d} z@g2=*Gv(DSGehOM&B56D3&x70lubrya6j0Fm1$^Gq42}Ryw*jmW@%B& zb+)j#!dLO+dRR;C8iK5yHofj|voB>5HFfXW9&gQs34ng&22{V)N;7Tka8w+Xj`$BX zsn5R+1Tm(_wbIzJ#9Ld%#Y@Q?rn++!X;he z%+@1*oifwtk(mc~wCJQ+ZZvl$b!^S}6F(~`AZk#LCh`y_z{j^+D;OFvU+NN*UHB;` zWZ>$`<;OE`fAer7f&Y{qO$bTx?v+bl?;{;QxhHC8)Cdn1{Q^xu=REOGJ=pBa&X#VySP1JAx(-@W3klUB^;P#C)5fT~1 zSS3Y~;Bt3#aIjLTwy~l80Ak=?%rM^-TB7NdDO28yIXE%go4%%}+&_mp<9yDKK>Uv*Mmj*)y+ zR6uixq@D9CO#?{~NC8Yfo2jT>WgESK15=Hfh;9b}@@T$B&^Y(Eit#wJ3Vmdq#B2T2 zP2M!yt=CiV_ni6v(gKv;P%#P7(=s74L4@}c42^0qMbk&UothkA5*>!Yv_nve=pH-` z>sk^aGcD(F{{8Z!&p&uHBp!!Egi#OV?d)#i-NeKM0h);kQZ=KX!_z*7;hIY?Y-t36 z!YO)hgq4()^Lk7r(7D5}uB~H8Z*m&B|EN;gX-Xgd@yNS05&Oocyh095Ijv=$kDl7v zcw_oz76dkhWF9^~Om;o&WwbJ7J3fglG>KZvrdvf*uL}muVW7|2Cr>0FO$9I`=}Ng( z++#jI9hdCFO-{dM+*fp$YJdL$Be$;b=i_<#{2#jB9G7WIy~5&yhkd!$&`+s#F$2p_ zZDy%xVc$8wlz^h*^x6}=uq!kh@_Tb15AXNI?F?rRYMU|V>BA0>5u?*XZeap~^{&NQ zr5yE_I##a)R;HI5|14db{?ZHk7!z3kejgOw529hJ+twb9ZQ2X&x0@5u`Iv*02aLd| zd4gKGMwus3J4cBFMc83a!`olDuCVf?BslyoqX(gdr~4gVY}3w>Pe2%=qibidu9l39 zLurJhys3rz>hkh7FbS*2?@j3FS{h#qI#a(c9SvL)-vAxqrnS+I;eV`yjkr&6&l(xo zf^pijbq5!G=Z0*A5K*5dt)AYmWUqre-^*A^=@~478E&W@gj1(3FWXwH(OZ5KO zA3ou87*y)33kB#dW567hp5?6(|M)OGs1zS~*gre2e13Xg?x3A`wA9?#@&3>Wcybq62E$($+7^wCB!l7t7&VIow2o~b;^DQwluVbV4&SHBSIIlw_HlAs zx-;VM3~OV4=JA7?>RgSn0I?kNa!Y(Yy4#Pb^8`_kXXfW)6Zq&4EwAAva(}q^?b{11 zBs}{2g-icxOmLFFrN|sA(blfdN#y0>0c#)(>I6@K-gaX3--PQ1Wzy8e z+*GxNVTbs6cirltHw(ni@;)(>v(@V*_8GvfH$dX=i<>$y8Cv#{={ypX zlw|wxoSps6^z@HDb6#E^2M6rorV%6+yl|N!s(2+Npsp_8km+$`KJ9@|j*1@?Arj(vzW=6bbhm`)U=#?zXf(vI$PXZT)Q3-8pu z<|zC$lHyapKAl$Bv&NQ;Zpc*Mzw z1<+8Zyh08~@#G@6bF{Ry0-ilL>xV)=5PG+={5rpYvwuA6>-hu4o;jLDGh|z2zs+Iu zB;>bBH$7nUdI#SKY~CF8+zoAn~=z=av$wenm;3L+D2&GyG~`qCMkGaTvavdIkOvid3oM*AzdRn zPoVIruEtIzry$XWE7^V9tx6j(%(Xk3Xx}pNU^Ok_7g61zAw9(#)Lp4$7g0`&#zQE35t%AaX zlfM-HFF{sf`|fyQ>E(C={tHY|%<$F_(K;0;vN62g+;vOj=lQ_ES3-I*AD=KXGNMp+ zOZH6n<(&sd!XNxkEk~a|3wE)XVSU=GL(j;%mJRL-bGoSF>I&(JXr~nq|7!_7kFAv) zT~sX0UJ<-Ev~qq8@VM*drjT=hR3EeH(dyKb^{p)f_OOQM)~PtEs>tk^`FVL|Whb5j zXDE%=Spi8mjOe>;YxmCP@G>VNGNFdiK6?HQFmhW}c>qsdsBVTAMe%HNcy-^MG3rwR zRemjMR~m|gFbga8v*ChHTQ_kapdiT?GZ9sX<`bAgBDETqTpZ0cq&{Un@vW`>8Zt6m z?R*CdYhDNfK#ZUOE}N=1@N}mqTjg?G?iwC$1<^!N*V_I`2$@S!?JV{YK5cM$Y2=&5 zwYhrt{VA8tv$^G-$bJ2{$^FjKr^N;%z+CwIVuJhY@X(aF8y1JFE3p?LOid~rir=3q zE-Y0<|KTQ2BwuPz;xSl+s1O|vA4O5oB_CWq-up(I?0rg(zaD=)P(9e)UAahtp2_Fa zU7w#!n$IZO<@`kqZ2YuUBqV;Pi_ZyMu8aEVks3)`40>K9U!Eb?WxAB){pKmU$^D@dZZgsb6|M#2|it3&FFI865nIgv4Op{+;td zHLJ-EqvkV%Q`54F+$s09AP9pDL??TYT-Cs;p&w2|?Ep|&-d;n*C&m)2Z5mgFt2KCy zbyE0STE!io0WFrN0YC_guM6q?ecMA0Vnn8VEP?~$|_(6kkupTmv_O>R)qrbDZp;CtR78R+;N zT!<)nTt5ZacRlnxUg*N*FB|WC<`0YES=7r0#8l_4074W8$1eTM5Z4qfN<-uSf+$5uf>ZH3jw3WA#> z0vUEcs5z<9lwo+f>N6$5%QD{pbBom}w^Ou9l9m}=hopUPHb4`WCsv$z>}~TQv}tp0 zo)_yQiq>^@db0lP*BXrsUgz~~?j9Umb!`w>({H|iasEA?V*^kXSNa-u>)Y++p{V=XAIbf19F&1bJR;+*~T5M{f!IbZnj%Av%I2^WZ#hz;mge=xpE z2}0_?=#XL5b<2)N15~u+5*RA{jz|LI+y;yxQK*dx3~*W8DpeTHM^nzC;p%*(IqJFhb9B7$FoxW~0ev z(y4sDOLFVAtE-r+YikMFL$RkN(hVCtcC&Z!%CprEH@Qpf7qlkEQE=Peh))xwQ+`O=@B(#z&fWB<0%gXL`I72&vjNmHvVKSB{?~se?KV0%WLw(cZvX- zSG3)Cu_|2h-a?4FtSTFW^X8dP0CX(^7t3QUlnqmZruo>u8S$JOk5d~TU6z$KH8&gA zYi}(rQIM0z#uDR`l3F@3U{nd+HFX-r7D};&@Hqm-{? zH0}~9avbP;E=Rx|4pRK;);AyOh4Tiu9n(4tO^cCutp}fJ z9?Z$7CQ)U7WIhs&#dfM9)!2r!J}nJdwR!Vza}IV@H4m|0k11PyYl2{ExfwiV#PQba zLPHt%e3m*?Q>v8>NldiLeBSom+?1Jbi{5cYI)OX($Zv~q zLr{%!`M-Z5|4cdM@y8GA8fGVNaVk7EnwEA|1?&&wZM@W#-pdHX&hpSL0CEA0EY2a_ zr_?U=TmKCzD%q%9t=ce%|Uj^hub${PW5}Y7@ss`&l5Fa#|uxp!?XzG ztNzCXcR;$a{^wkWuB++KyYB@*itw6fQ&kL-LAC&B{1aK z%bcgFX`&aaW@8D7mt`VpIV_!RUZ^j+eKxfK<#j!DUG3lVr>x+lY!d({i}V9x0?$DC zFT#%Kf+2R!JQh}2JZR@HhIGz%8ht7?J{%_U;*`+T?RI7uG(X)(xMJ8=uNpY(M0eAw{C$NyrAWJef zSSeGt$~);*RM|czvRGL(&M4fX>HOg1{kgjHCu8$NPihH(e}pKAM4e*iWt1wvf946M zk~gs0{JOYE8TM{j-a%hB%(gIxDRh$r2KS!4dcdSliQx8 z!kUI5MLwmwf6_W;e}2iy!OEmN{PE~5+ORhBe0}5-;O6ZdWe%UK*BEuCE>OY~iMKRZ z6B9=dr!M0XrKP7IRh=KKEp={uxYL3EJ!|+Tla1^qm0l1mUVPcJjfEINeY&yX?KNjy zT+Y0P=U02BpqMZp<<{Sptx8r~XJM$p0m=l0k3m{pyj$z(Woos~XMZyHWy2({zTQ#u zlL(NPZ1U=ij52p0q49!fjCC~q^t_Jr@DICH9*TvwPRPM8tvbB%2_LVTjI-a_yqc}V zSt`jgR-9?~C}({9I-0P5wIX%a9=%jr(uvSKPEO>-RXY#7*xBW%Fu4)df^HQnSNu11 zb_ck7J6=>fpVNG+PRt7qyr^$ViwobW63$P+jn

wi=gE6L{B+l%_`8{cQLRjR(?jb2 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⪙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