From b96d895809129a9790915ea01edce8dab924e6aa Mon Sep 17 00:00:00 2001 From: nanxun Date: Thu, 12 Feb 2026 21:53:26 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/ISSUE_TEMPLATE/bug.yaml | 54 +- README.md | 4 +- backend/IMTest/.gitignore | 4 +- backend/IMTest/IMTest.csproj | 58 +- backend/IMTest/Service/AuthServiceTest.cs | 416 +- backend/IMTest/Service/FriendServiceTest.cs | 296 +- backend/IMTest/Service/GroupServiceTest.cs | 186 +- backend/IMTest/Service/UserServiceTest.cs | 372 +- .../IMTest/bin/Debug/net8.0/IMTest.deps.json | 5776 ++--- backend/IMTest/bin/Debug/net8.0/IMTest.dll | Bin 46080 -> 46080 bytes backend/IMTest/bin/Debug/net8.0/IMTest.pdb | Bin 32588 -> 32588 bytes .../Debug/net8.0/IMTest.runtimeconfig.json | 36 +- .../IMTest/bin/Debug/net8.0/IM_API.deps.json | 3484 +-- backend/IMTest/bin/Debug/net8.0/IM_API.dll | Bin 470528 -> 472576 bytes backend/IMTest/bin/Debug/net8.0/IM_API.exe | Bin 150016 -> 150016 bytes backend/IMTest/bin/Debug/net8.0/IM_API.pdb | Bin 132708 -> 133276 bytes .../Debug/net8.0/IM_API.runtimeconfig.json | 38 +- .../Debug/net8.0/appsettings.Development.json | 16 +- .../IMTest/bin/Debug/net8.0/appsettings.json | 52 +- ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 8 +- .../obj/Debug/net8.0/IMTest.AssemblyInfo.cs | 46 +- .../net8.0/IMTest.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 30 +- .../obj/Debug/net8.0/IMTest.GlobalUsings.g.cs | 18 +- .../IMTest.csproj.AssemblyReference.cache | Bin 42384 -> 42384 bytes .../IMTest.csproj.CoreCompileInputs.cache | 2 +- .../net8.0/IMTest.csproj.FileListAbsolute.txt | 306 +- backend/IMTest/obj/Debug/net8.0/IMTest.dll | Bin 46080 -> 46080 bytes .../net8.0/IMTest.genruntimeconfig.cache | 2 +- backend/IMTest/obj/Debug/net8.0/IMTest.pdb | Bin 32588 -> 32588 bytes .../IMTest/obj/Debug/net8.0/ref/IMTest.dll | Bin 17920 -> 17920 bytes .../IMTest/obj/Debug/net8.0/refint/IMTest.dll | Bin 17920 -> 17920 bytes .../obj/IMTest.csproj.nuget.dgspec.json | 476 +- .../IMTest/obj/IMTest.csproj.nuget.g.props | 56 +- .../IMTest/obj/IMTest.csproj.nuget.g.targets | 20 +- backend/IMTest/obj/project.assets.json | 17936 ++++++++-------- backend/IMTest/obj/project.nuget.cache | 350 +- backend/IM_API/.dockerignore | 58 +- backend/IM_API/.gitignore | 4 +- .../Aggregate/FriendRequestAggregate.cs | 40 +- .../FriendAddConversationHandler.cs | 46 +- .../FriendAddHandler/FriendAddDBHandler.cs | 58 +- .../FriendAddSignalRHandler.cs | 74 +- .../RequestDbHandler.cs | 48 +- .../SignalRHandler.cs | 68 +- .../GroupInviteSignalRHandler.cs | 52 +- .../GroupJoinConversationHandler.cs | 42 +- .../GroupJoinHandler/GroupJoinDbHandler.cs | 44 +- .../GroupJoinSignalrHandler.cs | 90 +- .../GroupRequestSignalRHandler.cs | 34 +- .../GroupRequestHandler/NextEventHandler.cs | 62 +- .../NextEventHandler.cs | 62 +- .../RequestUpdateSignalrHandler.cs | 58 +- .../ConversationEventHandler.cs | 132 +- .../MessageCreatedDbHandler.cs | 52 +- .../SignalREventHandler.cs | 96 +- .../RequestFriendSignalRHandler.cs | 74 +- .../Application/Interfaces/IEventBus.cs | 18 +- .../Application/Interfaces/IEventHandler.cs | 18 +- backend/IM_API/Configs/MQConfig.cs | 130 +- backend/IM_API/Configs/MapperConfig.cs | 352 +- .../Configs/Options/ConnectionOptions.cs | 16 +- .../IM_API/Configs/Options/RabbitMQOptions.cs | 20 +- .../Configs/ServiceCollectionExtensions.cs | 128 +- backend/IM_API/Controllers/AuthController.cs | 164 +- .../Controllers/ConversationController.cs | 112 +- .../IM_API/Controllers/FriendController.cs | 234 +- backend/IM_API/Controllers/GroupController.cs | 142 +- .../IM_API/Controllers/MessageController.cs | 110 +- backend/IM_API/Controllers/UserController.cs | 228 +- backend/IM_API/Dockerfile | 58 +- backend/IM_API/Domain/Events/DomainEvent.cs | 26 +- .../IM_API/Domain/Events/FriendAddEvent.cs | 50 +- .../Events/GroupInviteActionUpdateEvent.cs | 28 +- .../IM_API/Domain/Events/GroupInviteEvent.cs | 20 +- .../IM_API/Domain/Events/GroupJoinEvent.cs | 20 +- .../IM_API/Domain/Events/GroupRequestEvent.cs | 30 +- .../Domain/Events/GroupRequestUpdateEvent.cs | 28 +- .../Domain/Events/MessageCreatedEvent.cs | 46 +- .../Domain/Events/RequestFriendEvent.cs | 20 +- backend/IM_API/Domain/Interfaces/IEvent.cs | 12 +- backend/IM_API/Dtos/Auth/AuthDto.cs | 8 +- backend/IM_API/Dtos/Auth/LoginRequestDto.cs | 34 +- .../IM_API/Dtos/Auth/RegisterRequestDto.cs | 38 +- backend/IM_API/Dtos/BaseResponse.cs | 164 +- .../Conversation/ClearConversationsDto.cs | 52 +- .../Conversation/UpdateConversationDto.cs | 24 +- backend/IM_API/Dtos/Friend/FriendDto.cs | 66 +- .../IM_API/Dtos/Friend/FriendRequestDto.cs | 30 +- .../IM_API/Dtos/Friend/FriendRequestResDto.cs | 72 +- .../Dtos/Friend/HandleFriendRequestDto.cs | 58 +- backend/IM_API/Dtos/Group/GroupCreateDto.cs | 44 +- backend/IM_API/Dtos/Group/GroupInfoDto.cs | 102 +- .../IM_API/Dtos/Group/GroupInviteUserDto.cs | 16 +- .../Dtos/Group/GroupUpdateConversationDto.cs | 22 +- .../IM_API/Dtos/Group/HandleGroupInviteDto.cs | 20 +- .../Dtos/Group/HandleGroupRequestDto.cs | 20 +- backend/IM_API/Dtos/HubResponse.cs | 98 +- .../IM_API/Dtos/Message/MessageQueryDto.cs | 36 +- backend/IM_API/Dtos/MessageDto.cs | 34 +- backend/IM_API/Dtos/SignalRResponseDto.cs | 132 +- backend/IM_API/Dtos/TestDto.cs | 16 +- backend/IM_API/Dtos/User/UpdateUserDto.cs | 24 +- backend/IM_API/Dtos/User/UserDto.cs | 42 +- backend/IM_API/Dtos/User/UserInfoDto.cs | 86 +- backend/IM_API/Exceptions/BaseException.cs | 34 +- .../IM_API/Filters/GlobalExceptionFilter.cs | 78 +- backend/IM_API/Hubs/ChatHub.cs | 180 +- backend/IM_API/IM_API.csproj | 72 +- backend/IM_API/IM_API.csproj.user | 20 +- backend/IM_API/IM_API.http | 12 +- backend/IM_API/IM_API.sln | 62 +- .../EventBus/InMemoryEventBus.cs | 64 +- .../IM_API/Interface/Services/IAuthService.cs | 44 +- .../Interface/Services/ICacheService.cs | 98 +- .../Services/IConversationService.cs | 112 +- .../Interface/Services/IFriendSerivce.cs | 142 +- .../Interface/Services/IGroupService.cs | 110 +- .../IM_API/Interface/Services/IJWTService.cs | 42 +- .../Interface/Services/IMessageSevice.cs | 106 +- .../Services/IRefreshTokenService.cs | 54 +- .../Interface/Services/ISequenceIdService.cs | 24 +- .../IM_API/Interface/Services/IUserService.cs | 90 +- .../20260204140029_InitialCreate.Designer.cs | 2188 +- .../20260204140029_InitialCreate.cs | 146 +- .../20260204140708_change_file.Designer.cs | 2188 +- .../Migrations/20260204140708_change_file.cs | 56 +- .../20260204150644_add-SequenceId.Designer.cs | 2186 +- .../20260204150644_add-SequenceId.cs | 80 +- ...conversation-lastreadmessageid.Designer.cs | 2188 +- ...6_update-conversation-lastreadmessageid.cs | 82 +- .../20260205132459_update-message.Designer.cs | 2202 +- .../20260205132459_update-message.cs | 186 +- ...pdate-datetimeToDateTimeOffset.Designer.cs | 2202 +- ...7121713_update-datetimeToDateTimeOffset.cs | 44 +- ...338_update-DateTimeOffset-type.Designer.cs | 2202 +- ...260207122338_update-DateTimeOffset-type.cs | 44 +- .../20260208124430_update-group.Designer.cs | 2230 +- .../Migrations/20260208124430_update-group.cs | 130 +- ...53_update-group-groupid-userid.Designer.cs | 2234 +- ...60211065853_update-group-groupid-userid.cs | 98 +- .../Migrations/ImContextModelSnapshot.cs | 2228 +- backend/IM_API/Models/Admin.cs | 82 +- backend/IM_API/Models/AdminExt.cs | 22 +- backend/IM_API/Models/AdminState.cs | 16 +- backend/IM_API/Models/ChatType.cs | 16 +- backend/IM_API/Models/Conversation.cs | 102 +- backend/IM_API/Models/ConversationExt.cs | 36 +- backend/IM_API/Models/Device.cs | 58 +- backend/IM_API/Models/DeviceDtype.cs | 52 +- backend/IM_API/Models/DeviceExt.cs | 22 +- backend/IM_API/Models/File.cs | 86 +- backend/IM_API/Models/Friend.cs | 92 +- backend/IM_API/Models/FriendExt.cs | 22 +- backend/IM_API/Models/FriendRequestExt.cs | 22 +- backend/IM_API/Models/FriendRequestState.cs | 50 +- backend/IM_API/Models/FriendStatus.cs | 50 +- backend/IM_API/Models/Friendrequest.cs | 90 +- backend/IM_API/Models/Group.cs | 132 +- .../IM_API/Models/GroupAllMembersBanned.cs | 28 +- backend/IM_API/Models/GroupAuhority.cs | 44 +- backend/IM_API/Models/GroupExt.cs | 42 +- backend/IM_API/Models/GroupInviteExt.cs | 22 +- backend/IM_API/Models/GroupInviteState.cs | 34 +- backend/IM_API/Models/GroupMemberExt.cs | 22 +- backend/IM_API/Models/GroupMemberRole.cs | 36 +- backend/IM_API/Models/GroupRequestExt.cs | 22 +- backend/IM_API/Models/GroupRequestState.cs | 36 +- backend/IM_API/Models/GroupStatus.cs | 28 +- backend/IM_API/Models/Groupinvite.cs | 82 +- backend/IM_API/Models/Groupmember.cs | 70 +- backend/IM_API/Models/Grouprequest.cs | 82 +- backend/IM_API/Models/ImContext.Custom.cs | 200 +- backend/IM_API/Models/ImContext.cs | 1482 +- backend/IM_API/Models/LoginLog.cs | 66 +- backend/IM_API/Models/LoginLogExt.cs | 22 +- backend/IM_API/Models/LoginState.cs | 36 +- backend/IM_API/Models/Message.cs | 132 +- backend/IM_API/Models/MessageExt.cs | 42 +- backend/IM_API/Models/MessageMsgType.cs | 26 +- backend/IM_API/Models/MessageState.cs | 28 +- backend/IM_API/Models/Notification.cs | 76 +- backend/IM_API/Models/Permission.cs | 66 +- backend/IM_API/Models/Permissionarole.cs | 46 +- backend/IM_API/Models/Role.cs | 60 +- backend/IM_API/Models/User.cs | 182 +- backend/IM_API/Models/UserExt.cs | 32 +- backend/IM_API/Models/UserOlineStatus.cs | 36 +- backend/IM_API/Models/UserStatus.cs | 18 +- backend/IM_API/Program.cs | 320 +- backend/IM_API/Properties/launchSettings.json | 102 +- backend/IM_API/Services/AuthService.cs | 106 +- .../IM_API/Services/ConversationService.cs | 362 +- backend/IM_API/Services/FriendService.cs | 440 +- backend/IM_API/Services/GroupService.cs | 502 +- backend/IM_API/Services/JWTService.cs | 110 +- backend/IM_API/Services/MessageService.cs | 328 +- backend/IM_API/Services/RedisCacheService.cs | 124 +- .../Services/RedisRefreshTokenService.cs | 132 +- backend/IM_API/Services/SequenceIdService.cs | 92 +- backend/IM_API/Services/UserService.cs | 258 +- backend/IM_API/Tools/CodeDefine.cs | 218 +- backend/IM_API/Tools/PasswordHasher.cs | 42 +- backend/IM_API/Tools/RedisKeys.cs | 22 +- backend/IM_API/Tools/SignalRMethodDefine.cs | 14 +- backend/IM_API/Tools/StreamKeyBuilder.cs | 34 +- backend/IM_API/Tools/UTCConverter.cs | 36 +- backend/IM_API/VOs/Auth/LoginVo.cs | 36 +- .../IM_API/VOs/Conversation/ConversationVo.cs | 106 +- .../VOs/Group/GroupInviteActionUpdateVo.cs | 26 +- backend/IM_API/VOs/Group/GroupInviteVo.cs | 18 +- backend/IM_API/VOs/Group/GroupJoinVo.cs | 16 +- .../IM_API/VOs/Group/GroupRequestUpdateVo.cs | 18 +- backend/IM_API/VOs/Message/MessageBaseVo.cs | 22 +- backend/IM_API/appsettings.Development.json | 16 +- backend/IM_API/appsettings.json | 52 +- .../v17/DocumentLayout.backup.json | 112 +- .../.vs/SignalRTest/v17/DocumentLayout.json | 110 +- backend/SignalRTest/Form1.Designer.cs | 412 +- backend/SignalRTest/Form1.cs | 286 +- backend/SignalRTest/Form1.resx | 244 +- backend/SignalRTest/Program.cs | 32 +- .../PublishProfiles/FolderProfile.pubxml | 30 +- .../PublishProfiles/FolderProfile.pubxml.user | 14 +- backend/SignalRTest/SignalRTest.csproj | 28 +- backend/SignalRTest/SignalRTest.csproj.user | 20 +- backend/SignalRTest/SignalRTest.sln | 50 +- .../net8.0-windows/SignalRTest.deps.json | 836 +- .../SignalRTest.runtimeconfig.json | 36 +- .../net8.0-windows/SignalRTest.deps.json | 836 +- .../SignalRTest.runtimeconfig.json | 38 +- .../win-x64/SignalRTest.deps.json | 2736 +-- .../win-x64/SignalRTest.runtimeconfig.json | 38 +- ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 8 +- .../SignalRTest.AssemblyInfo.cs | 50 +- .../SignalRTest.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 44 +- .../SignalRTest.GlobalUsings.g.cs | 20 +- ...SignalRTest.csproj.CoreCompileInputs.cache | 2 +- .../SignalRTest.csproj.FileListAbsolute.txt | 82 +- .../SignalRTest.designer.deps.json | 810 +- .../SignalRTest.designer.runtimeconfig.json | 48 +- .../SignalRTest.genruntimeconfig.cache | 2 +- ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 8 +- .../SignalRTest.AssemblyInfo.cs | 50 +- .../SignalRTest.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 44 +- .../SignalRTest.GlobalUsings.g.cs | 20 +- ...SignalRTest.csproj.CoreCompileInputs.cache | 2 +- .../SignalRTest.csproj.FileListAbsolute.txt | 82 +- .../SignalRTest.genruntimeconfig.cache | 2 +- ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 8 +- .../win-x64/PublishOutputs.c7711f52c6.txt | 14 +- .../win-x64/SignalRTest.AssemblyInfo.cs | 50 +- .../SignalRTest.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 52 +- .../win-x64/SignalRTest.GlobalUsings.g.cs | 20 +- ...SignalRTest.csproj.CoreCompileInputs.cache | 2 +- .../SignalRTest.csproj.FileListAbsolute.txt | 990 +- .../win-x64/SignalRTest.deps.json | 2648 +-- .../win-x64/SignalRTest.genbundle.cache | 2 +- .../win-x64/SignalRTest.genpublishdeps.cache | 2 +- .../SignalRTest.genruntimeconfig.cache | 2 +- .../obj/SignalRTest.csproj.nuget.dgspec.json | 164 +- .../obj/SignalRTest.csproj.nuget.g.props | 30 +- .../obj/SignalRTest.csproj.nuget.g.targets | 14 +- backend/SignalRTest/obj/project.assets.json | 2304 +- backend/SignalRTest/obj/project.nuget.cache | 60 +- .../SignalRTest.csproj.nuget.dgspec.json | 214 +- .../win-x64/SignalRTest.csproj.nuget.g.props | 42 +- .../SignalRTest.csproj.nuget.g.targets | 14 +- .../obj/publish/win-x64/project.assets.json | 3246 +-- .../obj/publish/win-x64/project.nuget.cache | 68 +- docs/ER图.drawio | 2188 +- docs/IM 系统消息存储与推送策略文档.md | 280 +- docs/IM 系统鉴权与 Token 安全规范文档.md | 230 +- docs/vue3组件文档.md | 298 +- docs/后端代码规范文档.md | 164 +- docs/接口文档(REST API) — 聊天系统.md | 800 +- docs/数据字典.md | 444 +- docs/测试环境文档.md | 108 +- docs/系统架构设计.md | 72 +- docs/需求规格说明书(SRS).md | 126 +- docs/📘 WebSocket 通讯协议设计文档.md | 568 +- docs/📘 接口响应 Code 设计文档.md | 288 +- frontend/app/.gitignore | 90 +- frontend/app/README.md | 32 +- frontend/app/analysis_options.yaml | 56 +- frontend/app/android/.gitignore | 28 +- frontend/app/android/app/build.gradle.kts | 88 +- .../android/app/src/debug/AndroidManifest.xml | 14 +- .../android/app/src/main/AndroidManifest.xml | 90 +- .../kotlin/com/example/app/MainActivity.kt | 10 +- .../res/drawable-v21/launch_background.xml | 24 +- .../main/res/drawable/launch_background.xml | 24 +- .../app/src/main/res/values-night/styles.xml | 36 +- .../app/src/main/res/values/styles.xml | 36 +- .../app/src/profile/AndroidManifest.xml | 14 +- frontend/app/android/build.gradle.kts | 54 +- frontend/app/android/gradle.properties | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 12 +- frontend/app/android/settings.gradle.kts | 56 +- frontend/app/ios/.gitignore | 68 +- .../app/ios/Flutter/AppFrameworkInfo.plist | 52 +- frontend/app/ios/Flutter/Debug.xcconfig | 2 +- frontend/app/ios/Flutter/Release.xcconfig | 2 +- .../app/ios/Runner.xcodeproj/project.pbxproj | 1232 +- .../contents.xcworkspacedata | 14 +- .../xcshareddata/IDEWorkspaceChecks.plist | 16 +- .../xcshareddata/WorkspaceSettings.xcsettings | 16 +- .../xcshareddata/xcschemes/Runner.xcscheme | 202 +- .../contents.xcworkspacedata | 14 +- .../xcshareddata/IDEWorkspaceChecks.plist | 16 +- .../xcshareddata/WorkspaceSettings.xcsettings | 16 +- frontend/app/ios/Runner/AppDelegate.swift | 26 +- .../AppIcon.appiconset/Contents.json | 244 +- .../LaunchImage.imageset/Contents.json | 46 +- .../LaunchImage.imageset/README.md | 8 +- .../Runner/Base.lproj/LaunchScreen.storyboard | 74 +- .../app/ios/Runner/Base.lproj/Main.storyboard | 52 +- frontend/app/ios/Runner/Info.plist | 98 +- .../app/ios/Runner/Runner-Bridging-Header.h | 2 +- .../app/ios/RunnerTests/RunnerTests.swift | 24 +- frontend/app/lib/app.dart | 26 +- .../app/lib/core/constants/app_colors.dart | 8 +- frontend/app/lib/core/router/app_router.dart | 50 +- .../features/auth/bloc/login_page_state.dart | 332 +- .../lib/features/auth/pages/login_page.dart | 22 +- .../features/home/bloc/index_page_state.dart | 18 +- .../features/home/bloc/main_page_state.dart | 36 +- .../lib/features/home/pages/index_page.dart | 22 +- .../lib/features/home/pages/main_page.dart | 24 +- frontend/app/lib/main.dart | 18 +- frontend/app/pubspec.lock | 468 +- frontend/app/pubspec.yaml | 186 +- frontend/app/test/widget_test.dart | 58 +- frontend/app/web/index.html | 76 +- frontend/app/web/manifest.json | 70 +- .../web/src/components/groups/CreateGroup.vue | 12 +- 339 files changed, 46655 insertions(+), 46657 deletions(-) diff --git a/.gitea/ISSUE_TEMPLATE/bug.yaml b/.gitea/ISSUE_TEMPLATE/bug.yaml index f94e41d..038d270 100644 --- a/.gitea/ISSUE_TEMPLATE/bug.yaml +++ b/.gitea/ISSUE_TEMPLATE/bug.yaml @@ -1,28 +1,28 @@ -name: "IM 缺陷报告" -description: "记录聊天消息、SignalR 或缓存相关的问题" -title: "[BUG]简要描述问题" -labels: ["bug", "high-priority"] -body: - - type: markdown - attributes: - value: "请详细填写 Bug 信息,这将有助于快速定位后端 Redis 或 SignalR 的问题。" - - type: input - id: stream_key - attributes: - label: "相关 StreamKey / 群组 ID" - placeholder: "例如:group:123" - - type: textarea - id: steps - attributes: - label: "复现步骤" - value: | - 1. 登录用户 A 和用户 B - 2. 用户 A 向群组发送消息 - 3. 用户 B 界面没有反应 - validations: - required: true - - type: textarea - id: logs - attributes: - label: "控制台错误日志 (Console Log)" +name: "IM 缺陷报告" +description: "记录聊天消息、SignalR 或缓存相关的问题" +title: "[BUG]简要描述问题" +labels: ["bug", "high-priority"] +body: + - type: markdown + attributes: + value: "请详细填写 Bug 信息,这将有助于快速定位后端 Redis 或 SignalR 的问题。" + - type: input + id: stream_key + attributes: + label: "相关 StreamKey / 群组 ID" + placeholder: "例如:group:123" + - type: textarea + id: steps + attributes: + label: "复现步骤" + value: | + 1. 登录用户 A 和用户 B + 2. 用户 A 向群组发送消息 + 3. 用户 B 界面没有反应 + validations: + required: true + - type: textarea + id: logs + attributes: + label: "控制台错误日志 (Console Log)" placeholder: "在此粘贴浏览器或后端的报错信息..." \ No newline at end of file diff --git a/README.md b/README.md index 34feb2a..6076084 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# Chat - +# Chat + 一个学习项目 \ No newline at end of file diff --git a/backend/IMTest/.gitignore b/backend/IMTest/.gitignore index 3e16852..0e6ce67 100644 --- a/backend/IMTest/.gitignore +++ b/backend/IMTest/.gitignore @@ -1,3 +1,3 @@ -bin/ -obj/ +bin/ +obj/ .vs/ \ No newline at end of file diff --git a/backend/IMTest/IMTest.csproj b/backend/IMTest/IMTest.csproj index ce9db65..dbe36bc 100644 --- a/backend/IMTest/IMTest.csproj +++ b/backend/IMTest/IMTest.csproj @@ -1,29 +1,29 @@ - - - - net8.0 - enable - enable - - false - true - - - - - - - - - - - - - - - - - - - - + + + + net8.0 + enable + enable + + false + true + + + + + + + + + + + + + + + + + + + + diff --git a/backend/IMTest/Service/AuthServiceTest.cs b/backend/IMTest/Service/AuthServiceTest.cs index de75b8d..0c50b1f 100644 --- a/backend/IMTest/Service/AuthServiceTest.cs +++ b/backend/IMTest/Service/AuthServiceTest.cs @@ -1,208 +1,208 @@ -using AutoMapper; -using IM_API.Dtos.Auth; -using IM_API.Dtos.User; -using IM_API.Exceptions; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Services; -using IM_API.Tools; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Logging; -using Moq; -using System; -using System.Threading; -using System.Threading.Tasks; -using Xunit; - -public class AuthServiceTests -{ - // ---------- InMemory DbContext ---------- - private ImContext CreateDbContext() - { - var options = new DbContextOptionsBuilder() - .UseInMemoryDatabase(Guid.NewGuid().ToString()) - .Options; - - var context = new ImContext(options); - return context; - } - - // ---------- ģ SaveChanges 쳣 DbContext ---------- - private class ThrowOnSaveImContext : ImContext - { - private readonly bool _throw; - public ThrowOnSaveImContext(DbContextOptions options, bool throwOnSave) : base(options) - { - _throw = throwOnSave; - } - - public override Task SaveChangesAsync(CancellationToken cancellationToken = default) - { - if (_throw) throw new InvalidOperationException("Simulated DB save error"); - return base.SaveChangesAsync(cancellationToken); - } - } - - // ---------- Ĭ AutoMapperӳã ---------- - private IMapper CreateMapper() - { - var config = new MapperConfiguration(cfg => - { - cfg.CreateMap(); - cfg.CreateMap(); - }); - return config.CreateMapper(); - } - - // ---------- ServiceעԶ mapper ---------- - private AuthService CreateService(ImContext context, IMapper mapper = null) - { - var loggerMock = new Mock>(); - var mapperToUse = mapper ?? CreateMapper(); - var mockCache = new Mock(); - return new AuthService(context, loggerMock.Object, mapperToUse,mockCache.Object); - } - - // --------------------- --------------------- - - [Fact] - public async Task LoginAsync_ShouldReturnUser_WhenValidCredentials() - { - var context = CreateDbContext(); - context.Users.Add(new User { Id = 1, Username = "Tom", Password = "123456", NickName = "û" }); - await context.SaveChangesAsync(); - - var service = CreateService(context); - - var result = await service.LoginAsync(new LoginRequestDto - { - Username = "Tom", - Password = "123456" - }); - - Assert.NotNull(result); - Assert.Equal(1, result.Id); - Assert.Equal("Tom", result.Username); - } - - [Fact] - public async Task LoginAsync_ShouldThrowException_WhenInvalidCredentials() - { - var context = CreateDbContext(); - var service = CreateService(context); - - await Assert.ThrowsAsync(async () => - { - await service.LoginAsync(new LoginRequestDto - { - Username = "NotExist", - Password = "wrong" - }); - }); - } - - [Fact] - public async Task LoginAsync_IsCaseSensitive_ForUsername() - { - // ˵ǰʵǾȷƥ => ִСд - var context = CreateDbContext(); - context.Users.Add(new User { Id = 10, Username = "Tom", Password = "p" }); - await context.SaveChangesAsync(); - - var service = CreateService(context); - - // ʹСдûӦʧܣǰ߼ִСд - await Assert.ThrowsAsync(async () => - { - await service.LoginAsync(new LoginRequestDto { Username = "tom", Password = "p" }); - }); - } - - [Fact] - public async Task RegisterAsync_ShouldPersistUserAndReturnDto_WhenNewUser() - { - var context = CreateDbContext(); - var service = CreateService(context); - - var request = new RegisterRequestDto - { - Username = "Jerry", - Password = "123456" - }; - - var result = await service.RegisterAsync(request); - - // ֵȷ - Assert.NotNull(result); - Assert.Equal("Jerry", result.Username); - Assert.True(result.Id > 0); - - // DB ȷʵڸû - var persisted = await context.Users.FirstOrDefaultAsync(u => u.Username == "Jerry"); - Assert.NotNull(persisted); - Assert.Equal("Jerry", persisted.Username); - } - - [Fact] - public async Task RegisterAsync_ShouldThrowException_WhenUserExists() - { - var context = CreateDbContext(); - context.Users.Add(new User { Username = "Tom", Password = "12223" }); - await context.SaveChangesAsync(); - - var service = CreateService(context); - - var request = new RegisterRequestDto { Username = "Tom", Password = "123" }; - - await Assert.ThrowsAsync(() => service.RegisterAsync(request)); - } - - [Fact] - public async Task RegisterAsync_ShouldThrow_WhenMapperThrows() - { - var context = CreateDbContext(); - - var mapperMock = new Mock(); - mapperMock.Setup(m => m.Map(It.IsAny())) - .Throws(new Exception("mapper failure")); - - var service = CreateService(context, mapperMock.Object); - - var req = new RegisterRequestDto { Username = "A", Password = "B" }; - - var ex = await Assert.ThrowsAsync(() => service.RegisterAsync(req)); - Assert.Contains("mapper failure", ex.Message); - } - - [Fact] - public async Task RegisterAsync_ShouldPropagateSaveException_WhenSaveFails() - { - var options = new DbContextOptionsBuilder() - .UseInMemoryDatabase(Guid.NewGuid().ToString()) - .Options; - - // ʹԶ SaveChanges ʱ쳣 - var throwingContext = new ThrowOnSaveImContext(options, throwOnSave: true); - - var service = CreateService(throwingContext); - - var req = new RegisterRequestDto { Username = "X", Password = "P" }; - - var ex = await Assert.ThrowsAsync(() => service.RegisterAsync(req)); - Assert.Contains("Simulated DB save error", ex.Message); - } - - [Fact] - public async Task RegisterAsync_NullDto_ThrowsNullReferenceException_CurrentBehavior() - { - // ˵ǰʵûж dto Ϊ null 飬ᴥ NullReferenceException - // 飺иΪ ArgumentNullException ߽вУ鲢ȷ - var context = CreateDbContext(); - var service = CreateService(context); - - await Assert.ThrowsAsync(async () => - { - await service.RegisterAsync(null); - }); - } -} +using AutoMapper; +using IM_API.Dtos.Auth; +using IM_API.Dtos.User; +using IM_API.Exceptions; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Services; +using IM_API.Tools; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using Moq; +using System; +using System.Threading; +using System.Threading.Tasks; +using Xunit; + +public class AuthServiceTests +{ + // ---------- InMemory DbContext ---------- + private ImContext CreateDbContext() + { + var options = new DbContextOptionsBuilder() + .UseInMemoryDatabase(Guid.NewGuid().ToString()) + .Options; + + var context = new ImContext(options); + return context; + } + + // ---------- ģ SaveChanges 쳣 DbContext ---------- + private class ThrowOnSaveImContext : ImContext + { + private readonly bool _throw; + public ThrowOnSaveImContext(DbContextOptions options, bool throwOnSave) : base(options) + { + _throw = throwOnSave; + } + + public override Task SaveChangesAsync(CancellationToken cancellationToken = default) + { + if (_throw) throw new InvalidOperationException("Simulated DB save error"); + return base.SaveChangesAsync(cancellationToken); + } + } + + // ---------- Ĭ AutoMapperӳã ---------- + private IMapper CreateMapper() + { + var config = new MapperConfiguration(cfg => + { + cfg.CreateMap(); + cfg.CreateMap(); + }); + return config.CreateMapper(); + } + + // ---------- ServiceעԶ mapper ---------- + private AuthService CreateService(ImContext context, IMapper mapper = null) + { + var loggerMock = new Mock>(); + var mapperToUse = mapper ?? CreateMapper(); + var mockCache = new Mock(); + return new AuthService(context, loggerMock.Object, mapperToUse,mockCache.Object); + } + + // --------------------- --------------------- + + [Fact] + public async Task LoginAsync_ShouldReturnUser_WhenValidCredentials() + { + var context = CreateDbContext(); + context.Users.Add(new User { Id = 1, Username = "Tom", Password = "123456", NickName = "û" }); + await context.SaveChangesAsync(); + + var service = CreateService(context); + + var result = await service.LoginAsync(new LoginRequestDto + { + Username = "Tom", + Password = "123456" + }); + + Assert.NotNull(result); + Assert.Equal(1, result.Id); + Assert.Equal("Tom", result.Username); + } + + [Fact] + public async Task LoginAsync_ShouldThrowException_WhenInvalidCredentials() + { + var context = CreateDbContext(); + var service = CreateService(context); + + await Assert.ThrowsAsync(async () => + { + await service.LoginAsync(new LoginRequestDto + { + Username = "NotExist", + Password = "wrong" + }); + }); + } + + [Fact] + public async Task LoginAsync_IsCaseSensitive_ForUsername() + { + // ˵ǰʵǾȷƥ => ִСд + var context = CreateDbContext(); + context.Users.Add(new User { Id = 10, Username = "Tom", Password = "p" }); + await context.SaveChangesAsync(); + + var service = CreateService(context); + + // ʹСдûӦʧܣǰ߼ִСд + await Assert.ThrowsAsync(async () => + { + await service.LoginAsync(new LoginRequestDto { Username = "tom", Password = "p" }); + }); + } + + [Fact] + public async Task RegisterAsync_ShouldPersistUserAndReturnDto_WhenNewUser() + { + var context = CreateDbContext(); + var service = CreateService(context); + + var request = new RegisterRequestDto + { + Username = "Jerry", + Password = "123456" + }; + + var result = await service.RegisterAsync(request); + + // ֵȷ + Assert.NotNull(result); + Assert.Equal("Jerry", result.Username); + Assert.True(result.Id > 0); + + // DB ȷʵڸû + var persisted = await context.Users.FirstOrDefaultAsync(u => u.Username == "Jerry"); + Assert.NotNull(persisted); + Assert.Equal("Jerry", persisted.Username); + } + + [Fact] + public async Task RegisterAsync_ShouldThrowException_WhenUserExists() + { + var context = CreateDbContext(); + context.Users.Add(new User { Username = "Tom", Password = "12223" }); + await context.SaveChangesAsync(); + + var service = CreateService(context); + + var request = new RegisterRequestDto { Username = "Tom", Password = "123" }; + + await Assert.ThrowsAsync(() => service.RegisterAsync(request)); + } + + [Fact] + public async Task RegisterAsync_ShouldThrow_WhenMapperThrows() + { + var context = CreateDbContext(); + + var mapperMock = new Mock(); + mapperMock.Setup(m => m.Map(It.IsAny())) + .Throws(new Exception("mapper failure")); + + var service = CreateService(context, mapperMock.Object); + + var req = new RegisterRequestDto { Username = "A", Password = "B" }; + + var ex = await Assert.ThrowsAsync(() => service.RegisterAsync(req)); + Assert.Contains("mapper failure", ex.Message); + } + + [Fact] + public async Task RegisterAsync_ShouldPropagateSaveException_WhenSaveFails() + { + var options = new DbContextOptionsBuilder() + .UseInMemoryDatabase(Guid.NewGuid().ToString()) + .Options; + + // ʹԶ SaveChanges ʱ쳣 + var throwingContext = new ThrowOnSaveImContext(options, throwOnSave: true); + + var service = CreateService(throwingContext); + + var req = new RegisterRequestDto { Username = "X", Password = "P" }; + + var ex = await Assert.ThrowsAsync(() => service.RegisterAsync(req)); + Assert.Contains("Simulated DB save error", ex.Message); + } + + [Fact] + public async Task RegisterAsync_NullDto_ThrowsNullReferenceException_CurrentBehavior() + { + // ˵ǰʵûж dto Ϊ null 飬ᴥ NullReferenceException + // 飺иΪ ArgumentNullException ߽вУ鲢ȷ + var context = CreateDbContext(); + var service = CreateService(context); + + await Assert.ThrowsAsync(async () => + { + await service.RegisterAsync(null); + }); + } +} diff --git a/backend/IMTest/Service/FriendServiceTest.cs b/backend/IMTest/Service/FriendServiceTest.cs index 747d7aa..08905f9 100644 --- a/backend/IMTest/Service/FriendServiceTest.cs +++ b/backend/IMTest/Service/FriendServiceTest.cs @@ -1,149 +1,149 @@ -using AutoMapper; -using IM_API.Domain.Events; -using IM_API.Dtos.Friend; -using IM_API.Exceptions; -using IM_API.Models; -using IM_API.Services; -using MassTransit; // 必须引入 -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Logging; -using Moq; -using System; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using Xunit; - -public class FriendServiceTests -{ - private readonly Mock _mockEndpoint = new(); - private readonly Mock> _mockLogger = new(); - - #region 辅助构造方法 - private ImContext CreateDbContext() - { - var options = new DbContextOptionsBuilder() - .UseInMemoryDatabase(Guid.NewGuid().ToString()) // 确保每个测试数据库隔离 - .Options; - return new ImContext(options); - } - - private IMapper CreateMapper() - { - var config = new MapperConfiguration(cfg => - { - // 补充你业务中实际需要的映射规则 - cfg.CreateMap(); - cfg.CreateMap(); - cfg.CreateMap() - .ForMember(d => d.UserId, o => o.MapFrom(s => s.ResponseUser)) - .ForMember(d => d.FriendId, o => o.MapFrom(s => s.RequestUser)); - }); - return config.CreateMapper(); - } - - private FriendService CreateService(ImContext context) - { - // 注入 Mock 对象和真实的 Mapper/Context - return new FriendService(context, _mockLogger.Object, CreateMapper(), _mockEndpoint.Object); - } - #endregion - - [Fact] - public async Task SendFriendRequestAsync_Success_ShouldSaveAndPublish() - { - // Arrange - var context = CreateDbContext(); - context.Users.AddRange( - new User { Id = 1, Username = "Sender", Password = "..." }, - new User { Id = 2, Username = "Receiver", Password = "..." } - ); - await context.SaveChangesAsync(); - var service = CreateService(context); - var dto = new FriendRequestDto { ToUserId = 2, FromUserId = 2, Description = "Hello" , RemarkName = "测试备注" }; - - // Act - //var result = await service.SendFriendRequestAsync(dto); - - // Assert - //Assert.True(result); - //Assert.Single(context.FriendRequests); - - // 验证事件是否发布到了 MQ - /* - _mockEndpoint.Verify(x => x.Publish( - It.Is(e => e.FromUserId == 1 && e.ToUserId == 2), - It.IsAny()), - Times.Once); - */ - } - - [Fact] - public async Task SendFriendRequestAsync_UserNotFound_ShouldThrow() - { - // Arrange - var context = CreateDbContext(); - var service = CreateService(context); - var dto = new FriendRequestDto { ToUserId = 99 }; // 不存在的用户 - - // Act & Assert - await Assert.ThrowsAsync(() => service.SendFriendRequestAsync(dto)); - } - - [Fact] - public async Task SendFriendRequestAsync_AlreadyExists_ShouldThrow() - { - // Arrange - var context = CreateDbContext(); - context.Users.Add(new User { Id = 2, Password = "123", Username = "111" }); - context.FriendRequests.Add(new FriendRequest - { - RequestUser = 1, - ResponseUser = 2, - State = (sbyte)FriendRequestState.Pending, - RemarkName = "测试备注" - }); - await context.SaveChangesAsync(); - var service = CreateService(context); - - // Act & Assert - await Assert.ThrowsAsync(() => service.SendFriendRequestAsync(new FriendRequestDto { ToUserId = 2 })); - } - - [Fact] - public async Task BlockFriendAsync_ValidId_ShouldUpdateStatus() - { - // Arrange - var context = CreateDbContext(); - var friend = new Friend { Id = 50, UserId = 1, FriendId = 2, StatusEnum = FriendStatus.Added,RemarkName = "测试备注" }; - context.Friends.Add(friend); - await context.SaveChangesAsync(); - var service = CreateService(context); - - // Act - await service.BlockeFriendAsync(50); - - // Assert - var updated = await context.Friends.FindAsync(50); - Assert.Equal(FriendStatus.Blocked, updated.StatusEnum); - } - - [Fact] - public async Task GetFriendListAsync_ShouldFilterByStatus() - { - // Arrange - var context = CreateDbContext(); - context.Friends.AddRange( - new Friend { UserId = 1, FriendId = 2, StatusEnum = FriendStatus.Added,RemarkName = "111" }, - new Friend { UserId = 1, FriendId = 3, StatusEnum = FriendStatus.Blocked,RemarkName = "222" } - ); - await context.SaveChangesAsync(); - var service = CreateService(context); - - // Act - var result = await service.GetFriendListAsync(1, 1, 10, false); - - // Assert - //Assert.Single(result); // 只应该拿到 Added 状态的 - } +using AutoMapper; +using IM_API.Domain.Events; +using IM_API.Dtos.Friend; +using IM_API.Exceptions; +using IM_API.Models; +using IM_API.Services; +using MassTransit; // 必须引入 +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using Moq; +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Xunit; + +public class FriendServiceTests +{ + private readonly Mock _mockEndpoint = new(); + private readonly Mock> _mockLogger = new(); + + #region 辅助构造方法 + private ImContext CreateDbContext() + { + var options = new DbContextOptionsBuilder() + .UseInMemoryDatabase(Guid.NewGuid().ToString()) // 确保每个测试数据库隔离 + .Options; + return new ImContext(options); + } + + private IMapper CreateMapper() + { + var config = new MapperConfiguration(cfg => + { + // 补充你业务中实际需要的映射规则 + cfg.CreateMap(); + cfg.CreateMap(); + cfg.CreateMap() + .ForMember(d => d.UserId, o => o.MapFrom(s => s.ResponseUser)) + .ForMember(d => d.FriendId, o => o.MapFrom(s => s.RequestUser)); + }); + return config.CreateMapper(); + } + + private FriendService CreateService(ImContext context) + { + // 注入 Mock 对象和真实的 Mapper/Context + return new FriendService(context, _mockLogger.Object, CreateMapper(), _mockEndpoint.Object); + } + #endregion + + [Fact] + public async Task SendFriendRequestAsync_Success_ShouldSaveAndPublish() + { + // Arrange + var context = CreateDbContext(); + context.Users.AddRange( + new User { Id = 1, Username = "Sender", Password = "..." }, + new User { Id = 2, Username = "Receiver", Password = "..." } + ); + await context.SaveChangesAsync(); + var service = CreateService(context); + var dto = new FriendRequestDto { ToUserId = 2, FromUserId = 2, Description = "Hello" , RemarkName = "测试备注" }; + + // Act + //var result = await service.SendFriendRequestAsync(dto); + + // Assert + //Assert.True(result); + //Assert.Single(context.FriendRequests); + + // 验证事件是否发布到了 MQ + /* + _mockEndpoint.Verify(x => x.Publish( + It.Is(e => e.FromUserId == 1 && e.ToUserId == 2), + It.IsAny()), + Times.Once); + */ + } + + [Fact] + public async Task SendFriendRequestAsync_UserNotFound_ShouldThrow() + { + // Arrange + var context = CreateDbContext(); + var service = CreateService(context); + var dto = new FriendRequestDto { ToUserId = 99 }; // 不存在的用户 + + // Act & Assert + await Assert.ThrowsAsync(() => service.SendFriendRequestAsync(dto)); + } + + [Fact] + public async Task SendFriendRequestAsync_AlreadyExists_ShouldThrow() + { + // Arrange + var context = CreateDbContext(); + context.Users.Add(new User { Id = 2, Password = "123", Username = "111" }); + context.FriendRequests.Add(new FriendRequest + { + RequestUser = 1, + ResponseUser = 2, + State = (sbyte)FriendRequestState.Pending, + RemarkName = "测试备注" + }); + await context.SaveChangesAsync(); + var service = CreateService(context); + + // Act & Assert + await Assert.ThrowsAsync(() => service.SendFriendRequestAsync(new FriendRequestDto { ToUserId = 2 })); + } + + [Fact] + public async Task BlockFriendAsync_ValidId_ShouldUpdateStatus() + { + // Arrange + var context = CreateDbContext(); + var friend = new Friend { Id = 50, UserId = 1, FriendId = 2, StatusEnum = FriendStatus.Added,RemarkName = "测试备注" }; + context.Friends.Add(friend); + await context.SaveChangesAsync(); + var service = CreateService(context); + + // Act + await service.BlockeFriendAsync(50); + + // Assert + var updated = await context.Friends.FindAsync(50); + Assert.Equal(FriendStatus.Blocked, updated.StatusEnum); + } + + [Fact] + public async Task GetFriendListAsync_ShouldFilterByStatus() + { + // Arrange + var context = CreateDbContext(); + context.Friends.AddRange( + new Friend { UserId = 1, FriendId = 2, StatusEnum = FriendStatus.Added,RemarkName = "111" }, + new Friend { UserId = 1, FriendId = 3, StatusEnum = FriendStatus.Blocked,RemarkName = "222" } + ); + await context.SaveChangesAsync(); + var service = CreateService(context); + + // Act + var result = await service.GetFriendListAsync(1, 1, 10, false); + + // Assert + //Assert.Single(result); // 只应该拿到 Added 状态的 + } } \ No newline at end of file diff --git a/backend/IMTest/Service/GroupServiceTest.cs b/backend/IMTest/Service/GroupServiceTest.cs index 445150a..f9d037c 100644 --- a/backend/IMTest/Service/GroupServiceTest.cs +++ b/backend/IMTest/Service/GroupServiceTest.cs @@ -1,94 +1,94 @@ -using AutoMapper; -using IM_API.Dtos.Group; -using IM_API.Models; -using IM_API.Services; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Logging; -using Moq; -using Xunit; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using MassTransit; -using IM_API.Configs; -using Microsoft.EntityFrameworkCore.Infrastructure; - -namespace IM_API.Tests.Services -{ - public class GroupServiceTests - { - private readonly ImContext _context; - private readonly IMapper _mapper; - private readonly Mock> _loggerMock = new(); - private readonly Mock _publishMock = new(); - - public GroupServiceTests() - { - // 1. 配置内存数据库 - var options = new DbContextOptionsBuilder() - .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()) - .Options; - _context = new ImContext(options); - - // 2. 配置真实的 AutoMapper (ProjectTo 必须使用真实配置,不能用 Mock) - var config = new MapperConfiguration(cfg => - { - // 替换为你项目中真实的 Profile 类名 - cfg.AddProfile(); - // 如果有多个 Profile,可以继续添加或者加载整个程序集 - // cfg.AddMaps(typeof(GroupProfile).Assembly); - }); - _mapper = config.CreateMapper(); - } - - [Fact] - public async Task GetGroupList_ShouldReturnPagedAndOrderedData() - { - // Arrange (准备数据) - var userId = 1; - var groups = new List - { - new Group { Id = 101, Name = "Group A", Avatar = "1111" }, - new Group { Id = 102, Name = "Group B" , Avatar = "1111"}, - new Group { Id = 103, Name = "Group C", Avatar = "1111" } - }; - - _context.Groups.AddRange(groups); - _context.GroupMembers.AddRange(new List - { - new GroupMember { UserId = userId, GroupId = 101 }, - new GroupMember { UserId = userId, GroupId = 102 }, - new GroupMember { UserId = userId, GroupId = 103 } - }); - await _context.SaveChangesAsync(); - - var userService = new Mock(); - - var service = new GroupService(_context, _mapper, _loggerMock.Object, _publishMock.Object,userService.Object); - - // Act (执行测试: 第1页,每页2条,倒序) - var result = await service.GetGroupListAsync(userId, page: 1, limit: 2, desc: true); - - // Assert (断言) - Assert.NotNull(result); - Assert.Equal(2, result.Count); - Assert.Equal(103, result[0].Id); // 倒序最大的是 103 - Assert.Equal(102, result[1].Id); - } - - [Fact] - public async Task GetGroupList_ShouldReturnEmpty_WhenUserHasNoGroups() - { - - var userSerivce = new Mock(); - // Arrange - var service = new GroupService(_context, _mapper, _loggerMock.Object, _publishMock.Object, userSerivce.Object); - - // Act - var result = await service.GetGroupListAsync(userId: 999, page: 1, limit: 10, desc: false); - - // Assert - Assert.Empty(result); - } - } +using AutoMapper; +using IM_API.Dtos.Group; +using IM_API.Models; +using IM_API.Services; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using Moq; +using Xunit; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using MassTransit; +using IM_API.Configs; +using Microsoft.EntityFrameworkCore.Infrastructure; + +namespace IM_API.Tests.Services +{ + public class GroupServiceTests + { + private readonly ImContext _context; + private readonly IMapper _mapper; + private readonly Mock> _loggerMock = new(); + private readonly Mock _publishMock = new(); + + public GroupServiceTests() + { + // 1. 配置内存数据库 + var options = new DbContextOptionsBuilder() + .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()) + .Options; + _context = new ImContext(options); + + // 2. 配置真实的 AutoMapper (ProjectTo 必须使用真实配置,不能用 Mock) + var config = new MapperConfiguration(cfg => + { + // 替换为你项目中真实的 Profile 类名 + cfg.AddProfile(); + // 如果有多个 Profile,可以继续添加或者加载整个程序集 + // cfg.AddMaps(typeof(GroupProfile).Assembly); + }); + _mapper = config.CreateMapper(); + } + + [Fact] + public async Task GetGroupList_ShouldReturnPagedAndOrderedData() + { + // Arrange (准备数据) + var userId = 1; + var groups = new List + { + new Group { Id = 101, Name = "Group A", Avatar = "1111" }, + new Group { Id = 102, Name = "Group B" , Avatar = "1111"}, + new Group { Id = 103, Name = "Group C", Avatar = "1111" } + }; + + _context.Groups.AddRange(groups); + _context.GroupMembers.AddRange(new List + { + new GroupMember { UserId = userId, GroupId = 101 }, + new GroupMember { UserId = userId, GroupId = 102 }, + new GroupMember { UserId = userId, GroupId = 103 } + }); + await _context.SaveChangesAsync(); + + var userService = new Mock(); + + var service = new GroupService(_context, _mapper, _loggerMock.Object, _publishMock.Object,userService.Object); + + // Act (执行测试: 第1页,每页2条,倒序) + var result = await service.GetGroupListAsync(userId, page: 1, limit: 2, desc: true); + + // Assert (断言) + Assert.NotNull(result); + Assert.Equal(2, result.Count); + Assert.Equal(103, result[0].Id); // 倒序最大的是 103 + Assert.Equal(102, result[1].Id); + } + + [Fact] + public async Task GetGroupList_ShouldReturnEmpty_WhenUserHasNoGroups() + { + + var userSerivce = new Mock(); + // Arrange + var service = new GroupService(_context, _mapper, _loggerMock.Object, _publishMock.Object, userSerivce.Object); + + // Act + var result = await service.GetGroupListAsync(userId: 999, page: 1, limit: 10, desc: false); + + // Assert + Assert.Empty(result); + } + } } \ No newline at end of file diff --git a/backend/IMTest/Service/UserServiceTest.cs b/backend/IMTest/Service/UserServiceTest.cs index 8858b14..dfebd38 100644 --- a/backend/IMTest/Service/UserServiceTest.cs +++ b/backend/IMTest/Service/UserServiceTest.cs @@ -1,186 +1,186 @@ -using AutoMapper; -using IM_API.Dtos.User; -using IM_API.Exceptions; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Services; -using IM_API.Tools; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Logging; -using Moq; -using StackExchange.Redis; -using System; -using System.Threading.Tasks; -using Xunit; - -public class UserServiceTests -{ - private ImContext CreateDbContext() - { - var options = new DbContextOptionsBuilder() - .UseInMemoryDatabase(Guid.NewGuid().ToString()) - .Options; - - return new ImContext(options); - } - - private IMapper CreateMapper() - { - var config = new MapperConfiguration(cfg => - { - cfg.CreateMap(); - cfg.CreateMap(); - }); - return config.CreateMapper(); - } - - private UserService CreateService(ImContext context) - { - var loggerMock = new Mock>(); - var mapper = CreateMapper(); - var mockCache = new Mock(); - var res = new Mock(); - return new UserService(context, loggerMock.Object, mapper , mockCache.Object, res.Object); - } - - // ========== GetUserInfoAsync ========== - [Fact] - public async Task GetUserInfoAsync_ShouldReturnUser_WhenExists() - { - var context = CreateDbContext(); - context.Users.Add(new User { Id = 1, Username = "Tom", Password = "123456" }); - await context.SaveChangesAsync(); - - var service = CreateService(context); - var result = await service.GetUserInfoAsync(1); - - Assert.NotNull(result); - Assert.Equal("Tom", result.Username); - } - - [Fact] - public async Task GetUserInfoAsync_ShouldThrow_WhenNotFound() - { - var service = CreateService(CreateDbContext()); - - await Assert.ThrowsAsync(() => - service.GetUserInfoAsync(999) - ); - } - - // ========== GetUserInfoByUsernameAsync ========== - [Fact] - public async Task GetUserInfoByUsernameAsync_ShouldReturn_WhenExists() - { - var context = CreateDbContext(); - context.Users.Add(new User { Id = 2, Username = "Jerry", Password = "aaa" }); - await context.SaveChangesAsync(); - - var service = CreateService(context); - var result = await service.GetUserInfoByUsernameAsync("Jerry"); - - Assert.NotNull(result); - Assert.Equal(2, result.Id); - } - - [Fact] - public async Task GetUserInfoByUsernameAsync_ShouldThrow_WhenNotFound() - { - var service = CreateService(CreateDbContext()); - - await Assert.ThrowsAsync(() => - service.GetUserInfoByUsernameAsync("Nobody") - ); - } - - // ========== ResetPasswordAsync ========== - [Fact] - public async Task ResetPasswordAsync_ShouldReset_WhenCorrectPassword() - { - var context = CreateDbContext(); - context.Users.Add(new User { Id = 3, Username = "test", Password = "old" }); - await context.SaveChangesAsync(); - - var service = CreateService(context); - var result = await service.ResetPasswordAsync(3, "old", "new"); - - Assert.True(result); - Assert.Equal("new", context.Users.Find(3).Password); - } - - [Fact] - public async Task ResetPasswordAsync_ShouldThrow_WhenWrongPassword() - { - var context = CreateDbContext(); - context.Users.Add(new User { Id = 4, Username = "test", Password = "oldPwd" }); - await context.SaveChangesAsync(); - - var service = CreateService(context); - - await Assert.ThrowsAsync(() => - service.ResetPasswordAsync(4, "wrong", "new") - ); - } - - [Fact] - public async Task ResetPasswordAsync_ShouldThrow_WhenUserNotFound() - { - var service = CreateService(CreateDbContext()); - - await Assert.ThrowsAsync(() => - service.ResetPasswordAsync(123, "anything", "new") - ); - } - - // ========== UpdateOlineStatusAsync ========== - [Fact] - public async Task UpdateOlineStatusAsync_ShouldUpdateStatus() - { - var context = CreateDbContext(); - context.Users.Add(new User { Id = 5, Username = "test", Password = "p", OnlineStatusEnum = UserOnlineStatus.Offline }); - await context.SaveChangesAsync(); - - var service = CreateService(context); - var result = await service.UpdateOlineStatusAsync(5, UserOnlineStatus.Online); - - Assert.True(result); - Assert.Equal(UserOnlineStatus.Online, context.Users.Find(5).OnlineStatusEnum); - } - - [Fact] - public async Task UpdateOlineStatusAsync_ShouldThrow_WhenUserNotFound() - { - var service = CreateService(CreateDbContext()); - - await Assert.ThrowsAsync(() => - service.UpdateOlineStatusAsync(999, UserOnlineStatus.Online) - ); - } - - // ========== UpdateUserAsync ========== - [Fact] - public async Task UpdateUserAsync_ShouldUpdateUserFields() - { - var context = CreateDbContext(); - context.Users.Add(new User { Id = 6, Username = "test", Password = "p", NickName = "OldName" }); - await context.SaveChangesAsync(); - - var service = CreateService(context); - var dto = new UpdateUserDto { NickName = "NewName" }; - - var result = await service.UpdateUserAsync(6, dto); - - Assert.NotNull(result); - Assert.Equal("NewName", context.Users.Find(6).NickName); - } - - [Fact] - public async Task UpdateUserAsync_ShouldThrow_WhenNotFound() - { - var service = CreateService(CreateDbContext()); - - await Assert.ThrowsAsync(() => - service.UpdateUserAsync(123, new UpdateUserDto { NickName = "Test" }) - ); - } -} +using AutoMapper; +using IM_API.Dtos.User; +using IM_API.Exceptions; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Services; +using IM_API.Tools; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using Moq; +using StackExchange.Redis; +using System; +using System.Threading.Tasks; +using Xunit; + +public class UserServiceTests +{ + private ImContext CreateDbContext() + { + var options = new DbContextOptionsBuilder() + .UseInMemoryDatabase(Guid.NewGuid().ToString()) + .Options; + + return new ImContext(options); + } + + private IMapper CreateMapper() + { + var config = new MapperConfiguration(cfg => + { + cfg.CreateMap(); + cfg.CreateMap(); + }); + return config.CreateMapper(); + } + + private UserService CreateService(ImContext context) + { + var loggerMock = new Mock>(); + var mapper = CreateMapper(); + var mockCache = new Mock(); + var res = new Mock(); + return new UserService(context, loggerMock.Object, mapper , mockCache.Object, res.Object); + } + + // ========== GetUserInfoAsync ========== + [Fact] + public async Task GetUserInfoAsync_ShouldReturnUser_WhenExists() + { + var context = CreateDbContext(); + context.Users.Add(new User { Id = 1, Username = "Tom", Password = "123456" }); + await context.SaveChangesAsync(); + + var service = CreateService(context); + var result = await service.GetUserInfoAsync(1); + + Assert.NotNull(result); + Assert.Equal("Tom", result.Username); + } + + [Fact] + public async Task GetUserInfoAsync_ShouldThrow_WhenNotFound() + { + var service = CreateService(CreateDbContext()); + + await Assert.ThrowsAsync(() => + service.GetUserInfoAsync(999) + ); + } + + // ========== GetUserInfoByUsernameAsync ========== + [Fact] + public async Task GetUserInfoByUsernameAsync_ShouldReturn_WhenExists() + { + var context = CreateDbContext(); + context.Users.Add(new User { Id = 2, Username = "Jerry", Password = "aaa" }); + await context.SaveChangesAsync(); + + var service = CreateService(context); + var result = await service.GetUserInfoByUsernameAsync("Jerry"); + + Assert.NotNull(result); + Assert.Equal(2, result.Id); + } + + [Fact] + public async Task GetUserInfoByUsernameAsync_ShouldThrow_WhenNotFound() + { + var service = CreateService(CreateDbContext()); + + await Assert.ThrowsAsync(() => + service.GetUserInfoByUsernameAsync("Nobody") + ); + } + + // ========== ResetPasswordAsync ========== + [Fact] + public async Task ResetPasswordAsync_ShouldReset_WhenCorrectPassword() + { + var context = CreateDbContext(); + context.Users.Add(new User { Id = 3, Username = "test", Password = "old" }); + await context.SaveChangesAsync(); + + var service = CreateService(context); + var result = await service.ResetPasswordAsync(3, "old", "new"); + + Assert.True(result); + Assert.Equal("new", context.Users.Find(3).Password); + } + + [Fact] + public async Task ResetPasswordAsync_ShouldThrow_WhenWrongPassword() + { + var context = CreateDbContext(); + context.Users.Add(new User { Id = 4, Username = "test", Password = "oldPwd" }); + await context.SaveChangesAsync(); + + var service = CreateService(context); + + await Assert.ThrowsAsync(() => + service.ResetPasswordAsync(4, "wrong", "new") + ); + } + + [Fact] + public async Task ResetPasswordAsync_ShouldThrow_WhenUserNotFound() + { + var service = CreateService(CreateDbContext()); + + await Assert.ThrowsAsync(() => + service.ResetPasswordAsync(123, "anything", "new") + ); + } + + // ========== UpdateOlineStatusAsync ========== + [Fact] + public async Task UpdateOlineStatusAsync_ShouldUpdateStatus() + { + var context = CreateDbContext(); + context.Users.Add(new User { Id = 5, Username = "test", Password = "p", OnlineStatusEnum = UserOnlineStatus.Offline }); + await context.SaveChangesAsync(); + + var service = CreateService(context); + var result = await service.UpdateOlineStatusAsync(5, UserOnlineStatus.Online); + + Assert.True(result); + Assert.Equal(UserOnlineStatus.Online, context.Users.Find(5).OnlineStatusEnum); + } + + [Fact] + public async Task UpdateOlineStatusAsync_ShouldThrow_WhenUserNotFound() + { + var service = CreateService(CreateDbContext()); + + await Assert.ThrowsAsync(() => + service.UpdateOlineStatusAsync(999, UserOnlineStatus.Online) + ); + } + + // ========== UpdateUserAsync ========== + [Fact] + public async Task UpdateUserAsync_ShouldUpdateUserFields() + { + var context = CreateDbContext(); + context.Users.Add(new User { Id = 6, Username = "test", Password = "p", NickName = "OldName" }); + await context.SaveChangesAsync(); + + var service = CreateService(context); + var dto = new UpdateUserDto { NickName = "NewName" }; + + var result = await service.UpdateUserAsync(6, dto); + + Assert.NotNull(result); + Assert.Equal("NewName", context.Users.Find(6).NickName); + } + + [Fact] + public async Task UpdateUserAsync_ShouldThrow_WhenNotFound() + { + var service = CreateService(CreateDbContext()); + + await Assert.ThrowsAsync(() => + service.UpdateUserAsync(123, new UpdateUserDto { NickName = "Test" }) + ); + } +} diff --git a/backend/IMTest/bin/Debug/net8.0/IMTest.deps.json b/backend/IMTest/bin/Debug/net8.0/IMTest.deps.json index 8a8287e..fca9fa5 100644 --- a/backend/IMTest/bin/Debug/net8.0/IMTest.deps.json +++ b/backend/IMTest/bin/Debug/net8.0/IMTest.deps.json @@ -1,2889 +1,2889 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v8.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v8.0": { - "IMTest/1.0.0": { - "dependencies": { - "IM_API": "1.0.0", - "Microsoft.EntityFrameworkCore.InMemory": "8.0.22", - "Microsoft.NET.Test.Sdk": "17.8.0", - "Moq": "4.20.72", - "coverlet.collector": "6.0.0", - "xunit": "2.5.3", - "xunit.runner.visualstudio": "2.5.3" - }, - "runtime": { - "IMTest.dll": {} - } - }, - "AutoMapper/12.0.1": { - "dependencies": { - "Microsoft.CSharp": "4.7.0" - }, - "runtime": { - "lib/netstandard2.1/AutoMapper.dll": { - "assemblyVersion": "12.0.0.0", - "fileVersion": "12.0.1.0" - } - } - }, - "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { - "dependencies": { - "AutoMapper": "12.0.1", - "Microsoft.Extensions.Options": "10.0.2" - }, - "runtime": { - "lib/netstandard2.1/AutoMapper.Extensions.Microsoft.DependencyInjection.dll": { - "assemblyVersion": "12.0.0.0", - "fileVersion": "12.0.0.0" - } - } - }, - "Castle.Core/5.1.1": { - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - }, - "runtime": { - "lib/net6.0/Castle.Core.dll": { - "assemblyVersion": "5.0.0.0", - "fileVersion": "5.1.1.0" - } - } - }, - "coverlet.collector/6.0.0": {}, - "MassTransit/8.5.5": { - "dependencies": { - "MassTransit.Abstractions": "8.5.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - }, - "runtime": { - "lib/net8.0/MassTransit.dll": { - "assemblyVersion": "8.5.5.0", - "fileVersion": "8.5.5.0" - } - } - }, - "MassTransit.Abstractions/8.5.5": { - "runtime": { - "lib/net8.0/MassTransit.Abstractions.dll": { - "assemblyVersion": "8.5.5.0", - "fileVersion": "8.5.5.0" - } - } - }, - "MassTransit.RabbitMQ/8.5.5": { - "dependencies": { - "MassTransit": "8.5.5", - "RabbitMQ.Client": "7.1.2" - }, - "runtime": { - "lib/net8.0/MassTransit.RabbitMqTransport.dll": { - "assemblyVersion": "8.5.5.0", - "fileVersion": "8.5.5.0" - } - } - }, - "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - } - }, - "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { - "dependencies": { - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.1.2" - }, - "runtime": { - "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { - "assemblyVersion": "8.0.21.0", - "fileVersion": "8.0.2125.47515" - } - } - }, - "Microsoft.AspNetCore.Authorization/2.3.0": { - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - } - }, - "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Authentication.Abstractions": "2.3.0", - "Microsoft.AspNetCore.Authorization": "2.3.0" - } - }, - "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.3.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.3.0", - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - } - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.3.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" - } - }, - "Microsoft.AspNetCore.Http/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.AspNetCore.WebUtilities": "2.3.0", - "Microsoft.Extensions.ObjectPool": "8.0.11", - "Microsoft.Extensions.Options": "10.0.2", - "Microsoft.Net.Http.Headers": "2.3.0" - } - }, - "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.3.0", - "System.Text.Encodings.Web": "8.0.0" - } - }, - "Microsoft.AspNetCore.Http.Connections/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.Authorization.Policy": "2.3.0", - "Microsoft.AspNetCore.Hosting.Abstractions": "2.3.0", - "Microsoft.AspNetCore.Http": "2.3.0", - "Microsoft.AspNetCore.Http.Connections.Common": "1.2.0", - "Microsoft.AspNetCore.Routing": "2.3.0", - "Microsoft.AspNetCore.WebSockets": "2.3.0", - "Newtonsoft.Json": "13.0.4", - "System.Net.WebSockets.WebSocketProtocol": "5.1.0" - } - }, - "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", - "Newtonsoft.Json": "13.0.4", - "System.Buffers": "4.6.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.AspNetCore.Http.Extensions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Net.Http.Headers": "2.3.0", - "System.Buffers": "4.6.0" - } - }, - "Microsoft.AspNetCore.Http.Features/2.3.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.2" - } - }, - "Microsoft.AspNetCore.Routing/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Extensions": "2.3.0", - "Microsoft.AspNetCore.Routing.Abstractions": "2.3.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.11", - "Microsoft.Extensions.Options": "10.0.2" - } - }, - "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0" - } - }, - "Microsoft.AspNetCore.SignalR/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections": "1.2.0", - "Microsoft.AspNetCore.SignalR.Core": "1.2.0", - "Microsoft.AspNetCore.WebSockets": "2.3.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.AspNetCore.SignalR.Common/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", - "Microsoft.Extensions.Options": "10.0.2", - "Newtonsoft.Json": "13.0.4", - "System.Buffers": "4.6.0" - } - }, - "Microsoft.AspNetCore.SignalR.Core/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.Authorization": "2.3.0", - "Microsoft.AspNetCore.SignalR.Common": "1.2.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "1.2.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "System.IO.Pipelines": "8.0.0", - "System.Reflection.Emit": "4.7.0", - "System.Threading.Channels": "8.0.0" - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "1.2.0", - "Newtonsoft.Json": "13.0.4", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.AspNetCore.WebSockets/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Extensions": "2.3.0", - "Microsoft.Extensions.Options": "10.0.2", - "System.Net.WebSockets.WebSocketProtocol": "5.1.0" - } - }, - "Microsoft.AspNetCore.WebUtilities/2.3.0": { - "dependencies": { - "Microsoft.Net.Http.Headers": "2.3.0", - "System.Text.Encodings.Web": "8.0.0" - } - }, - "Microsoft.Bcl.AsyncInterfaces/1.1.0": { - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "assemblyVersion": "1.0.0.0", - "fileVersion": "4.700.19.56404" - } - } - }, - "Microsoft.CodeCoverage/17.8.0": { - "runtime": { - "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "17.800.623.45702" - } - } - }, - "Microsoft.CSharp/4.7.0": {}, - "Microsoft.EntityFrameworkCore/8.0.22": { - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "8.0.22", - "Microsoft.EntityFrameworkCore.Analyzers": "8.0.22", - "Microsoft.Extensions.Caching.Memory": "8.0.1", - "Microsoft.Extensions.Logging": "8.0.1" - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { - "assemblyVersion": "8.0.22.0", - "fileVersion": "8.0.2225.52804" - } - } - }, - "Microsoft.EntityFrameworkCore.Abstractions/8.0.22": { - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { - "assemblyVersion": "8.0.22.0", - "fileVersion": "8.0.2225.52804" - } - } - }, - "Microsoft.EntityFrameworkCore.Analyzers/8.0.22": {}, - "Microsoft.EntityFrameworkCore.InMemory/8.0.22": { - "dependencies": { - "Microsoft.EntityFrameworkCore": "8.0.22" - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.InMemory.dll": { - "assemblyVersion": "8.0.22.0", - "fileVersion": "8.0.2225.52804" - } - } - }, - "Microsoft.EntityFrameworkCore.Relational/8.0.13": { - "dependencies": { - "Microsoft.EntityFrameworkCore": "8.0.22", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { - "assemblyVersion": "8.0.13.0", - "fileVersion": "8.0.1325.6604" - } - } - }, - "Microsoft.Extensions.ApiDescription.Server/6.0.5": {}, - "Microsoft.Extensions.Caching.Abstractions/10.0.2": { - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.Extensions.Caching.Memory/8.0.1": { - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2", - "Microsoft.Extensions.Primitives": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1024.46610" - } - } - }, - "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.2", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2", - "StackExchange.Redis": "2.9.32" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll": { - "assemblyVersion": "10.0.2.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.2" - } - }, - "Microsoft.Extensions.DependencyInjection/8.0.1": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1024.46610" - } - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1024.46610" - } - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { - "dependencies": { - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": {}, - "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.2" - } - }, - "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1024.46610" - } - } - }, - "Microsoft.Extensions.Logging/8.0.1": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1024.46610" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.2": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "System.Diagnostics.DiagnosticSource": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.Extensions.ObjectPool/8.0.11": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.ObjectPool.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1124.52116" - } - } - }, - "Microsoft.Extensions.Options/10.0.2": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Primitives": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.Extensions.Primitives/10.0.2": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.IdentityModel.Abstractions/8.14.0": { - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { - "assemblyVersion": "8.14.0.0", - "fileVersion": "8.14.0.60815" - } - } - }, - "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { - "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.14.0" - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { - "assemblyVersion": "8.14.0.0", - "fileVersion": "8.14.0.60815" - } - } - }, - "Microsoft.IdentityModel.Logging/8.14.0": { - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.14.0" - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { - "assemblyVersion": "8.14.0.0", - "fileVersion": "8.14.0.60815" - } - } - }, - "Microsoft.IdentityModel.Protocols/7.1.2": { - "dependencies": { - "Microsoft.IdentityModel.Logging": "8.14.0", - "Microsoft.IdentityModel.Tokens": "8.14.0" - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { - "assemblyVersion": "7.1.2.0", - "fileVersion": "7.1.2.41121" - } - } - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { - "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.1.2", - "System.IdentityModel.Tokens.Jwt": "8.14.0" - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { - "assemblyVersion": "7.1.2.0", - "fileVersion": "7.1.2.41121" - } - } - }, - "Microsoft.IdentityModel.Tokens/8.14.0": { - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.IdentityModel.Logging": "8.14.0" - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { - "assemblyVersion": "8.14.0.0", - "fileVersion": "8.14.0.60815" - } - } - }, - "Microsoft.Net.Http.Headers/2.3.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.2", - "System.Buffers": "4.6.0" - } - }, - "Microsoft.NET.Test.Sdk/17.8.0": { - "dependencies": { - "Microsoft.CodeCoverage": "17.8.0", - "Microsoft.TestPlatform.TestHost": "17.8.0" - } - }, - "Microsoft.NETCore.Platforms/1.1.0": {}, - "Microsoft.NETCore.Targets/1.1.0": {}, - "Microsoft.OpenApi/1.6.14": { - "runtime": { - "lib/netstandard2.0/Microsoft.OpenApi.dll": { - "assemblyVersion": "1.6.14.0", - "fileVersion": "1.6.14.0" - } - } - }, - "Microsoft.TestPlatform.ObjectModel/17.8.0": { - "dependencies": { - "NuGet.Frameworks": "6.5.0", - "System.Reflection.Metadata": "1.6.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "17.800.23.55801" - }, - "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "17.800.23.55801" - }, - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "17.800.23.55801" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.TestPlatform.TestHost/17.8.0": { - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "17.8.0", - "Newtonsoft.Json": "13.0.4" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "17.800.23.55801" - }, - "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "17.800.23.55801" - }, - "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "17.800.23.55801" - }, - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "17.800.23.55801" - }, - "lib/netcoreapp3.1/testhost.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "17.800.23.55801" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": {}, - "Microsoft.Win32.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "Moq/4.20.72": { - "dependencies": { - "Castle.Core": "5.1.1" - }, - "runtime": { - "lib/net6.0/Moq.dll": { - "assemblyVersion": "4.20.72.0", - "fileVersion": "4.20.72.0" - } - } - }, - "MySqlConnector/2.3.5": { - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.2" - }, - "runtime": { - "lib/net8.0/MySqlConnector.dll": { - "assemblyVersion": "2.0.0.0", - "fileVersion": "2.3.5.0" - } - } - }, - "NETStandard.Library/1.6.1": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.Win32.Primitives": "4.3.0", - "System.AppContext": "4.3.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Console": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.Compression.ZipFile": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.Net.Http": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Net.Sockets": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Timer": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XDocument": "4.3.0" - } - }, - "Newtonsoft.Json/13.0.4": { - "runtime": { - "lib/net6.0/Newtonsoft.Json.dll": { - "assemblyVersion": "13.0.0.0", - "fileVersion": "13.0.4.30916" - } - } - }, - "NuGet.Frameworks/6.5.0": { - "runtime": { - "lib/netstandard2.0/NuGet.Frameworks.dll": { - "assemblyVersion": "6.5.0.154", - "fileVersion": "6.5.0.154" - } - } - }, - "Pipelines.Sockets.Unofficial/2.2.8": { - "dependencies": { - "System.IO.Pipelines": "8.0.0" - }, - "runtime": { - "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { - "assemblyVersion": "1.0.0.0", - "fileVersion": "2.2.8.1080" - } - } - }, - "Pomelo.EntityFrameworkCore.MySql/8.0.3": { - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "8.0.13", - "MySqlConnector": "2.3.5" - }, - "runtime": { - "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { - "assemblyVersion": "8.0.3.0", - "fileVersion": "8.0.3.0" - } - } - }, - "RabbitMQ.Client/7.1.2": { - "dependencies": { - "System.IO.Pipelines": "8.0.0", - "System.Threading.RateLimiting": "8.0.0" - }, - "runtime": { - "lib/net8.0/RabbitMQ.Client.dll": { - "assemblyVersion": "7.0.0.0", - "fileVersion": "7.1.2.0" - } - } - }, - "RedLock.net/2.3.2": { - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.0", - "Microsoft.Extensions.Logging": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "StackExchange.Redis": "2.9.32" - }, - "runtime": { - "lib/netstandard2.0/RedLockNet.Abstractions.dll": { - "assemblyVersion": "2.3.2.0", - "fileVersion": "2.3.2.0" - }, - "lib/netstandard2.0/RedLockNet.SERedis.dll": { - "assemblyVersion": "2.3.2.0", - "fileVersion": "2.3.2.0" - } - } - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.native.System/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.IO.Compression/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.Net.Http/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "dependencies": { - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" - } - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "dependencies": { - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {}, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "StackExchange.Redis/2.9.32": { - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Pipelines.Sockets.Unofficial": "2.2.8" - }, - "runtime": { - "lib/net8.0/StackExchange.Redis.dll": { - "assemblyVersion": "2.0.0.0", - "fileVersion": "2.9.32.54708" - } - } - }, - "Swashbuckle.AspNetCore/6.6.2": { - "dependencies": { - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", - "Swashbuckle.AspNetCore.Swagger": "6.6.2", - "Swashbuckle.AspNetCore.SwaggerGen": "6.6.2", - "Swashbuckle.AspNetCore.SwaggerUI": "6.6.2" - } - }, - "Swashbuckle.AspNetCore.Swagger/6.6.2": { - "dependencies": { - "Microsoft.OpenApi": "1.6.14" - }, - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { - "assemblyVersion": "6.6.2.0", - "fileVersion": "6.6.2.401" - } - } - }, - "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { - "dependencies": { - "Swashbuckle.AspNetCore.Swagger": "6.6.2" - }, - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { - "assemblyVersion": "6.6.2.0", - "fileVersion": "6.6.2.401" - } - } - }, - "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { - "assemblyVersion": "6.6.2.0", - "fileVersion": "6.6.2.401" - } - } - }, - "System.AppContext/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Buffers/4.6.0": {}, - "System.Collections/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Collections.Concurrent/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Console/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Diagnostics.Debug/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Diagnostics.DiagnosticSource/10.0.2": { - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "System.Diagnostics.EventLog/6.0.0": {}, - "System.Diagnostics.Tools/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Diagnostics.Tracing/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization.Calendars/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0" - } - }, - "System.IdentityModel.Tokens.Jwt/8.14.0": { - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "8.14.0", - "Microsoft.IdentityModel.Tokens": "8.14.0" - }, - "runtime": { - "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { - "assemblyVersion": "8.14.0.0", - "fileVersion": "8.14.0.60815" - } - } - }, - "System.IO/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.Compression/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Buffers": "4.6.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.IO.Compression": "4.3.0" - } - }, - "System.IO.Compression.ZipFile/4.3.0": { - "dependencies": { - "System.Buffers": "4.6.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.IO.FileSystem/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.FileSystem.Primitives/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.IO.Pipelines/8.0.0": {}, - "System.Linq/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Linq.Expressions/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.7.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Emit.Lightweight": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Net.Http/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.DiagnosticSource": "10.0.2", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Net.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Net.Sockets/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Net.WebSockets.WebSocketProtocol/5.1.0": { - "runtime": { - "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": { - "assemblyVersion": "5.1.0.0", - "fileVersion": "5.100.24.56208" - } - } - }, - "System.ObjectModel/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Reflection/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit/4.7.0": {}, - "System.Reflection.Emit.ILGeneration/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit.Lightweight/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Metadata/1.6.0": {}, - "System.Reflection.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.TypeExtensions/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Resources.ResourceManager/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "System.Runtime.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Handles/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.InteropServices/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Runtime.Numerics/4.3.0": { - "dependencies": { - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.Apple": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Cng/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Security.Cryptography.Csp/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Linq": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Cng": "4.3.0", - "System.Security.Cryptography.Csp": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Text.Encoding/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Text.Encoding.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Text.Encodings.Web/8.0.0": {}, - "System.Text.RegularExpressions/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Threading/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Channels/8.0.0": {}, - "System.Threading.RateLimiting/8.0.0": {}, - "System.Threading.Tasks/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Threading.Tasks.Extensions/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Timer/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Xml.ReaderWriter/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Tasks.Extensions": "4.3.0" - } - }, - "System.Xml.XDocument/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "xunit/2.5.3": { - "dependencies": { - "xunit.analyzers": "1.4.0", - "xunit.assert": "2.5.3", - "xunit.core": "2.5.3" - } - }, - "xunit.abstractions/2.0.3": { - "runtime": { - "lib/netstandard2.0/xunit.abstractions.dll": { - "assemblyVersion": "2.0.0.0", - "fileVersion": "2.0.0.0" - } - } - }, - "xunit.analyzers/1.4.0": {}, - "xunit.assert/2.5.3": { - "dependencies": { - "NETStandard.Library": "1.6.1" - }, - "runtime": { - "lib/netstandard1.1/xunit.assert.dll": { - "assemblyVersion": "2.5.3.0", - "fileVersion": "2.5.3.0" - } - } - }, - "xunit.core/2.5.3": { - "dependencies": { - "xunit.extensibility.core": "2.5.3", - "xunit.extensibility.execution": "2.5.3" - } - }, - "xunit.extensibility.core/2.5.3": { - "dependencies": { - "NETStandard.Library": "1.6.1", - "xunit.abstractions": "2.0.3" - }, - "runtime": { - "lib/netstandard1.1/xunit.core.dll": { - "assemblyVersion": "2.5.3.0", - "fileVersion": "2.5.3.0" - } - } - }, - "xunit.extensibility.execution/2.5.3": { - "dependencies": { - "NETStandard.Library": "1.6.1", - "xunit.extensibility.core": "2.5.3" - }, - "runtime": { - "lib/netstandard1.1/xunit.execution.dotnet.dll": { - "assemblyVersion": "2.5.3.0", - "fileVersion": "2.5.3.0" - } - } - }, - "xunit.runner.visualstudio/2.5.3": {}, - "IM_API/1.0.0": { - "dependencies": { - "AutoMapper": "12.0.1", - "AutoMapper.Extensions.Microsoft.DependencyInjection": "12.0.0", - "MassTransit.RabbitMQ": "8.5.5", - "Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.21", - "Microsoft.AspNetCore.SignalR": "1.2.0", - "Microsoft.Extensions.Caching.StackExchangeRedis": "10.0.2", - "Microsoft.VisualStudio.Azure.Containers.Tools.Targets": "1.22.1", - "Newtonsoft.Json": "13.0.4", - "Pomelo.EntityFrameworkCore.MySql": "8.0.3", - "RedLock.net": "2.3.2", - "StackExchange.Redis": "2.9.32", - "Swashbuckle.AspNetCore": "6.6.2", - "System.IdentityModel.Tokens.Jwt": "8.14.0" - }, - "runtime": { - "IM_API.dll": { - "assemblyVersion": "1.0.0.0", - "fileVersion": "1.0.0.0" - } - } - } - } - }, - "libraries": { - "IMTest/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "AutoMapper/12.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hvV62vl6Hp/WfQ24yzo3Co9+OPl8wH8hApwVtgWpiAynVJkUcs7xvehnSftawL8Pe8FrPffBRM3hwzLQqWDNjA==", - "path": "automapper/12.0.1", - "hashPath": "automapper.12.0.1.nupkg.sha512" - }, - "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XCJ4E3oKrbRl1qY9Mr+7uyC0xZj1+bqQjmQRWTiTKiVuuXTny+7YFWHi20tPjwkMukLbicN6yGlDy5PZ4wyi1w==", - "path": "automapper.extensions.microsoft.dependencyinjection/12.0.0", - "hashPath": "automapper.extensions.microsoft.dependencyinjection.12.0.0.nupkg.sha512" - }, - "Castle.Core/5.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", - "path": "castle.core/5.1.1", - "hashPath": "castle.core.5.1.1.nupkg.sha512" - }, - "coverlet.collector/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-tW3lsNS+dAEII6YGUX/VMoJjBS1QvsxqJeqLaJXub08y1FSjasFPtQ4UBUsudE9PNrzLjooClMsPtY2cZLdXpQ==", - "path": "coverlet.collector/6.0.0", - "hashPath": "coverlet.collector.6.0.0.nupkg.sha512" - }, - "MassTransit/8.5.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bSg8k5q+rP1s+dIGXLLbctqDGdIkfDjdxwNWtCUH7xNCN9ZuM7mqSPQPIFgaYIi34e81m4FqAqo4CAHuWPkhRA==", - "path": "masstransit/8.5.5", - "hashPath": "masstransit.8.5.5.nupkg.sha512" - }, - "MassTransit.Abstractions/8.5.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0mn2Ay17dD6z5tgSLjbVRlldSbL9iowzFEfVgVfBXVG5ttz9dSWeR4TrdD6pqH93GWXp4CvSmF8i1HqxLX7DZw==", - "path": "masstransit.abstractions/8.5.5", - "hashPath": "masstransit.abstractions.8.5.5.nupkg.sha512" - }, - "MassTransit.RabbitMQ/8.5.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-UxWn4o90YVMF9PBkJeoskOFPneh6YtnI1fLJHtvZiSAG0eoiRrWPGa+6FQCvjkQ/ljCKfjzok2eGZc/vmNZ01A==", - "path": "masstransit.rabbitmq/8.5.5", - "hashPath": "masstransit.rabbitmq.8.5.5.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ve6uvLwKNRkfnO/QeN9M8eUJ49lCnWv/6/9p6iTEuiI6Rtsz+myaBAjdMzLuTViQY032xbTF5AdZF5BJzJJyXQ==", - "path": "microsoft.aspnetcore.authentication.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.authentication.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZuUpJ4DvmVArmTlyGGg+b9IdKgd8Kw0SmEzhjy4dQw8R6rxfNqCXfGvGm3ld7xlrgthJFou/le9tadsSyjFLuw==", - "path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.21", - "hashPath": "microsoft.aspnetcore.authentication.jwtbearer.8.0.21.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authorization/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-2/aBgLqBXva/+w8pzRNY8ET43Gi+dr1gv/7ySfbsh23lTK6IAgID5MGUEa1hreNIF+0XpW4tX7QwVe70+YvaPg==", - "path": "microsoft.aspnetcore.authorization/2.3.0", - "hashPath": "microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-vn31uQ1dA1MIV2WNNDOOOm88V5KgR9esfi0LyQ6eVaGq2h0Yw+R29f5A6qUNJt+RccS3qkYayylAy9tP1wV+7Q==", - "path": "microsoft.aspnetcore.authorization.policy/2.3.0", - "hashPath": "microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ULFSa+/L+WiAHVlIFHyg0OmHChU9Hx+K+xnt0hbIU5XmT1EGy0pNDx23QAzDtAy9jxQrTG6MX0MdvMeU4D4c7w==", - "path": "microsoft.aspnetcore.connections.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-4ivq53W2k6Nj4eez9wc81ytfGj6HR1NaZJCpOrvghJo9zHuQF57PLhPoQH5ItyCpHXnrN/y7yJDUm+TGYzrx0w==", - "path": "microsoft.aspnetcore.hosting.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.hosting.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-F5iHx7odAbFKBV1DNPDkFFcVmD5Tk7rk+tYm3LMQxHEFFdjlg5QcYb5XhHAefl5YaaPeG6ad+/ck8kSG3/D6kw==", - "path": "microsoft.aspnetcore.hosting.server.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.hosting.server.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-I9azEG2tZ4DDHAFgv+N38e6Yhttvf+QjE2j2UYyCACE7Swm5/0uoihCMWZ87oOZYeqiEFSxbsfpT71OYHe2tpw==", - "path": "microsoft.aspnetcore.http/2.3.0", - "hashPath": "microsoft.aspnetcore.http.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-39r9PPrjA6s0blyFv5qarckjNkaHRA5B+3b53ybuGGNTXEj1/DStQJ4NWjFL6QTRQpL9zt7nDyKxZdJOlcnq+Q==", - "path": "microsoft.aspnetcore.http.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.http.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VYMCOLvdT0y3O9lk4jUuIs8+re7u5+i+ka6ZZ6fIzSJ94c/JeMnAOOg39EB2i4crPXvLoiSdzKWlNPJgTbCZ2g==", - "path": "microsoft.aspnetcore.http.connections/1.2.0", - "hashPath": "microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-yUA7eg6kv7Wbz5TCW4PqS5/kYE5VxUIEDvoxjw4p1RwS2LGm84F9fBtM0mD6wrRfiv1NUyJ7WBjn3PWd/ccO+w==", - "path": "microsoft.aspnetcore.http.connections.common/1.2.0", - "hashPath": "microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Extensions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-EY2u/wFF5jsYwGXXswfQWrSsFPmiXsniAlUWo3rv/MGYf99ZFsENDnZcQP6W3c/+xQmQXq0NauzQ7jyy+o1LDQ==", - "path": "microsoft.aspnetcore.http.extensions/2.3.0", - "hashPath": "microsoft.aspnetcore.http.extensions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Features/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-f10WUgcsKqrkmnz6gt8HeZ7kyKjYN30PO7cSic1lPtH7paPtnQqXPOveul/SIPI43PhRD4trttg4ywnrEmmJpA==", - "path": "microsoft.aspnetcore.http.features/2.3.0", - "hashPath": "microsoft.aspnetcore.http.features.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Routing/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-no5/VC0CAQuT4PK4rp2K5fqwuSfzr2mdB6m1XNfWVhHnwzpRQzKAu9flChiT/JTLKwVI0Vq2MSmSW2OFMDCNXg==", - "path": "microsoft.aspnetcore.routing/2.3.0", - "hashPath": "microsoft.aspnetcore.routing.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZkFpUrSmp6TocxZLBEX3IBv5dPMbQuMs6L/BPl0WRfn32UVOtNYJQ0bLdh3cL9LMV0rmTW/5R0w8CBYxr0AOUw==", - "path": "microsoft.aspnetcore.routing.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XoCcsOTdtBiXyOzUtpbCl0IaqMOYjnr+6dbDxvUCFn7NR6bu7CwrlQ3oQzkltTwDZH0b6VEUN9wZPOYvPHi+Lg==", - "path": "microsoft.aspnetcore.signalr/1.2.0", - "hashPath": "microsoft.aspnetcore.signalr.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Common/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FZeXIaoWqe145ZPdfiptwkw/sP1BX1UD0706GNBwwoaFiKsNbLEl/Trhj2+idlp3qbX1BEwkQesKNxkopVY5Xg==", - "path": "microsoft.aspnetcore.signalr.common/1.2.0", - "hashPath": "microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Core/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-eZTuMkSDw1uwjhLhJbMxgW2Cuyxfn0Kfqm8OBmqvuzE9Qc/VVzh8dGrAp2F9Pk7XKTDHmlhc5RTLcPPAZ5PSZw==", - "path": "microsoft.aspnetcore.signalr.core/1.2.0", - "hashPath": "microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hNvZ7kQxp5Udqd/IFWViU35bUJvi4xnNzjkF28HRvrdrS7JNsIASTvMqArP6HLQUc3j6nlUOeShNhVmgI1wzHg==", - "path": "microsoft.aspnetcore.signalr.protocols.json/1.2.0", - "hashPath": "microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.WebSockets/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-+T4zpnVPkIjvvkyhTH3WBJlTfqmTBRozvnMudAUDvcb4e+NrWf52q8BXh52rkCrBgX6Cudf6F/UhZwTowyBtKg==", - "path": "microsoft.aspnetcore.websockets/2.3.0", - "hashPath": "microsoft.aspnetcore.websockets.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.WebUtilities/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-trbXdWzoAEUVd0PE2yTopkz4kjZaAIA7xUWekd5uBw+7xE8Do/YOVTeb9d9koPTlbtZT539aESJjSLSqD8eYrQ==", - "path": "microsoft.aspnetcore.webutilities/2.3.0", - "hashPath": "microsoft.aspnetcore.webutilities.2.3.0.nupkg.sha512" - }, - "Microsoft.Bcl.AsyncInterfaces/1.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1Am6l4Vpn3/K32daEqZI+FFr96OlZkgwK2LcT3pZ2zWubR5zTPW3/FkO1Rat9kb7oQOa4rxgl9LJHc5tspCWfg==", - "path": "microsoft.bcl.asyncinterfaces/1.1.0", - "hashPath": "microsoft.bcl.asyncinterfaces.1.1.0.nupkg.sha512" - }, - "Microsoft.CodeCoverage/17.8.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-KC8SXWbGIdoFVdlxKk9WHccm0llm9HypcHMLUUFabRiTS3SO2fQXNZfdiF3qkEdTJhbRrxhdRxjL4jbtwPq4Ew==", - "path": "microsoft.codecoverage/17.8.0", - "hashPath": "microsoft.codecoverage.17.8.0.nupkg.sha512" - }, - "Microsoft.CSharp/4.7.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", - "path": "microsoft.csharp/4.7.0", - "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" - }, - "Microsoft.EntityFrameworkCore/8.0.22": { - "type": "package", - "serviceable": true, - "sha512": "sha512-nKGrD/WOO1d7qtXvghFAHre5Fk3ubw41pDFM0hbFxVIkMFxl4B0ug2LylMHOq+dgAceUeo3bx0qMh6/Jl9NbrA==", - "path": "microsoft.entityframeworkcore/8.0.22", - "hashPath": "microsoft.entityframeworkcore.8.0.22.nupkg.sha512" - }, - "Microsoft.EntityFrameworkCore.Abstractions/8.0.22": { - "type": "package", - "serviceable": true, - "sha512": "sha512-p4Fw9mpJnZHmkdOGCbBqbvuyj1LnnFxNon8snMKIQ0MGSB+j9f6ffWDfvGRaOS/9ikqQG9RMOTzZk52q1G23ng==", - "path": "microsoft.entityframeworkcore.abstractions/8.0.22", - "hashPath": "microsoft.entityframeworkcore.abstractions.8.0.22.nupkg.sha512" - }, - "Microsoft.EntityFrameworkCore.Analyzers/8.0.22": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lrSWwr+X+Fn5XGOwOYFQJWx+u+eameqhMjQ1mohXUE2N7LauucZAtcH/j+yXwQntosKoXU1TOoggTL/zmYqbHQ==", - "path": "microsoft.entityframeworkcore.analyzers/8.0.22", - "hashPath": "microsoft.entityframeworkcore.analyzers.8.0.22.nupkg.sha512" - }, - "Microsoft.EntityFrameworkCore.InMemory/8.0.22": { - "type": "package", - "serviceable": true, - "sha512": "sha512-dPbM/KLIh/AdHRjh/OhrzhAiHRLT0JBC5KSvAZ71eg42+QwF9aEuBfTzqr+GJE6DK9CLhqh9jXAqRKFojPki5g==", - "path": "microsoft.entityframeworkcore.inmemory/8.0.22", - "hashPath": "microsoft.entityframeworkcore.inmemory.8.0.22.nupkg.sha512" - }, - "Microsoft.EntityFrameworkCore.Relational/8.0.13": { - "type": "package", - "serviceable": true, - "sha512": "sha512-uQR2iTar+6ZEjEHTwgH0/7ySSRme4R9sDiupfG3w/eBub3365fPw/MjhsuOMQkdq9YzLM7veH4Qt/K9OqL26Qg==", - "path": "microsoft.entityframeworkcore.relational/8.0.13", - "hashPath": "microsoft.entityframeworkcore.relational.8.0.13.nupkg.sha512" - }, - "Microsoft.Extensions.ApiDescription.Server/6.0.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", - "path": "microsoft.extensions.apidescription.server/6.0.5", - "hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512" - }, - "Microsoft.Extensions.Caching.Abstractions/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WIRPDa/qoKHmJhTAPCO/zLu9kRLQ2Fd6HD5tzgdXJ3xGEVXDHP6FvakKJjynwKrVDld8H4G4tcbW53wuC/wxMQ==", - "path": "microsoft.extensions.caching.abstractions/10.0.2", - "hashPath": "microsoft.extensions.caching.abstractions.10.0.2.nupkg.sha512" - }, - "Microsoft.Extensions.Caching.Memory/8.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==", - "path": "microsoft.extensions.caching.memory/8.0.1", - "hashPath": "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WEx0VM6KVv4Bf6lwe4WQTd4EixIfw38ZU3u/7zMe+uC5fOyiANu8Os/qyiqv2iEsIJb296tbd2E2BTaWIha3Vg==", - "path": "microsoft.extensions.caching.stackexchangeredis/10.0.2", - "hashPath": "microsoft.extensions.caching.stackexchangeredis.10.0.2.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", - "path": "microsoft.extensions.configuration.abstractions/8.0.0", - "hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection/8.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==", - "path": "microsoft.extensions.dependencyinjection/8.0.1", - "hashPath": "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zOIurr59+kUf9vNcsUkCvKWZv+fPosUZXURZesYkJCvl0EzTc9F7maAO4Cd2WEV7ZJJ0AZrFQvuH6Npph9wdBw==", - "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.2", - "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512" - }, - "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-elH2vmwNmsXuKmUeMQ4YW9ldXiF+gSGDgg1vORksob5POnpaI6caj1Hu8zaYbEuibhqCoWg0YRWDazBY3zjBfg==", - "path": "microsoft.extensions.diagnostics.abstractions/8.0.1", - "hashPath": "microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-P9SoBuVZhJPpALZmSq72aQEb9ryP67EdquaCZGXGrrcASTNHYdrUhnpgSwIipgM5oVC+dKpRXg5zxobmF9xr5g==", - "path": "microsoft.extensions.diagnostics.healthchecks/8.0.0", - "hashPath": "microsoft.extensions.diagnostics.healthchecks.8.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-AT2qqos3IgI09ok36Qag9T8bb6kHJ3uT9Q5ki6CySybFsK6/9JbvQAgAHf1pVEjST0/N4JaFaCbm40R5edffwg==", - "path": "microsoft.extensions.diagnostics.healthchecks.abstractions/8.0.0", - "hashPath": "microsoft.extensions.diagnostics.healthchecks.abstractions.8.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", - "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", - "hashPath": "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", - "path": "microsoft.extensions.hosting.abstractions/8.0.1", - "hashPath": "microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.Logging/8.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==", - "path": "microsoft.extensions.logging/8.0.1", - "hashPath": "microsoft.extensions.logging.8.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-RZkez/JjpnO+MZ6efKkSynN6ZztLpw3WbxNzjLCPBd97wWj1S9ZYPWi0nmT4kWBRa6atHsdM1ydGkUr8GudyDQ==", - "path": "microsoft.extensions.logging.abstractions/10.0.2", - "hashPath": "microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512" - }, - "Microsoft.Extensions.ObjectPool/8.0.11": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6ApKcHNJigXBfZa6XlDQ8feJpq7SG1ogZXg6M4FiNzgd6irs3LUAzo0Pfn4F2ZI9liGnH1XIBR/OtSbZmJAV5w==", - "path": "microsoft.extensions.objectpool/8.0.11", - "hashPath": "microsoft.extensions.objectpool.8.0.11.nupkg.sha512" - }, - "Microsoft.Extensions.Options/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1De2LJjmxdqopI5AYC5dIhoZQ79AR5ayywxNF1rXrXFtKQfbQOV9+n/IsZBa7qWlr0MqoGpW8+OY2v/57udZOA==", - "path": "microsoft.extensions.options/10.0.2", - "hashPath": "microsoft.extensions.options.10.0.2.nupkg.sha512" - }, - "Microsoft.Extensions.Primitives/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QmSiO+oLBEooGgB3i0GRXyeYRDHjllqt3k365jwfZlYWhvSHA3UL2NEVV5m8aZa041eIlblo6KMI5txvTMpTwA==", - "path": "microsoft.extensions.primitives/10.0.2", - "hashPath": "microsoft.extensions.primitives.10.0.2.nupkg.sha512" - }, - "Microsoft.IdentityModel.Abstractions/8.14.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==", - "path": "microsoft.identitymodel.abstractions/8.14.0", - "hashPath": "microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512" - }, - "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-4jOpiA4THdtpLyMdAb24dtj7+6GmvhOhxf5XHLYWmPKF8ApEnApal1UnJsKO4HxUWRXDA6C4WQVfYyqsRhpNpQ==", - "path": "microsoft.identitymodel.jsonwebtokens/8.14.0", - "hashPath": "microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512" - }, - "Microsoft.IdentityModel.Logging/8.14.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-eqqnemdW38CKZEHS6diA50BV94QICozDZEvSrsvN3SJXUFwVB9gy+/oz76gldP7nZliA16IglXjXTCTdmU/Ejg==", - "path": "microsoft.identitymodel.logging/8.14.0", - "hashPath": "microsoft.identitymodel.logging.8.14.0.nupkg.sha512" - }, - "Microsoft.IdentityModel.Protocols/7.1.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-SydLwMRFx6EHPWJ+N6+MVaoArN1Htt92b935O3RUWPY1yUF63zEjvd3lBu79eWdZUwedP8TN2I5V9T3nackvIQ==", - "path": "microsoft.identitymodel.protocols/7.1.2", - "hashPath": "microsoft.identitymodel.protocols.7.1.2.nupkg.sha512" - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6lHQoLXhnMQ42mGrfDkzbIOR3rzKM1W1tgTeMPLgLCqwwGw0d96xFi/UiX/fYsu7d6cD5MJiL3+4HuI8VU+sVQ==", - "path": "microsoft.identitymodel.protocols.openidconnect/7.1.2", - "hashPath": "microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512" - }, - "Microsoft.IdentityModel.Tokens/8.14.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lKIZiBiGd36k02TCdMHp1KlNWisyIvQxcYJvIkz7P4gSQ9zi8dgh6S5Grj8NNG7HWYIPfQymGyoZ6JB5d1Lo1g==", - "path": "microsoft.identitymodel.tokens/8.14.0", - "hashPath": "microsoft.identitymodel.tokens.8.14.0.nupkg.sha512" - }, - "Microsoft.Net.Http.Headers/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/M0wVg6tJUOHutWD3BMOUVZAioJVXe0tCpFiovzv0T9T12TBf4MnaHP0efO8TCr1a6O9RZgQeZ9Gdark8L9XdA==", - "path": "microsoft.net.http.headers/2.3.0", - "hashPath": "microsoft.net.http.headers.2.3.0.nupkg.sha512" - }, - "Microsoft.NET.Test.Sdk/17.8.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BmTYGbD/YuDHmApIENdoyN1jCk0Rj1fJB0+B/fVekyTdVidr91IlzhqzytiUgaEAzL1ZJcYCme0MeBMYvJVzvw==", - "path": "microsoft.net.test.sdk/17.8.0", - "hashPath": "microsoft.net.test.sdk.17.8.0.nupkg.sha512" - }, - "Microsoft.NETCore.Platforms/1.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", - "path": "microsoft.netcore.platforms/1.1.0", - "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" - }, - "Microsoft.NETCore.Targets/1.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", - "path": "microsoft.netcore.targets/1.1.0", - "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" - }, - "Microsoft.OpenApi/1.6.14": { - "type": "package", - "serviceable": true, - "sha512": "sha512-tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==", - "path": "microsoft.openapi/1.6.14", - "hashPath": "microsoft.openapi.1.6.14.nupkg.sha512" - }, - "Microsoft.TestPlatform.ObjectModel/17.8.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-AYy6vlpGMfz5kOFq99L93RGbqftW/8eQTqjT9iGXW6s9MRP3UdtY8idJ8rJcjeSja8A18IhIro5YnH3uv1nz4g==", - "path": "microsoft.testplatform.objectmodel/17.8.0", - "hashPath": "microsoft.testplatform.objectmodel.17.8.0.nupkg.sha512" - }, - "Microsoft.TestPlatform.TestHost/17.8.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-9ivcl/7SGRmOT0YYrHQGohWiT5YCpkmy/UEzldfVisLm6QxbLaK3FAJqZXI34rnRLmqqDCeMQxKINwmKwAPiDw==", - "path": "microsoft.testplatform.testhost/17.8.0", - "hashPath": "microsoft.testplatform.testhost.17.8.0.nupkg.sha512" - }, - "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-EfYANhAWqmWKoLwN6bxoiPZSOfJSO9lzX+UrU6GVhLhPub1Hd+5f0zL0/tggIA6mRz6Ebw2xCNcIsM4k+7NPng==", - "path": "microsoft.visualstudio.azure.containers.tools.targets/1.22.1", - "hashPath": "microsoft.visualstudio.azure.containers.tools.targets.1.22.1.nupkg.sha512" - }, - "Microsoft.Win32.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", - "path": "microsoft.win32.primitives/4.3.0", - "hashPath": "microsoft.win32.primitives.4.3.0.nupkg.sha512" - }, - "Moq/4.20.72": { - "type": "package", - "serviceable": true, - "sha512": "sha512-EA55cjyNn8eTNWrgrdZJH5QLFp2L43oxl1tlkoYUKIE9pRwL784OWiTXeCV5ApS+AMYEAlt7Fo03A2XfouvHmQ==", - "path": "moq/4.20.72", - "hashPath": "moq.4.20.72.nupkg.sha512" - }, - "MySqlConnector/2.3.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", - "path": "mysqlconnector/2.3.5", - "hashPath": "mysqlconnector.2.3.5.nupkg.sha512" - }, - "NETStandard.Library/1.6.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", - "path": "netstandard.library/1.6.1", - "hashPath": "netstandard.library.1.6.1.nupkg.sha512" - }, - "Newtonsoft.Json/13.0.4": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==", - "path": "newtonsoft.json/13.0.4", - "hashPath": "newtonsoft.json.13.0.4.nupkg.sha512" - }, - "NuGet.Frameworks/6.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QWINE2x3MbTODsWT1Gh71GaGb5icBz4chS8VYvTgsBnsi8esgN6wtHhydd7fvToWECYGq7T4cgBBDiKD/363fg==", - "path": "nuget.frameworks/6.5.0", - "hashPath": "nuget.frameworks.6.5.0.nupkg.sha512" - }, - "Pipelines.Sockets.Unofficial/2.2.8": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==", - "path": "pipelines.sockets.unofficial/2.2.8", - "hashPath": "pipelines.sockets.unofficial.2.2.8.nupkg.sha512" - }, - "Pomelo.EntityFrameworkCore.MySql/8.0.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-gOHP6v/nFp5V/FgHqv9mZocGqCLGofihEX9dTbLhiXX3H7SJHmGX70GIPUpiqLT+1jIfDxg1PZh9MTUKuk7Kig==", - "path": "pomelo.entityframeworkcore.mysql/8.0.3", - "hashPath": "pomelo.entityframeworkcore.mysql.8.0.3.nupkg.sha512" - }, - "RabbitMQ.Client/7.1.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-y3c6ulgULScWthHw5PLM1ShHRLhxg0vCtzX/hh61gRgNecL3ZC3WoBW2HYHoXOVRqTl99Br9E7CZEytGZEsCyQ==", - "path": "rabbitmq.client/7.1.2", - "hashPath": "rabbitmq.client.7.1.2.nupkg.sha512" - }, - "RedLock.net/2.3.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-jlrALAArm4dCE292U3EtRoMnVKJ9M6sunbZn/oG5OuzlGtTpusXBfvDrnGWbgGDlWV027f5E9H5CiVnPxiq8+g==", - "path": "redlock.net/2.3.2", - "hashPath": "redlock.net.2.3.2.nupkg.sha512" - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==", - "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==", - "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==", - "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.native.System/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", - "path": "runtime.native.system/4.3.0", - "hashPath": "runtime.native.system.4.3.0.nupkg.sha512" - }, - "runtime.native.System.IO.Compression/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", - "path": "runtime.native.system.io.compression/4.3.0", - "hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512" - }, - "runtime.native.System.Net.Http/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", - "path": "runtime.native.system.net.http/4.3.0", - "hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512" - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", - "path": "runtime.native.system.security.cryptography.apple/4.3.0", - "hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512" - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", - "path": "runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==", - "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==", - "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", - "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==", - "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==", - "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==", - "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==", - "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "StackExchange.Redis/2.9.32": { - "type": "package", - "serviceable": true, - "sha512": "sha512-j5Rjbf7gWz5izrn0UWQy9RlQY4cQDPkwJfVqATnVsOa/+zzJrps12LOgacMsDl/Vit2f01cDiDkG/Rst8v2iGw==", - "path": "stackexchange.redis/2.9.32", - "hashPath": "stackexchange.redis.2.9.32.nupkg.sha512" - }, - "Swashbuckle.AspNetCore/6.6.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-+NB4UYVYN6AhDSjW0IJAd1AGD8V33gemFNLPaxKTtPkHB+HaKAKf9MGAEUPivEWvqeQfcKIw8lJaHq6LHljRuw==", - "path": "swashbuckle.aspnetcore/6.6.2", - "hashPath": "swashbuckle.aspnetcore.6.6.2.nupkg.sha512" - }, - "Swashbuckle.AspNetCore.Swagger/6.6.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ovgPTSYX83UrQUWiS5vzDcJ8TEX1MAxBgDFMK45rC24MorHEPQlZAHlaXj/yth4Zf6xcktpUgTEBvffRQVwDKA==", - "path": "swashbuckle.aspnetcore.swagger/6.6.2", - "hashPath": "swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512" - }, - "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zv4ikn4AT1VYuOsDCpktLq4QDq08e7Utzbir86M5/ZkRaLXbCPF11E1/vTmOiDzRTl0zTZINQU2qLKwTcHgfrA==", - "path": "swashbuckle.aspnetcore.swaggergen/6.6.2", - "hashPath": "swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512" - }, - "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-mBBb+/8Hm2Q3Wygag+hu2jj69tZW5psuv0vMRXY07Wy+Rrj40vRP8ZTbKBhs91r45/HXT4aY4z0iSBYx1h6JvA==", - "path": "swashbuckle.aspnetcore.swaggerui/6.6.2", - "hashPath": "swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512" - }, - "System.AppContext/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", - "path": "system.appcontext/4.3.0", - "hashPath": "system.appcontext.4.3.0.nupkg.sha512" - }, - "System.Buffers/4.6.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lN6tZi7Q46zFzAbRYXTIvfXcyvQQgxnY7Xm6C6xQ9784dEL1amjM6S6Iw4ZpsvesAKnRVsM4scrDQaDqSClkjA==", - "path": "system.buffers/4.6.0", - "hashPath": "system.buffers.4.6.0.nupkg.sha512" - }, - "System.Collections/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", - "path": "system.collections/4.3.0", - "hashPath": "system.collections.4.3.0.nupkg.sha512" - }, - "System.Collections.Concurrent/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", - "path": "system.collections.concurrent/4.3.0", - "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512" - }, - "System.Console/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", - "path": "system.console/4.3.0", - "hashPath": "system.console.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.Debug/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", - "path": "system.diagnostics.debug/4.3.0", - "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.DiagnosticSource/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lYWBy8fKkJHaRcOuw30d67PrtVjR5754sz5Wl76s8P+vJ9FSThh9b7LIcTSODx1LY7NB3Srvg+JMnzd67qNZOw==", - "path": "system.diagnostics.diagnosticsource/10.0.2", - "hashPath": "system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512" - }, - "System.Diagnostics.EventLog/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==", - "path": "system.diagnostics.eventlog/6.0.0", - "hashPath": "system.diagnostics.eventlog.6.0.0.nupkg.sha512" - }, - "System.Diagnostics.Tools/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", - "path": "system.diagnostics.tools/4.3.0", - "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.Tracing/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", - "path": "system.diagnostics.tracing/4.3.0", - "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512" - }, - "System.Globalization/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", - "path": "system.globalization/4.3.0", - "hashPath": "system.globalization.4.3.0.nupkg.sha512" - }, - "System.Globalization.Calendars/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", - "path": "system.globalization.calendars/4.3.0", - "hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512" - }, - "System.Globalization.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", - "path": "system.globalization.extensions/4.3.0", - "hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512" - }, - "System.IdentityModel.Tokens.Jwt/8.14.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-EYGgN/S+HK7S6F3GaaPLFAfK0UzMrkXFyWCvXpQWFYmZln3dqtbyIO7VuTM/iIIPMzkelg8ZLlBPvMhxj6nOAA==", - "path": "system.identitymodel.tokens.jwt/8.14.0", - "hashPath": "system.identitymodel.tokens.jwt.8.14.0.nupkg.sha512" - }, - "System.IO/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "path": "system.io/4.3.0", - "hashPath": "system.io.4.3.0.nupkg.sha512" - }, - "System.IO.Compression/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", - "path": "system.io.compression/4.3.0", - "hashPath": "system.io.compression.4.3.0.nupkg.sha512" - }, - "System.IO.Compression.ZipFile/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", - "path": "system.io.compression.zipfile/4.3.0", - "hashPath": "system.io.compression.zipfile.4.3.0.nupkg.sha512" - }, - "System.IO.FileSystem/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", - "path": "system.io.filesystem/4.3.0", - "hashPath": "system.io.filesystem.4.3.0.nupkg.sha512" - }, - "System.IO.FileSystem.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", - "path": "system.io.filesystem.primitives/4.3.0", - "hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512" - }, - "System.IO.Pipelines/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", - "path": "system.io.pipelines/8.0.0", - "hashPath": "system.io.pipelines.8.0.0.nupkg.sha512" - }, - "System.Linq/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", - "path": "system.linq/4.3.0", - "hashPath": "system.linq.4.3.0.nupkg.sha512" - }, - "System.Linq.Expressions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", - "path": "system.linq.expressions/4.3.0", - "hashPath": "system.linq.expressions.4.3.0.nupkg.sha512" - }, - "System.Net.Http/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", - "path": "system.net.http/4.3.0", - "hashPath": "system.net.http.4.3.0.nupkg.sha512" - }, - "System.Net.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", - "path": "system.net.primitives/4.3.0", - "hashPath": "system.net.primitives.4.3.0.nupkg.sha512" - }, - "System.Net.Sockets/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", - "path": "system.net.sockets/4.3.0", - "hashPath": "system.net.sockets.4.3.0.nupkg.sha512" - }, - "System.Net.WebSockets.WebSocketProtocol/5.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-cVTT/Zw4JuUeX8H0tdWii0OMHsA5MY2PaFYOq/Hstw0jk479jZ+f8baCicWFNzJlCPWAe0uoNCELoB5eNmaMqA==", - "path": "system.net.websockets.websocketprotocol/5.1.0", - "hashPath": "system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512" - }, - "System.ObjectModel/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", - "path": "system.objectmodel/4.3.0", - "hashPath": "system.objectmodel.4.3.0.nupkg.sha512" - }, - "System.Reflection/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", - "path": "system.reflection/4.3.0", - "hashPath": "system.reflection.4.3.0.nupkg.sha512" - }, - "System.Reflection.Emit/4.7.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", - "path": "system.reflection.emit/4.7.0", - "hashPath": "system.reflection.emit.4.7.0.nupkg.sha512" - }, - "System.Reflection.Emit.ILGeneration/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", - "path": "system.reflection.emit.ilgeneration/4.3.0", - "hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512" - }, - "System.Reflection.Emit.Lightweight/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", - "path": "system.reflection.emit.lightweight/4.3.0", - "hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512" - }, - "System.Reflection.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", - "path": "system.reflection.extensions/4.3.0", - "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512" - }, - "System.Reflection.Metadata/1.6.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==", - "path": "system.reflection.metadata/1.6.0", - "hashPath": "system.reflection.metadata.1.6.0.nupkg.sha512" - }, - "System.Reflection.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", - "path": "system.reflection.primitives/4.3.0", - "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" - }, - "System.Reflection.TypeExtensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", - "path": "system.reflection.typeextensions/4.3.0", - "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512" - }, - "System.Resources.ResourceManager/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", - "path": "system.resources.resourcemanager/4.3.0", - "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" - }, - "System.Runtime/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "path": "system.runtime/4.3.0", - "hashPath": "system.runtime.4.3.0.nupkg.sha512" - }, - "System.Runtime.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", - "path": "system.runtime.extensions/4.3.0", - "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" - }, - "System.Runtime.Handles/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", - "path": "system.runtime.handles/4.3.0", - "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512" - }, - "System.Runtime.InteropServices/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", - "path": "system.runtime.interopservices/4.3.0", - "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512" - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", - "path": "system.runtime.interopservices.runtimeinformation/4.3.0", - "hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512" - }, - "System.Runtime.Numerics/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", - "path": "system.runtime.numerics/4.3.0", - "hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", - "path": "system.security.cryptography.algorithms/4.3.0", - "hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Cng/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", - "path": "system.security.cryptography.cng/4.3.0", - "hashPath": "system.security.cryptography.cng.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Csp/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", - "path": "system.security.cryptography.csp/4.3.0", - "hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", - "path": "system.security.cryptography.encoding/4.3.0", - "hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", - "path": "system.security.cryptography.openssl/4.3.0", - "hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", - "path": "system.security.cryptography.primitives/4.3.0", - "hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", - "path": "system.security.cryptography.x509certificates/4.3.0", - "hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512" - }, - "System.Text.Encoding/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "path": "system.text.encoding/4.3.0", - "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" - }, - "System.Text.Encoding.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", - "path": "system.text.encoding.extensions/4.3.0", - "hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512" - }, - "System.Text.Encodings.Web/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", - "path": "system.text.encodings.web/8.0.0", - "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" - }, - "System.Text.RegularExpressions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", - "path": "system.text.regularexpressions/4.3.0", - "hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512" - }, - "System.Threading/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", - "path": "system.threading/4.3.0", - "hashPath": "system.threading.4.3.0.nupkg.sha512" - }, - "System.Threading.Channels/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==", - "path": "system.threading.channels/8.0.0", - "hashPath": "system.threading.channels.8.0.0.nupkg.sha512" - }, - "System.Threading.RateLimiting/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==", - "path": "system.threading.ratelimiting/8.0.0", - "hashPath": "system.threading.ratelimiting.8.0.0.nupkg.sha512" - }, - "System.Threading.Tasks/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "path": "system.threading.tasks/4.3.0", - "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" - }, - "System.Threading.Tasks.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", - "path": "system.threading.tasks.extensions/4.3.0", - "hashPath": "system.threading.tasks.extensions.4.3.0.nupkg.sha512" - }, - "System.Threading.Timer/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", - "path": "system.threading.timer/4.3.0", - "hashPath": "system.threading.timer.4.3.0.nupkg.sha512" - }, - "System.Xml.ReaderWriter/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", - "path": "system.xml.readerwriter/4.3.0", - "hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512" - }, - "System.Xml.XDocument/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", - "path": "system.xml.xdocument/4.3.0", - "hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512" - }, - "xunit/2.5.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VxYDiWSwrLxOJ3UEN+ZPrBybB0SFShQ1E6PjT65VdoKCJhorgerFznThjSwawRH/WAip73YnucDVsE8WRj/8KQ==", - "path": "xunit/2.5.3", - "hashPath": "xunit.2.5.3.nupkg.sha512" - }, - "xunit.abstractions/2.0.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", - "path": "xunit.abstractions/2.0.3", - "hashPath": "xunit.abstractions.2.0.3.nupkg.sha512" - }, - "xunit.analyzers/1.4.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7ljnTJfFjz5zK+Jf0h2dd2QOSO6UmFizXsojv/x4QX7TU5vEgtKZPk9RvpkiuUqg2bddtNZufBoKQalsi7djfA==", - "path": "xunit.analyzers/1.4.0", - "hashPath": "xunit.analyzers.1.4.0.nupkg.sha512" - }, - "xunit.assert/2.5.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MK3HiBckO3vdxEdUxXZyyRPsBNPsC/nz6y1gj/UZIZkjMnsVQyZPU8yxS/3cjTchYcqskt/nqUOS5wmD8JezdQ==", - "path": "xunit.assert/2.5.3", - "hashPath": "xunit.assert.2.5.3.nupkg.sha512" - }, - "xunit.core/2.5.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FE8yEEUkoMLd6kOHDXm/QYfX/dYzwc0c+Q4MQon6VGRwFuy6UVGwK/CFA5LEea+ZBEmcco7AEl2q78VjsA0j/w==", - "path": "xunit.core/2.5.3", - "hashPath": "xunit.core.2.5.3.nupkg.sha512" - }, - "xunit.extensibility.core/2.5.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-IjAQlPeZWXP89pl1EuOG9991GH1qgAL0rQfkmX2UV+PDenbYb7oBnQopL9ujE6YaXxgaQazp7lFjsDyyxD6Mtw==", - "path": "xunit.extensibility.core/2.5.3", - "hashPath": "xunit.extensibility.core.2.5.3.nupkg.sha512" - }, - "xunit.extensibility.execution/2.5.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-w9eGCHl+gJj1GzZSf0VTzYPp/gv4fiUDkr+yR7/Wv9/ucO2CHltGg2TnyySLFjzekkjuxVJZUE+tZyDNzryJFw==", - "path": "xunit.extensibility.execution/2.5.3", - "hashPath": "xunit.extensibility.execution.2.5.3.nupkg.sha512" - }, - "xunit.runner.visualstudio/2.5.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HFFL6O+QLEOfs555SqHii48ovVa4CqGYanY+B32BjLpPptdE+wEJmCFNXlLHdEOD5LYeayb9EroaUpydGpcybg==", - "path": "xunit.runner.visualstudio/2.5.3", - "hashPath": "xunit.runner.visualstudio.2.5.3.nupkg.sha512" - }, - "IM_API/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "IMTest/1.0.0": { + "dependencies": { + "IM_API": "1.0.0", + "Microsoft.EntityFrameworkCore.InMemory": "8.0.22", + "Microsoft.NET.Test.Sdk": "17.8.0", + "Moq": "4.20.72", + "coverlet.collector": "6.0.0", + "xunit": "2.5.3", + "xunit.runner.visualstudio": "2.5.3" + }, + "runtime": { + "IMTest.dll": {} + } + }, + "AutoMapper/12.0.1": { + "dependencies": { + "Microsoft.CSharp": "4.7.0" + }, + "runtime": { + "lib/netstandard2.1/AutoMapper.dll": { + "assemblyVersion": "12.0.0.0", + "fileVersion": "12.0.1.0" + } + } + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { + "dependencies": { + "AutoMapper": "12.0.1", + "Microsoft.Extensions.Options": "10.0.2" + }, + "runtime": { + "lib/netstandard2.1/AutoMapper.Extensions.Microsoft.DependencyInjection.dll": { + "assemblyVersion": "12.0.0.0", + "fileVersion": "12.0.0.0" + } + } + }, + "Castle.Core/5.1.1": { + "dependencies": { + "System.Diagnostics.EventLog": "6.0.0" + }, + "runtime": { + "lib/net6.0/Castle.Core.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.1.1.0" + } + } + }, + "coverlet.collector/6.0.0": {}, + "MassTransit/8.5.5": { + "dependencies": { + "MassTransit.Abstractions": "8.5.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + }, + "runtime": { + "lib/net8.0/MassTransit.dll": { + "assemblyVersion": "8.5.5.0", + "fileVersion": "8.5.5.0" + } + } + }, + "MassTransit.Abstractions/8.5.5": { + "runtime": { + "lib/net8.0/MassTransit.Abstractions.dll": { + "assemblyVersion": "8.5.5.0", + "fileVersion": "8.5.5.0" + } + } + }, + "MassTransit.RabbitMQ/8.5.5": { + "dependencies": { + "MassTransit": "8.5.5", + "RabbitMQ.Client": "7.1.2" + }, + "runtime": { + "lib/net8.0/MassTransit.RabbitMqTransport.dll": { + "assemblyVersion": "8.5.5.0", + "fileVersion": "8.5.5.0" + } + } + }, + "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + } + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.1.2" + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { + "assemblyVersion": "8.0.21.0", + "fileVersion": "8.0.2125.47515" + } + } + }, + "Microsoft.AspNetCore.Authorization/2.3.0": { + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + } + }, + "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Authentication.Abstractions": "2.3.0", + "Microsoft.AspNetCore.Authorization": "2.3.0" + } + }, + "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "2.3.0", + "System.IO.Pipelines": "8.0.0" + } + }, + "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.3.0", + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" + } + }, + "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "2.3.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + } + }, + "Microsoft.AspNetCore.Http/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.AspNetCore.WebUtilities": "2.3.0", + "Microsoft.Extensions.ObjectPool": "8.0.11", + "Microsoft.Extensions.Options": "10.0.2", + "Microsoft.Net.Http.Headers": "2.3.0" + } + }, + "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "2.3.0", + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Microsoft.AspNetCore.Http.Connections/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Authorization.Policy": "2.3.0", + "Microsoft.AspNetCore.Hosting.Abstractions": "2.3.0", + "Microsoft.AspNetCore.Http": "2.3.0", + "Microsoft.AspNetCore.Http.Connections.Common": "1.2.0", + "Microsoft.AspNetCore.Routing": "2.3.0", + "Microsoft.AspNetCore.WebSockets": "2.3.0", + "Newtonsoft.Json": "13.0.4", + "System.Net.WebSockets.WebSocketProtocol": "5.1.0" + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", + "Newtonsoft.Json": "13.0.4", + "System.Buffers": "4.6.0", + "System.IO.Pipelines": "8.0.0" + } + }, + "Microsoft.AspNetCore.Http.Extensions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Net.Http.Headers": "2.3.0", + "System.Buffers": "4.6.0" + } + }, + "Microsoft.AspNetCore.Http.Features/2.3.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.2" + } + }, + "Microsoft.AspNetCore.Routing/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Extensions": "2.3.0", + "Microsoft.AspNetCore.Routing.Abstractions": "2.3.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.ObjectPool": "8.0.11", + "Microsoft.Extensions.Options": "10.0.2" + } + }, + "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0" + } + }, + "Microsoft.AspNetCore.SignalR/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections": "1.2.0", + "Microsoft.AspNetCore.SignalR.Core": "1.2.0", + "Microsoft.AspNetCore.WebSockets": "2.3.0", + "System.IO.Pipelines": "8.0.0" + } + }, + "Microsoft.AspNetCore.SignalR.Common/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", + "Microsoft.Extensions.Options": "10.0.2", + "Newtonsoft.Json": "13.0.4", + "System.Buffers": "4.6.0" + } + }, + "Microsoft.AspNetCore.SignalR.Core/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Authorization": "2.3.0", + "Microsoft.AspNetCore.SignalR.Common": "1.2.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "1.2.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "System.IO.Pipelines": "8.0.0", + "System.Reflection.Emit": "4.7.0", + "System.Threading.Channels": "8.0.0" + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "1.2.0", + "Newtonsoft.Json": "13.0.4", + "System.IO.Pipelines": "8.0.0" + } + }, + "Microsoft.AspNetCore.WebSockets/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Extensions": "2.3.0", + "Microsoft.Extensions.Options": "10.0.2", + "System.Net.WebSockets.WebSocketProtocol": "5.1.0" + } + }, + "Microsoft.AspNetCore.WebUtilities/2.3.0": { + "dependencies": { + "Microsoft.Net.Http.Headers": "2.3.0", + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.0": { + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "4.700.19.56404" + } + } + }, + "Microsoft.CodeCoverage/17.8.0": { + "runtime": { + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.623.45702" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "Microsoft.EntityFrameworkCore/8.0.22": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "8.0.22", + "Microsoft.EntityFrameworkCore.Analyzers": "8.0.22", + "Microsoft.Extensions.Caching.Memory": "8.0.1", + "Microsoft.Extensions.Logging": "8.0.1" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "assemblyVersion": "8.0.22.0", + "fileVersion": "8.0.2225.52804" + } + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.22": { + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "assemblyVersion": "8.0.22.0", + "fileVersion": "8.0.2225.52804" + } + } + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.22": {}, + "Microsoft.EntityFrameworkCore.InMemory/8.0.22": { + "dependencies": { + "Microsoft.EntityFrameworkCore": "8.0.22" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.InMemory.dll": { + "assemblyVersion": "8.0.22.0", + "fileVersion": "8.0.2225.52804" + } + } + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.13": { + "dependencies": { + "Microsoft.EntityFrameworkCore": "8.0.22", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "assemblyVersion": "8.0.13.0", + "fileVersion": "8.0.1325.6604" + } + } + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": {}, + "Microsoft.Extensions.Caching.Abstractions/10.0.2": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.2", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2", + "Microsoft.Extensions.Primitives": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1024.46610" + } + } + }, + "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2", + "StackExchange.Redis": "2.9.32" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll": { + "assemblyVersion": "10.0.2.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.2" + } + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1024.46610" + } + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1024.46610" + } + } + }, + "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + } + }, + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": {}, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.2" + } + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1024.46610" + } + } + }, + "Microsoft.Extensions.Logging/8.0.1": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1024.46610" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.2": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "System.Diagnostics.DiagnosticSource": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.Extensions.ObjectPool/8.0.11": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.ObjectPool.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1124.52116" + } + } + }, + "Microsoft.Extensions.Options/10.0.2": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Primitives": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.Extensions.Primitives/10.0.2": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.IdentityModel.Abstractions/8.14.0": { + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "assemblyVersion": "8.14.0.0", + "fileVersion": "8.14.0.60815" + } + } + }, + "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.14.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "assemblyVersion": "8.14.0.0", + "fileVersion": "8.14.0.60815" + } + } + }, + "Microsoft.IdentityModel.Logging/8.14.0": { + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "assemblyVersion": "8.14.0.0", + "fileVersion": "8.14.0.60815" + } + } + }, + "Microsoft.IdentityModel.Protocols/7.1.2": { + "dependencies": { + "Microsoft.IdentityModel.Logging": "8.14.0", + "Microsoft.IdentityModel.Tokens": "8.14.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { + "assemblyVersion": "7.1.2.0", + "fileVersion": "7.1.2.41121" + } + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { + "dependencies": { + "Microsoft.IdentityModel.Protocols": "7.1.2", + "System.IdentityModel.Tokens.Jwt": "8.14.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { + "assemblyVersion": "7.1.2.0", + "fileVersion": "7.1.2.41121" + } + } + }, + "Microsoft.IdentityModel.Tokens/8.14.0": { + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.IdentityModel.Logging": "8.14.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "assemblyVersion": "8.14.0.0", + "fileVersion": "8.14.0.60815" + } + } + }, + "Microsoft.Net.Http.Headers/2.3.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.2", + "System.Buffers": "4.6.0" + } + }, + "Microsoft.NET.Test.Sdk/17.8.0": { + "dependencies": { + "Microsoft.CodeCoverage": "17.8.0", + "Microsoft.TestPlatform.TestHost": "17.8.0" + } + }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "Microsoft.NETCore.Targets/1.1.0": {}, + "Microsoft.OpenApi/1.6.14": { + "runtime": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "assemblyVersion": "1.6.14.0", + "fileVersion": "1.6.14.0" + } + } + }, + "Microsoft.TestPlatform.ObjectModel/17.8.0": { + "dependencies": { + "NuGet.Frameworks": "6.5.0", + "System.Reflection.Metadata": "1.6.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.TestPlatform.TestHost/17.8.0": { + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.8.0", + "Newtonsoft.Json": "13.0.4" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + }, + "lib/netcoreapp3.1/testhost.dll": { + "assemblyVersion": "15.0.0.0", + "fileVersion": "17.800.23.55801" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": {}, + "Microsoft.Win32.Primitives/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "Moq/4.20.72": { + "dependencies": { + "Castle.Core": "5.1.1" + }, + "runtime": { + "lib/net6.0/Moq.dll": { + "assemblyVersion": "4.20.72.0", + "fileVersion": "4.20.72.0" + } + } + }, + "MySqlConnector/2.3.5": { + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.2" + }, + "runtime": { + "lib/net8.0/MySqlConnector.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.3.5.0" + } + } + }, + "NETStandard.Library/1.6.1": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.Win32.Primitives": "4.3.0", + "System.AppContext": "4.3.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Console": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.Compression.ZipFile": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Net.Http": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Net.Sockets": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Timer": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0" + } + }, + "Newtonsoft.Json/13.0.4": { + "runtime": { + "lib/net6.0/Newtonsoft.Json.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.4.30916" + } + } + }, + "NuGet.Frameworks/6.5.0": { + "runtime": { + "lib/netstandard2.0/NuGet.Frameworks.dll": { + "assemblyVersion": "6.5.0.154", + "fileVersion": "6.5.0.154" + } + } + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "dependencies": { + "System.IO.Pipelines": "8.0.0" + }, + "runtime": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "2.2.8.1080" + } + } + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.3": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "8.0.13", + "MySqlConnector": "2.3.5" + }, + "runtime": { + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { + "assemblyVersion": "8.0.3.0", + "fileVersion": "8.0.3.0" + } + } + }, + "RabbitMQ.Client/7.1.2": { + "dependencies": { + "System.IO.Pipelines": "8.0.0", + "System.Threading.RateLimiting": "8.0.0" + }, + "runtime": { + "lib/net8.0/RabbitMQ.Client.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "7.1.2.0" + } + } + }, + "RedLock.net/2.3.2": { + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "StackExchange.Redis": "2.9.32" + }, + "runtime": { + "lib/netstandard2.0/RedLockNet.Abstractions.dll": { + "assemblyVersion": "2.3.2.0", + "fileVersion": "2.3.2.0" + }, + "lib/netstandard2.0/RedLockNet.SERedis.dll": { + "assemblyVersion": "2.3.2.0", + "fileVersion": "2.3.2.0" + } + } + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.native.System/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "runtime.native.System.IO.Compression/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "runtime.native.System.Net.Http/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "dependencies": { + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" + } + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "dependencies": { + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {}, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "StackExchange.Redis/2.9.32": { + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Pipelines.Sockets.Unofficial": "2.2.8" + }, + "runtime": { + "lib/net8.0/StackExchange.Redis.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.9.32.54708" + } + } + }, + "Swashbuckle.AspNetCore/6.6.2": { + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "6.0.5", + "Swashbuckle.AspNetCore.Swagger": "6.6.2", + "Swashbuckle.AspNetCore.SwaggerGen": "6.6.2", + "Swashbuckle.AspNetCore.SwaggerUI": "6.6.2" + } + }, + "Swashbuckle.AspNetCore.Swagger/6.6.2": { + "dependencies": { + "Microsoft.OpenApi": "1.6.14" + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "assemblyVersion": "6.6.2.0", + "fileVersion": "6.6.2.401" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "6.6.2" + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "assemblyVersion": "6.6.2.0", + "fileVersion": "6.6.2.401" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "assemblyVersion": "6.6.2.0", + "fileVersion": "6.6.2.401" + } + } + }, + "System.AppContext/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0" + } + }, + "System.Buffers/4.6.0": {}, + "System.Collections/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Collections.Concurrent/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Console/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + } + }, + "System.Diagnostics.Debug/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.DiagnosticSource/10.0.2": { + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "System.Diagnostics.EventLog/6.0.0": {}, + "System.Diagnostics.Tools/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Globalization/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Globalization.Calendars/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Globalization.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0" + } + }, + "System.IdentityModel.Tokens.Jwt/8.14.0": { + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "8.14.0", + "Microsoft.IdentityModel.Tokens": "8.14.0" + }, + "runtime": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "assemblyVersion": "8.14.0.0", + "fileVersion": "8.14.0.60815" + } + } + }, + "System.IO/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.IO.Compression/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Buffers": "4.6.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.IO.Compression": "4.3.0" + } + }, + "System.IO.Compression.ZipFile/4.3.0": { + "dependencies": { + "System.Buffers": "4.6.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0" + } + }, + "System.IO.FileSystem/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0" + } + }, + "System.IO.Pipelines/8.0.0": {}, + "System.Linq/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + } + }, + "System.Linq.Expressions/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.7.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Emit.Lightweight": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Net.Http/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.DiagnosticSource": "10.0.2", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Extensions": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Net.Primitives/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + } + }, + "System.Net.Sockets/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Net.WebSockets.WebSocketProtocol/5.1.0": { + "runtime": { + "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": { + "assemblyVersion": "5.1.0.0", + "fileVersion": "5.100.24.56208" + } + } + }, + "System.ObjectModel/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Reflection/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Emit/4.7.0": {}, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Metadata/1.6.0": {}, + "System.Reflection.Primitives/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.TypeExtensions/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Resources.ResourceManager/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Runtime.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.Handles/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.InteropServices/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0" + } + }, + "System.Runtime.Numerics/4.3.0": { + "dependencies": { + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + } + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.Apple": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Security.Cryptography.Cng/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0" + } + }, + "System.Security.Cryptography.Csp/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Linq": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Cng": "4.3.0", + "System.Security.Cryptography.Csp": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Text.Encoding/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encoding.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.RegularExpressions/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0" + } + }, + "System.Threading/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Threading.Channels/8.0.0": {}, + "System.Threading.RateLimiting/8.0.0": {}, + "System.Threading.Tasks/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Threading.Tasks.Extensions/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Threading.Timer/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Xml.ReaderWriter/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Tasks.Extensions": "4.3.0" + } + }, + "System.Xml.XDocument/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + } + }, + "xunit/2.5.3": { + "dependencies": { + "xunit.analyzers": "1.4.0", + "xunit.assert": "2.5.3", + "xunit.core": "2.5.3" + } + }, + "xunit.abstractions/2.0.3": { + "runtime": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "xunit.analyzers/1.4.0": {}, + "xunit.assert/2.5.3": { + "dependencies": { + "NETStandard.Library": "1.6.1" + }, + "runtime": { + "lib/netstandard1.1/xunit.assert.dll": { + "assemblyVersion": "2.5.3.0", + "fileVersion": "2.5.3.0" + } + } + }, + "xunit.core/2.5.3": { + "dependencies": { + "xunit.extensibility.core": "2.5.3", + "xunit.extensibility.execution": "2.5.3" + } + }, + "xunit.extensibility.core/2.5.3": { + "dependencies": { + "NETStandard.Library": "1.6.1", + "xunit.abstractions": "2.0.3" + }, + "runtime": { + "lib/netstandard1.1/xunit.core.dll": { + "assemblyVersion": "2.5.3.0", + "fileVersion": "2.5.3.0" + } + } + }, + "xunit.extensibility.execution/2.5.3": { + "dependencies": { + "NETStandard.Library": "1.6.1", + "xunit.extensibility.core": "2.5.3" + }, + "runtime": { + "lib/netstandard1.1/xunit.execution.dotnet.dll": { + "assemblyVersion": "2.5.3.0", + "fileVersion": "2.5.3.0" + } + } + }, + "xunit.runner.visualstudio/2.5.3": {}, + "IM_API/1.0.0": { + "dependencies": { + "AutoMapper": "12.0.1", + "AutoMapper.Extensions.Microsoft.DependencyInjection": "12.0.0", + "MassTransit.RabbitMQ": "8.5.5", + "Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.21", + "Microsoft.AspNetCore.SignalR": "1.2.0", + "Microsoft.Extensions.Caching.StackExchangeRedis": "10.0.2", + "Microsoft.VisualStudio.Azure.Containers.Tools.Targets": "1.22.1", + "Newtonsoft.Json": "13.0.4", + "Pomelo.EntityFrameworkCore.MySql": "8.0.3", + "RedLock.net": "2.3.2", + "StackExchange.Redis": "2.9.32", + "Swashbuckle.AspNetCore": "6.6.2", + "System.IdentityModel.Tokens.Jwt": "8.14.0" + }, + "runtime": { + "IM_API.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.0.0.0" + } + } + } + } + }, + "libraries": { + "IMTest/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "AutoMapper/12.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hvV62vl6Hp/WfQ24yzo3Co9+OPl8wH8hApwVtgWpiAynVJkUcs7xvehnSftawL8Pe8FrPffBRM3hwzLQqWDNjA==", + "path": "automapper/12.0.1", + "hashPath": "automapper.12.0.1.nupkg.sha512" + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XCJ4E3oKrbRl1qY9Mr+7uyC0xZj1+bqQjmQRWTiTKiVuuXTny+7YFWHi20tPjwkMukLbicN6yGlDy5PZ4wyi1w==", + "path": "automapper.extensions.microsoft.dependencyinjection/12.0.0", + "hashPath": "automapper.extensions.microsoft.dependencyinjection.12.0.0.nupkg.sha512" + }, + "Castle.Core/5.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", + "path": "castle.core/5.1.1", + "hashPath": "castle.core.5.1.1.nupkg.sha512" + }, + "coverlet.collector/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tW3lsNS+dAEII6YGUX/VMoJjBS1QvsxqJeqLaJXub08y1FSjasFPtQ4UBUsudE9PNrzLjooClMsPtY2cZLdXpQ==", + "path": "coverlet.collector/6.0.0", + "hashPath": "coverlet.collector.6.0.0.nupkg.sha512" + }, + "MassTransit/8.5.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bSg8k5q+rP1s+dIGXLLbctqDGdIkfDjdxwNWtCUH7xNCN9ZuM7mqSPQPIFgaYIi34e81m4FqAqo4CAHuWPkhRA==", + "path": "masstransit/8.5.5", + "hashPath": "masstransit.8.5.5.nupkg.sha512" + }, + "MassTransit.Abstractions/8.5.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0mn2Ay17dD6z5tgSLjbVRlldSbL9iowzFEfVgVfBXVG5ttz9dSWeR4TrdD6pqH93GWXp4CvSmF8i1HqxLX7DZw==", + "path": "masstransit.abstractions/8.5.5", + "hashPath": "masstransit.abstractions.8.5.5.nupkg.sha512" + }, + "MassTransit.RabbitMQ/8.5.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UxWn4o90YVMF9PBkJeoskOFPneh6YtnI1fLJHtvZiSAG0eoiRrWPGa+6FQCvjkQ/ljCKfjzok2eGZc/vmNZ01A==", + "path": "masstransit.rabbitmq/8.5.5", + "hashPath": "masstransit.rabbitmq.8.5.5.nupkg.sha512" + }, + "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ve6uvLwKNRkfnO/QeN9M8eUJ49lCnWv/6/9p6iTEuiI6Rtsz+myaBAjdMzLuTViQY032xbTF5AdZF5BJzJJyXQ==", + "path": "microsoft.aspnetcore.authentication.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.authentication.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZuUpJ4DvmVArmTlyGGg+b9IdKgd8Kw0SmEzhjy4dQw8R6rxfNqCXfGvGm3ld7xlrgthJFou/le9tadsSyjFLuw==", + "path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.21", + "hashPath": "microsoft.aspnetcore.authentication.jwtbearer.8.0.21.nupkg.sha512" + }, + "Microsoft.AspNetCore.Authorization/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2/aBgLqBXva/+w8pzRNY8ET43Gi+dr1gv/7ySfbsh23lTK6IAgID5MGUEa1hreNIF+0XpW4tX7QwVe70+YvaPg==", + "path": "microsoft.aspnetcore.authorization/2.3.0", + "hashPath": "microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vn31uQ1dA1MIV2WNNDOOOm88V5KgR9esfi0LyQ6eVaGq2h0Yw+R29f5A6qUNJt+RccS3qkYayylAy9tP1wV+7Q==", + "path": "microsoft.aspnetcore.authorization.policy/2.3.0", + "hashPath": "microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ULFSa+/L+WiAHVlIFHyg0OmHChU9Hx+K+xnt0hbIU5XmT1EGy0pNDx23QAzDtAy9jxQrTG6MX0MdvMeU4D4c7w==", + "path": "microsoft.aspnetcore.connections.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4ivq53W2k6Nj4eez9wc81ytfGj6HR1NaZJCpOrvghJo9zHuQF57PLhPoQH5ItyCpHXnrN/y7yJDUm+TGYzrx0w==", + "path": "microsoft.aspnetcore.hosting.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.hosting.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-F5iHx7odAbFKBV1DNPDkFFcVmD5Tk7rk+tYm3LMQxHEFFdjlg5QcYb5XhHAefl5YaaPeG6ad+/ck8kSG3/D6kw==", + "path": "microsoft.aspnetcore.hosting.server.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.hosting.server.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-I9azEG2tZ4DDHAFgv+N38e6Yhttvf+QjE2j2UYyCACE7Swm5/0uoihCMWZ87oOZYeqiEFSxbsfpT71OYHe2tpw==", + "path": "microsoft.aspnetcore.http/2.3.0", + "hashPath": "microsoft.aspnetcore.http.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-39r9PPrjA6s0blyFv5qarckjNkaHRA5B+3b53ybuGGNTXEj1/DStQJ4NWjFL6QTRQpL9zt7nDyKxZdJOlcnq+Q==", + "path": "microsoft.aspnetcore.http.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.http.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VYMCOLvdT0y3O9lk4jUuIs8+re7u5+i+ka6ZZ6fIzSJ94c/JeMnAOOg39EB2i4crPXvLoiSdzKWlNPJgTbCZ2g==", + "path": "microsoft.aspnetcore.http.connections/1.2.0", + "hashPath": "microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yUA7eg6kv7Wbz5TCW4PqS5/kYE5VxUIEDvoxjw4p1RwS2LGm84F9fBtM0mD6wrRfiv1NUyJ7WBjn3PWd/ccO+w==", + "path": "microsoft.aspnetcore.http.connections.common/1.2.0", + "hashPath": "microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Extensions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-EY2u/wFF5jsYwGXXswfQWrSsFPmiXsniAlUWo3rv/MGYf99ZFsENDnZcQP6W3c/+xQmQXq0NauzQ7jyy+o1LDQ==", + "path": "microsoft.aspnetcore.http.extensions/2.3.0", + "hashPath": "microsoft.aspnetcore.http.extensions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Features/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-f10WUgcsKqrkmnz6gt8HeZ7kyKjYN30PO7cSic1lPtH7paPtnQqXPOveul/SIPI43PhRD4trttg4ywnrEmmJpA==", + "path": "microsoft.aspnetcore.http.features/2.3.0", + "hashPath": "microsoft.aspnetcore.http.features.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Routing/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-no5/VC0CAQuT4PK4rp2K5fqwuSfzr2mdB6m1XNfWVhHnwzpRQzKAu9flChiT/JTLKwVI0Vq2MSmSW2OFMDCNXg==", + "path": "microsoft.aspnetcore.routing/2.3.0", + "hashPath": "microsoft.aspnetcore.routing.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZkFpUrSmp6TocxZLBEX3IBv5dPMbQuMs6L/BPl0WRfn32UVOtNYJQ0bLdh3cL9LMV0rmTW/5R0w8CBYxr0AOUw==", + "path": "microsoft.aspnetcore.routing.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XoCcsOTdtBiXyOzUtpbCl0IaqMOYjnr+6dbDxvUCFn7NR6bu7CwrlQ3oQzkltTwDZH0b6VEUN9wZPOYvPHi+Lg==", + "path": "microsoft.aspnetcore.signalr/1.2.0", + "hashPath": "microsoft.aspnetcore.signalr.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Common/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FZeXIaoWqe145ZPdfiptwkw/sP1BX1UD0706GNBwwoaFiKsNbLEl/Trhj2+idlp3qbX1BEwkQesKNxkopVY5Xg==", + "path": "microsoft.aspnetcore.signalr.common/1.2.0", + "hashPath": "microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Core/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eZTuMkSDw1uwjhLhJbMxgW2Cuyxfn0Kfqm8OBmqvuzE9Qc/VVzh8dGrAp2F9Pk7XKTDHmlhc5RTLcPPAZ5PSZw==", + "path": "microsoft.aspnetcore.signalr.core/1.2.0", + "hashPath": "microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hNvZ7kQxp5Udqd/IFWViU35bUJvi4xnNzjkF28HRvrdrS7JNsIASTvMqArP6HLQUc3j6nlUOeShNhVmgI1wzHg==", + "path": "microsoft.aspnetcore.signalr.protocols.json/1.2.0", + "hashPath": "microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.WebSockets/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+T4zpnVPkIjvvkyhTH3WBJlTfqmTBRozvnMudAUDvcb4e+NrWf52q8BXh52rkCrBgX6Cudf6F/UhZwTowyBtKg==", + "path": "microsoft.aspnetcore.websockets/2.3.0", + "hashPath": "microsoft.aspnetcore.websockets.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.WebUtilities/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-trbXdWzoAEUVd0PE2yTopkz4kjZaAIA7xUWekd5uBw+7xE8Do/YOVTeb9d9koPTlbtZT539aESJjSLSqD8eYrQ==", + "path": "microsoft.aspnetcore.webutilities/2.3.0", + "hashPath": "microsoft.aspnetcore.webutilities.2.3.0.nupkg.sha512" + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1Am6l4Vpn3/K32daEqZI+FFr96OlZkgwK2LcT3pZ2zWubR5zTPW3/FkO1Rat9kb7oQOa4rxgl9LJHc5tspCWfg==", + "path": "microsoft.bcl.asyncinterfaces/1.1.0", + "hashPath": "microsoft.bcl.asyncinterfaces.1.1.0.nupkg.sha512" + }, + "Microsoft.CodeCoverage/17.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KC8SXWbGIdoFVdlxKk9WHccm0llm9HypcHMLUUFabRiTS3SO2fQXNZfdiF3qkEdTJhbRrxhdRxjL4jbtwPq4Ew==", + "path": "microsoft.codecoverage/17.8.0", + "hashPath": "microsoft.codecoverage.17.8.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore/8.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nKGrD/WOO1d7qtXvghFAHre5Fk3ubw41pDFM0hbFxVIkMFxl4B0ug2LylMHOq+dgAceUeo3bx0qMh6/Jl9NbrA==", + "path": "microsoft.entityframeworkcore/8.0.22", + "hashPath": "microsoft.entityframeworkcore.8.0.22.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-p4Fw9mpJnZHmkdOGCbBqbvuyj1LnnFxNon8snMKIQ0MGSB+j9f6ffWDfvGRaOS/9ikqQG9RMOTzZk52q1G23ng==", + "path": "microsoft.entityframeworkcore.abstractions/8.0.22", + "hashPath": "microsoft.entityframeworkcore.abstractions.8.0.22.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lrSWwr+X+Fn5XGOwOYFQJWx+u+eameqhMjQ1mohXUE2N7LauucZAtcH/j+yXwQntosKoXU1TOoggTL/zmYqbHQ==", + "path": "microsoft.entityframeworkcore.analyzers/8.0.22", + "hashPath": "microsoft.entityframeworkcore.analyzers.8.0.22.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.InMemory/8.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-dPbM/KLIh/AdHRjh/OhrzhAiHRLT0JBC5KSvAZ71eg42+QwF9aEuBfTzqr+GJE6DK9CLhqh9jXAqRKFojPki5g==", + "path": "microsoft.entityframeworkcore.inmemory/8.0.22", + "hashPath": "microsoft.entityframeworkcore.inmemory.8.0.22.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.13": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uQR2iTar+6ZEjEHTwgH0/7ySSRme4R9sDiupfG3w/eBub3365fPw/MjhsuOMQkdq9YzLM7veH4Qt/K9OqL26Qg==", + "path": "microsoft.entityframeworkcore.relational/8.0.13", + "hashPath": "microsoft.entityframeworkcore.relational.8.0.13.nupkg.sha512" + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", + "path": "microsoft.extensions.apidescription.server/6.0.5", + "hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.Abstractions/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WIRPDa/qoKHmJhTAPCO/zLu9kRLQ2Fd6HD5tzgdXJ3xGEVXDHP6FvakKJjynwKrVDld8H4G4tcbW53wuC/wxMQ==", + "path": "microsoft.extensions.caching.abstractions/10.0.2", + "hashPath": "microsoft.extensions.caching.abstractions.10.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==", + "path": "microsoft.extensions.caching.memory/8.0.1", + "hashPath": "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WEx0VM6KVv4Bf6lwe4WQTd4EixIfw38ZU3u/7zMe+uC5fOyiANu8Os/qyiqv2iEsIJb296tbd2E2BTaWIha3Vg==", + "path": "microsoft.extensions.caching.stackexchangeredis/10.0.2", + "hashPath": "microsoft.extensions.caching.stackexchangeredis.10.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==", + "path": "microsoft.extensions.dependencyinjection/8.0.1", + "hashPath": "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zOIurr59+kUf9vNcsUkCvKWZv+fPosUZXURZesYkJCvl0EzTc9F7maAO4Cd2WEV7ZJJ0AZrFQvuH6Npph9wdBw==", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.2", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-elH2vmwNmsXuKmUeMQ4YW9ldXiF+gSGDgg1vORksob5POnpaI6caj1Hu8zaYbEuibhqCoWg0YRWDazBY3zjBfg==", + "path": "microsoft.extensions.diagnostics.abstractions/8.0.1", + "hashPath": "microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512" + }, + "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-P9SoBuVZhJPpALZmSq72aQEb9ryP67EdquaCZGXGrrcASTNHYdrUhnpgSwIipgM5oVC+dKpRXg5zxobmF9xr5g==", + "path": "microsoft.extensions.diagnostics.healthchecks/8.0.0", + "hashPath": "microsoft.extensions.diagnostics.healthchecks.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AT2qqos3IgI09ok36Qag9T8bb6kHJ3uT9Q5ki6CySybFsK6/9JbvQAgAHf1pVEjST0/N4JaFaCbm40R5edffwg==", + "path": "microsoft.extensions.diagnostics.healthchecks.abstractions/8.0.0", + "hashPath": "microsoft.extensions.diagnostics.healthchecks.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", + "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", + "hashPath": "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", + "path": "microsoft.extensions.hosting.abstractions/8.0.1", + "hashPath": "microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==", + "path": "microsoft.extensions.logging/8.0.1", + "hashPath": "microsoft.extensions.logging.8.0.1.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-RZkez/JjpnO+MZ6efKkSynN6ZztLpw3WbxNzjLCPBd97wWj1S9ZYPWi0nmT4kWBRa6atHsdM1ydGkUr8GudyDQ==", + "path": "microsoft.extensions.logging.abstractions/10.0.2", + "hashPath": "microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.ObjectPool/8.0.11": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6ApKcHNJigXBfZa6XlDQ8feJpq7SG1ogZXg6M4FiNzgd6irs3LUAzo0Pfn4F2ZI9liGnH1XIBR/OtSbZmJAV5w==", + "path": "microsoft.extensions.objectpool/8.0.11", + "hashPath": "microsoft.extensions.objectpool.8.0.11.nupkg.sha512" + }, + "Microsoft.Extensions.Options/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1De2LJjmxdqopI5AYC5dIhoZQ79AR5ayywxNF1rXrXFtKQfbQOV9+n/IsZBa7qWlr0MqoGpW8+OY2v/57udZOA==", + "path": "microsoft.extensions.options/10.0.2", + "hashPath": "microsoft.extensions.options.10.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-QmSiO+oLBEooGgB3i0GRXyeYRDHjllqt3k365jwfZlYWhvSHA3UL2NEVV5m8aZa041eIlblo6KMI5txvTMpTwA==", + "path": "microsoft.extensions.primitives/10.0.2", + "hashPath": "microsoft.extensions.primitives.10.0.2.nupkg.sha512" + }, + "Microsoft.IdentityModel.Abstractions/8.14.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==", + "path": "microsoft.identitymodel.abstractions/8.14.0", + "hashPath": "microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4jOpiA4THdtpLyMdAb24dtj7+6GmvhOhxf5XHLYWmPKF8ApEnApal1UnJsKO4HxUWRXDA6C4WQVfYyqsRhpNpQ==", + "path": "microsoft.identitymodel.jsonwebtokens/8.14.0", + "hashPath": "microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.Logging/8.14.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eqqnemdW38CKZEHS6diA50BV94QICozDZEvSrsvN3SJXUFwVB9gy+/oz76gldP7nZliA16IglXjXTCTdmU/Ejg==", + "path": "microsoft.identitymodel.logging/8.14.0", + "hashPath": "microsoft.identitymodel.logging.8.14.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.Protocols/7.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-SydLwMRFx6EHPWJ+N6+MVaoArN1Htt92b935O3RUWPY1yUF63zEjvd3lBu79eWdZUwedP8TN2I5V9T3nackvIQ==", + "path": "microsoft.identitymodel.protocols/7.1.2", + "hashPath": "microsoft.identitymodel.protocols.7.1.2.nupkg.sha512" + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6lHQoLXhnMQ42mGrfDkzbIOR3rzKM1W1tgTeMPLgLCqwwGw0d96xFi/UiX/fYsu7d6cD5MJiL3+4HuI8VU+sVQ==", + "path": "microsoft.identitymodel.protocols.openidconnect/7.1.2", + "hashPath": "microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512" + }, + "Microsoft.IdentityModel.Tokens/8.14.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lKIZiBiGd36k02TCdMHp1KlNWisyIvQxcYJvIkz7P4gSQ9zi8dgh6S5Grj8NNG7HWYIPfQymGyoZ6JB5d1Lo1g==", + "path": "microsoft.identitymodel.tokens/8.14.0", + "hashPath": "microsoft.identitymodel.tokens.8.14.0.nupkg.sha512" + }, + "Microsoft.Net.Http.Headers/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/M0wVg6tJUOHutWD3BMOUVZAioJVXe0tCpFiovzv0T9T12TBf4MnaHP0efO8TCr1a6O9RZgQeZ9Gdark8L9XdA==", + "path": "microsoft.net.http.headers/2.3.0", + "hashPath": "microsoft.net.http.headers.2.3.0.nupkg.sha512" + }, + "Microsoft.NET.Test.Sdk/17.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BmTYGbD/YuDHmApIENdoyN1jCk0Rj1fJB0+B/fVekyTdVidr91IlzhqzytiUgaEAzL1ZJcYCme0MeBMYvJVzvw==", + "path": "microsoft.net.test.sdk/17.8.0", + "hashPath": "microsoft.net.test.sdk.17.8.0.nupkg.sha512" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "path": "microsoft.netcore.targets/1.1.0", + "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" + }, + "Microsoft.OpenApi/1.6.14": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==", + "path": "microsoft.openapi/1.6.14", + "hashPath": "microsoft.openapi.1.6.14.nupkg.sha512" + }, + "Microsoft.TestPlatform.ObjectModel/17.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AYy6vlpGMfz5kOFq99L93RGbqftW/8eQTqjT9iGXW6s9MRP3UdtY8idJ8rJcjeSja8A18IhIro5YnH3uv1nz4g==", + "path": "microsoft.testplatform.objectmodel/17.8.0", + "hashPath": "microsoft.testplatform.objectmodel.17.8.0.nupkg.sha512" + }, + "Microsoft.TestPlatform.TestHost/17.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-9ivcl/7SGRmOT0YYrHQGohWiT5YCpkmy/UEzldfVisLm6QxbLaK3FAJqZXI34rnRLmqqDCeMQxKINwmKwAPiDw==", + "path": "microsoft.testplatform.testhost/17.8.0", + "hashPath": "microsoft.testplatform.testhost.17.8.0.nupkg.sha512" + }, + "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-EfYANhAWqmWKoLwN6bxoiPZSOfJSO9lzX+UrU6GVhLhPub1Hd+5f0zL0/tggIA6mRz6Ebw2xCNcIsM4k+7NPng==", + "path": "microsoft.visualstudio.azure.containers.tools.targets/1.22.1", + "hashPath": "microsoft.visualstudio.azure.containers.tools.targets.1.22.1.nupkg.sha512" + }, + "Microsoft.Win32.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", + "path": "microsoft.win32.primitives/4.3.0", + "hashPath": "microsoft.win32.primitives.4.3.0.nupkg.sha512" + }, + "Moq/4.20.72": { + "type": "package", + "serviceable": true, + "sha512": "sha512-EA55cjyNn8eTNWrgrdZJH5QLFp2L43oxl1tlkoYUKIE9pRwL784OWiTXeCV5ApS+AMYEAlt7Fo03A2XfouvHmQ==", + "path": "moq/4.20.72", + "hashPath": "moq.4.20.72.nupkg.sha512" + }, + "MySqlConnector/2.3.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", + "path": "mysqlconnector/2.3.5", + "hashPath": "mysqlconnector.2.3.5.nupkg.sha512" + }, + "NETStandard.Library/1.6.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", + "path": "netstandard.library/1.6.1", + "hashPath": "netstandard.library.1.6.1.nupkg.sha512" + }, + "Newtonsoft.Json/13.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==", + "path": "newtonsoft.json/13.0.4", + "hashPath": "newtonsoft.json.13.0.4.nupkg.sha512" + }, + "NuGet.Frameworks/6.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-QWINE2x3MbTODsWT1Gh71GaGb5icBz4chS8VYvTgsBnsi8esgN6wtHhydd7fvToWECYGq7T4cgBBDiKD/363fg==", + "path": "nuget.frameworks/6.5.0", + "hashPath": "nuget.frameworks.6.5.0.nupkg.sha512" + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==", + "path": "pipelines.sockets.unofficial/2.2.8", + "hashPath": "pipelines.sockets.unofficial.2.2.8.nupkg.sha512" + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-gOHP6v/nFp5V/FgHqv9mZocGqCLGofihEX9dTbLhiXX3H7SJHmGX70GIPUpiqLT+1jIfDxg1PZh9MTUKuk7Kig==", + "path": "pomelo.entityframeworkcore.mysql/8.0.3", + "hashPath": "pomelo.entityframeworkcore.mysql.8.0.3.nupkg.sha512" + }, + "RabbitMQ.Client/7.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-y3c6ulgULScWthHw5PLM1ShHRLhxg0vCtzX/hh61gRgNecL3ZC3WoBW2HYHoXOVRqTl99Br9E7CZEytGZEsCyQ==", + "path": "rabbitmq.client/7.1.2", + "hashPath": "rabbitmq.client.7.1.2.nupkg.sha512" + }, + "RedLock.net/2.3.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-jlrALAArm4dCE292U3EtRoMnVKJ9M6sunbZn/oG5OuzlGtTpusXBfvDrnGWbgGDlWV027f5E9H5CiVnPxiq8+g==", + "path": "redlock.net/2.3.2", + "hashPath": "redlock.net.2.3.2.nupkg.sha512" + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==", + "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==", + "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==", + "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.native.System/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", + "path": "runtime.native.system/4.3.0", + "hashPath": "runtime.native.system.4.3.0.nupkg.sha512" + }, + "runtime.native.System.IO.Compression/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", + "path": "runtime.native.system.io.compression/4.3.0", + "hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512" + }, + "runtime.native.System.Net.Http/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", + "path": "runtime.native.system.net.http/4.3.0", + "hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512" + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", + "path": "runtime.native.system.security.cryptography.apple/4.3.0", + "hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512" + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", + "path": "runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==", + "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==", + "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", + "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512" + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==", + "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==", + "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==", + "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==", + "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "StackExchange.Redis/2.9.32": { + "type": "package", + "serviceable": true, + "sha512": "sha512-j5Rjbf7gWz5izrn0UWQy9RlQY4cQDPkwJfVqATnVsOa/+zzJrps12LOgacMsDl/Vit2f01cDiDkG/Rst8v2iGw==", + "path": "stackexchange.redis/2.9.32", + "hashPath": "stackexchange.redis.2.9.32.nupkg.sha512" + }, + "Swashbuckle.AspNetCore/6.6.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+NB4UYVYN6AhDSjW0IJAd1AGD8V33gemFNLPaxKTtPkHB+HaKAKf9MGAEUPivEWvqeQfcKIw8lJaHq6LHljRuw==", + "path": "swashbuckle.aspnetcore/6.6.2", + "hashPath": "swashbuckle.aspnetcore.6.6.2.nupkg.sha512" + }, + "Swashbuckle.AspNetCore.Swagger/6.6.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ovgPTSYX83UrQUWiS5vzDcJ8TEX1MAxBgDFMK45rC24MorHEPQlZAHlaXj/yth4Zf6xcktpUgTEBvffRQVwDKA==", + "path": "swashbuckle.aspnetcore.swagger/6.6.2", + "hashPath": "swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512" + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zv4ikn4AT1VYuOsDCpktLq4QDq08e7Utzbir86M5/ZkRaLXbCPF11E1/vTmOiDzRTl0zTZINQU2qLKwTcHgfrA==", + "path": "swashbuckle.aspnetcore.swaggergen/6.6.2", + "hashPath": "swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512" + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-mBBb+/8Hm2Q3Wygag+hu2jj69tZW5psuv0vMRXY07Wy+Rrj40vRP8ZTbKBhs91r45/HXT4aY4z0iSBYx1h6JvA==", + "path": "swashbuckle.aspnetcore.swaggerui/6.6.2", + "hashPath": "swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512" + }, + "System.AppContext/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", + "path": "system.appcontext/4.3.0", + "hashPath": "system.appcontext.4.3.0.nupkg.sha512" + }, + "System.Buffers/4.6.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lN6tZi7Q46zFzAbRYXTIvfXcyvQQgxnY7Xm6C6xQ9784dEL1amjM6S6Iw4ZpsvesAKnRVsM4scrDQaDqSClkjA==", + "path": "system.buffers/4.6.0", + "hashPath": "system.buffers.4.6.0.nupkg.sha512" + }, + "System.Collections/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "path": "system.collections/4.3.0", + "hashPath": "system.collections.4.3.0.nupkg.sha512" + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "path": "system.collections.concurrent/4.3.0", + "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512" + }, + "System.Console/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", + "path": "system.console/4.3.0", + "hashPath": "system.console.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "path": "system.diagnostics.debug/4.3.0", + "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lYWBy8fKkJHaRcOuw30d67PrtVjR5754sz5Wl76s8P+vJ9FSThh9b7LIcTSODx1LY7NB3Srvg+JMnzd67qNZOw==", + "path": "system.diagnostics.diagnosticsource/10.0.2", + "hashPath": "system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512" + }, + "System.Diagnostics.EventLog/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==", + "path": "system.diagnostics.eventlog/6.0.0", + "hashPath": "system.diagnostics.eventlog.6.0.0.nupkg.sha512" + }, + "System.Diagnostics.Tools/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", + "path": "system.diagnostics.tools/4.3.0", + "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "path": "system.diagnostics.tracing/4.3.0", + "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512" + }, + "System.Globalization/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "path": "system.globalization/4.3.0", + "hashPath": "system.globalization.4.3.0.nupkg.sha512" + }, + "System.Globalization.Calendars/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", + "path": "system.globalization.calendars/4.3.0", + "hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512" + }, + "System.Globalization.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", + "path": "system.globalization.extensions/4.3.0", + "hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512" + }, + "System.IdentityModel.Tokens.Jwt/8.14.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-EYGgN/S+HK7S6F3GaaPLFAfK0UzMrkXFyWCvXpQWFYmZln3dqtbyIO7VuTM/iIIPMzkelg8ZLlBPvMhxj6nOAA==", + "path": "system.identitymodel.tokens.jwt/8.14.0", + "hashPath": "system.identitymodel.tokens.jwt.8.14.0.nupkg.sha512" + }, + "System.IO/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "path": "system.io/4.3.0", + "hashPath": "system.io.4.3.0.nupkg.sha512" + }, + "System.IO.Compression/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", + "path": "system.io.compression/4.3.0", + "hashPath": "system.io.compression.4.3.0.nupkg.sha512" + }, + "System.IO.Compression.ZipFile/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", + "path": "system.io.compression.zipfile/4.3.0", + "hashPath": "system.io.compression.zipfile.4.3.0.nupkg.sha512" + }, + "System.IO.FileSystem/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", + "path": "system.io.filesystem/4.3.0", + "hashPath": "system.io.filesystem.4.3.0.nupkg.sha512" + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", + "path": "system.io.filesystem.primitives/4.3.0", + "hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512" + }, + "System.IO.Pipelines/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", + "path": "system.io.pipelines/8.0.0", + "hashPath": "system.io.pipelines.8.0.0.nupkg.sha512" + }, + "System.Linq/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", + "path": "system.linq/4.3.0", + "hashPath": "system.linq.4.3.0.nupkg.sha512" + }, + "System.Linq.Expressions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", + "path": "system.linq.expressions/4.3.0", + "hashPath": "system.linq.expressions.4.3.0.nupkg.sha512" + }, + "System.Net.Http/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", + "path": "system.net.http/4.3.0", + "hashPath": "system.net.http.4.3.0.nupkg.sha512" + }, + "System.Net.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", + "path": "system.net.primitives/4.3.0", + "hashPath": "system.net.primitives.4.3.0.nupkg.sha512" + }, + "System.Net.Sockets/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", + "path": "system.net.sockets/4.3.0", + "hashPath": "system.net.sockets.4.3.0.nupkg.sha512" + }, + "System.Net.WebSockets.WebSocketProtocol/5.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cVTT/Zw4JuUeX8H0tdWii0OMHsA5MY2PaFYOq/Hstw0jk479jZ+f8baCicWFNzJlCPWAe0uoNCELoB5eNmaMqA==", + "path": "system.net.websockets.websocketprotocol/5.1.0", + "hashPath": "system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512" + }, + "System.ObjectModel/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", + "path": "system.objectmodel/4.3.0", + "hashPath": "system.objectmodel.4.3.0.nupkg.sha512" + }, + "System.Reflection/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "path": "system.reflection/4.3.0", + "hashPath": "system.reflection.4.3.0.nupkg.sha512" + }, + "System.Reflection.Emit/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", + "path": "system.reflection.emit/4.7.0", + "hashPath": "system.reflection.emit.4.7.0.nupkg.sha512" + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", + "path": "system.reflection.emit.ilgeneration/4.3.0", + "hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512" + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", + "path": "system.reflection.emit.lightweight/4.3.0", + "hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512" + }, + "System.Reflection.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", + "path": "system.reflection.extensions/4.3.0", + "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512" + }, + "System.Reflection.Metadata/1.6.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==", + "path": "system.reflection.metadata/1.6.0", + "hashPath": "system.reflection.metadata.1.6.0.nupkg.sha512" + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "path": "system.reflection.primitives/4.3.0", + "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" + }, + "System.Reflection.TypeExtensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", + "path": "system.reflection.typeextensions/4.3.0", + "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512" + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "path": "system.resources.resourcemanager/4.3.0", + "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" + }, + "System.Runtime/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "path": "system.runtime/4.3.0", + "hashPath": "system.runtime.4.3.0.nupkg.sha512" + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "path": "system.runtime.extensions/4.3.0", + "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" + }, + "System.Runtime.Handles/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "path": "system.runtime.handles/4.3.0", + "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512" + }, + "System.Runtime.InteropServices/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "path": "system.runtime.interopservices/4.3.0", + "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512" + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", + "path": "system.runtime.interopservices.runtimeinformation/4.3.0", + "hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512" + }, + "System.Runtime.Numerics/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", + "path": "system.runtime.numerics/4.3.0", + "hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", + "path": "system.security.cryptography.algorithms/4.3.0", + "hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.Cng/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", + "path": "system.security.cryptography.cng/4.3.0", + "hashPath": "system.security.cryptography.cng.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.Csp/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", + "path": "system.security.cryptography.csp/4.3.0", + "hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", + "path": "system.security.cryptography.encoding/4.3.0", + "hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", + "path": "system.security.cryptography.openssl/4.3.0", + "hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", + "path": "system.security.cryptography.primitives/4.3.0", + "hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", + "path": "system.security.cryptography.x509certificates/4.3.0", + "hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512" + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "path": "system.text.encoding/4.3.0", + "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" + }, + "System.Text.Encoding.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", + "path": "system.text.encoding.extensions/4.3.0", + "hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.RegularExpressions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", + "path": "system.text.regularexpressions/4.3.0", + "hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512" + }, + "System.Threading/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "path": "system.threading/4.3.0", + "hashPath": "system.threading.4.3.0.nupkg.sha512" + }, + "System.Threading.Channels/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==", + "path": "system.threading.channels/8.0.0", + "hashPath": "system.threading.channels.8.0.0.nupkg.sha512" + }, + "System.Threading.RateLimiting/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==", + "path": "system.threading.ratelimiting/8.0.0", + "hashPath": "system.threading.ratelimiting.8.0.0.nupkg.sha512" + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "path": "system.threading.tasks/4.3.0", + "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" + }, + "System.Threading.Tasks.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "path": "system.threading.tasks.extensions/4.3.0", + "hashPath": "system.threading.tasks.extensions.4.3.0.nupkg.sha512" + }, + "System.Threading.Timer/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", + "path": "system.threading.timer/4.3.0", + "hashPath": "system.threading.timer.4.3.0.nupkg.sha512" + }, + "System.Xml.ReaderWriter/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", + "path": "system.xml.readerwriter/4.3.0", + "hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512" + }, + "System.Xml.XDocument/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", + "path": "system.xml.xdocument/4.3.0", + "hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512" + }, + "xunit/2.5.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VxYDiWSwrLxOJ3UEN+ZPrBybB0SFShQ1E6PjT65VdoKCJhorgerFznThjSwawRH/WAip73YnucDVsE8WRj/8KQ==", + "path": "xunit/2.5.3", + "hashPath": "xunit.2.5.3.nupkg.sha512" + }, + "xunit.abstractions/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", + "path": "xunit.abstractions/2.0.3", + "hashPath": "xunit.abstractions.2.0.3.nupkg.sha512" + }, + "xunit.analyzers/1.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7ljnTJfFjz5zK+Jf0h2dd2QOSO6UmFizXsojv/x4QX7TU5vEgtKZPk9RvpkiuUqg2bddtNZufBoKQalsi7djfA==", + "path": "xunit.analyzers/1.4.0", + "hashPath": "xunit.analyzers.1.4.0.nupkg.sha512" + }, + "xunit.assert/2.5.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MK3HiBckO3vdxEdUxXZyyRPsBNPsC/nz6y1gj/UZIZkjMnsVQyZPU8yxS/3cjTchYcqskt/nqUOS5wmD8JezdQ==", + "path": "xunit.assert/2.5.3", + "hashPath": "xunit.assert.2.5.3.nupkg.sha512" + }, + "xunit.core/2.5.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FE8yEEUkoMLd6kOHDXm/QYfX/dYzwc0c+Q4MQon6VGRwFuy6UVGwK/CFA5LEea+ZBEmcco7AEl2q78VjsA0j/w==", + "path": "xunit.core/2.5.3", + "hashPath": "xunit.core.2.5.3.nupkg.sha512" + }, + "xunit.extensibility.core/2.5.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-IjAQlPeZWXP89pl1EuOG9991GH1qgAL0rQfkmX2UV+PDenbYb7oBnQopL9ujE6YaXxgaQazp7lFjsDyyxD6Mtw==", + "path": "xunit.extensibility.core/2.5.3", + "hashPath": "xunit.extensibility.core.2.5.3.nupkg.sha512" + }, + "xunit.extensibility.execution/2.5.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-w9eGCHl+gJj1GzZSf0VTzYPp/gv4fiUDkr+yR7/Wv9/ucO2CHltGg2TnyySLFjzekkjuxVJZUE+tZyDNzryJFw==", + "path": "xunit.extensibility.execution/2.5.3", + "hashPath": "xunit.extensibility.execution.2.5.3.nupkg.sha512" + }, + "xunit.runner.visualstudio/2.5.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HFFL6O+QLEOfs555SqHii48ovVa4CqGYanY+B32BjLpPptdE+wEJmCFNXlLHdEOD5LYeayb9EroaUpydGpcybg==", + "path": "xunit.runner.visualstudio/2.5.3", + "hashPath": "xunit.runner.visualstudio.2.5.3.nupkg.sha512" + }, + "IM_API/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } } \ No newline at end of file diff --git a/backend/IMTest/bin/Debug/net8.0/IMTest.dll b/backend/IMTest/bin/Debug/net8.0/IMTest.dll index a0cda451d694d4817c2e18d6b5bc96d87896a846..1b81499223a53415631995671a2f195b2d02497b 100644 GIT binary patch delta 248 zcmZp8!PM}AX+j6fk|6ej8+%kH3NX9AemTcZ+jZtt@y>;!^KWcEFj1dh&)hsE$;coj z+1MgA$->gi!ZbP2+&Cr8Bqhbj+|(j5(bPCG(Ja*d({zB!=4hs`FS$_WA ze_-;GRRID&6YHjT3uO4V-&s_5-B`+0VYKPf>BtEPBid#Hw;mm`Z z%UAa@`Wz}vzFj1dhFD2P5H95`5 z$Rs7rB-O&)(8SQ(Fx4W-G{wj`F)cCC(jdt=(J;-zkb%L6k->d({zB!=4hs`FS<3%* zbx&ThDnOvS`^eXXic*I@5r+1nH@gcbv#btQfC=(J1%ax$_XhB3oL%hb)Anha^XBr^ zz0Ce849N^;45>gejll>AO&C&uEEAxJ1%o+*A&_MVra}B922-G{5rZ*9B2Y~t5Lz-A T07XH3L!gKSgW=}j^=nxG4c<}4 diff --git a/backend/IMTest/bin/Debug/net8.0/IMTest.pdb b/backend/IMTest/bin/Debug/net8.0/IMTest.pdb index f9575cb588d2903cee52a899df39729d98feb674..a5be6bbae4308fcb3168f5adf72d56530f868217 100644 GIT binary patch delta 148 zcmV;F0Biru{sGMX0g!wY`C)#Six6l{huorm*G(hG`Tf7Zv5>YCAR!F^%uiXfFBszu zIU`D!%K_a7zVfj&@*uJO#~#*F&a-9|TLCF;bMurWBZHJ=V~f-z3rjN#)8s^RYCAYMfV>jWZLcv CdO-^S diff --git a/backend/IMTest/bin/Debug/net8.0/IMTest.runtimeconfig.json b/backend/IMTest/bin/Debug/net8.0/IMTest.runtimeconfig.json index a42fa34..1698852 100644 --- a/backend/IMTest/bin/Debug/net8.0/IMTest.runtimeconfig.json +++ b/backend/IMTest/bin/Debug/net8.0/IMTest.runtimeconfig.json @@ -1,19 +1,19 @@ -{ - "runtimeOptions": { - "tfm": "net8.0", - "frameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "8.0.0" - }, - { - "name": "Microsoft.AspNetCore.App", - "version": "8.0.0" - } - ], - "configProperties": { - "System.Reflection.NullabilityInfoContext.IsSupported": true, - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false - } - } +{ + "runtimeOptions": { + "tfm": "net8.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + { + "name": "Microsoft.AspNetCore.App", + "version": "8.0.0" + } + ], + "configProperties": { + "System.Reflection.NullabilityInfoContext.IsSupported": true, + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } } \ No newline at end of file diff --git a/backend/IMTest/bin/Debug/net8.0/IM_API.deps.json b/backend/IMTest/bin/Debug/net8.0/IM_API.deps.json index 5086600..7a882c9 100644 --- a/backend/IMTest/bin/Debug/net8.0/IM_API.deps.json +++ b/backend/IMTest/bin/Debug/net8.0/IM_API.deps.json @@ -1,1743 +1,1743 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v8.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v8.0": { - "IM_API/1.0.0": { - "dependencies": { - "AutoMapper": "12.0.1", - "AutoMapper.Extensions.Microsoft.DependencyInjection": "12.0.0", - "MassTransit.RabbitMQ": "8.5.5", - "Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.21", - "Microsoft.AspNetCore.SignalR": "1.2.0", - "Microsoft.EntityFrameworkCore.Design": "8.0.21", - "Microsoft.EntityFrameworkCore.Tools": "8.0.21", - "Microsoft.Extensions.Caching.StackExchangeRedis": "10.0.2", - "Microsoft.VisualStudio.Azure.Containers.Tools.Targets": "1.22.1", - "Newtonsoft.Json": "13.0.4", - "Pomelo.EntityFrameworkCore.MySql": "8.0.3", - "RedLock.net": "2.3.2", - "StackExchange.Redis": "2.9.32", - "Swashbuckle.AspNetCore": "6.6.2", - "System.IdentityModel.Tokens.Jwt": "8.14.0" - }, - "runtime": { - "IM_API.dll": {} - } - }, - "AutoMapper/12.0.1": { - "dependencies": { - "Microsoft.CSharp": "4.7.0" - }, - "runtime": { - "lib/netstandard2.1/AutoMapper.dll": { - "assemblyVersion": "12.0.0.0", - "fileVersion": "12.0.1.0" - } - } - }, - "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { - "dependencies": { - "AutoMapper": "12.0.1", - "Microsoft.Extensions.Options": "10.0.2" - }, - "runtime": { - "lib/netstandard2.1/AutoMapper.Extensions.Microsoft.DependencyInjection.dll": { - "assemblyVersion": "12.0.0.0", - "fileVersion": "12.0.0.0" - } - } - }, - "Humanizer.Core/2.14.1": { - "runtime": { - "lib/net6.0/Humanizer.dll": { - "assemblyVersion": "2.14.0.0", - "fileVersion": "2.14.1.48190" - } - } - }, - "MassTransit/8.5.5": { - "dependencies": { - "MassTransit.Abstractions": "8.5.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - }, - "runtime": { - "lib/net8.0/MassTransit.dll": { - "assemblyVersion": "8.5.5.0", - "fileVersion": "8.5.5.0" - } - } - }, - "MassTransit.Abstractions/8.5.5": { - "runtime": { - "lib/net8.0/MassTransit.Abstractions.dll": { - "assemblyVersion": "8.5.5.0", - "fileVersion": "8.5.5.0" - } - } - }, - "MassTransit.RabbitMQ/8.5.5": { - "dependencies": { - "MassTransit": "8.5.5", - "RabbitMQ.Client": "7.1.2" - }, - "runtime": { - "lib/net8.0/MassTransit.RabbitMqTransport.dll": { - "assemblyVersion": "8.5.5.0", - "fileVersion": "8.5.5.0" - } - } - }, - "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - } - }, - "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { - "dependencies": { - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.1.2" - }, - "runtime": { - "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { - "assemblyVersion": "8.0.21.0", - "fileVersion": "8.0.2125.47515" - } - } - }, - "Microsoft.AspNetCore.Authorization/2.3.0": { - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - } - }, - "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Authentication.Abstractions": "2.3.0", - "Microsoft.AspNetCore.Authorization": "2.3.0" - } - }, - "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.3.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.3.0", - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - } - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.3.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" - } - }, - "Microsoft.AspNetCore.Http/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.AspNetCore.WebUtilities": "2.3.0", - "Microsoft.Extensions.ObjectPool": "8.0.11", - "Microsoft.Extensions.Options": "10.0.2", - "Microsoft.Net.Http.Headers": "2.3.0" - } - }, - "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.3.0", - "System.Text.Encodings.Web": "8.0.0" - } - }, - "Microsoft.AspNetCore.Http.Connections/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.Authorization.Policy": "2.3.0", - "Microsoft.AspNetCore.Hosting.Abstractions": "2.3.0", - "Microsoft.AspNetCore.Http": "2.3.0", - "Microsoft.AspNetCore.Http.Connections.Common": "1.2.0", - "Microsoft.AspNetCore.Routing": "2.3.0", - "Microsoft.AspNetCore.WebSockets": "2.3.0", - "Newtonsoft.Json": "13.0.4", - "System.Net.WebSockets.WebSocketProtocol": "5.1.0" - } - }, - "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", - "Newtonsoft.Json": "13.0.4", - "System.Buffers": "4.6.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.AspNetCore.Http.Extensions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Net.Http.Headers": "2.3.0", - "System.Buffers": "4.6.0" - } - }, - "Microsoft.AspNetCore.Http.Features/2.3.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.2" - } - }, - "Microsoft.AspNetCore.Routing/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Extensions": "2.3.0", - "Microsoft.AspNetCore.Routing.Abstractions": "2.3.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.11", - "Microsoft.Extensions.Options": "10.0.2" - } - }, - "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0" - } - }, - "Microsoft.AspNetCore.SignalR/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections": "1.2.0", - "Microsoft.AspNetCore.SignalR.Core": "1.2.0", - "Microsoft.AspNetCore.WebSockets": "2.3.0", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.AspNetCore.SignalR.Common/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", - "Microsoft.Extensions.Options": "10.0.2", - "Newtonsoft.Json": "13.0.4", - "System.Buffers": "4.6.0" - } - }, - "Microsoft.AspNetCore.SignalR.Core/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.Authorization": "2.3.0", - "Microsoft.AspNetCore.SignalR.Common": "1.2.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "1.2.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "System.IO.Pipelines": "8.0.0", - "System.Reflection.Emit": "4.7.0", - "System.Threading.Channels": "8.0.0" - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "1.2.0", - "Newtonsoft.Json": "13.0.4", - "System.IO.Pipelines": "8.0.0" - } - }, - "Microsoft.AspNetCore.WebSockets/2.3.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Extensions": "2.3.0", - "Microsoft.Extensions.Options": "10.0.2", - "System.Net.WebSockets.WebSocketProtocol": "5.1.0" - } - }, - "Microsoft.AspNetCore.WebUtilities/2.3.0": { - "dependencies": { - "Microsoft.Net.Http.Headers": "2.3.0", - "System.Text.Encodings.Web": "8.0.0" - } - }, - "Microsoft.Bcl.AsyncInterfaces/6.0.0": { - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } - } - }, - "Microsoft.CodeAnalysis.Analyzers/3.3.3": {}, - "Microsoft.CodeAnalysis.Common/4.5.0": { - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.3", - "System.Collections.Immutable": "6.0.0", - "System.Reflection.Metadata": "6.0.1", - "System.Runtime.CompilerServices.Unsafe": "6.0.0", - "System.Text.Encoding.CodePages": "6.0.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": { - "assemblyVersion": "4.5.0.0", - "fileVersion": "4.500.23.10905" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.CodeAnalysis.CSharp/4.5.0": { - "dependencies": { - "Microsoft.CodeAnalysis.Common": "4.5.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": { - "assemblyVersion": "4.5.0.0", - "fileVersion": "4.500.23.10905" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.CodeAnalysis.CSharp": "4.5.0", - "Microsoft.CodeAnalysis.Common": "4.5.0", - "Microsoft.CodeAnalysis.Workspaces.Common": "4.5.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { - "assemblyVersion": "4.5.0.0", - "fileVersion": "4.500.23.10905" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.Bcl.AsyncInterfaces": "6.0.0", - "Microsoft.CodeAnalysis.Common": "4.5.0", - "System.Composition": "6.0.0", - "System.IO.Pipelines": "8.0.0", - "System.Threading.Channels": "8.0.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": { - "assemblyVersion": "4.5.0.0", - "fileVersion": "4.500.23.10905" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.CSharp/4.7.0": {}, - "Microsoft.EntityFrameworkCore/8.0.21": { - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "8.0.21", - "Microsoft.EntityFrameworkCore.Analyzers": "8.0.21", - "Microsoft.Extensions.Caching.Memory": "8.0.1", - "Microsoft.Extensions.Logging": "8.0.1" - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { - "assemblyVersion": "8.0.21.0", - "fileVersion": "8.0.2125.47512" - } - } - }, - "Microsoft.EntityFrameworkCore.Abstractions/8.0.21": { - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { - "assemblyVersion": "8.0.21.0", - "fileVersion": "8.0.2125.47512" - } - } - }, - "Microsoft.EntityFrameworkCore.Analyzers/8.0.21": {}, - "Microsoft.EntityFrameworkCore.Design/8.0.21": { - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.CodeAnalysis.CSharp.Workspaces": "4.5.0", - "Microsoft.EntityFrameworkCore.Relational": "8.0.21", - "Microsoft.Extensions.DependencyModel": "8.0.2", - "Mono.TextTemplating": "2.2.1" - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": { - "assemblyVersion": "8.0.21.0", - "fileVersion": "8.0.2125.47512" - } - } - }, - "Microsoft.EntityFrameworkCore.Relational/8.0.21": { - "dependencies": { - "Microsoft.EntityFrameworkCore": "8.0.21", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { - "assemblyVersion": "8.0.21.0", - "fileVersion": "8.0.2125.47512" - } - } - }, - "Microsoft.EntityFrameworkCore.Tools/8.0.21": { - "dependencies": { - "Microsoft.EntityFrameworkCore.Design": "8.0.21" - } - }, - "Microsoft.Extensions.ApiDescription.Server/6.0.5": {}, - "Microsoft.Extensions.Caching.Abstractions/10.0.2": { - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.Extensions.Caching.Memory/8.0.1": { - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.2", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2", - "Microsoft.Extensions.Primitives": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1024.46610" - } - } - }, - "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.2", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2", - "StackExchange.Redis": "2.9.32" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll": { - "assemblyVersion": "10.0.2.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.2" - } - }, - "Microsoft.Extensions.DependencyInjection/8.0.1": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1024.46610" - } - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.Extensions.DependencyModel/8.0.2": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { - "assemblyVersion": "8.0.0.2", - "fileVersion": "8.0.1024.46610" - } - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1024.46610" - } - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { - "dependencies": { - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": {}, - "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.2" - } - }, - "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1024.46610" - } - } - }, - "Microsoft.Extensions.Logging/8.0.1": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1024.46610" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.2": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "System.Diagnostics.DiagnosticSource": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.Extensions.ObjectPool/8.0.11": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.ObjectPool.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1124.52116" - } - } - }, - "Microsoft.Extensions.Options/10.0.2": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Primitives": "10.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.Extensions.Primitives/10.0.2": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "Microsoft.IdentityModel.Abstractions/8.14.0": { - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { - "assemblyVersion": "8.14.0.0", - "fileVersion": "8.14.0.60815" - } - } - }, - "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { - "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.14.0" - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { - "assemblyVersion": "8.14.0.0", - "fileVersion": "8.14.0.60815" - } - } - }, - "Microsoft.IdentityModel.Logging/8.14.0": { - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.14.0" - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { - "assemblyVersion": "8.14.0.0", - "fileVersion": "8.14.0.60815" - } - } - }, - "Microsoft.IdentityModel.Protocols/7.1.2": { - "dependencies": { - "Microsoft.IdentityModel.Logging": "8.14.0", - "Microsoft.IdentityModel.Tokens": "8.14.0" - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { - "assemblyVersion": "7.1.2.0", - "fileVersion": "7.1.2.41121" - } - } - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { - "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.1.2", - "System.IdentityModel.Tokens.Jwt": "8.14.0" - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { - "assemblyVersion": "7.1.2.0", - "fileVersion": "7.1.2.41121" - } - } - }, - "Microsoft.IdentityModel.Tokens/8.14.0": { - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.IdentityModel.Logging": "8.14.0" - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { - "assemblyVersion": "8.14.0.0", - "fileVersion": "8.14.0.60815" - } - } - }, - "Microsoft.Net.Http.Headers/2.3.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.2", - "System.Buffers": "4.6.0" - } - }, - "Microsoft.OpenApi/1.6.14": { - "runtime": { - "lib/netstandard2.0/Microsoft.OpenApi.dll": { - "assemblyVersion": "1.6.14.0", - "fileVersion": "1.6.14.0" - } - } - }, - "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": {}, - "Mono.TextTemplating/2.2.1": { - "dependencies": { - "System.CodeDom": "4.4.0" - }, - "runtime": { - "lib/netstandard2.0/Mono.TextTemplating.dll": { - "assemblyVersion": "2.2.0.0", - "fileVersion": "2.2.1.1" - } - } - }, - "MySqlConnector/2.3.5": { - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.2" - }, - "runtime": { - "lib/net8.0/MySqlConnector.dll": { - "assemblyVersion": "2.0.0.0", - "fileVersion": "2.3.5.0" - } - } - }, - "Newtonsoft.Json/13.0.4": { - "runtime": { - "lib/net6.0/Newtonsoft.Json.dll": { - "assemblyVersion": "13.0.0.0", - "fileVersion": "13.0.4.30916" - } - } - }, - "Pipelines.Sockets.Unofficial/2.2.8": { - "dependencies": { - "System.IO.Pipelines": "8.0.0" - }, - "runtime": { - "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { - "assemblyVersion": "1.0.0.0", - "fileVersion": "2.2.8.1080" - } - } - }, - "Pomelo.EntityFrameworkCore.MySql/8.0.3": { - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "8.0.21", - "MySqlConnector": "2.3.5" - }, - "runtime": { - "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { - "assemblyVersion": "8.0.3.0", - "fileVersion": "8.0.3.0" - } - } - }, - "RabbitMQ.Client/7.1.2": { - "dependencies": { - "System.IO.Pipelines": "8.0.0", - "System.Threading.RateLimiting": "8.0.0" - }, - "runtime": { - "lib/net8.0/RabbitMQ.Client.dll": { - "assemblyVersion": "7.0.0.0", - "fileVersion": "7.1.2.0" - } - } - }, - "RedLock.net/2.3.2": { - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "6.0.0", - "Microsoft.Extensions.Logging": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "StackExchange.Redis": "2.9.32" - }, - "runtime": { - "lib/netstandard2.0/RedLockNet.Abstractions.dll": { - "assemblyVersion": "2.3.2.0", - "fileVersion": "2.3.2.0" - }, - "lib/netstandard2.0/RedLockNet.SERedis.dll": { - "assemblyVersion": "2.3.2.0", - "fileVersion": "2.3.2.0" - } - } - }, - "StackExchange.Redis/2.9.32": { - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Pipelines.Sockets.Unofficial": "2.2.8" - }, - "runtime": { - "lib/net8.0/StackExchange.Redis.dll": { - "assemblyVersion": "2.0.0.0", - "fileVersion": "2.9.32.54708" - } - } - }, - "Swashbuckle.AspNetCore/6.6.2": { - "dependencies": { - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", - "Swashbuckle.AspNetCore.Swagger": "6.6.2", - "Swashbuckle.AspNetCore.SwaggerGen": "6.6.2", - "Swashbuckle.AspNetCore.SwaggerUI": "6.6.2" - } - }, - "Swashbuckle.AspNetCore.Swagger/6.6.2": { - "dependencies": { - "Microsoft.OpenApi": "1.6.14" - }, - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { - "assemblyVersion": "6.6.2.0", - "fileVersion": "6.6.2.401" - } - } - }, - "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { - "dependencies": { - "Swashbuckle.AspNetCore.Swagger": "6.6.2" - }, - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { - "assemblyVersion": "6.6.2.0", - "fileVersion": "6.6.2.401" - } - } - }, - "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { - "assemblyVersion": "6.6.2.0", - "fileVersion": "6.6.2.401" - } - } - }, - "System.Buffers/4.6.0": {}, - "System.CodeDom/4.4.0": { - "runtime": { - "lib/netstandard2.0/System.CodeDom.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "4.6.25519.3" - } - } - }, - "System.Collections.Immutable/6.0.0": { - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "System.Composition/6.0.0": { - "dependencies": { - "System.Composition.AttributedModel": "6.0.0", - "System.Composition.Convention": "6.0.0", - "System.Composition.Hosting": "6.0.0", - "System.Composition.Runtime": "6.0.0", - "System.Composition.TypedParts": "6.0.0" - } - }, - "System.Composition.AttributedModel/6.0.0": { - "runtime": { - "lib/net6.0/System.Composition.AttributedModel.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } - } - }, - "System.Composition.Convention/6.0.0": { - "dependencies": { - "System.Composition.AttributedModel": "6.0.0" - }, - "runtime": { - "lib/net6.0/System.Composition.Convention.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } - } - }, - "System.Composition.Hosting/6.0.0": { - "dependencies": { - "System.Composition.Runtime": "6.0.0" - }, - "runtime": { - "lib/net6.0/System.Composition.Hosting.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } - } - }, - "System.Composition.Runtime/6.0.0": { - "runtime": { - "lib/net6.0/System.Composition.Runtime.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } - } - }, - "System.Composition.TypedParts/6.0.0": { - "dependencies": { - "System.Composition.AttributedModel": "6.0.0", - "System.Composition.Hosting": "6.0.0", - "System.Composition.Runtime": "6.0.0" - }, - "runtime": { - "lib/net6.0/System.Composition.TypedParts.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52210" - } - } - }, - "System.Diagnostics.DiagnosticSource/10.0.2": { - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.225.61305" - } - } - }, - "System.IdentityModel.Tokens.Jwt/8.14.0": { - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "8.14.0", - "Microsoft.IdentityModel.Tokens": "8.14.0" - }, - "runtime": { - "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { - "assemblyVersion": "8.14.0.0", - "fileVersion": "8.14.0.60815" - } - } - }, - "System.IO.Pipelines/8.0.0": {}, - "System.Net.WebSockets.WebSocketProtocol/5.1.0": { - "runtime": { - "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": { - "assemblyVersion": "5.1.0.0", - "fileVersion": "5.100.24.56208" - } - } - }, - "System.Reflection.Emit/4.7.0": {}, - "System.Reflection.Metadata/6.0.1": { - "dependencies": { - "System.Collections.Immutable": "6.0.0" - } - }, - "System.Runtime.CompilerServices.Unsafe/6.0.0": {}, - "System.Text.Encoding.CodePages/6.0.0": { - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "System.Text.Encodings.Web/8.0.0": {}, - "System.Threading.Channels/8.0.0": {}, - "System.Threading.RateLimiting/8.0.0": {} - } - }, - "libraries": { - "IM_API/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "AutoMapper/12.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hvV62vl6Hp/WfQ24yzo3Co9+OPl8wH8hApwVtgWpiAynVJkUcs7xvehnSftawL8Pe8FrPffBRM3hwzLQqWDNjA==", - "path": "automapper/12.0.1", - "hashPath": "automapper.12.0.1.nupkg.sha512" - }, - "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XCJ4E3oKrbRl1qY9Mr+7uyC0xZj1+bqQjmQRWTiTKiVuuXTny+7YFWHi20tPjwkMukLbicN6yGlDy5PZ4wyi1w==", - "path": "automapper.extensions.microsoft.dependencyinjection/12.0.0", - "hashPath": "automapper.extensions.microsoft.dependencyinjection.12.0.0.nupkg.sha512" - }, - "Humanizer.Core/2.14.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==", - "path": "humanizer.core/2.14.1", - "hashPath": "humanizer.core.2.14.1.nupkg.sha512" - }, - "MassTransit/8.5.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bSg8k5q+rP1s+dIGXLLbctqDGdIkfDjdxwNWtCUH7xNCN9ZuM7mqSPQPIFgaYIi34e81m4FqAqo4CAHuWPkhRA==", - "path": "masstransit/8.5.5", - "hashPath": "masstransit.8.5.5.nupkg.sha512" - }, - "MassTransit.Abstractions/8.5.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0mn2Ay17dD6z5tgSLjbVRlldSbL9iowzFEfVgVfBXVG5ttz9dSWeR4TrdD6pqH93GWXp4CvSmF8i1HqxLX7DZw==", - "path": "masstransit.abstractions/8.5.5", - "hashPath": "masstransit.abstractions.8.5.5.nupkg.sha512" - }, - "MassTransit.RabbitMQ/8.5.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-UxWn4o90YVMF9PBkJeoskOFPneh6YtnI1fLJHtvZiSAG0eoiRrWPGa+6FQCvjkQ/ljCKfjzok2eGZc/vmNZ01A==", - "path": "masstransit.rabbitmq/8.5.5", - "hashPath": "masstransit.rabbitmq.8.5.5.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ve6uvLwKNRkfnO/QeN9M8eUJ49lCnWv/6/9p6iTEuiI6Rtsz+myaBAjdMzLuTViQY032xbTF5AdZF5BJzJJyXQ==", - "path": "microsoft.aspnetcore.authentication.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.authentication.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZuUpJ4DvmVArmTlyGGg+b9IdKgd8Kw0SmEzhjy4dQw8R6rxfNqCXfGvGm3ld7xlrgthJFou/le9tadsSyjFLuw==", - "path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.21", - "hashPath": "microsoft.aspnetcore.authentication.jwtbearer.8.0.21.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authorization/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-2/aBgLqBXva/+w8pzRNY8ET43Gi+dr1gv/7ySfbsh23lTK6IAgID5MGUEa1hreNIF+0XpW4tX7QwVe70+YvaPg==", - "path": "microsoft.aspnetcore.authorization/2.3.0", - "hashPath": "microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-vn31uQ1dA1MIV2WNNDOOOm88V5KgR9esfi0LyQ6eVaGq2h0Yw+R29f5A6qUNJt+RccS3qkYayylAy9tP1wV+7Q==", - "path": "microsoft.aspnetcore.authorization.policy/2.3.0", - "hashPath": "microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ULFSa+/L+WiAHVlIFHyg0OmHChU9Hx+K+xnt0hbIU5XmT1EGy0pNDx23QAzDtAy9jxQrTG6MX0MdvMeU4D4c7w==", - "path": "microsoft.aspnetcore.connections.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-4ivq53W2k6Nj4eez9wc81ytfGj6HR1NaZJCpOrvghJo9zHuQF57PLhPoQH5ItyCpHXnrN/y7yJDUm+TGYzrx0w==", - "path": "microsoft.aspnetcore.hosting.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.hosting.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-F5iHx7odAbFKBV1DNPDkFFcVmD5Tk7rk+tYm3LMQxHEFFdjlg5QcYb5XhHAefl5YaaPeG6ad+/ck8kSG3/D6kw==", - "path": "microsoft.aspnetcore.hosting.server.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.hosting.server.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-I9azEG2tZ4DDHAFgv+N38e6Yhttvf+QjE2j2UYyCACE7Swm5/0uoihCMWZ87oOZYeqiEFSxbsfpT71OYHe2tpw==", - "path": "microsoft.aspnetcore.http/2.3.0", - "hashPath": "microsoft.aspnetcore.http.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-39r9PPrjA6s0blyFv5qarckjNkaHRA5B+3b53ybuGGNTXEj1/DStQJ4NWjFL6QTRQpL9zt7nDyKxZdJOlcnq+Q==", - "path": "microsoft.aspnetcore.http.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.http.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VYMCOLvdT0y3O9lk4jUuIs8+re7u5+i+ka6ZZ6fIzSJ94c/JeMnAOOg39EB2i4crPXvLoiSdzKWlNPJgTbCZ2g==", - "path": "microsoft.aspnetcore.http.connections/1.2.0", - "hashPath": "microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-yUA7eg6kv7Wbz5TCW4PqS5/kYE5VxUIEDvoxjw4p1RwS2LGm84F9fBtM0mD6wrRfiv1NUyJ7WBjn3PWd/ccO+w==", - "path": "microsoft.aspnetcore.http.connections.common/1.2.0", - "hashPath": "microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Extensions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-EY2u/wFF5jsYwGXXswfQWrSsFPmiXsniAlUWo3rv/MGYf99ZFsENDnZcQP6W3c/+xQmQXq0NauzQ7jyy+o1LDQ==", - "path": "microsoft.aspnetcore.http.extensions/2.3.0", - "hashPath": "microsoft.aspnetcore.http.extensions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Features/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-f10WUgcsKqrkmnz6gt8HeZ7kyKjYN30PO7cSic1lPtH7paPtnQqXPOveul/SIPI43PhRD4trttg4ywnrEmmJpA==", - "path": "microsoft.aspnetcore.http.features/2.3.0", - "hashPath": "microsoft.aspnetcore.http.features.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Routing/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-no5/VC0CAQuT4PK4rp2K5fqwuSfzr2mdB6m1XNfWVhHnwzpRQzKAu9flChiT/JTLKwVI0Vq2MSmSW2OFMDCNXg==", - "path": "microsoft.aspnetcore.routing/2.3.0", - "hashPath": "microsoft.aspnetcore.routing.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZkFpUrSmp6TocxZLBEX3IBv5dPMbQuMs6L/BPl0WRfn32UVOtNYJQ0bLdh3cL9LMV0rmTW/5R0w8CBYxr0AOUw==", - "path": "microsoft.aspnetcore.routing.abstractions/2.3.0", - "hashPath": "microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XoCcsOTdtBiXyOzUtpbCl0IaqMOYjnr+6dbDxvUCFn7NR6bu7CwrlQ3oQzkltTwDZH0b6VEUN9wZPOYvPHi+Lg==", - "path": "microsoft.aspnetcore.signalr/1.2.0", - "hashPath": "microsoft.aspnetcore.signalr.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Common/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FZeXIaoWqe145ZPdfiptwkw/sP1BX1UD0706GNBwwoaFiKsNbLEl/Trhj2+idlp3qbX1BEwkQesKNxkopVY5Xg==", - "path": "microsoft.aspnetcore.signalr.common/1.2.0", - "hashPath": "microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Core/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-eZTuMkSDw1uwjhLhJbMxgW2Cuyxfn0Kfqm8OBmqvuzE9Qc/VVzh8dGrAp2F9Pk7XKTDHmlhc5RTLcPPAZ5PSZw==", - "path": "microsoft.aspnetcore.signalr.core/1.2.0", - "hashPath": "microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hNvZ7kQxp5Udqd/IFWViU35bUJvi4xnNzjkF28HRvrdrS7JNsIASTvMqArP6HLQUc3j6nlUOeShNhVmgI1wzHg==", - "path": "microsoft.aspnetcore.signalr.protocols.json/1.2.0", - "hashPath": "microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.WebSockets/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-+T4zpnVPkIjvvkyhTH3WBJlTfqmTBRozvnMudAUDvcb4e+NrWf52q8BXh52rkCrBgX6Cudf6F/UhZwTowyBtKg==", - "path": "microsoft.aspnetcore.websockets/2.3.0", - "hashPath": "microsoft.aspnetcore.websockets.2.3.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.WebUtilities/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-trbXdWzoAEUVd0PE2yTopkz4kjZaAIA7xUWekd5uBw+7xE8Do/YOVTeb9d9koPTlbtZT539aESJjSLSqD8eYrQ==", - "path": "microsoft.aspnetcore.webutilities/2.3.0", - "hashPath": "microsoft.aspnetcore.webutilities.2.3.0.nupkg.sha512" - }, - "Microsoft.Bcl.AsyncInterfaces/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==", - "path": "microsoft.bcl.asyncinterfaces/6.0.0", - "hashPath": "microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.Analyzers/3.3.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-j/rOZtLMVJjrfLRlAMckJLPW/1rze9MT1yfWqSIbUPGRu1m1P0fuo9PmqapwsmePfGB5PJrudQLvmUOAMF0DqQ==", - "path": "microsoft.codeanalysis.analyzers/3.3.3", - "hashPath": "microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.Common/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lwAbIZNdnY0SUNoDmZHkVUwLO8UyNnyyh1t/4XsbFxi4Ounb3xszIYZaWhyj5ZjyfcwqwmtMbE7fUTVCqQEIdQ==", - "path": "microsoft.codeanalysis.common/4.5.0", - "hashPath": "microsoft.codeanalysis.common.4.5.0.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.CSharp/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-cM59oMKAOxvdv76bdmaKPy5hfj+oR+zxikWoueEB7CwTko7mt9sVKZI8Qxlov0C/LuKEG+WQwifepqL3vuTiBQ==", - "path": "microsoft.codeanalysis.csharp/4.5.0", - "hashPath": "microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-h74wTpmGOp4yS4hj+EvNzEiPgg/KVs2wmSfTZ81upJZOtPkJsVkgfsgtxxqmAeapjT/vLKfmYV0bS8n5MNVP+g==", - "path": "microsoft.codeanalysis.csharp.workspaces/4.5.0", - "hashPath": "microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-l4dDRmGELXG72XZaonnOeORyD/T5RpEu5LGHOUIhnv+MmUWDY/m1kWXGwtcgQ5CJ5ynkFiRnIYzTKXYjUs7rbw==", - "path": "microsoft.codeanalysis.workspaces.common/4.5.0", - "hashPath": "microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512" - }, - "Microsoft.CSharp/4.7.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", - "path": "microsoft.csharp/4.7.0", - "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" - }, - "Microsoft.EntityFrameworkCore/8.0.21": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WgCdRIS+hpq95zJo6oI9tvyQV/0EH9qJiD4FL60m+ghpHqHY6rY3D793HLe64yD85IHwumuX4hNJeHYeJEvM0g==", - "path": "microsoft.entityframeworkcore/8.0.21", - "hashPath": "microsoft.entityframeworkcore.8.0.21.nupkg.sha512" - }, - "Microsoft.EntityFrameworkCore.Abstractions/8.0.21": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1ZEXvRk8Rk+MfW06EmSYg7GQJZdOocJf61nezBmC2Kti0barUART0MHWgNzQox1lIzw9uv3A1HWJUjmPswCO6w==", - "path": "microsoft.entityframeworkcore.abstractions/8.0.21", - "hashPath": "microsoft.entityframeworkcore.abstractions.8.0.21.nupkg.sha512" - }, - "Microsoft.EntityFrameworkCore.Analyzers/8.0.21": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MGX1NkW44ju8yIzfg+ao/YITHyA23EThp8HfuNp5zaqihL+kNORVMUUnewBjakiCq0938bzFKu9HRmZsXS4b2g==", - "path": "microsoft.entityframeworkcore.analyzers/8.0.21", - "hashPath": "microsoft.entityframeworkcore.analyzers.8.0.21.nupkg.sha512" - }, - "Microsoft.EntityFrameworkCore.Design/8.0.21": { - "type": "package", - "serviceable": true, - "sha512": "sha512-q7EP42PSWPKkyztgsv1EmHAFjreN2fqww77L2Tjhp2dwfEjidgHjtX6yrZBDUbIFva5Y87xAdv9hQoBAUZLryw==", - "path": "microsoft.entityframeworkcore.design/8.0.21", - "hashPath": "microsoft.entityframeworkcore.design.8.0.21.nupkg.sha512" - }, - "Microsoft.EntityFrameworkCore.Relational/8.0.21": { - "type": "package", - "serviceable": true, - "sha512": "sha512-P1ywvCew/jKhbJApuIk2Sm4Ejq/5FOgEh2IooB48juABzGAlfUjW2kBlbevWO9mNK+sMPS2vnf+US8W0fEo46Q==", - "path": "microsoft.entityframeworkcore.relational/8.0.21", - "hashPath": "microsoft.entityframeworkcore.relational.8.0.21.nupkg.sha512" - }, - "Microsoft.EntityFrameworkCore.Tools/8.0.21": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Jmm3WtUyalpgfHEozcD+q0SmbKwMTVsZCz46ws/YHbePScu3PkNMmhn0iUFvi32djCJBCfOvXtQdnJFyXyW6LA==", - "path": "microsoft.entityframeworkcore.tools/8.0.21", - "hashPath": "microsoft.entityframeworkcore.tools.8.0.21.nupkg.sha512" - }, - "Microsoft.Extensions.ApiDescription.Server/6.0.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", - "path": "microsoft.extensions.apidescription.server/6.0.5", - "hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512" - }, - "Microsoft.Extensions.Caching.Abstractions/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WIRPDa/qoKHmJhTAPCO/zLu9kRLQ2Fd6HD5tzgdXJ3xGEVXDHP6FvakKJjynwKrVDld8H4G4tcbW53wuC/wxMQ==", - "path": "microsoft.extensions.caching.abstractions/10.0.2", - "hashPath": "microsoft.extensions.caching.abstractions.10.0.2.nupkg.sha512" - }, - "Microsoft.Extensions.Caching.Memory/8.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==", - "path": "microsoft.extensions.caching.memory/8.0.1", - "hashPath": "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WEx0VM6KVv4Bf6lwe4WQTd4EixIfw38ZU3u/7zMe+uC5fOyiANu8Os/qyiqv2iEsIJb296tbd2E2BTaWIha3Vg==", - "path": "microsoft.extensions.caching.stackexchangeredis/10.0.2", - "hashPath": "microsoft.extensions.caching.stackexchangeredis.10.0.2.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", - "path": "microsoft.extensions.configuration.abstractions/8.0.0", - "hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection/8.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==", - "path": "microsoft.extensions.dependencyinjection/8.0.1", - "hashPath": "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zOIurr59+kUf9vNcsUkCvKWZv+fPosUZXURZesYkJCvl0EzTc9F7maAO4Cd2WEV7ZJJ0AZrFQvuH6Npph9wdBw==", - "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.2", - "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyModel/8.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-mUBDZZRgZrSyFOsJ2qJJ9fXfqd/kXJwf3AiDoqLD9m6TjY5OO/vLNOb9fb4juC0487eq4hcGN/M2Rh/CKS7QYw==", - "path": "microsoft.extensions.dependencymodel/8.0.2", - "hashPath": "microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512" - }, - "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-elH2vmwNmsXuKmUeMQ4YW9ldXiF+gSGDgg1vORksob5POnpaI6caj1Hu8zaYbEuibhqCoWg0YRWDazBY3zjBfg==", - "path": "microsoft.extensions.diagnostics.abstractions/8.0.1", - "hashPath": "microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-P9SoBuVZhJPpALZmSq72aQEb9ryP67EdquaCZGXGrrcASTNHYdrUhnpgSwIipgM5oVC+dKpRXg5zxobmF9xr5g==", - "path": "microsoft.extensions.diagnostics.healthchecks/8.0.0", - "hashPath": "microsoft.extensions.diagnostics.healthchecks.8.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-AT2qqos3IgI09ok36Qag9T8bb6kHJ3uT9Q5ki6CySybFsK6/9JbvQAgAHf1pVEjST0/N4JaFaCbm40R5edffwg==", - "path": "microsoft.extensions.diagnostics.healthchecks.abstractions/8.0.0", - "hashPath": "microsoft.extensions.diagnostics.healthchecks.abstractions.8.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", - "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", - "hashPath": "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", - "path": "microsoft.extensions.hosting.abstractions/8.0.1", - "hashPath": "microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.Logging/8.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==", - "path": "microsoft.extensions.logging/8.0.1", - "hashPath": "microsoft.extensions.logging.8.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-RZkez/JjpnO+MZ6efKkSynN6ZztLpw3WbxNzjLCPBd97wWj1S9ZYPWi0nmT4kWBRa6atHsdM1ydGkUr8GudyDQ==", - "path": "microsoft.extensions.logging.abstractions/10.0.2", - "hashPath": "microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512" - }, - "Microsoft.Extensions.ObjectPool/8.0.11": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6ApKcHNJigXBfZa6XlDQ8feJpq7SG1ogZXg6M4FiNzgd6irs3LUAzo0Pfn4F2ZI9liGnH1XIBR/OtSbZmJAV5w==", - "path": "microsoft.extensions.objectpool/8.0.11", - "hashPath": "microsoft.extensions.objectpool.8.0.11.nupkg.sha512" - }, - "Microsoft.Extensions.Options/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1De2LJjmxdqopI5AYC5dIhoZQ79AR5ayywxNF1rXrXFtKQfbQOV9+n/IsZBa7qWlr0MqoGpW8+OY2v/57udZOA==", - "path": "microsoft.extensions.options/10.0.2", - "hashPath": "microsoft.extensions.options.10.0.2.nupkg.sha512" - }, - "Microsoft.Extensions.Primitives/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QmSiO+oLBEooGgB3i0GRXyeYRDHjllqt3k365jwfZlYWhvSHA3UL2NEVV5m8aZa041eIlblo6KMI5txvTMpTwA==", - "path": "microsoft.extensions.primitives/10.0.2", - "hashPath": "microsoft.extensions.primitives.10.0.2.nupkg.sha512" - }, - "Microsoft.IdentityModel.Abstractions/8.14.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==", - "path": "microsoft.identitymodel.abstractions/8.14.0", - "hashPath": "microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512" - }, - "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-4jOpiA4THdtpLyMdAb24dtj7+6GmvhOhxf5XHLYWmPKF8ApEnApal1UnJsKO4HxUWRXDA6C4WQVfYyqsRhpNpQ==", - "path": "microsoft.identitymodel.jsonwebtokens/8.14.0", - "hashPath": "microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512" - }, - "Microsoft.IdentityModel.Logging/8.14.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-eqqnemdW38CKZEHS6diA50BV94QICozDZEvSrsvN3SJXUFwVB9gy+/oz76gldP7nZliA16IglXjXTCTdmU/Ejg==", - "path": "microsoft.identitymodel.logging/8.14.0", - "hashPath": "microsoft.identitymodel.logging.8.14.0.nupkg.sha512" - }, - "Microsoft.IdentityModel.Protocols/7.1.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-SydLwMRFx6EHPWJ+N6+MVaoArN1Htt92b935O3RUWPY1yUF63zEjvd3lBu79eWdZUwedP8TN2I5V9T3nackvIQ==", - "path": "microsoft.identitymodel.protocols/7.1.2", - "hashPath": "microsoft.identitymodel.protocols.7.1.2.nupkg.sha512" - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6lHQoLXhnMQ42mGrfDkzbIOR3rzKM1W1tgTeMPLgLCqwwGw0d96xFi/UiX/fYsu7d6cD5MJiL3+4HuI8VU+sVQ==", - "path": "microsoft.identitymodel.protocols.openidconnect/7.1.2", - "hashPath": "microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512" - }, - "Microsoft.IdentityModel.Tokens/8.14.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lKIZiBiGd36k02TCdMHp1KlNWisyIvQxcYJvIkz7P4gSQ9zi8dgh6S5Grj8NNG7HWYIPfQymGyoZ6JB5d1Lo1g==", - "path": "microsoft.identitymodel.tokens/8.14.0", - "hashPath": "microsoft.identitymodel.tokens.8.14.0.nupkg.sha512" - }, - "Microsoft.Net.Http.Headers/2.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/M0wVg6tJUOHutWD3BMOUVZAioJVXe0tCpFiovzv0T9T12TBf4MnaHP0efO8TCr1a6O9RZgQeZ9Gdark8L9XdA==", - "path": "microsoft.net.http.headers/2.3.0", - "hashPath": "microsoft.net.http.headers.2.3.0.nupkg.sha512" - }, - "Microsoft.OpenApi/1.6.14": { - "type": "package", - "serviceable": true, - "sha512": "sha512-tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==", - "path": "microsoft.openapi/1.6.14", - "hashPath": "microsoft.openapi.1.6.14.nupkg.sha512" - }, - "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-EfYANhAWqmWKoLwN6bxoiPZSOfJSO9lzX+UrU6GVhLhPub1Hd+5f0zL0/tggIA6mRz6Ebw2xCNcIsM4k+7NPng==", - "path": "microsoft.visualstudio.azure.containers.tools.targets/1.22.1", - "hashPath": "microsoft.visualstudio.azure.containers.tools.targets.1.22.1.nupkg.sha512" - }, - "Mono.TextTemplating/2.2.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==", - "path": "mono.texttemplating/2.2.1", - "hashPath": "mono.texttemplating.2.2.1.nupkg.sha512" - }, - "MySqlConnector/2.3.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", - "path": "mysqlconnector/2.3.5", - "hashPath": "mysqlconnector.2.3.5.nupkg.sha512" - }, - "Newtonsoft.Json/13.0.4": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==", - "path": "newtonsoft.json/13.0.4", - "hashPath": "newtonsoft.json.13.0.4.nupkg.sha512" - }, - "Pipelines.Sockets.Unofficial/2.2.8": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==", - "path": "pipelines.sockets.unofficial/2.2.8", - "hashPath": "pipelines.sockets.unofficial.2.2.8.nupkg.sha512" - }, - "Pomelo.EntityFrameworkCore.MySql/8.0.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-gOHP6v/nFp5V/FgHqv9mZocGqCLGofihEX9dTbLhiXX3H7SJHmGX70GIPUpiqLT+1jIfDxg1PZh9MTUKuk7Kig==", - "path": "pomelo.entityframeworkcore.mysql/8.0.3", - "hashPath": "pomelo.entityframeworkcore.mysql.8.0.3.nupkg.sha512" - }, - "RabbitMQ.Client/7.1.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-y3c6ulgULScWthHw5PLM1ShHRLhxg0vCtzX/hh61gRgNecL3ZC3WoBW2HYHoXOVRqTl99Br9E7CZEytGZEsCyQ==", - "path": "rabbitmq.client/7.1.2", - "hashPath": "rabbitmq.client.7.1.2.nupkg.sha512" - }, - "RedLock.net/2.3.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-jlrALAArm4dCE292U3EtRoMnVKJ9M6sunbZn/oG5OuzlGtTpusXBfvDrnGWbgGDlWV027f5E9H5CiVnPxiq8+g==", - "path": "redlock.net/2.3.2", - "hashPath": "redlock.net.2.3.2.nupkg.sha512" - }, - "StackExchange.Redis/2.9.32": { - "type": "package", - "serviceable": true, - "sha512": "sha512-j5Rjbf7gWz5izrn0UWQy9RlQY4cQDPkwJfVqATnVsOa/+zzJrps12LOgacMsDl/Vit2f01cDiDkG/Rst8v2iGw==", - "path": "stackexchange.redis/2.9.32", - "hashPath": "stackexchange.redis.2.9.32.nupkg.sha512" - }, - "Swashbuckle.AspNetCore/6.6.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-+NB4UYVYN6AhDSjW0IJAd1AGD8V33gemFNLPaxKTtPkHB+HaKAKf9MGAEUPivEWvqeQfcKIw8lJaHq6LHljRuw==", - "path": "swashbuckle.aspnetcore/6.6.2", - "hashPath": "swashbuckle.aspnetcore.6.6.2.nupkg.sha512" - }, - "Swashbuckle.AspNetCore.Swagger/6.6.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ovgPTSYX83UrQUWiS5vzDcJ8TEX1MAxBgDFMK45rC24MorHEPQlZAHlaXj/yth4Zf6xcktpUgTEBvffRQVwDKA==", - "path": "swashbuckle.aspnetcore.swagger/6.6.2", - "hashPath": "swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512" - }, - "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zv4ikn4AT1VYuOsDCpktLq4QDq08e7Utzbir86M5/ZkRaLXbCPF11E1/vTmOiDzRTl0zTZINQU2qLKwTcHgfrA==", - "path": "swashbuckle.aspnetcore.swaggergen/6.6.2", - "hashPath": "swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512" - }, - "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-mBBb+/8Hm2Q3Wygag+hu2jj69tZW5psuv0vMRXY07Wy+Rrj40vRP8ZTbKBhs91r45/HXT4aY4z0iSBYx1h6JvA==", - "path": "swashbuckle.aspnetcore.swaggerui/6.6.2", - "hashPath": "swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512" - }, - "System.Buffers/4.6.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lN6tZi7Q46zFzAbRYXTIvfXcyvQQgxnY7Xm6C6xQ9784dEL1amjM6S6Iw4ZpsvesAKnRVsM4scrDQaDqSClkjA==", - "path": "system.buffers/4.6.0", - "hashPath": "system.buffers.4.6.0.nupkg.sha512" - }, - "System.CodeDom/4.4.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==", - "path": "system.codedom/4.4.0", - "hashPath": "system.codedom.4.4.0.nupkg.sha512" - }, - "System.Collections.Immutable/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==", - "path": "system.collections.immutable/6.0.0", - "hashPath": "system.collections.immutable.6.0.0.nupkg.sha512" - }, - "System.Composition/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==", - "path": "system.composition/6.0.0", - "hashPath": "system.composition.6.0.0.nupkg.sha512" - }, - "System.Composition.AttributedModel/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WK1nSDLByK/4VoC7fkNiFuTVEiperuCN/Hyn+VN30R+W2ijO1d0Z2Qm0ScEl9xkSn1G2MyapJi8xpf4R8WRa/w==", - "path": "system.composition.attributedmodel/6.0.0", - "hashPath": "system.composition.attributedmodel.6.0.0.nupkg.sha512" - }, - "System.Composition.Convention/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XYi4lPRdu5bM4JVJ3/UIHAiG6V6lWWUlkhB9ab4IOq0FrRsp0F4wTyV4Dj+Ds+efoXJ3qbLqlvaUozDO7OLeXA==", - "path": "system.composition.convention/6.0.0", - "hashPath": "system.composition.convention.6.0.0.nupkg.sha512" - }, - "System.Composition.Hosting/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-w/wXjj7kvxuHPLdzZ0PAUt++qJl03t7lENmb2Oev0n3zbxyNULbWBlnd5J5WUMMv15kg5o+/TCZFb6lSwfaUUQ==", - "path": "system.composition.hosting/6.0.0", - "hashPath": "system.composition.hosting.6.0.0.nupkg.sha512" - }, - "System.Composition.Runtime/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-qkRH/YBaMPTnzxrS5RDk1juvqed4A6HOD/CwRcDGyPpYps1J27waBddiiq1y93jk2ZZ9wuA/kynM+NO0kb3PKg==", - "path": "system.composition.runtime/6.0.0", - "hashPath": "system.composition.runtime.6.0.0.nupkg.sha512" - }, - "System.Composition.TypedParts/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-iUR1eHrL8Cwd82neQCJ00MpwNIBs4NZgXzrPqx8NJf/k4+mwBO0XCRmHYJT4OLSwDDqh5nBLJWkz5cROnrGhRA==", - "path": "system.composition.typedparts/6.0.0", - "hashPath": "system.composition.typedparts.6.0.0.nupkg.sha512" - }, - "System.Diagnostics.DiagnosticSource/10.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lYWBy8fKkJHaRcOuw30d67PrtVjR5754sz5Wl76s8P+vJ9FSThh9b7LIcTSODx1LY7NB3Srvg+JMnzd67qNZOw==", - "path": "system.diagnostics.diagnosticsource/10.0.2", - "hashPath": "system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512" - }, - "System.IdentityModel.Tokens.Jwt/8.14.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-EYGgN/S+HK7S6F3GaaPLFAfK0UzMrkXFyWCvXpQWFYmZln3dqtbyIO7VuTM/iIIPMzkelg8ZLlBPvMhxj6nOAA==", - "path": "system.identitymodel.tokens.jwt/8.14.0", - "hashPath": "system.identitymodel.tokens.jwt.8.14.0.nupkg.sha512" - }, - "System.IO.Pipelines/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", - "path": "system.io.pipelines/8.0.0", - "hashPath": "system.io.pipelines.8.0.0.nupkg.sha512" - }, - "System.Net.WebSockets.WebSocketProtocol/5.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-cVTT/Zw4JuUeX8H0tdWii0OMHsA5MY2PaFYOq/Hstw0jk479jZ+f8baCicWFNzJlCPWAe0uoNCELoB5eNmaMqA==", - "path": "system.net.websockets.websocketprotocol/5.1.0", - "hashPath": "system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512" - }, - "System.Reflection.Emit/4.7.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", - "path": "system.reflection.emit/4.7.0", - "hashPath": "system.reflection.emit.4.7.0.nupkg.sha512" - }, - "System.Reflection.Metadata/6.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==", - "path": "system.reflection.metadata/6.0.1", - "hashPath": "system.reflection.metadata.6.0.1.nupkg.sha512" - }, - "System.Runtime.CompilerServices.Unsafe/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", - "path": "system.runtime.compilerservices.unsafe/6.0.0", - "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512" - }, - "System.Text.Encoding.CodePages/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", - "path": "system.text.encoding.codepages/6.0.0", - "hashPath": "system.text.encoding.codepages.6.0.0.nupkg.sha512" - }, - "System.Text.Encodings.Web/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", - "path": "system.text.encodings.web/8.0.0", - "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" - }, - "System.Threading.Channels/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==", - "path": "system.threading.channels/8.0.0", - "hashPath": "system.threading.channels.8.0.0.nupkg.sha512" - }, - "System.Threading.RateLimiting/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==", - "path": "system.threading.ratelimiting/8.0.0", - "hashPath": "system.threading.ratelimiting.8.0.0.nupkg.sha512" - } - } +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "IM_API/1.0.0": { + "dependencies": { + "AutoMapper": "12.0.1", + "AutoMapper.Extensions.Microsoft.DependencyInjection": "12.0.0", + "MassTransit.RabbitMQ": "8.5.5", + "Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.21", + "Microsoft.AspNetCore.SignalR": "1.2.0", + "Microsoft.EntityFrameworkCore.Design": "8.0.21", + "Microsoft.EntityFrameworkCore.Tools": "8.0.21", + "Microsoft.Extensions.Caching.StackExchangeRedis": "10.0.2", + "Microsoft.VisualStudio.Azure.Containers.Tools.Targets": "1.22.1", + "Newtonsoft.Json": "13.0.4", + "Pomelo.EntityFrameworkCore.MySql": "8.0.3", + "RedLock.net": "2.3.2", + "StackExchange.Redis": "2.9.32", + "Swashbuckle.AspNetCore": "6.6.2", + "System.IdentityModel.Tokens.Jwt": "8.14.0" + }, + "runtime": { + "IM_API.dll": {} + } + }, + "AutoMapper/12.0.1": { + "dependencies": { + "Microsoft.CSharp": "4.7.0" + }, + "runtime": { + "lib/netstandard2.1/AutoMapper.dll": { + "assemblyVersion": "12.0.0.0", + "fileVersion": "12.0.1.0" + } + } + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { + "dependencies": { + "AutoMapper": "12.0.1", + "Microsoft.Extensions.Options": "10.0.2" + }, + "runtime": { + "lib/netstandard2.1/AutoMapper.Extensions.Microsoft.DependencyInjection.dll": { + "assemblyVersion": "12.0.0.0", + "fileVersion": "12.0.0.0" + } + } + }, + "Humanizer.Core/2.14.1": { + "runtime": { + "lib/net6.0/Humanizer.dll": { + "assemblyVersion": "2.14.0.0", + "fileVersion": "2.14.1.48190" + } + } + }, + "MassTransit/8.5.5": { + "dependencies": { + "MassTransit.Abstractions": "8.5.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + }, + "runtime": { + "lib/net8.0/MassTransit.dll": { + "assemblyVersion": "8.5.5.0", + "fileVersion": "8.5.5.0" + } + } + }, + "MassTransit.Abstractions/8.5.5": { + "runtime": { + "lib/net8.0/MassTransit.Abstractions.dll": { + "assemblyVersion": "8.5.5.0", + "fileVersion": "8.5.5.0" + } + } + }, + "MassTransit.RabbitMQ/8.5.5": { + "dependencies": { + "MassTransit": "8.5.5", + "RabbitMQ.Client": "7.1.2" + }, + "runtime": { + "lib/net8.0/MassTransit.RabbitMqTransport.dll": { + "assemblyVersion": "8.5.5.0", + "fileVersion": "8.5.5.0" + } + } + }, + "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + } + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.1.2" + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { + "assemblyVersion": "8.0.21.0", + "fileVersion": "8.0.2125.47515" + } + } + }, + "Microsoft.AspNetCore.Authorization/2.3.0": { + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + } + }, + "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Authentication.Abstractions": "2.3.0", + "Microsoft.AspNetCore.Authorization": "2.3.0" + } + }, + "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "2.3.0", + "System.IO.Pipelines": "8.0.0" + } + }, + "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.3.0", + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" + } + }, + "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "2.3.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + } + }, + "Microsoft.AspNetCore.Http/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.AspNetCore.WebUtilities": "2.3.0", + "Microsoft.Extensions.ObjectPool": "8.0.11", + "Microsoft.Extensions.Options": "10.0.2", + "Microsoft.Net.Http.Headers": "2.3.0" + } + }, + "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "2.3.0", + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Microsoft.AspNetCore.Http.Connections/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Authorization.Policy": "2.3.0", + "Microsoft.AspNetCore.Hosting.Abstractions": "2.3.0", + "Microsoft.AspNetCore.Http": "2.3.0", + "Microsoft.AspNetCore.Http.Connections.Common": "1.2.0", + "Microsoft.AspNetCore.Routing": "2.3.0", + "Microsoft.AspNetCore.WebSockets": "2.3.0", + "Newtonsoft.Json": "13.0.4", + "System.Net.WebSockets.WebSocketProtocol": "5.1.0" + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", + "Newtonsoft.Json": "13.0.4", + "System.Buffers": "4.6.0", + "System.IO.Pipelines": "8.0.0" + } + }, + "Microsoft.AspNetCore.Http.Extensions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Net.Http.Headers": "2.3.0", + "System.Buffers": "4.6.0" + } + }, + "Microsoft.AspNetCore.Http.Features/2.3.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.2" + } + }, + "Microsoft.AspNetCore.Routing/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Extensions": "2.3.0", + "Microsoft.AspNetCore.Routing.Abstractions": "2.3.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.ObjectPool": "8.0.11", + "Microsoft.Extensions.Options": "10.0.2" + } + }, + "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0" + } + }, + "Microsoft.AspNetCore.SignalR/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections": "1.2.0", + "Microsoft.AspNetCore.SignalR.Core": "1.2.0", + "Microsoft.AspNetCore.WebSockets": "2.3.0", + "System.IO.Pipelines": "8.0.0" + } + }, + "Microsoft.AspNetCore.SignalR.Common/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", + "Microsoft.Extensions.Options": "10.0.2", + "Newtonsoft.Json": "13.0.4", + "System.Buffers": "4.6.0" + } + }, + "Microsoft.AspNetCore.SignalR.Core/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Authorization": "2.3.0", + "Microsoft.AspNetCore.SignalR.Common": "1.2.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "1.2.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "System.IO.Pipelines": "8.0.0", + "System.Reflection.Emit": "4.7.0", + "System.Threading.Channels": "8.0.0" + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "1.2.0", + "Newtonsoft.Json": "13.0.4", + "System.IO.Pipelines": "8.0.0" + } + }, + "Microsoft.AspNetCore.WebSockets/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Extensions": "2.3.0", + "Microsoft.Extensions.Options": "10.0.2", + "System.Net.WebSockets.WebSocketProtocol": "5.1.0" + } + }, + "Microsoft.AspNetCore.WebUtilities/2.3.0": { + "dependencies": { + "Microsoft.Net.Http.Headers": "2.3.0", + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Microsoft.Bcl.AsyncInterfaces/6.0.0": { + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.3": {}, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.3", + "System.Collections.Immutable": "6.0.0", + "System.Reflection.Metadata": "6.0.1", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "6.0.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "4.5.0.0", + "fileVersion": "4.500.23.10905" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Common": "4.5.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "4.5.0.0", + "fileVersion": "4.500.23.10905" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp": "4.5.0", + "Microsoft.CodeAnalysis.Common": "4.5.0", + "Microsoft.CodeAnalysis.Workspaces.Common": "4.5.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { + "assemblyVersion": "4.5.0.0", + "fileVersion": "4.500.23.10905" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.CodeAnalysis.Common": "4.5.0", + "System.Composition": "6.0.0", + "System.IO.Pipelines": "8.0.0", + "System.Threading.Channels": "8.0.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": { + "assemblyVersion": "4.5.0.0", + "fileVersion": "4.500.23.10905" + } + }, + "resources": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "Microsoft.EntityFrameworkCore/8.0.21": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "8.0.21", + "Microsoft.EntityFrameworkCore.Analyzers": "8.0.21", + "Microsoft.Extensions.Caching.Memory": "8.0.1", + "Microsoft.Extensions.Logging": "8.0.1" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "assemblyVersion": "8.0.21.0", + "fileVersion": "8.0.2125.47512" + } + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.21": { + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "assemblyVersion": "8.0.21.0", + "fileVersion": "8.0.2125.47512" + } + } + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.21": {}, + "Microsoft.EntityFrameworkCore.Design/8.0.21": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "4.5.0", + "Microsoft.EntityFrameworkCore.Relational": "8.0.21", + "Microsoft.Extensions.DependencyModel": "8.0.2", + "Mono.TextTemplating": "2.2.1" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": { + "assemblyVersion": "8.0.21.0", + "fileVersion": "8.0.2125.47512" + } + } + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.21": { + "dependencies": { + "Microsoft.EntityFrameworkCore": "8.0.21", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "assemblyVersion": "8.0.21.0", + "fileVersion": "8.0.2125.47512" + } + } + }, + "Microsoft.EntityFrameworkCore.Tools/8.0.21": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Design": "8.0.21" + } + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": {}, + "Microsoft.Extensions.Caching.Abstractions/10.0.2": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.2", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2", + "Microsoft.Extensions.Primitives": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1024.46610" + } + } + }, + "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2", + "StackExchange.Redis": "2.9.32" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll": { + "assemblyVersion": "10.0.2.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.2" + } + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1024.46610" + } + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.Extensions.DependencyModel/8.0.2": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { + "assemblyVersion": "8.0.0.2", + "fileVersion": "8.0.1024.46610" + } + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1024.46610" + } + } + }, + "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + } + }, + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": {}, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.2" + } + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1024.46610" + } + } + }, + "Microsoft.Extensions.Logging/8.0.1": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1024.46610" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.2": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "System.Diagnostics.DiagnosticSource": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.Extensions.ObjectPool/8.0.11": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.ObjectPool.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1124.52116" + } + } + }, + "Microsoft.Extensions.Options/10.0.2": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Primitives": "10.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.Extensions.Primitives/10.0.2": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "Microsoft.IdentityModel.Abstractions/8.14.0": { + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "assemblyVersion": "8.14.0.0", + "fileVersion": "8.14.0.60815" + } + } + }, + "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.14.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "assemblyVersion": "8.14.0.0", + "fileVersion": "8.14.0.60815" + } + } + }, + "Microsoft.IdentityModel.Logging/8.14.0": { + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "assemblyVersion": "8.14.0.0", + "fileVersion": "8.14.0.60815" + } + } + }, + "Microsoft.IdentityModel.Protocols/7.1.2": { + "dependencies": { + "Microsoft.IdentityModel.Logging": "8.14.0", + "Microsoft.IdentityModel.Tokens": "8.14.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { + "assemblyVersion": "7.1.2.0", + "fileVersion": "7.1.2.41121" + } + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { + "dependencies": { + "Microsoft.IdentityModel.Protocols": "7.1.2", + "System.IdentityModel.Tokens.Jwt": "8.14.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { + "assemblyVersion": "7.1.2.0", + "fileVersion": "7.1.2.41121" + } + } + }, + "Microsoft.IdentityModel.Tokens/8.14.0": { + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.IdentityModel.Logging": "8.14.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "assemblyVersion": "8.14.0.0", + "fileVersion": "8.14.0.60815" + } + } + }, + "Microsoft.Net.Http.Headers/2.3.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.2", + "System.Buffers": "4.6.0" + } + }, + "Microsoft.OpenApi/1.6.14": { + "runtime": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "assemblyVersion": "1.6.14.0", + "fileVersion": "1.6.14.0" + } + } + }, + "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": {}, + "Mono.TextTemplating/2.2.1": { + "dependencies": { + "System.CodeDom": "4.4.0" + }, + "runtime": { + "lib/netstandard2.0/Mono.TextTemplating.dll": { + "assemblyVersion": "2.2.0.0", + "fileVersion": "2.2.1.1" + } + } + }, + "MySqlConnector/2.3.5": { + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.2" + }, + "runtime": { + "lib/net8.0/MySqlConnector.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.3.5.0" + } + } + }, + "Newtonsoft.Json/13.0.4": { + "runtime": { + "lib/net6.0/Newtonsoft.Json.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.4.30916" + } + } + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "dependencies": { + "System.IO.Pipelines": "8.0.0" + }, + "runtime": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "2.2.8.1080" + } + } + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.3": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "8.0.21", + "MySqlConnector": "2.3.5" + }, + "runtime": { + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { + "assemblyVersion": "8.0.3.0", + "fileVersion": "8.0.3.0" + } + } + }, + "RabbitMQ.Client/7.1.2": { + "dependencies": { + "System.IO.Pipelines": "8.0.0", + "System.Threading.RateLimiting": "8.0.0" + }, + "runtime": { + "lib/net8.0/RabbitMQ.Client.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "7.1.2.0" + } + } + }, + "RedLock.net/2.3.2": { + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "StackExchange.Redis": "2.9.32" + }, + "runtime": { + "lib/netstandard2.0/RedLockNet.Abstractions.dll": { + "assemblyVersion": "2.3.2.0", + "fileVersion": "2.3.2.0" + }, + "lib/netstandard2.0/RedLockNet.SERedis.dll": { + "assemblyVersion": "2.3.2.0", + "fileVersion": "2.3.2.0" + } + } + }, + "StackExchange.Redis/2.9.32": { + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Pipelines.Sockets.Unofficial": "2.2.8" + }, + "runtime": { + "lib/net8.0/StackExchange.Redis.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.9.32.54708" + } + } + }, + "Swashbuckle.AspNetCore/6.6.2": { + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "6.0.5", + "Swashbuckle.AspNetCore.Swagger": "6.6.2", + "Swashbuckle.AspNetCore.SwaggerGen": "6.6.2", + "Swashbuckle.AspNetCore.SwaggerUI": "6.6.2" + } + }, + "Swashbuckle.AspNetCore.Swagger/6.6.2": { + "dependencies": { + "Microsoft.OpenApi": "1.6.14" + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "assemblyVersion": "6.6.2.0", + "fileVersion": "6.6.2.401" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "6.6.2" + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "assemblyVersion": "6.6.2.0", + "fileVersion": "6.6.2.401" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "assemblyVersion": "6.6.2.0", + "fileVersion": "6.6.2.401" + } + } + }, + "System.Buffers/4.6.0": {}, + "System.CodeDom/4.4.0": { + "runtime": { + "lib/netstandard2.0/System.CodeDom.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "4.6.25519.3" + } + } + }, + "System.Collections.Immutable/6.0.0": { + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Composition/6.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Convention": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0", + "System.Composition.TypedParts": "6.0.0" + } + }, + "System.Composition.AttributedModel/6.0.0": { + "runtime": { + "lib/net6.0/System.Composition.AttributedModel.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Composition.Convention/6.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "6.0.0" + }, + "runtime": { + "lib/net6.0/System.Composition.Convention.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Composition.Hosting/6.0.0": { + "dependencies": { + "System.Composition.Runtime": "6.0.0" + }, + "runtime": { + "lib/net6.0/System.Composition.Hosting.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Composition.Runtime/6.0.0": { + "runtime": { + "lib/net6.0/System.Composition.Runtime.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Composition.TypedParts/6.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0" + }, + "runtime": { + "lib/net6.0/System.Composition.TypedParts.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Diagnostics.DiagnosticSource/10.0.2": { + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.225.61305" + } + } + }, + "System.IdentityModel.Tokens.Jwt/8.14.0": { + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "8.14.0", + "Microsoft.IdentityModel.Tokens": "8.14.0" + }, + "runtime": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "assemblyVersion": "8.14.0.0", + "fileVersion": "8.14.0.60815" + } + } + }, + "System.IO.Pipelines/8.0.0": {}, + "System.Net.WebSockets.WebSocketProtocol/5.1.0": { + "runtime": { + "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": { + "assemblyVersion": "5.1.0.0", + "fileVersion": "5.100.24.56208" + } + } + }, + "System.Reflection.Emit/4.7.0": {}, + "System.Reflection.Metadata/6.0.1": { + "dependencies": { + "System.Collections.Immutable": "6.0.0" + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": {}, + "System.Text.Encoding.CodePages/6.0.0": { + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Threading.Channels/8.0.0": {}, + "System.Threading.RateLimiting/8.0.0": {} + } + }, + "libraries": { + "IM_API/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "AutoMapper/12.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hvV62vl6Hp/WfQ24yzo3Co9+OPl8wH8hApwVtgWpiAynVJkUcs7xvehnSftawL8Pe8FrPffBRM3hwzLQqWDNjA==", + "path": "automapper/12.0.1", + "hashPath": "automapper.12.0.1.nupkg.sha512" + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XCJ4E3oKrbRl1qY9Mr+7uyC0xZj1+bqQjmQRWTiTKiVuuXTny+7YFWHi20tPjwkMukLbicN6yGlDy5PZ4wyi1w==", + "path": "automapper.extensions.microsoft.dependencyinjection/12.0.0", + "hashPath": "automapper.extensions.microsoft.dependencyinjection.12.0.0.nupkg.sha512" + }, + "Humanizer.Core/2.14.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==", + "path": "humanizer.core/2.14.1", + "hashPath": "humanizer.core.2.14.1.nupkg.sha512" + }, + "MassTransit/8.5.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bSg8k5q+rP1s+dIGXLLbctqDGdIkfDjdxwNWtCUH7xNCN9ZuM7mqSPQPIFgaYIi34e81m4FqAqo4CAHuWPkhRA==", + "path": "masstransit/8.5.5", + "hashPath": "masstransit.8.5.5.nupkg.sha512" + }, + "MassTransit.Abstractions/8.5.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0mn2Ay17dD6z5tgSLjbVRlldSbL9iowzFEfVgVfBXVG5ttz9dSWeR4TrdD6pqH93GWXp4CvSmF8i1HqxLX7DZw==", + "path": "masstransit.abstractions/8.5.5", + "hashPath": "masstransit.abstractions.8.5.5.nupkg.sha512" + }, + "MassTransit.RabbitMQ/8.5.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UxWn4o90YVMF9PBkJeoskOFPneh6YtnI1fLJHtvZiSAG0eoiRrWPGa+6FQCvjkQ/ljCKfjzok2eGZc/vmNZ01A==", + "path": "masstransit.rabbitmq/8.5.5", + "hashPath": "masstransit.rabbitmq.8.5.5.nupkg.sha512" + }, + "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ve6uvLwKNRkfnO/QeN9M8eUJ49lCnWv/6/9p6iTEuiI6Rtsz+myaBAjdMzLuTViQY032xbTF5AdZF5BJzJJyXQ==", + "path": "microsoft.aspnetcore.authentication.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.authentication.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZuUpJ4DvmVArmTlyGGg+b9IdKgd8Kw0SmEzhjy4dQw8R6rxfNqCXfGvGm3ld7xlrgthJFou/le9tadsSyjFLuw==", + "path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.21", + "hashPath": "microsoft.aspnetcore.authentication.jwtbearer.8.0.21.nupkg.sha512" + }, + "Microsoft.AspNetCore.Authorization/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2/aBgLqBXva/+w8pzRNY8ET43Gi+dr1gv/7ySfbsh23lTK6IAgID5MGUEa1hreNIF+0XpW4tX7QwVe70+YvaPg==", + "path": "microsoft.aspnetcore.authorization/2.3.0", + "hashPath": "microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vn31uQ1dA1MIV2WNNDOOOm88V5KgR9esfi0LyQ6eVaGq2h0Yw+R29f5A6qUNJt+RccS3qkYayylAy9tP1wV+7Q==", + "path": "microsoft.aspnetcore.authorization.policy/2.3.0", + "hashPath": "microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ULFSa+/L+WiAHVlIFHyg0OmHChU9Hx+K+xnt0hbIU5XmT1EGy0pNDx23QAzDtAy9jxQrTG6MX0MdvMeU4D4c7w==", + "path": "microsoft.aspnetcore.connections.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4ivq53W2k6Nj4eez9wc81ytfGj6HR1NaZJCpOrvghJo9zHuQF57PLhPoQH5ItyCpHXnrN/y7yJDUm+TGYzrx0w==", + "path": "microsoft.aspnetcore.hosting.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.hosting.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-F5iHx7odAbFKBV1DNPDkFFcVmD5Tk7rk+tYm3LMQxHEFFdjlg5QcYb5XhHAefl5YaaPeG6ad+/ck8kSG3/D6kw==", + "path": "microsoft.aspnetcore.hosting.server.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.hosting.server.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-I9azEG2tZ4DDHAFgv+N38e6Yhttvf+QjE2j2UYyCACE7Swm5/0uoihCMWZ87oOZYeqiEFSxbsfpT71OYHe2tpw==", + "path": "microsoft.aspnetcore.http/2.3.0", + "hashPath": "microsoft.aspnetcore.http.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-39r9PPrjA6s0blyFv5qarckjNkaHRA5B+3b53ybuGGNTXEj1/DStQJ4NWjFL6QTRQpL9zt7nDyKxZdJOlcnq+Q==", + "path": "microsoft.aspnetcore.http.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.http.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VYMCOLvdT0y3O9lk4jUuIs8+re7u5+i+ka6ZZ6fIzSJ94c/JeMnAOOg39EB2i4crPXvLoiSdzKWlNPJgTbCZ2g==", + "path": "microsoft.aspnetcore.http.connections/1.2.0", + "hashPath": "microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yUA7eg6kv7Wbz5TCW4PqS5/kYE5VxUIEDvoxjw4p1RwS2LGm84F9fBtM0mD6wrRfiv1NUyJ7WBjn3PWd/ccO+w==", + "path": "microsoft.aspnetcore.http.connections.common/1.2.0", + "hashPath": "microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Extensions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-EY2u/wFF5jsYwGXXswfQWrSsFPmiXsniAlUWo3rv/MGYf99ZFsENDnZcQP6W3c/+xQmQXq0NauzQ7jyy+o1LDQ==", + "path": "microsoft.aspnetcore.http.extensions/2.3.0", + "hashPath": "microsoft.aspnetcore.http.extensions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Features/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-f10WUgcsKqrkmnz6gt8HeZ7kyKjYN30PO7cSic1lPtH7paPtnQqXPOveul/SIPI43PhRD4trttg4ywnrEmmJpA==", + "path": "microsoft.aspnetcore.http.features/2.3.0", + "hashPath": "microsoft.aspnetcore.http.features.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Routing/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-no5/VC0CAQuT4PK4rp2K5fqwuSfzr2mdB6m1XNfWVhHnwzpRQzKAu9flChiT/JTLKwVI0Vq2MSmSW2OFMDCNXg==", + "path": "microsoft.aspnetcore.routing/2.3.0", + "hashPath": "microsoft.aspnetcore.routing.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZkFpUrSmp6TocxZLBEX3IBv5dPMbQuMs6L/BPl0WRfn32UVOtNYJQ0bLdh3cL9LMV0rmTW/5R0w8CBYxr0AOUw==", + "path": "microsoft.aspnetcore.routing.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XoCcsOTdtBiXyOzUtpbCl0IaqMOYjnr+6dbDxvUCFn7NR6bu7CwrlQ3oQzkltTwDZH0b6VEUN9wZPOYvPHi+Lg==", + "path": "microsoft.aspnetcore.signalr/1.2.0", + "hashPath": "microsoft.aspnetcore.signalr.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Common/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FZeXIaoWqe145ZPdfiptwkw/sP1BX1UD0706GNBwwoaFiKsNbLEl/Trhj2+idlp3qbX1BEwkQesKNxkopVY5Xg==", + "path": "microsoft.aspnetcore.signalr.common/1.2.0", + "hashPath": "microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Core/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eZTuMkSDw1uwjhLhJbMxgW2Cuyxfn0Kfqm8OBmqvuzE9Qc/VVzh8dGrAp2F9Pk7XKTDHmlhc5RTLcPPAZ5PSZw==", + "path": "microsoft.aspnetcore.signalr.core/1.2.0", + "hashPath": "microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hNvZ7kQxp5Udqd/IFWViU35bUJvi4xnNzjkF28HRvrdrS7JNsIASTvMqArP6HLQUc3j6nlUOeShNhVmgI1wzHg==", + "path": "microsoft.aspnetcore.signalr.protocols.json/1.2.0", + "hashPath": "microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.WebSockets/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+T4zpnVPkIjvvkyhTH3WBJlTfqmTBRozvnMudAUDvcb4e+NrWf52q8BXh52rkCrBgX6Cudf6F/UhZwTowyBtKg==", + "path": "microsoft.aspnetcore.websockets/2.3.0", + "hashPath": "microsoft.aspnetcore.websockets.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.WebUtilities/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-trbXdWzoAEUVd0PE2yTopkz4kjZaAIA7xUWekd5uBw+7xE8Do/YOVTeb9d9koPTlbtZT539aESJjSLSqD8eYrQ==", + "path": "microsoft.aspnetcore.webutilities/2.3.0", + "hashPath": "microsoft.aspnetcore.webutilities.2.3.0.nupkg.sha512" + }, + "Microsoft.Bcl.AsyncInterfaces/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==", + "path": "microsoft.bcl.asyncinterfaces/6.0.0", + "hashPath": "microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-j/rOZtLMVJjrfLRlAMckJLPW/1rze9MT1yfWqSIbUPGRu1m1P0fuo9PmqapwsmePfGB5PJrudQLvmUOAMF0DqQ==", + "path": "microsoft.codeanalysis.analyzers/3.3.3", + "hashPath": "microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lwAbIZNdnY0SUNoDmZHkVUwLO8UyNnyyh1t/4XsbFxi4Ounb3xszIYZaWhyj5ZjyfcwqwmtMbE7fUTVCqQEIdQ==", + "path": "microsoft.codeanalysis.common/4.5.0", + "hashPath": "microsoft.codeanalysis.common.4.5.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cM59oMKAOxvdv76bdmaKPy5hfj+oR+zxikWoueEB7CwTko7mt9sVKZI8Qxlov0C/LuKEG+WQwifepqL3vuTiBQ==", + "path": "microsoft.codeanalysis.csharp/4.5.0", + "hashPath": "microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-h74wTpmGOp4yS4hj+EvNzEiPgg/KVs2wmSfTZ81upJZOtPkJsVkgfsgtxxqmAeapjT/vLKfmYV0bS8n5MNVP+g==", + "path": "microsoft.codeanalysis.csharp.workspaces/4.5.0", + "hashPath": "microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-l4dDRmGELXG72XZaonnOeORyD/T5RpEu5LGHOUIhnv+MmUWDY/m1kWXGwtcgQ5CJ5ynkFiRnIYzTKXYjUs7rbw==", + "path": "microsoft.codeanalysis.workspaces.common/4.5.0", + "hashPath": "microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore/8.0.21": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WgCdRIS+hpq95zJo6oI9tvyQV/0EH9qJiD4FL60m+ghpHqHY6rY3D793HLe64yD85IHwumuX4hNJeHYeJEvM0g==", + "path": "microsoft.entityframeworkcore/8.0.21", + "hashPath": "microsoft.entityframeworkcore.8.0.21.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.21": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1ZEXvRk8Rk+MfW06EmSYg7GQJZdOocJf61nezBmC2Kti0barUART0MHWgNzQox1lIzw9uv3A1HWJUjmPswCO6w==", + "path": "microsoft.entityframeworkcore.abstractions/8.0.21", + "hashPath": "microsoft.entityframeworkcore.abstractions.8.0.21.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.21": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MGX1NkW44ju8yIzfg+ao/YITHyA23EThp8HfuNp5zaqihL+kNORVMUUnewBjakiCq0938bzFKu9HRmZsXS4b2g==", + "path": "microsoft.entityframeworkcore.analyzers/8.0.21", + "hashPath": "microsoft.entityframeworkcore.analyzers.8.0.21.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Design/8.0.21": { + "type": "package", + "serviceable": true, + "sha512": "sha512-q7EP42PSWPKkyztgsv1EmHAFjreN2fqww77L2Tjhp2dwfEjidgHjtX6yrZBDUbIFva5Y87xAdv9hQoBAUZLryw==", + "path": "microsoft.entityframeworkcore.design/8.0.21", + "hashPath": "microsoft.entityframeworkcore.design.8.0.21.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.21": { + "type": "package", + "serviceable": true, + "sha512": "sha512-P1ywvCew/jKhbJApuIk2Sm4Ejq/5FOgEh2IooB48juABzGAlfUjW2kBlbevWO9mNK+sMPS2vnf+US8W0fEo46Q==", + "path": "microsoft.entityframeworkcore.relational/8.0.21", + "hashPath": "microsoft.entityframeworkcore.relational.8.0.21.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Tools/8.0.21": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Jmm3WtUyalpgfHEozcD+q0SmbKwMTVsZCz46ws/YHbePScu3PkNMmhn0iUFvi32djCJBCfOvXtQdnJFyXyW6LA==", + "path": "microsoft.entityframeworkcore.tools/8.0.21", + "hashPath": "microsoft.entityframeworkcore.tools.8.0.21.nupkg.sha512" + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", + "path": "microsoft.extensions.apidescription.server/6.0.5", + "hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.Abstractions/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WIRPDa/qoKHmJhTAPCO/zLu9kRLQ2Fd6HD5tzgdXJ3xGEVXDHP6FvakKJjynwKrVDld8H4G4tcbW53wuC/wxMQ==", + "path": "microsoft.extensions.caching.abstractions/10.0.2", + "hashPath": "microsoft.extensions.caching.abstractions.10.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==", + "path": "microsoft.extensions.caching.memory/8.0.1", + "hashPath": "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512" + }, + "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WEx0VM6KVv4Bf6lwe4WQTd4EixIfw38ZU3u/7zMe+uC5fOyiANu8Os/qyiqv2iEsIJb296tbd2E2BTaWIha3Vg==", + "path": "microsoft.extensions.caching.stackexchangeredis/10.0.2", + "hashPath": "microsoft.extensions.caching.stackexchangeredis.10.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==", + "path": "microsoft.extensions.dependencyinjection/8.0.1", + "hashPath": "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zOIurr59+kUf9vNcsUkCvKWZv+fPosUZXURZesYkJCvl0EzTc9F7maAO4Cd2WEV7ZJJ0AZrFQvuH6Npph9wdBw==", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.2", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyModel/8.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-mUBDZZRgZrSyFOsJ2qJJ9fXfqd/kXJwf3AiDoqLD9m6TjY5OO/vLNOb9fb4juC0487eq4hcGN/M2Rh/CKS7QYw==", + "path": "microsoft.extensions.dependencymodel/8.0.2", + "hashPath": "microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-elH2vmwNmsXuKmUeMQ4YW9ldXiF+gSGDgg1vORksob5POnpaI6caj1Hu8zaYbEuibhqCoWg0YRWDazBY3zjBfg==", + "path": "microsoft.extensions.diagnostics.abstractions/8.0.1", + "hashPath": "microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512" + }, + "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-P9SoBuVZhJPpALZmSq72aQEb9ryP67EdquaCZGXGrrcASTNHYdrUhnpgSwIipgM5oVC+dKpRXg5zxobmF9xr5g==", + "path": "microsoft.extensions.diagnostics.healthchecks/8.0.0", + "hashPath": "microsoft.extensions.diagnostics.healthchecks.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AT2qqos3IgI09ok36Qag9T8bb6kHJ3uT9Q5ki6CySybFsK6/9JbvQAgAHf1pVEjST0/N4JaFaCbm40R5edffwg==", + "path": "microsoft.extensions.diagnostics.healthchecks.abstractions/8.0.0", + "hashPath": "microsoft.extensions.diagnostics.healthchecks.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", + "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", + "hashPath": "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", + "path": "microsoft.extensions.hosting.abstractions/8.0.1", + "hashPath": "microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==", + "path": "microsoft.extensions.logging/8.0.1", + "hashPath": "microsoft.extensions.logging.8.0.1.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-RZkez/JjpnO+MZ6efKkSynN6ZztLpw3WbxNzjLCPBd97wWj1S9ZYPWi0nmT4kWBRa6atHsdM1ydGkUr8GudyDQ==", + "path": "microsoft.extensions.logging.abstractions/10.0.2", + "hashPath": "microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.ObjectPool/8.0.11": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6ApKcHNJigXBfZa6XlDQ8feJpq7SG1ogZXg6M4FiNzgd6irs3LUAzo0Pfn4F2ZI9liGnH1XIBR/OtSbZmJAV5w==", + "path": "microsoft.extensions.objectpool/8.0.11", + "hashPath": "microsoft.extensions.objectpool.8.0.11.nupkg.sha512" + }, + "Microsoft.Extensions.Options/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1De2LJjmxdqopI5AYC5dIhoZQ79AR5ayywxNF1rXrXFtKQfbQOV9+n/IsZBa7qWlr0MqoGpW8+OY2v/57udZOA==", + "path": "microsoft.extensions.options/10.0.2", + "hashPath": "microsoft.extensions.options.10.0.2.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-QmSiO+oLBEooGgB3i0GRXyeYRDHjllqt3k365jwfZlYWhvSHA3UL2NEVV5m8aZa041eIlblo6KMI5txvTMpTwA==", + "path": "microsoft.extensions.primitives/10.0.2", + "hashPath": "microsoft.extensions.primitives.10.0.2.nupkg.sha512" + }, + "Microsoft.IdentityModel.Abstractions/8.14.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==", + "path": "microsoft.identitymodel.abstractions/8.14.0", + "hashPath": "microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4jOpiA4THdtpLyMdAb24dtj7+6GmvhOhxf5XHLYWmPKF8ApEnApal1UnJsKO4HxUWRXDA6C4WQVfYyqsRhpNpQ==", + "path": "microsoft.identitymodel.jsonwebtokens/8.14.0", + "hashPath": "microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.Logging/8.14.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eqqnemdW38CKZEHS6diA50BV94QICozDZEvSrsvN3SJXUFwVB9gy+/oz76gldP7nZliA16IglXjXTCTdmU/Ejg==", + "path": "microsoft.identitymodel.logging/8.14.0", + "hashPath": "microsoft.identitymodel.logging.8.14.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.Protocols/7.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-SydLwMRFx6EHPWJ+N6+MVaoArN1Htt92b935O3RUWPY1yUF63zEjvd3lBu79eWdZUwedP8TN2I5V9T3nackvIQ==", + "path": "microsoft.identitymodel.protocols/7.1.2", + "hashPath": "microsoft.identitymodel.protocols.7.1.2.nupkg.sha512" + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6lHQoLXhnMQ42mGrfDkzbIOR3rzKM1W1tgTeMPLgLCqwwGw0d96xFi/UiX/fYsu7d6cD5MJiL3+4HuI8VU+sVQ==", + "path": "microsoft.identitymodel.protocols.openidconnect/7.1.2", + "hashPath": "microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512" + }, + "Microsoft.IdentityModel.Tokens/8.14.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lKIZiBiGd36k02TCdMHp1KlNWisyIvQxcYJvIkz7P4gSQ9zi8dgh6S5Grj8NNG7HWYIPfQymGyoZ6JB5d1Lo1g==", + "path": "microsoft.identitymodel.tokens/8.14.0", + "hashPath": "microsoft.identitymodel.tokens.8.14.0.nupkg.sha512" + }, + "Microsoft.Net.Http.Headers/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/M0wVg6tJUOHutWD3BMOUVZAioJVXe0tCpFiovzv0T9T12TBf4MnaHP0efO8TCr1a6O9RZgQeZ9Gdark8L9XdA==", + "path": "microsoft.net.http.headers/2.3.0", + "hashPath": "microsoft.net.http.headers.2.3.0.nupkg.sha512" + }, + "Microsoft.OpenApi/1.6.14": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==", + "path": "microsoft.openapi/1.6.14", + "hashPath": "microsoft.openapi.1.6.14.nupkg.sha512" + }, + "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-EfYANhAWqmWKoLwN6bxoiPZSOfJSO9lzX+UrU6GVhLhPub1Hd+5f0zL0/tggIA6mRz6Ebw2xCNcIsM4k+7NPng==", + "path": "microsoft.visualstudio.azure.containers.tools.targets/1.22.1", + "hashPath": "microsoft.visualstudio.azure.containers.tools.targets.1.22.1.nupkg.sha512" + }, + "Mono.TextTemplating/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==", + "path": "mono.texttemplating/2.2.1", + "hashPath": "mono.texttemplating.2.2.1.nupkg.sha512" + }, + "MySqlConnector/2.3.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", + "path": "mysqlconnector/2.3.5", + "hashPath": "mysqlconnector.2.3.5.nupkg.sha512" + }, + "Newtonsoft.Json/13.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==", + "path": "newtonsoft.json/13.0.4", + "hashPath": "newtonsoft.json.13.0.4.nupkg.sha512" + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==", + "path": "pipelines.sockets.unofficial/2.2.8", + "hashPath": "pipelines.sockets.unofficial.2.2.8.nupkg.sha512" + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-gOHP6v/nFp5V/FgHqv9mZocGqCLGofihEX9dTbLhiXX3H7SJHmGX70GIPUpiqLT+1jIfDxg1PZh9MTUKuk7Kig==", + "path": "pomelo.entityframeworkcore.mysql/8.0.3", + "hashPath": "pomelo.entityframeworkcore.mysql.8.0.3.nupkg.sha512" + }, + "RabbitMQ.Client/7.1.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-y3c6ulgULScWthHw5PLM1ShHRLhxg0vCtzX/hh61gRgNecL3ZC3WoBW2HYHoXOVRqTl99Br9E7CZEytGZEsCyQ==", + "path": "rabbitmq.client/7.1.2", + "hashPath": "rabbitmq.client.7.1.2.nupkg.sha512" + }, + "RedLock.net/2.3.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-jlrALAArm4dCE292U3EtRoMnVKJ9M6sunbZn/oG5OuzlGtTpusXBfvDrnGWbgGDlWV027f5E9H5CiVnPxiq8+g==", + "path": "redlock.net/2.3.2", + "hashPath": "redlock.net.2.3.2.nupkg.sha512" + }, + "StackExchange.Redis/2.9.32": { + "type": "package", + "serviceable": true, + "sha512": "sha512-j5Rjbf7gWz5izrn0UWQy9RlQY4cQDPkwJfVqATnVsOa/+zzJrps12LOgacMsDl/Vit2f01cDiDkG/Rst8v2iGw==", + "path": "stackexchange.redis/2.9.32", + "hashPath": "stackexchange.redis.2.9.32.nupkg.sha512" + }, + "Swashbuckle.AspNetCore/6.6.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+NB4UYVYN6AhDSjW0IJAd1AGD8V33gemFNLPaxKTtPkHB+HaKAKf9MGAEUPivEWvqeQfcKIw8lJaHq6LHljRuw==", + "path": "swashbuckle.aspnetcore/6.6.2", + "hashPath": "swashbuckle.aspnetcore.6.6.2.nupkg.sha512" + }, + "Swashbuckle.AspNetCore.Swagger/6.6.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ovgPTSYX83UrQUWiS5vzDcJ8TEX1MAxBgDFMK45rC24MorHEPQlZAHlaXj/yth4Zf6xcktpUgTEBvffRQVwDKA==", + "path": "swashbuckle.aspnetcore.swagger/6.6.2", + "hashPath": "swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512" + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zv4ikn4AT1VYuOsDCpktLq4QDq08e7Utzbir86M5/ZkRaLXbCPF11E1/vTmOiDzRTl0zTZINQU2qLKwTcHgfrA==", + "path": "swashbuckle.aspnetcore.swaggergen/6.6.2", + "hashPath": "swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512" + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-mBBb+/8Hm2Q3Wygag+hu2jj69tZW5psuv0vMRXY07Wy+Rrj40vRP8ZTbKBhs91r45/HXT4aY4z0iSBYx1h6JvA==", + "path": "swashbuckle.aspnetcore.swaggerui/6.6.2", + "hashPath": "swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512" + }, + "System.Buffers/4.6.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lN6tZi7Q46zFzAbRYXTIvfXcyvQQgxnY7Xm6C6xQ9784dEL1amjM6S6Iw4ZpsvesAKnRVsM4scrDQaDqSClkjA==", + "path": "system.buffers/4.6.0", + "hashPath": "system.buffers.4.6.0.nupkg.sha512" + }, + "System.CodeDom/4.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==", + "path": "system.codedom/4.4.0", + "hashPath": "system.codedom.4.4.0.nupkg.sha512" + }, + "System.Collections.Immutable/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==", + "path": "system.collections.immutable/6.0.0", + "hashPath": "system.collections.immutable.6.0.0.nupkg.sha512" + }, + "System.Composition/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==", + "path": "system.composition/6.0.0", + "hashPath": "system.composition.6.0.0.nupkg.sha512" + }, + "System.Composition.AttributedModel/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WK1nSDLByK/4VoC7fkNiFuTVEiperuCN/Hyn+VN30R+W2ijO1d0Z2Qm0ScEl9xkSn1G2MyapJi8xpf4R8WRa/w==", + "path": "system.composition.attributedmodel/6.0.0", + "hashPath": "system.composition.attributedmodel.6.0.0.nupkg.sha512" + }, + "System.Composition.Convention/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XYi4lPRdu5bM4JVJ3/UIHAiG6V6lWWUlkhB9ab4IOq0FrRsp0F4wTyV4Dj+Ds+efoXJ3qbLqlvaUozDO7OLeXA==", + "path": "system.composition.convention/6.0.0", + "hashPath": "system.composition.convention.6.0.0.nupkg.sha512" + }, + "System.Composition.Hosting/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-w/wXjj7kvxuHPLdzZ0PAUt++qJl03t7lENmb2Oev0n3zbxyNULbWBlnd5J5WUMMv15kg5o+/TCZFb6lSwfaUUQ==", + "path": "system.composition.hosting/6.0.0", + "hashPath": "system.composition.hosting.6.0.0.nupkg.sha512" + }, + "System.Composition.Runtime/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-qkRH/YBaMPTnzxrS5RDk1juvqed4A6HOD/CwRcDGyPpYps1J27waBddiiq1y93jk2ZZ9wuA/kynM+NO0kb3PKg==", + "path": "system.composition.runtime/6.0.0", + "hashPath": "system.composition.runtime.6.0.0.nupkg.sha512" + }, + "System.Composition.TypedParts/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-iUR1eHrL8Cwd82neQCJ00MpwNIBs4NZgXzrPqx8NJf/k4+mwBO0XCRmHYJT4OLSwDDqh5nBLJWkz5cROnrGhRA==", + "path": "system.composition.typedparts/6.0.0", + "hashPath": "system.composition.typedparts.6.0.0.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/10.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lYWBy8fKkJHaRcOuw30d67PrtVjR5754sz5Wl76s8P+vJ9FSThh9b7LIcTSODx1LY7NB3Srvg+JMnzd67qNZOw==", + "path": "system.diagnostics.diagnosticsource/10.0.2", + "hashPath": "system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512" + }, + "System.IdentityModel.Tokens.Jwt/8.14.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-EYGgN/S+HK7S6F3GaaPLFAfK0UzMrkXFyWCvXpQWFYmZln3dqtbyIO7VuTM/iIIPMzkelg8ZLlBPvMhxj6nOAA==", + "path": "system.identitymodel.tokens.jwt/8.14.0", + "hashPath": "system.identitymodel.tokens.jwt.8.14.0.nupkg.sha512" + }, + "System.IO.Pipelines/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", + "path": "system.io.pipelines/8.0.0", + "hashPath": "system.io.pipelines.8.0.0.nupkg.sha512" + }, + "System.Net.WebSockets.WebSocketProtocol/5.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cVTT/Zw4JuUeX8H0tdWii0OMHsA5MY2PaFYOq/Hstw0jk479jZ+f8baCicWFNzJlCPWAe0uoNCELoB5eNmaMqA==", + "path": "system.net.websockets.websocketprotocol/5.1.0", + "hashPath": "system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512" + }, + "System.Reflection.Emit/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", + "path": "system.reflection.emit/4.7.0", + "hashPath": "system.reflection.emit.4.7.0.nupkg.sha512" + }, + "System.Reflection.Metadata/6.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==", + "path": "system.reflection.metadata/6.0.1", + "hashPath": "system.reflection.metadata.6.0.1.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512" + }, + "System.Text.Encoding.CodePages/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "path": "system.text.encoding.codepages/6.0.0", + "hashPath": "system.text.encoding.codepages.6.0.0.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Threading.Channels/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==", + "path": "system.threading.channels/8.0.0", + "hashPath": "system.threading.channels.8.0.0.nupkg.sha512" + }, + "System.Threading.RateLimiting/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==", + "path": "system.threading.ratelimiting/8.0.0", + "hashPath": "system.threading.ratelimiting.8.0.0.nupkg.sha512" + } + } } \ No newline at end of file diff --git a/backend/IMTest/bin/Debug/net8.0/IM_API.dll b/backend/IMTest/bin/Debug/net8.0/IM_API.dll index a3b4ee911c6bd4f2a81aa98c726ab4708adc3d12..2e50c8a828e7f4900d3a845c962aefab36ab2e52 100644 GIT binary patch literal 472576 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 >v-CJ|EmxFV05wDIQ@YByR;Z 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≻*IpW|)T7 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 delta 99 zcmZpe!r1^sEsR^3zPS0PFeEdWF{A>?GzKFeG+{^qvP^&?77XSLhCr4fm0RSF=68QiC diff --git a/backend/IMTest/bin/Debug/net8.0/IM_API.pdb b/backend/IMTest/bin/Debug/net8.0/IM_API.pdb index 4d12f0b522a52b8c428b4d49c3bd8b8ba37be465..fe761c3215bb772e1994782e9900d2a9961772b8 100644 GIT binary patch delta 44973 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%0DBHV;?!oG`;L2wv72cCa&Ng$UD@# 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 a&9E+f70SwCPmQW}9>!r~fZY -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfo.cs b/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfo.cs index 2a2b83e..f3c6637 100644 --- a/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfo.cs +++ b/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfo.cs @@ -1,23 +1,23 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("IMTest")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+dc6ecf224df4e8714171e8b5d23afaa90b3a1f81")] -[assembly: System.Reflection.AssemblyProductAttribute("IMTest")] -[assembly: System.Reflection.AssemblyTitleAttribute("IMTest")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] - -// 由 MSBuild WriteCodeFragment 类生成。 - +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("IMTest")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+77db20dc38eb89685ca73df4dd2758aa53aa6e0b")] +[assembly: System.Reflection.AssemblyProductAttribute("IMTest")] +[assembly: System.Reflection.AssemblyTitleAttribute("IMTest")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfoInputs.cache b/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfoInputs.cache index 3735720..e14a840 100644 --- a/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfoInputs.cache +++ b/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfoInputs.cache @@ -1 +1 @@ -1b9e709aa84e0b4f6260cd10cf25bfc3a30c60e75a3966fc7d4cdf489eae898b +6b62c789b9e1ecffdd986072b0521abee258fac28aa7e7d48b26a0309d21dc29 diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.GeneratedMSBuildEditorConfig.editorconfig b/backend/IMTest/obj/Debug/net8.0/IMTest.GeneratedMSBuildEditorConfig.editorconfig index aa41851..37e4797 100644 --- a/backend/IMTest/obj/Debug/net8.0/IMTest.GeneratedMSBuildEditorConfig.editorconfig +++ b/backend/IMTest/obj/Debug/net8.0/IMTest.GeneratedMSBuildEditorConfig.editorconfig @@ -1,15 +1,15 @@ -is_global = true -build_property.TargetFramework = net8.0 -build_property.TargetPlatformMinVersion = -build_property.UsingMicrosoftNETSdkWeb = -build_property.ProjectTypeGuids = -build_property.InvariantGlobalization = -build_property.PlatformNeutralAssembly = -build_property.EnforceExtendedAnalyzerRules = -build_property._SupportedPlatformList = Linux,macOS,Windows -build_property.RootNamespace = IMTest -build_property.ProjectDir = C:\Users\nanxun\Documents\IM\backend\IMTest\ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = -build_property.EffectiveAnalysisLevelStyle = 8.0 -build_property.EnableCodeStyleSeverity = +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = IMTest +build_property.ProjectDir = C:\Users\nanxun\Documents\IM\backend\IMTest\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.GlobalUsings.g.cs b/backend/IMTest/obj/Debug/net8.0/IMTest.GlobalUsings.g.cs index 2cd3d38..408e98b 100644 --- a/backend/IMTest/obj/Debug/net8.0/IMTest.GlobalUsings.g.cs +++ b/backend/IMTest/obj/Debug/net8.0/IMTest.GlobalUsings.g.cs @@ -1,9 +1,9 @@ -// -global using global::System; -global using global::System.Collections.Generic; -global using global::System.IO; -global using global::System.Linq; -global using global::System.Net.Http; -global using global::System.Threading; -global using global::System.Threading.Tasks; -global using global::Xunit; +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; +global using global::Xunit; diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.AssemblyReference.cache b/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.AssemblyReference.cache index 278b1a786b288cfeaea67d744fcd32014102ffaf..6fde85c380297df4deea819b157ef37484f20298 100644 GIT binary patch delta 19 ZcmbPmnrQ+Mg|KZ1txOls+8AZF6aZ192k`&^ delta 19 ZcmbPmnrQ+Mg|OKcpJunt+!$rH6aY^42eAME diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.CoreCompileInputs.cache b/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.CoreCompileInputs.cache index c05b415..84fb056 100644 --- a/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.CoreCompileInputs.cache +++ b/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -6e6df2b3d9fe8d3830882bef146134864f65ca58bc5ea4bac684eaec55cfd628 +6e6df2b3d9fe8d3830882bef146134864f65ca58bc5ea4bac684eaec55cfd628 diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.FileListAbsolute.txt b/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.FileListAbsolute.txt index 6a24730..ca734f9 100644 --- a/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.FileListAbsolute.txt +++ b/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.FileListAbsolute.txt @@ -1,153 +1,153 @@ -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\CoverletSourceRootsMapping_IMTest -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\testhost.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.deps.json -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.runtimeconfig.json -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\appsettings.Development.json -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\appsettings.json -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.staticwebassets.endpoints.json -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.exe -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\testhost.exe -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.runner.visualstudio.dotnetcore.testadapter.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.runner.reporters.netcoreapp10.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.runner.utility.netcoreapp10.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IMTest.deps.json -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IMTest.runtimeconfig.json -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IMTest.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IMTest.pdb -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\AutoMapper.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\AutoMapper.Extensions.Microsoft.DependencyInjection.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Castle.Core.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.AspNetCore.Authentication.JwtBearer.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.VisualStudio.CodeCoverage.Shim.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.InMemory.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Relational.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Caching.Memory.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Diagnostics.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Hosting.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Logging.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Logging.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.ObjectPool.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Options.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.JsonWebTokens.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.Logging.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.Protocols.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.Tokens.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.OpenApi.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.TestPlatform.CoreUtilities.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.TestPlatform.PlatformAbstractions.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.TestPlatform.CommunicationUtilities.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.TestPlatform.CrossPlatEngine.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.TestPlatform.Utilities.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.Common.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Moq.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\MySqlConnector.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Newtonsoft.Json.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\NuGet.Frameworks.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Pipelines.Sockets.Unofficial.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Pomelo.EntityFrameworkCore.MySql.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\StackExchange.Redis.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Swashbuckle.AspNetCore.Swagger.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerGen.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerUI.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\System.IdentityModel.Tokens.Jwt.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\System.Net.WebSockets.WebSocketProtocol.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.abstractions.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.assert.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.core.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.execution.dotnet.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\de\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\es\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\it\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CoreUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\de\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\de\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\es\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\es\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\it\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\it\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.pdb -C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.csproj.AssemblyReference.cache -C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.GeneratedMSBuildEditorConfig.editorconfig -C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.AssemblyInfoInputs.cache -C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.AssemblyInfo.cs -C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.csproj.CoreCompileInputs.cache -C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.csproj.Up2Date -C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\refint\IMTest.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.pdb -C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.genruntimeconfig.cache -C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\ref\IMTest.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\MassTransit.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\MassTransit.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\MassTransit.RabbitMqTransport.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\RabbitMQ.Client.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Bcl.AsyncInterfaces.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\RedLockNet.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\RedLockNet.SERedis.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Caching.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Caching.StackExchangeRedis.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\System.Diagnostics.DiagnosticSource.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\CoverletSourceRootsMapping_IMTest +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\testhost.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.deps.json +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.runtimeconfig.json +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\appsettings.Development.json +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\appsettings.json +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.staticwebassets.endpoints.json +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.exe +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\testhost.exe +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.runner.visualstudio.dotnetcore.testadapter.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.runner.reporters.netcoreapp10.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.runner.utility.netcoreapp10.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IMTest.deps.json +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IMTest.runtimeconfig.json +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IMTest.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IMTest.pdb +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\AutoMapper.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\AutoMapper.Extensions.Microsoft.DependencyInjection.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Castle.Core.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.AspNetCore.Authentication.JwtBearer.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.VisualStudio.CodeCoverage.Shim.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.InMemory.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Relational.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Caching.Memory.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Diagnostics.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Hosting.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Logging.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Logging.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.ObjectPool.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Options.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.JsonWebTokens.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.Logging.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.Protocols.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.IdentityModel.Tokens.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.OpenApi.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.TestPlatform.CoreUtilities.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.TestPlatform.PlatformAbstractions.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.TestPlatform.CommunicationUtilities.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.TestPlatform.CrossPlatEngine.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.TestPlatform.Utilities.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.VisualStudio.TestPlatform.Common.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Moq.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\MySqlConnector.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Newtonsoft.Json.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\NuGet.Frameworks.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Pipelines.Sockets.Unofficial.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Pomelo.EntityFrameworkCore.MySql.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\StackExchange.Redis.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Swashbuckle.AspNetCore.Swagger.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerGen.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerUI.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\System.IdentityModel.Tokens.Jwt.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\System.Net.WebSockets.WebSocketProtocol.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.abstractions.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.assert.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.core.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\xunit.execution.dotnet.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\de\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\es\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\it\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CoreUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\cs\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\cs\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\de\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\de\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\de\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\es\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\es\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\es\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\fr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\fr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\it\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\it\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\it\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ja\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ja\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ko\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ko\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pl\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pl\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pt-BR\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\pt-BR\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ru\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\ru\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\tr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\tr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hans\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hans\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CommunicationUtilities.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hant\Microsoft.TestPlatform.CrossPlatEngine.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\zh-Hant\Microsoft.VisualStudio.TestPlatform.Common.resources.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\IM_API.pdb +C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.csproj.AssemblyReference.cache +C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.AssemblyInfoInputs.cache +C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.AssemblyInfo.cs +C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.csproj.CoreCompileInputs.cache +C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.csproj.Up2Date +C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\refint\IMTest.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.pdb +C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\IMTest.genruntimeconfig.cache +C:\Users\nanxun\Documents\IM\backend\IMTest\obj\Debug\net8.0\ref\IMTest.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\MassTransit.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\MassTransit.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\MassTransit.RabbitMqTransport.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\RabbitMQ.Client.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Bcl.AsyncInterfaces.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\RedLockNet.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\RedLockNet.SERedis.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Caching.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Caching.StackExchangeRedis.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\Microsoft.Extensions.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\IMTest\bin\Debug\net8.0\System.Diagnostics.DiagnosticSource.dll diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.dll b/backend/IMTest/obj/Debug/net8.0/IMTest.dll index a0cda451d694d4817c2e18d6b5bc96d87896a846..1b81499223a53415631995671a2f195b2d02497b 100644 GIT binary patch delta 248 zcmZp8!PM}AX+j6fk|6ej8+%kH3NX9AemTcZ+jZtt@y>;!^KWcEFj1dh&)hsE$;coj z+1MgA$->gi!ZbP2+&Cr8Bqhbj+|(j5(bPCG(Ja*d({zB!=4hs`FS$_WA ze_-;GRRID&6YHjT3uO4V-&s_5-B`+0VYKPf>BtEPBid#Hw;mm`Z z%UAa@`Wz}vzFj1dhFD2P5H95`5 z$Rs7rB-O&)(8SQ(Fx4W-G{wj`F)cCC(jdt=(J;-zkb%L6k->d({zB!=4hs`FS<3%* zbx&ThDnOvS`^eXXic*I@5r+1nH@gcbv#btQfC=(J1%ax$_XhB3oL%hb)Anha^XBr^ zz0Ce849N^;45>gejll>AO&C&uEEAxJ1%o+*A&_MVra}B922-G{5rZ*9B2Y~t5Lz-A T07XH3L!gKSgW=}j^=nxG4c<}4 diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.genruntimeconfig.cache b/backend/IMTest/obj/Debug/net8.0/IMTest.genruntimeconfig.cache index 8186f4b..324d76e 100644 --- a/backend/IMTest/obj/Debug/net8.0/IMTest.genruntimeconfig.cache +++ b/backend/IMTest/obj/Debug/net8.0/IMTest.genruntimeconfig.cache @@ -1 +1 @@ -07435f2bd36dc0ae41e1e828c20bdeff31b846af84ec0e9fed50b185c0440047 +07435f2bd36dc0ae41e1e828c20bdeff31b846af84ec0e9fed50b185c0440047 diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.pdb b/backend/IMTest/obj/Debug/net8.0/IMTest.pdb index f9575cb588d2903cee52a899df39729d98feb674..a5be6bbae4308fcb3168f5adf72d56530f868217 100644 GIT binary patch delta 148 zcmV;F0Biru{sGMX0g!wY`C)#Six6l{huorm*G(hG`Tf7Zv5>YCAR!F^%uiXfFBszu zIU`D!%K_a7zVfj&@*uJO#~#*F&a-9|TLCF;bMurWBZHJ=V~f-z3rjN#)8s^RYCAYMfV>jWZLcv CdO-^S diff --git a/backend/IMTest/obj/Debug/net8.0/ref/IMTest.dll b/backend/IMTest/obj/Debug/net8.0/ref/IMTest.dll index 9f9bfd6f5c96c086d905c0d5a55ab32804d543c7..c0c947677422567112e61491a8cdcfde53822bf3 100644 GIT binary patch delta 197 zcmZqZVQlDOoY29t7{l{?GbU8&m3w zVKbwKxp_*GkwHqbu|;Zy{uaY~v=N{W%WsYPOqfHQ^uMD@8dTMvb<;9{GauyHm1}U z!)8W}lw`Bi7{l{?GbU8&m3w zVKbwKxp_*GkwHqbu|;Zy{uaY~v=N{W%WsYPOqfHQ^uMD@8dTMvb<;9{GauyHm1}U z!)8W}lw`Bi - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\nanxun\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages - PackageReference - 6.14.1 - - - - - - - - - - - - - - - C:\Users\nanxun\.nuget\packages\xunit.analyzers\1.4.0 - C:\Users\nanxun\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5 - C:\Users\nanxun\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.22.1 - + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\nanxun\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.14.1 + + + + + + + + + + + + + + + C:\Users\nanxun\.nuget\packages\xunit.analyzers\1.4.0 + C:\Users\nanxun\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5 + C:\Users\nanxun\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.22.1 + \ No newline at end of file diff --git a/backend/IMTest/obj/IMTest.csproj.nuget.g.targets b/backend/IMTest/obj/IMTest.csproj.nuget.g.targets index 6d8161d..41b09e9 100644 --- a/backend/IMTest/obj/IMTest.csproj.nuget.g.targets +++ b/backend/IMTest/obj/IMTest.csproj.nuget.g.targets @@ -1,11 +1,11 @@ - - - - - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/backend/IMTest/obj/project.assets.json b/backend/IMTest/obj/project.assets.json index 4e1d539..327ac33 100644 --- a/backend/IMTest/obj/project.assets.json +++ b/backend/IMTest/obj/project.assets.json @@ -1,8969 +1,8969 @@ -{ - "version": 3, - "targets": { - "net8.0": { - "AutoMapper/12.0.1": { - "type": "package", - "dependencies": { - "Microsoft.CSharp": "4.7.0" - }, - "compile": { - "lib/netstandard2.1/AutoMapper.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/AutoMapper.dll": { - "related": ".xml" - } - } - }, - "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { - "type": "package", - "dependencies": { - "AutoMapper": "12.0.0", - "Microsoft.Extensions.Options": "6.0.0" - }, - "compile": { - "lib/netstandard2.1/AutoMapper.Extensions.Microsoft.DependencyInjection.dll": {} - }, - "runtime": { - "lib/netstandard2.1/AutoMapper.Extensions.Microsoft.DependencyInjection.dll": {} - } - }, - "Castle.Core/5.1.1": { - "type": "package", - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - }, - "compile": { - "lib/net6.0/Castle.Core.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net6.0/Castle.Core.dll": { - "related": ".xml" - } - } - }, - "coverlet.collector/6.0.0": { - "type": "package", - "build": { - "build/netstandard1.0/coverlet.collector.targets": {} - } - }, - "MassTransit/8.5.5": { - "type": "package", - "dependencies": { - "MassTransit.Abstractions": "8.5.5", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0" - }, - "compile": { - "lib/net8.0/MassTransit.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/MassTransit.dll": { - "related": ".xml" - } - } - }, - "MassTransit.Abstractions/8.5.5": { - "type": "package", - "compile": { - "lib/net8.0/MassTransit.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/MassTransit.Abstractions.dll": { - "related": ".xml" - } - } - }, - "MassTransit.RabbitMQ/8.5.5": { - "type": "package", - "dependencies": { - "MassTransit": "8.5.5", - "RabbitMQ.Client": "7.1.2" - }, - "compile": { - "lib/net8.0/MassTransit.RabbitMqTransport.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/MassTransit.RabbitMqTransport.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Authentication.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Authentication.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { - "type": "package", - "dependencies": { - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.1.2" - }, - "compile": { - "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { - "related": ".xml" - } - }, - "frameworkReferences": [ - "Microsoft.AspNetCore.App" - ] - }, - "Microsoft.AspNetCore.Authorization/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Authentication.Abstractions": "2.3.0", - "Microsoft.AspNetCore.Authorization": "2.3.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.3.0", - "System.IO.Pipelines": "8.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.3.0", - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.3.0", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.AspNetCore.WebUtilities": "2.3.0", - "Microsoft.Extensions.ObjectPool": "8.0.11", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Net.Http.Headers": "2.3.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.3.0", - "System.Text.Encodings.Web": "8.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Connections/1.2.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Authorization.Policy": "2.3.0", - "Microsoft.AspNetCore.Hosting.Abstractions": "2.3.0", - "Microsoft.AspNetCore.Http": "2.3.0", - "Microsoft.AspNetCore.Http.Connections.Common": "1.2.0", - "Microsoft.AspNetCore.Routing": "2.3.0", - "Microsoft.AspNetCore.WebSockets": "2.3.0", - "Newtonsoft.Json": "11.0.2", - "System.Net.WebSockets.WebSocketProtocol": "5.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", - "Newtonsoft.Json": "11.0.2", - "System.Buffers": "4.6.0", - "System.IO.Pipelines": "8.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Extensions/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Net.Http.Headers": "2.3.0", - "System.Buffers": "4.6.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Features/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Routing/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Extensions": "2.3.0", - "Microsoft.AspNetCore.Routing.Abstractions": "2.3.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.ObjectPool": "8.0.11", - "Microsoft.Extensions.Options": "8.0.2" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Routing.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Routing.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Abstractions": "2.3.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR/1.2.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Connections": "1.2.0", - "Microsoft.AspNetCore.SignalR.Core": "1.2.0", - "Microsoft.AspNetCore.WebSockets": "2.3.0", - "System.IO.Pipelines": "8.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Common/1.2.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", - "Microsoft.Extensions.Options": "8.0.2", - "Newtonsoft.Json": "11.0.2", - "System.Buffers": "4.6.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Core/1.2.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Authorization": "2.3.0", - "Microsoft.AspNetCore.SignalR.Common": "1.2.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "1.2.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "System.IO.Pipelines": "8.0.0", - "System.Reflection.Emit": "4.7.0", - "System.Threading.Channels": "8.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "1.2.0", - "Newtonsoft.Json": "11.0.2", - "System.IO.Pipelines": "8.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.WebSockets/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Extensions": "2.3.0", - "Microsoft.Extensions.Options": "8.0.2", - "System.Net.WebSockets.WebSocketProtocol": "5.1.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.WebUtilities/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.Net.Http.Headers": "2.3.0", - "System.Text.Encodings.Web": "8.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Bcl.AsyncInterfaces/1.1.0": { - "type": "package", - "compile": { - "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {} - }, - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "related": ".xml" - } - } - }, - "Microsoft.CodeCoverage/17.8.0": { - "type": "package", - "compile": { - "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} - }, - "build": { - "build/netstandard2.0/Microsoft.CodeCoverage.props": {}, - "build/netstandard2.0/Microsoft.CodeCoverage.targets": {} - } - }, - "Microsoft.CSharp/4.7.0": { - "type": "package", - "compile": { - "ref/netcoreapp2.0/_._": {} - }, - "runtime": { - "lib/netcoreapp2.0/_._": {} - } - }, - "Microsoft.EntityFrameworkCore/8.0.22": { - "type": "package", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "8.0.22", - "Microsoft.EntityFrameworkCore.Analyzers": "8.0.22", - "Microsoft.Extensions.Caching.Memory": "8.0.1", - "Microsoft.Extensions.Logging": "8.0.1" - }, - "compile": { - "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {} - } - }, - "Microsoft.EntityFrameworkCore.Abstractions/8.0.22": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.EntityFrameworkCore.Analyzers/8.0.22": { - "type": "package", - "compile": { - "lib/netstandard2.0/_._": {} - }, - "runtime": { - "lib/netstandard2.0/_._": {} - } - }, - "Microsoft.EntityFrameworkCore.InMemory/8.0.22": { - "type": "package", - "dependencies": { - "Microsoft.EntityFrameworkCore": "8.0.22" - }, - "compile": { - "lib/net8.0/Microsoft.EntityFrameworkCore.InMemory.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.InMemory.dll": { - "related": ".xml" - } - } - }, - "Microsoft.EntityFrameworkCore.Relational/8.0.13": { - "type": "package", - "dependencies": { - "Microsoft.EntityFrameworkCore": "8.0.13", - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.ApiDescription.Server/6.0.5": { - "type": "package", - "build": { - "build/_._": {} - }, - "buildMultiTargeting": { - "buildMultiTargeting/_._": {} - } - }, - "Microsoft.Extensions.Caching.Abstractions/10.0.2": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.2" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Caching.Memory/8.0.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2", - "Microsoft.Extensions.Primitives": "8.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, - "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.2", - "Microsoft.Extensions.Logging.Abstractions": "10.0.2", - "Microsoft.Extensions.Options": "10.0.2", - "StackExchange.Redis": "2.7.27" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyInjection/8.0.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "8.0.0", - "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, - "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", - "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", - "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, - "Microsoft.Extensions.Logging/8.0.1": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "8.0.1", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.2": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "System.Diagnostics.DiagnosticSource": "10.0.2" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {} - } - }, - "Microsoft.Extensions.ObjectPool/8.0.11": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.ObjectPool.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.ObjectPool.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Options/10.0.2": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", - "Microsoft.Extensions.Primitives": "10.0.2" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {} - } - }, - "Microsoft.Extensions.Primitives/10.0.2": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.IdentityModel.Abstractions/8.14.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { - "type": "package", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "8.14.0" - }, - "compile": { - "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { - "related": ".xml" - } - } - }, - "Microsoft.IdentityModel.Logging/8.14.0": { - "type": "package", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.14.0" - }, - "compile": { - "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { - "related": ".xml" - } - } - }, - "Microsoft.IdentityModel.Protocols/7.1.2": { - "type": "package", - "dependencies": { - "Microsoft.IdentityModel.Logging": "7.1.2", - "Microsoft.IdentityModel.Tokens": "7.1.2" - }, - "compile": { - "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { - "related": ".xml" - } - } - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { - "type": "package", - "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.1.2", - "System.IdentityModel.Tokens.Jwt": "7.1.2" - }, - "compile": { - "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { - "related": ".xml" - } - } - }, - "Microsoft.IdentityModel.Tokens/8.14.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.IdentityModel.Logging": "8.14.0" - }, - "compile": { - "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Net.Http.Headers/2.3.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "8.0.0", - "System.Buffers": "4.6.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": { - "related": ".xml" - } - } - }, - "Microsoft.NET.Test.Sdk/17.8.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeCoverage": "17.8.0", - "Microsoft.TestPlatform.TestHost": "17.8.0" - }, - "compile": { - "lib/netcoreapp3.1/_._": {} - }, - "runtime": { - "lib/netcoreapp3.1/_._": {} - }, - "build": { - "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.props": {}, - "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.targets": {} - }, - "buildMultiTargeting": { - "buildMultiTargeting/Microsoft.NET.Test.Sdk.props": {} - } - }, - "Microsoft.NETCore.Platforms/1.1.0": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Targets/1.1.0": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.OpenApi/1.6.14": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.OpenApi.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.OpenApi.dll": { - "related": ".pdb;.xml" - } - } - }, - "Microsoft.TestPlatform.ObjectModel/17.8.0": { - "type": "package", - "dependencies": { - "NuGet.Frameworks": "6.5.0", - "System.Reflection.Metadata": "1.6.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, - "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, - "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} - }, - "resource": { - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.TestPlatform.TestHost/17.8.0": { - "type": "package", - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "17.8.0", - "Newtonsoft.Json": "13.0.1" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, - "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, - "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, - "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, - "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {}, - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, - "lib/netcoreapp3.1/testhost.dll": { - "related": ".deps.json" - } - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, - "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, - "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, - "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, - "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {}, - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, - "lib/netcoreapp3.1/testhost.dll": { - "related": ".deps.json" - } - }, - "resource": { - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "zh-Hant" - } - }, - "build": { - "build/netcoreapp3.1/Microsoft.TestPlatform.TestHost.props": {} - } - }, - "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": { - "type": "package", - "build": { - "build/_._": {} - } - }, - "Microsoft.Win32.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": { - "related": ".xml" - } - } - }, - "Moq/4.20.72": { - "type": "package", - "dependencies": { - "Castle.Core": "5.1.1" - }, - "compile": { - "lib/net6.0/Moq.dll": {} - }, - "runtime": { - "lib/net6.0/Moq.dll": {} - } - }, - "MySqlConnector/2.3.5": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "7.0.1" - }, - "compile": { - "lib/net8.0/MySqlConnector.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/MySqlConnector.dll": { - "related": ".xml" - } - } - }, - "NETStandard.Library/1.6.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.Win32.Primitives": "4.3.0", - "System.AppContext": "4.3.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Console": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.Compression.ZipFile": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.Net.Http": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Net.Sockets": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Timer": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XDocument": "4.3.0" - } - }, - "Newtonsoft.Json/13.0.4": { - "type": "package", - "compile": { - "lib/net6.0/Newtonsoft.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net6.0/Newtonsoft.Json.dll": { - "related": ".xml" - } - } - }, - "NuGet.Frameworks/6.5.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/NuGet.Frameworks.dll": {} - }, - "runtime": { - "lib/netstandard2.0/NuGet.Frameworks.dll": {} - } - }, - "Pipelines.Sockets.Unofficial/2.2.8": { - "type": "package", - "dependencies": { - "System.IO.Pipelines": "5.0.1" - }, - "compile": { - "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { - "related": ".xml" - } - } - }, - "Pomelo.EntityFrameworkCore.MySql/8.0.3": { - "type": "package", - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "[8.0.13, 8.0.999]", - "MySqlConnector": "2.3.5" - }, - "compile": { - "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { - "related": ".xml" - } - } - }, - "RabbitMQ.Client/7.1.2": { - "type": "package", - "dependencies": { - "System.IO.Pipelines": "8.0.0", - "System.Threading.RateLimiting": "8.0.0" - }, - "compile": { - "lib/net8.0/RabbitMQ.Client.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/RabbitMQ.Client.dll": { - "related": ".xml" - } - } - }, - "RedLock.net/2.3.2": { - "type": "package", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "1.1.0", - "Microsoft.Extensions.Logging": "2.0.0", - "Microsoft.Extensions.Logging.Abstractions": "2.0.0", - "StackExchange.Redis": "2.0.513" - }, - "compile": { - "lib/netstandard2.0/RedLockNet.Abstractions.dll": {}, - "lib/netstandard2.0/RedLockNet.SERedis.dll": {} - }, - "runtime": { - "lib/netstandard2.0/RedLockNet.Abstractions.dll": {}, - "lib/netstandard2.0/RedLockNet.SERedis.dll": {} - } - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "debian.8-x64" - } - } - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "fedora.23-x64" - } - } - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "fedora.24-x64" - } - } - }, - "runtime.native.System/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.IO.Compression/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Http/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "dependencies": { - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "dependencies": { - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "opensuse.13.2-x64" - } - } - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "opensuse.42.1-x64" - } - } - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib": { - "assetType": "native", - "rid": "osx.10.10-x64" - } - } - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib": { - "assetType": "native", - "rid": "osx.10.10-x64" - } - } - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "rhel.7-x64" - } - } - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "ubuntu.14.04-x64" - } - } - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "ubuntu.16.04-x64" - } - } - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "ubuntu.16.10-x64" - } - } - }, - "StackExchange.Redis/2.9.32": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Pipelines.Sockets.Unofficial": "2.2.8" - }, - "compile": { - "lib/net8.0/StackExchange.Redis.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/StackExchange.Redis.dll": { - "related": ".xml" - } - } - }, - "Swashbuckle.AspNetCore/6.6.2": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.ApiDescription.Server": "6.0.5", - "Swashbuckle.AspNetCore.Swagger": "6.6.2", - "Swashbuckle.AspNetCore.SwaggerGen": "6.6.2", - "Swashbuckle.AspNetCore.SwaggerUI": "6.6.2" - }, - "build": { - "build/_._": {} - } - }, - "Swashbuckle.AspNetCore.Swagger/6.6.2": { - "type": "package", - "dependencies": { - "Microsoft.OpenApi": "1.6.14" - }, - "compile": { - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { - "related": ".pdb;.xml" - } - }, - "frameworkReferences": [ - "Microsoft.AspNetCore.App" - ] - }, - "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { - "type": "package", - "dependencies": { - "Swashbuckle.AspNetCore.Swagger": "6.6.2" - }, - "compile": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { - "related": ".pdb;.xml" - } - } - }, - "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { - "type": "package", - "compile": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { - "related": ".pdb;.xml" - } - }, - "frameworkReferences": [ - "Microsoft.AspNetCore.App" - ] - }, - "System.AppContext/4.3.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.6/System.AppContext.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.6/System.AppContext.dll": {} - } - }, - "System.Buffers/4.6.0": { - "type": "package", - "compile": { - "lib/netcoreapp2.1/_._": {} - }, - "runtime": { - "lib/netcoreapp2.1/_._": {} - } - }, - "System.Collections/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Collections.dll": { - "related": ".xml" - } - } - }, - "System.Collections.Concurrent/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Collections.Concurrent.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Collections.Concurrent.dll": {} - } - }, - "System.Console/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Console.dll": { - "related": ".xml" - } - } - }, - "System.Diagnostics.Debug/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.Debug.dll": { - "related": ".xml" - } - } - }, - "System.Diagnostics.DiagnosticSource/10.0.2": { - "type": "package", - "compile": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.Diagnostics.EventLog/6.0.0": { - "type": "package", - "compile": { - "lib/net6.0/System.Diagnostics.EventLog.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net6.0/System.Diagnostics.EventLog.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/netcoreapp3.1/_._": {} - }, - "runtimeTargets": { - "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll": { - "assetType": "runtime", - "rid": "win" - }, - "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.Tools/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Tools.dll": { - "related": ".xml" - } - } - }, - "System.Diagnostics.Tracing/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/System.Diagnostics.Tracing.dll": { - "related": ".xml" - } - } - }, - "System.Globalization/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.dll": { - "related": ".xml" - } - } - }, - "System.Globalization.Calendars/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Calendars.dll": { - "related": ".xml" - } - } - }, - "System.Globalization.Extensions/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/_._": { - "related": ".xml" - } - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IdentityModel.Tokens.Jwt/8.14.0": { - "type": "package", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "8.14.0", - "Microsoft.IdentityModel.Tokens": "8.14.0" - }, - "compile": { - "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { - "related": ".xml" - } - } - }, - "System.IO/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/System.IO.dll": { - "related": ".xml" - } - } - }, - "System.IO.Compression/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Buffers": "4.3.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.IO.Compression": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.dll": { - "related": ".xml" - } - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.Compression.ZipFile/4.3.0": { - "type": "package", - "dependencies": { - "System.Buffers": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - } - }, - "System.IO.FileSystem/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.dll": { - "related": ".xml" - } - } - }, - "System.IO.FileSystem.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - } - }, - "System.IO.Pipelines/8.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.IO.Pipelines.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.IO.Pipelines.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, - "System.Linq/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - }, - "compile": { - "ref/netstandard1.6/System.Linq.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.6/System.Linq.dll": {} - } - }, - "System.Linq.Expressions/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Emit.Lightweight": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - }, - "compile": { - "ref/netstandard1.6/System.Linq.Expressions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.6/System.Linq.Expressions.dll": {} - } - }, - "System.Net.Http/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.DiagnosticSource": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Http.dll": { - "related": ".xml" - } - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Primitives.dll": { - "related": ".xml" - } - } - }, - "System.Net.Sockets/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Sockets.dll": { - "related": ".xml" - } - } - }, - "System.Net.WebSockets.WebSocketProtocol/5.1.0": { - "type": "package", - "compile": { - "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, - "System.ObjectModel/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.ObjectModel.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.ObjectModel.dll": {} - } - }, - "System.Reflection/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.Emit/4.7.0": { - "type": "package", - "compile": { - "ref/netcoreapp2.0/_._": {} - }, - "runtime": { - "lib/netcoreapp2.0/_._": {} - } - }, - "System.Reflection.Emit.ILGeneration/4.3.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} - } - }, - "System.Reflection.Emit.Lightweight/4.3.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} - } - }, - "System.Reflection.Extensions/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Extensions.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.Metadata/1.6.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/System.Reflection.Metadata.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/System.Reflection.Metadata.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Primitives.dll": { - "related": ".xml" - } - } - }, - "System.Reflection.TypeExtensions/4.3.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - } - }, - "System.Resources.ResourceManager/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.Resources.ResourceManager.dll": { - "related": ".xml" - } - } - }, - "System.Runtime/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.Extensions/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.Extensions.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.Handles/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Handles.dll": { - "related": ".xml" - } - } - }, - "System.Runtime.InteropServices/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - }, - "compile": { - "ref/netcoreapp1.1/System.Runtime.InteropServices.dll": {} - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtime": { - "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Runtime.Numerics/4.3.0": { - "type": "package", - "dependencies": { - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.Numerics.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Numerics.dll": {} - } - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.Apple": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} - }, - "runtimeTargets": { - "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "osx" - }, - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Cng/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Csp/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Linq": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "related": ".xml" - } - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtime": { - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": { - "assetType": "runtime", - "rid": "unix" - } - } - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - } - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Cng": "4.3.0", - "System.Security.Cryptography.Csp": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": { - "related": ".xml" - } - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.dll": { - "related": ".xml" - } - } - }, - "System.Text.Encoding.Extensions/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": { - "related": ".xml" - } - } - }, - "System.Text.Encodings.Web/8.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - }, - "runtimeTargets": { - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { - "assetType": "runtime", - "rid": "browser" - } - } - }, - "System.Text.RegularExpressions/4.3.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netcoreapp1.1/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.3.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Threading.dll": {} - } - }, - "System.Threading.Channels/8.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Threading.Channels.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Threading.Channels.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, - "System.Threading.RateLimiting/8.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Threading.RateLimiting.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Threading.RateLimiting.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net6.0/_._": {} - } - }, - "System.Threading.Tasks/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Tasks.dll": { - "related": ".xml" - } - } - }, - "System.Threading.Tasks.Extensions/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "lib/netstandard1.0/_._": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": { - "related": ".xml" - } - } - }, - "System.Threading.Timer/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.2/System.Threading.Timer.dll": { - "related": ".xml" - } - } - }, - "System.Xml.ReaderWriter/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Tasks.Extensions": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Xml.ReaderWriter.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} - } - }, - "System.Xml.XDocument/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XDocument.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XDocument.dll": {} - } - }, - "xunit/2.5.3": { - "type": "package", - "dependencies": { - "xunit.analyzers": "1.4.0", - "xunit.assert": "2.5.3", - "xunit.core": "[2.5.3]" - } - }, - "xunit.abstractions/2.0.3": { - "type": "package", - "compile": { - "lib/netstandard2.0/xunit.abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/xunit.abstractions.dll": { - "related": ".xml" - } - } - }, - "xunit.analyzers/1.4.0": { - "type": "package" - }, - "xunit.assert/2.5.3": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.6.1" - }, - "compile": { - "lib/netstandard1.1/xunit.assert.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.1/xunit.assert.dll": { - "related": ".xml" - } - } - }, - "xunit.core/2.5.3": { - "type": "package", - "dependencies": { - "xunit.extensibility.core": "[2.5.3]", - "xunit.extensibility.execution": "[2.5.3]" - }, - "build": { - "build/xunit.core.props": {}, - "build/xunit.core.targets": {} - }, - "buildMultiTargeting": { - "buildMultiTargeting/xunit.core.props": {}, - "buildMultiTargeting/xunit.core.targets": {} - } - }, - "xunit.extensibility.core/2.5.3": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.6.1", - "xunit.abstractions": "2.0.3" - }, - "compile": { - "lib/netstandard1.1/xunit.core.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.1/xunit.core.dll": { - "related": ".xml" - } - } - }, - "xunit.extensibility.execution/2.5.3": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.6.1", - "xunit.extensibility.core": "[2.5.3]" - }, - "compile": { - "lib/netstandard1.1/xunit.execution.dotnet.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.1/xunit.execution.dotnet.dll": { - "related": ".xml" - } - } - }, - "xunit.runner.visualstudio/2.5.3": { - "type": "package", - "compile": { - "lib/net6.0/_._": {} - }, - "runtime": { - "lib/net6.0/_._": {} - }, - "build": { - "build/net6.0/xunit.runner.visualstudio.props": {} - } - }, - "IM_API/1.0.0": { - "type": "project", - "framework": ".NETCoreApp,Version=v8.0", - "dependencies": { - "AutoMapper": "12.0.1", - "AutoMapper.Extensions.Microsoft.DependencyInjection": "12.0.0", - "MassTransit.RabbitMQ": "8.5.5", - "Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.21", - "Microsoft.AspNetCore.SignalR": "1.2.0", - "Microsoft.Extensions.Caching.StackExchangeRedis": "10.0.2", - "Microsoft.VisualStudio.Azure.Containers.Tools.Targets": "1.22.1", - "Newtonsoft.Json": "13.0.4", - "Pomelo.EntityFrameworkCore.MySql": "8.0.3", - "RedLock.net": "2.3.2", - "StackExchange.Redis": "2.9.32", - "Swashbuckle.AspNetCore": "6.6.2", - "System.IdentityModel.Tokens.Jwt": "8.14.0" - }, - "compile": { - "bin/placeholder/IM_API.dll": {} - }, - "runtime": { - "bin/placeholder/IM_API.dll": {} - }, - "frameworkReferences": [ - "Microsoft.AspNetCore.App" - ] - } - } - }, - "libraries": { - "AutoMapper/12.0.1": { - "sha512": "hvV62vl6Hp/WfQ24yzo3Co9+OPl8wH8hApwVtgWpiAynVJkUcs7xvehnSftawL8Pe8FrPffBRM3hwzLQqWDNjA==", - "type": "package", - "path": "automapper/12.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "automapper.12.0.1.nupkg.sha512", - "automapper.nuspec", - "icon.png", - "lib/netstandard2.1/AutoMapper.dll", - "lib/netstandard2.1/AutoMapper.xml" - ] - }, - "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { - "sha512": "XCJ4E3oKrbRl1qY9Mr+7uyC0xZj1+bqQjmQRWTiTKiVuuXTny+7YFWHi20tPjwkMukLbicN6yGlDy5PZ4wyi1w==", - "type": "package", - "path": "automapper.extensions.microsoft.dependencyinjection/12.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "automapper.extensions.microsoft.dependencyinjection.12.0.0.nupkg.sha512", - "automapper.extensions.microsoft.dependencyinjection.nuspec", - "icon.png", - "lib/netstandard2.1/AutoMapper.Extensions.Microsoft.DependencyInjection.dll" - ] - }, - "Castle.Core/5.1.1": { - "sha512": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", - "type": "package", - "path": "castle.core/5.1.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ASL - Apache Software Foundation License.txt", - "CHANGELOG.md", - "LICENSE", - "castle-logo.png", - "castle.core.5.1.1.nupkg.sha512", - "castle.core.nuspec", - "lib/net462/Castle.Core.dll", - "lib/net462/Castle.Core.xml", - "lib/net6.0/Castle.Core.dll", - "lib/net6.0/Castle.Core.xml", - "lib/netstandard2.0/Castle.Core.dll", - "lib/netstandard2.0/Castle.Core.xml", - "lib/netstandard2.1/Castle.Core.dll", - "lib/netstandard2.1/Castle.Core.xml", - "readme.txt" - ] - }, - "coverlet.collector/6.0.0": { - "sha512": "tW3lsNS+dAEII6YGUX/VMoJjBS1QvsxqJeqLaJXub08y1FSjasFPtQ4UBUsudE9PNrzLjooClMsPtY2cZLdXpQ==", - "type": "package", - "path": "coverlet.collector/6.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/netstandard1.0/Microsoft.Bcl.AsyncInterfaces.dll", - "build/netstandard1.0/Microsoft.CSharp.dll", - "build/netstandard1.0/Microsoft.DotNet.PlatformAbstractions.dll", - "build/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "build/netstandard1.0/Microsoft.Extensions.DependencyInjection.dll", - "build/netstandard1.0/Microsoft.Extensions.DependencyModel.dll", - "build/netstandard1.0/Microsoft.Extensions.FileSystemGlobbing.dll", - "build/netstandard1.0/Microsoft.TestPlatform.CoreUtilities.dll", - "build/netstandard1.0/Microsoft.TestPlatform.PlatformAbstractions.dll", - "build/netstandard1.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", - "build/netstandard1.0/Mono.Cecil.Mdb.dll", - "build/netstandard1.0/Mono.Cecil.Pdb.dll", - "build/netstandard1.0/Mono.Cecil.Rocks.dll", - "build/netstandard1.0/Mono.Cecil.dll", - "build/netstandard1.0/Newtonsoft.Json.dll", - "build/netstandard1.0/NuGet.Frameworks.dll", - "build/netstandard1.0/System.AppContext.dll", - "build/netstandard1.0/System.Collections.Immutable.dll", - "build/netstandard1.0/System.Dynamic.Runtime.dll", - "build/netstandard1.0/System.IO.FileSystem.Primitives.dll", - "build/netstandard1.0/System.Linq.Expressions.dll", - "build/netstandard1.0/System.Linq.dll", - "build/netstandard1.0/System.ObjectModel.dll", - "build/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", - "build/netstandard1.0/System.Reflection.Emit.Lightweight.dll", - "build/netstandard1.0/System.Reflection.Emit.dll", - "build/netstandard1.0/System.Reflection.Metadata.dll", - "build/netstandard1.0/System.Reflection.TypeExtensions.dll", - "build/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "build/netstandard1.0/System.Runtime.Serialization.Primitives.dll", - "build/netstandard1.0/System.Text.RegularExpressions.dll", - "build/netstandard1.0/System.Threading.Tasks.Extensions.dll", - "build/netstandard1.0/System.Threading.dll", - "build/netstandard1.0/System.Xml.ReaderWriter.dll", - "build/netstandard1.0/System.Xml.XDocument.dll", - "build/netstandard1.0/coverlet.collector.deps.json", - "build/netstandard1.0/coverlet.collector.dll", - "build/netstandard1.0/coverlet.collector.pdb", - "build/netstandard1.0/coverlet.collector.targets", - "build/netstandard1.0/coverlet.core.dll", - "build/netstandard1.0/coverlet.core.pdb", - "coverlet-icon.png", - "coverlet.collector.6.0.0.nupkg.sha512", - "coverlet.collector.nuspec" - ] - }, - "MassTransit/8.5.5": { - "sha512": "bSg8k5q+rP1s+dIGXLLbctqDGdIkfDjdxwNWtCUH7xNCN9ZuM7mqSPQPIFgaYIi34e81m4FqAqo4CAHuWPkhRA==", - "type": "package", - "path": "masstransit/8.5.5", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "NuGet.README.md", - "lib/net472/MassTransit.dll", - "lib/net472/MassTransit.xml", - "lib/net8.0/MassTransit.dll", - "lib/net8.0/MassTransit.xml", - "lib/net9.0/MassTransit.dll", - "lib/net9.0/MassTransit.xml", - "lib/netstandard2.0/MassTransit.dll", - "lib/netstandard2.0/MassTransit.xml", - "masstransit.8.5.5.nupkg.sha512", - "masstransit.nuspec", - "mt-logo-small.png" - ] - }, - "MassTransit.Abstractions/8.5.5": { - "sha512": "0mn2Ay17dD6z5tgSLjbVRlldSbL9iowzFEfVgVfBXVG5ttz9dSWeR4TrdD6pqH93GWXp4CvSmF8i1HqxLX7DZw==", - "type": "package", - "path": "masstransit.abstractions/8.5.5", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "NuGet.README.md", - "lib/net472/MassTransit.Abstractions.dll", - "lib/net472/MassTransit.Abstractions.xml", - "lib/net8.0/MassTransit.Abstractions.dll", - "lib/net8.0/MassTransit.Abstractions.xml", - "lib/net9.0/MassTransit.Abstractions.dll", - "lib/net9.0/MassTransit.Abstractions.xml", - "lib/netstandard2.0/MassTransit.Abstractions.dll", - "lib/netstandard2.0/MassTransit.Abstractions.xml", - "masstransit.abstractions.8.5.5.nupkg.sha512", - "masstransit.abstractions.nuspec", - "mt-logo-small.png" - ] - }, - "MassTransit.RabbitMQ/8.5.5": { - "sha512": "UxWn4o90YVMF9PBkJeoskOFPneh6YtnI1fLJHtvZiSAG0eoiRrWPGa+6FQCvjkQ/ljCKfjzok2eGZc/vmNZ01A==", - "type": "package", - "path": "masstransit.rabbitmq/8.5.5", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "NuGet.README.md", - "lib/net472/MassTransit.RabbitMqTransport.dll", - "lib/net472/MassTransit.RabbitMqTransport.xml", - "lib/net8.0/MassTransit.RabbitMqTransport.dll", - "lib/net8.0/MassTransit.RabbitMqTransport.xml", - "lib/net9.0/MassTransit.RabbitMqTransport.dll", - "lib/net9.0/MassTransit.RabbitMqTransport.xml", - "lib/netstandard2.0/MassTransit.RabbitMqTransport.dll", - "lib/netstandard2.0/MassTransit.RabbitMqTransport.xml", - "masstransit.rabbitmq.8.5.5.nupkg.sha512", - "masstransit.rabbitmq.nuspec", - "mt-logo-small.png" - ] - }, - "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { - "sha512": "ve6uvLwKNRkfnO/QeN9M8eUJ49lCnWv/6/9p6iTEuiI6Rtsz+myaBAjdMzLuTViQY032xbTF5AdZF5BJzJJyXQ==", - "type": "package", - "path": "microsoft.aspnetcore.authentication.abstractions/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Authentication.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Authentication.Abstractions.xml", - "microsoft.aspnetcore.authentication.abstractions.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.authentication.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { - "sha512": "ZuUpJ4DvmVArmTlyGGg+b9IdKgd8Kw0SmEzhjy4dQw8R6rxfNqCXfGvGm3ld7xlrgthJFou/le9tadsSyjFLuw==", - "type": "package", - "path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.21", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll", - "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.xml", - "microsoft.aspnetcore.authentication.jwtbearer.8.0.21.nupkg.sha512", - "microsoft.aspnetcore.authentication.jwtbearer.nuspec" - ] - }, - "Microsoft.AspNetCore.Authorization/2.3.0": { - "sha512": "2/aBgLqBXva/+w8pzRNY8ET43Gi+dr1gv/7ySfbsh23lTK6IAgID5MGUEa1hreNIF+0XpW4tX7QwVe70+YvaPg==", - "type": "package", - "path": "microsoft.aspnetcore.authorization/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.xml", - "microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.authorization.nuspec" - ] - }, - "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { - "sha512": "vn31uQ1dA1MIV2WNNDOOOm88V5KgR9esfi0LyQ6eVaGq2h0Yw+R29f5A6qUNJt+RccS3qkYayylAy9tP1wV+7Q==", - "type": "package", - "path": "microsoft.aspnetcore.authorization.policy/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.xml", - "microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.authorization.policy.nuspec" - ] - }, - "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { - "sha512": "ULFSa+/L+WiAHVlIFHyg0OmHChU9Hx+K+xnt0hbIU5XmT1EGy0pNDx23QAzDtAy9jxQrTG6MX0MdvMeU4D4c7w==", - "type": "package", - "path": "microsoft.aspnetcore.connections.abstractions/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.xml", - "microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.connections.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { - "sha512": "4ivq53W2k6Nj4eez9wc81ytfGj6HR1NaZJCpOrvghJo9zHuQF57PLhPoQH5ItyCpHXnrN/y7yJDUm+TGYzrx0w==", - "type": "package", - "path": "microsoft.aspnetcore.hosting.abstractions/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.xml", - "microsoft.aspnetcore.hosting.abstractions.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.hosting.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { - "sha512": "F5iHx7odAbFKBV1DNPDkFFcVmD5Tk7rk+tYm3LMQxHEFFdjlg5QcYb5XhHAefl5YaaPeG6ad+/ck8kSG3/D6kw==", - "type": "package", - "path": "microsoft.aspnetcore.hosting.server.abstractions/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.xml", - "microsoft.aspnetcore.hosting.server.abstractions.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.hosting.server.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Http/2.3.0": { - "sha512": "I9azEG2tZ4DDHAFgv+N38e6Yhttvf+QjE2j2UYyCACE7Swm5/0uoihCMWZ87oOZYeqiEFSxbsfpT71OYHe2tpw==", - "type": "package", - "path": "microsoft.aspnetcore.http/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.xml", - "microsoft.aspnetcore.http.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.http.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { - "sha512": "39r9PPrjA6s0blyFv5qarckjNkaHRA5B+3b53ybuGGNTXEj1/DStQJ4NWjFL6QTRQpL9zt7nDyKxZdJOlcnq+Q==", - "type": "package", - "path": "microsoft.aspnetcore.http.abstractions/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.xml", - "microsoft.aspnetcore.http.abstractions.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.http.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Connections/1.2.0": { - "sha512": "VYMCOLvdT0y3O9lk4jUuIs8+re7u5+i+ka6ZZ6fIzSJ94c/JeMnAOOg39EB2i4crPXvLoiSdzKWlNPJgTbCZ2g==", - "type": "package", - "path": "microsoft.aspnetcore.http.connections/1.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.xml", - "microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512", - "microsoft.aspnetcore.http.connections.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { - "sha512": "yUA7eg6kv7Wbz5TCW4PqS5/kYE5VxUIEDvoxjw4p1RwS2LGm84F9fBtM0mD6wrRfiv1NUyJ7WBjn3PWd/ccO+w==", - "type": "package", - "path": "microsoft.aspnetcore.http.connections.common/1.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.xml", - "microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512", - "microsoft.aspnetcore.http.connections.common.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Extensions/2.3.0": { - "sha512": "EY2u/wFF5jsYwGXXswfQWrSsFPmiXsniAlUWo3rv/MGYf99ZFsENDnZcQP6W3c/+xQmQXq0NauzQ7jyy+o1LDQ==", - "type": "package", - "path": "microsoft.aspnetcore.http.extensions/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.xml", - "microsoft.aspnetcore.http.extensions.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.http.extensions.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Features/2.3.0": { - "sha512": "f10WUgcsKqrkmnz6gt8HeZ7kyKjYN30PO7cSic1lPtH7paPtnQqXPOveul/SIPI43PhRD4trttg4ywnrEmmJpA==", - "type": "package", - "path": "microsoft.aspnetcore.http.features/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.xml", - "microsoft.aspnetcore.http.features.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.http.features.nuspec" - ] - }, - "Microsoft.AspNetCore.Routing/2.3.0": { - "sha512": "no5/VC0CAQuT4PK4rp2K5fqwuSfzr2mdB6m1XNfWVhHnwzpRQzKAu9flChiT/JTLKwVI0Vq2MSmSW2OFMDCNXg==", - "type": "package", - "path": "microsoft.aspnetcore.routing/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Routing.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Routing.xml", - "microsoft.aspnetcore.routing.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.routing.nuspec" - ] - }, - "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { - "sha512": "ZkFpUrSmp6TocxZLBEX3IBv5dPMbQuMs6L/BPl0WRfn32UVOtNYJQ0bLdh3cL9LMV0rmTW/5R0w8CBYxr0AOUw==", - "type": "package", - "path": "microsoft.aspnetcore.routing.abstractions/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.xml", - "microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.routing.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR/1.2.0": { - "sha512": "XoCcsOTdtBiXyOzUtpbCl0IaqMOYjnr+6dbDxvUCFn7NR6bu7CwrlQ3oQzkltTwDZH0b6VEUN9wZPOYvPHi+Lg==", - "type": "package", - "path": "microsoft.aspnetcore.signalr/1.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.xml", - "microsoft.aspnetcore.signalr.1.2.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR.Common/1.2.0": { - "sha512": "FZeXIaoWqe145ZPdfiptwkw/sP1BX1UD0706GNBwwoaFiKsNbLEl/Trhj2+idlp3qbX1BEwkQesKNxkopVY5Xg==", - "type": "package", - "path": "microsoft.aspnetcore.signalr.common/1.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.xml", - "microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.common.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR.Core/1.2.0": { - "sha512": "eZTuMkSDw1uwjhLhJbMxgW2Cuyxfn0Kfqm8OBmqvuzE9Qc/VVzh8dGrAp2F9Pk7XKTDHmlhc5RTLcPPAZ5PSZw==", - "type": "package", - "path": "microsoft.aspnetcore.signalr.core/1.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.xml", - "microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.core.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { - "sha512": "hNvZ7kQxp5Udqd/IFWViU35bUJvi4xnNzjkF28HRvrdrS7JNsIASTvMqArP6HLQUc3j6nlUOeShNhVmgI1wzHg==", - "type": "package", - "path": "microsoft.aspnetcore.signalr.protocols.json/1.2.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", - "microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.protocols.json.nuspec" - ] - }, - "Microsoft.AspNetCore.WebSockets/2.3.0": { - "sha512": "+T4zpnVPkIjvvkyhTH3WBJlTfqmTBRozvnMudAUDvcb4e+NrWf52q8BXh52rkCrBgX6Cudf6F/UhZwTowyBtKg==", - "type": "package", - "path": "microsoft.aspnetcore.websockets/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.xml", - "microsoft.aspnetcore.websockets.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.websockets.nuspec" - ] - }, - "Microsoft.AspNetCore.WebUtilities/2.3.0": { - "sha512": "trbXdWzoAEUVd0PE2yTopkz4kjZaAIA7xUWekd5uBw+7xE8Do/YOVTeb9d9koPTlbtZT539aESJjSLSqD8eYrQ==", - "type": "package", - "path": "microsoft.aspnetcore.webutilities/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.xml", - "microsoft.aspnetcore.webutilities.2.3.0.nupkg.sha512", - "microsoft.aspnetcore.webutilities.nuspec" - ] - }, - "Microsoft.Bcl.AsyncInterfaces/1.1.0": { - "sha512": "1Am6l4Vpn3/K32daEqZI+FFr96OlZkgwK2LcT3pZ2zWubR5zTPW3/FkO1Rat9kb7oQOa4rxgl9LJHc5tspCWfg==", - "type": "package", - "path": "microsoft.bcl.asyncinterfaces/1.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml", - "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", - "microsoft.bcl.asyncinterfaces.1.1.0.nupkg.sha512", - "microsoft.bcl.asyncinterfaces.nuspec", - "ref/net461/Microsoft.Bcl.AsyncInterfaces.dll", - "ref/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", - "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.CodeCoverage/17.8.0": { - "sha512": "KC8SXWbGIdoFVdlxKk9WHccm0llm9HypcHMLUUFabRiTS3SO2fQXNZfdiF3qkEdTJhbRrxhdRxjL4jbtwPq4Ew==", - "type": "package", - "path": "microsoft.codecoverage/17.8.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE_MIT.txt", - "ThirdPartyNotices.txt", - "build/netstandard2.0/CodeCoverage/CodeCoverage.config", - "build/netstandard2.0/CodeCoverage/CodeCoverage.exe", - "build/netstandard2.0/CodeCoverage/VanguardInstrumentationProfiler_x86.config", - "build/netstandard2.0/CodeCoverage/amd64/CodeCoverage.exe", - "build/netstandard2.0/CodeCoverage/amd64/VanguardInstrumentationProfiler_x64.config", - "build/netstandard2.0/CodeCoverage/amd64/covrun64.dll", - "build/netstandard2.0/CodeCoverage/amd64/msdia140.dll", - "build/netstandard2.0/CodeCoverage/arm64/VanguardInstrumentationProfiler_arm64.config", - "build/netstandard2.0/CodeCoverage/arm64/covrunarm64.dll", - "build/netstandard2.0/CodeCoverage/arm64/msdia140.dll", - "build/netstandard2.0/CodeCoverage/codecoveragemessages.dll", - "build/netstandard2.0/CodeCoverage/coreclr/Microsoft.VisualStudio.CodeCoverage.Shim.dll", - "build/netstandard2.0/CodeCoverage/covrun32.dll", - "build/netstandard2.0/CodeCoverage/msdia140.dll", - "build/netstandard2.0/InstrumentationEngine/alpine/x64/VanguardInstrumentationProfiler_x64.config", - "build/netstandard2.0/InstrumentationEngine/alpine/x64/libCoverageInstrumentationMethod.so", - "build/netstandard2.0/InstrumentationEngine/alpine/x64/libInstrumentationEngine.so", - "build/netstandard2.0/InstrumentationEngine/arm64/MicrosoftInstrumentationEngine_arm64.dll", - "build/netstandard2.0/InstrumentationEngine/macos/x64/VanguardInstrumentationProfiler_x64.config", - "build/netstandard2.0/InstrumentationEngine/macos/x64/libCoverageInstrumentationMethod.dylib", - "build/netstandard2.0/InstrumentationEngine/macos/x64/libInstrumentationEngine.dylib", - "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/VanguardInstrumentationProfiler_x64.config", - "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/libCoverageInstrumentationMethod.so", - "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/libInstrumentationEngine.so", - "build/netstandard2.0/InstrumentationEngine/x64/MicrosoftInstrumentationEngine_x64.dll", - "build/netstandard2.0/InstrumentationEngine/x86/MicrosoftInstrumentationEngine_x86.dll", - "build/netstandard2.0/Microsoft.CodeCoverage.Core.dll", - "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.dll", - "build/netstandard2.0/Microsoft.CodeCoverage.Interprocess.dll", - "build/netstandard2.0/Microsoft.CodeCoverage.props", - "build/netstandard2.0/Microsoft.CodeCoverage.targets", - "build/netstandard2.0/Microsoft.DiaSymReader.dll", - "build/netstandard2.0/Microsoft.VisualStudio.TraceDataCollector.dll", - "build/netstandard2.0/Mono.Cecil.Pdb.dll", - "build/netstandard2.0/Mono.Cecil.Rocks.dll", - "build/netstandard2.0/Mono.Cecil.dll", - "build/netstandard2.0/ThirdPartyNotices.txt", - "build/netstandard2.0/cs/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/de/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/es/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/fr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/it/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/ja/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/ko/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/pl/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/pt-BR/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/ru/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/tr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "build/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TraceDataCollector.resources.dll", - "lib/net462/Microsoft.VisualStudio.CodeCoverage.Shim.dll", - "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll", - "microsoft.codecoverage.17.8.0.nupkg.sha512", - "microsoft.codecoverage.nuspec" - ] - }, - "Microsoft.CSharp/4.7.0": { - "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", - "type": "package", - "path": "microsoft.csharp/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/Microsoft.CSharp.dll", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.3/Microsoft.CSharp.dll", - "lib/netstandard2.0/Microsoft.CSharp.dll", - "lib/netstandard2.0/Microsoft.CSharp.xml", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/uap10.0.16299/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "microsoft.csharp.4.7.0.nupkg.sha512", - "microsoft.csharp.nuspec", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.CSharp.dll", - "ref/netcore50/Microsoft.CSharp.xml", - "ref/netcore50/de/Microsoft.CSharp.xml", - "ref/netcore50/es/Microsoft.CSharp.xml", - "ref/netcore50/fr/Microsoft.CSharp.xml", - "ref/netcore50/it/Microsoft.CSharp.xml", - "ref/netcore50/ja/Microsoft.CSharp.xml", - "ref/netcore50/ko/Microsoft.CSharp.xml", - "ref/netcore50/ru/Microsoft.CSharp.xml", - "ref/netcore50/zh-hans/Microsoft.CSharp.xml", - "ref/netcore50/zh-hant/Microsoft.CSharp.xml", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.0/Microsoft.CSharp.dll", - "ref/netstandard1.0/Microsoft.CSharp.xml", - "ref/netstandard1.0/de/Microsoft.CSharp.xml", - "ref/netstandard1.0/es/Microsoft.CSharp.xml", - "ref/netstandard1.0/fr/Microsoft.CSharp.xml", - "ref/netstandard1.0/it/Microsoft.CSharp.xml", - "ref/netstandard1.0/ja/Microsoft.CSharp.xml", - "ref/netstandard1.0/ko/Microsoft.CSharp.xml", - "ref/netstandard1.0/ru/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", - "ref/netstandard2.0/Microsoft.CSharp.dll", - "ref/netstandard2.0/Microsoft.CSharp.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/uap10.0.16299/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.EntityFrameworkCore/8.0.22": { - "sha512": "nKGrD/WOO1d7qtXvghFAHre5Fk3ubw41pDFM0hbFxVIkMFxl4B0ug2LylMHOq+dgAceUeo3bx0qMh6/Jl9NbrA==", - "type": "package", - "path": "microsoft.entityframeworkcore/8.0.22", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props", - "lib/net8.0/Microsoft.EntityFrameworkCore.dll", - "lib/net8.0/Microsoft.EntityFrameworkCore.xml", - "microsoft.entityframeworkcore.8.0.22.nupkg.sha512", - "microsoft.entityframeworkcore.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore.Abstractions/8.0.22": { - "sha512": "p4Fw9mpJnZHmkdOGCbBqbvuyj1LnnFxNon8snMKIQ0MGSB+j9f6ffWDfvGRaOS/9ikqQG9RMOTzZk52q1G23ng==", - "type": "package", - "path": "microsoft.entityframeworkcore.abstractions/8.0.22", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll", - "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml", - "microsoft.entityframeworkcore.abstractions.8.0.22.nupkg.sha512", - "microsoft.entityframeworkcore.abstractions.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore.Analyzers/8.0.22": { - "sha512": "lrSWwr+X+Fn5XGOwOYFQJWx+u+eameqhMjQ1mohXUE2N7LauucZAtcH/j+yXwQntosKoXU1TOoggTL/zmYqbHQ==", - "type": "package", - "path": "microsoft.entityframeworkcore.analyzers/8.0.22", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", - "docs/PACKAGE.md", - "lib/netstandard2.0/_._", - "microsoft.entityframeworkcore.analyzers.8.0.22.nupkg.sha512", - "microsoft.entityframeworkcore.analyzers.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore.InMemory/8.0.22": { - "sha512": "dPbM/KLIh/AdHRjh/OhrzhAiHRLT0JBC5KSvAZ71eg42+QwF9aEuBfTzqr+GJE6DK9CLhqh9jXAqRKFojPki5g==", - "type": "package", - "path": "microsoft.entityframeworkcore.inmemory/8.0.22", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "lib/net8.0/Microsoft.EntityFrameworkCore.InMemory.dll", - "lib/net8.0/Microsoft.EntityFrameworkCore.InMemory.xml", - "microsoft.entityframeworkcore.inmemory.8.0.22.nupkg.sha512", - "microsoft.entityframeworkcore.inmemory.nuspec" - ] - }, - "Microsoft.EntityFrameworkCore.Relational/8.0.13": { - "sha512": "uQR2iTar+6ZEjEHTwgH0/7ySSRme4R9sDiupfG3w/eBub3365fPw/MjhsuOMQkdq9YzLM7veH4Qt/K9OqL26Qg==", - "type": "package", - "path": "microsoft.entityframeworkcore.relational/8.0.13", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll", - "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.xml", - "microsoft.entityframeworkcore.relational.8.0.13.nupkg.sha512", - "microsoft.entityframeworkcore.relational.nuspec" - ] - }, - "Microsoft.Extensions.ApiDescription.Server/6.0.5": { - "sha512": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", - "type": "package", - "path": "microsoft.extensions.apidescription.server/6.0.5", - "hasTools": true, - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "build/Microsoft.Extensions.ApiDescription.Server.props", - "build/Microsoft.Extensions.ApiDescription.Server.targets", - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", - "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", - "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", - "microsoft.extensions.apidescription.server.nuspec", - "tools/Newtonsoft.Json.dll", - "tools/dotnet-getdocument.deps.json", - "tools/dotnet-getdocument.dll", - "tools/dotnet-getdocument.runtimeconfig.json", - "tools/net461-x86/GetDocument.Insider.exe", - "tools/net461-x86/GetDocument.Insider.exe.config", - "tools/net461-x86/Microsoft.Win32.Primitives.dll", - "tools/net461-x86/System.AppContext.dll", - "tools/net461-x86/System.Buffers.dll", - "tools/net461-x86/System.Collections.Concurrent.dll", - "tools/net461-x86/System.Collections.NonGeneric.dll", - "tools/net461-x86/System.Collections.Specialized.dll", - "tools/net461-x86/System.Collections.dll", - "tools/net461-x86/System.ComponentModel.EventBasedAsync.dll", - "tools/net461-x86/System.ComponentModel.Primitives.dll", - "tools/net461-x86/System.ComponentModel.TypeConverter.dll", - "tools/net461-x86/System.ComponentModel.dll", - "tools/net461-x86/System.Console.dll", - "tools/net461-x86/System.Data.Common.dll", - "tools/net461-x86/System.Diagnostics.Contracts.dll", - "tools/net461-x86/System.Diagnostics.Debug.dll", - "tools/net461-x86/System.Diagnostics.DiagnosticSource.dll", - "tools/net461-x86/System.Diagnostics.FileVersionInfo.dll", - "tools/net461-x86/System.Diagnostics.Process.dll", - "tools/net461-x86/System.Diagnostics.StackTrace.dll", - "tools/net461-x86/System.Diagnostics.TextWriterTraceListener.dll", - "tools/net461-x86/System.Diagnostics.Tools.dll", - "tools/net461-x86/System.Diagnostics.TraceSource.dll", - "tools/net461-x86/System.Diagnostics.Tracing.dll", - "tools/net461-x86/System.Drawing.Primitives.dll", - "tools/net461-x86/System.Dynamic.Runtime.dll", - "tools/net461-x86/System.Globalization.Calendars.dll", - "tools/net461-x86/System.Globalization.Extensions.dll", - "tools/net461-x86/System.Globalization.dll", - "tools/net461-x86/System.IO.Compression.ZipFile.dll", - "tools/net461-x86/System.IO.Compression.dll", - "tools/net461-x86/System.IO.FileSystem.DriveInfo.dll", - "tools/net461-x86/System.IO.FileSystem.Primitives.dll", - "tools/net461-x86/System.IO.FileSystem.Watcher.dll", - "tools/net461-x86/System.IO.FileSystem.dll", - "tools/net461-x86/System.IO.IsolatedStorage.dll", - "tools/net461-x86/System.IO.MemoryMappedFiles.dll", - "tools/net461-x86/System.IO.Pipes.dll", - "tools/net461-x86/System.IO.UnmanagedMemoryStream.dll", - "tools/net461-x86/System.IO.dll", - "tools/net461-x86/System.Linq.Expressions.dll", - "tools/net461-x86/System.Linq.Parallel.dll", - "tools/net461-x86/System.Linq.Queryable.dll", - "tools/net461-x86/System.Linq.dll", - "tools/net461-x86/System.Memory.dll", - "tools/net461-x86/System.Net.Http.dll", - "tools/net461-x86/System.Net.NameResolution.dll", - "tools/net461-x86/System.Net.NetworkInformation.dll", - "tools/net461-x86/System.Net.Ping.dll", - "tools/net461-x86/System.Net.Primitives.dll", - "tools/net461-x86/System.Net.Requests.dll", - "tools/net461-x86/System.Net.Security.dll", - "tools/net461-x86/System.Net.Sockets.dll", - "tools/net461-x86/System.Net.WebHeaderCollection.dll", - "tools/net461-x86/System.Net.WebSockets.Client.dll", - "tools/net461-x86/System.Net.WebSockets.dll", - "tools/net461-x86/System.Numerics.Vectors.dll", - "tools/net461-x86/System.ObjectModel.dll", - "tools/net461-x86/System.Reflection.Extensions.dll", - "tools/net461-x86/System.Reflection.Primitives.dll", - "tools/net461-x86/System.Reflection.dll", - "tools/net461-x86/System.Resources.Reader.dll", - "tools/net461-x86/System.Resources.ResourceManager.dll", - "tools/net461-x86/System.Resources.Writer.dll", - "tools/net461-x86/System.Runtime.CompilerServices.Unsafe.dll", - "tools/net461-x86/System.Runtime.CompilerServices.VisualC.dll", - "tools/net461-x86/System.Runtime.Extensions.dll", - "tools/net461-x86/System.Runtime.Handles.dll", - "tools/net461-x86/System.Runtime.InteropServices.RuntimeInformation.dll", - "tools/net461-x86/System.Runtime.InteropServices.dll", - "tools/net461-x86/System.Runtime.Numerics.dll", - "tools/net461-x86/System.Runtime.Serialization.Formatters.dll", - "tools/net461-x86/System.Runtime.Serialization.Json.dll", - "tools/net461-x86/System.Runtime.Serialization.Primitives.dll", - "tools/net461-x86/System.Runtime.Serialization.Xml.dll", - "tools/net461-x86/System.Runtime.dll", - "tools/net461-x86/System.Security.Claims.dll", - "tools/net461-x86/System.Security.Cryptography.Algorithms.dll", - "tools/net461-x86/System.Security.Cryptography.Csp.dll", - "tools/net461-x86/System.Security.Cryptography.Encoding.dll", - "tools/net461-x86/System.Security.Cryptography.Primitives.dll", - "tools/net461-x86/System.Security.Cryptography.X509Certificates.dll", - "tools/net461-x86/System.Security.Principal.dll", - "tools/net461-x86/System.Security.SecureString.dll", - "tools/net461-x86/System.Text.Encoding.Extensions.dll", - "tools/net461-x86/System.Text.Encoding.dll", - "tools/net461-x86/System.Text.RegularExpressions.dll", - "tools/net461-x86/System.Threading.Overlapped.dll", - "tools/net461-x86/System.Threading.Tasks.Parallel.dll", - "tools/net461-x86/System.Threading.Tasks.dll", - "tools/net461-x86/System.Threading.Thread.dll", - "tools/net461-x86/System.Threading.ThreadPool.dll", - "tools/net461-x86/System.Threading.Timer.dll", - "tools/net461-x86/System.Threading.dll", - "tools/net461-x86/System.ValueTuple.dll", - "tools/net461-x86/System.Xml.ReaderWriter.dll", - "tools/net461-x86/System.Xml.XDocument.dll", - "tools/net461-x86/System.Xml.XPath.XDocument.dll", - "tools/net461-x86/System.Xml.XPath.dll", - "tools/net461-x86/System.Xml.XmlDocument.dll", - "tools/net461-x86/System.Xml.XmlSerializer.dll", - "tools/net461-x86/netstandard.dll", - "tools/net461/GetDocument.Insider.exe", - "tools/net461/GetDocument.Insider.exe.config", - "tools/net461/Microsoft.Win32.Primitives.dll", - "tools/net461/System.AppContext.dll", - "tools/net461/System.Buffers.dll", - "tools/net461/System.Collections.Concurrent.dll", - "tools/net461/System.Collections.NonGeneric.dll", - "tools/net461/System.Collections.Specialized.dll", - "tools/net461/System.Collections.dll", - "tools/net461/System.ComponentModel.EventBasedAsync.dll", - "tools/net461/System.ComponentModel.Primitives.dll", - "tools/net461/System.ComponentModel.TypeConverter.dll", - "tools/net461/System.ComponentModel.dll", - "tools/net461/System.Console.dll", - "tools/net461/System.Data.Common.dll", - "tools/net461/System.Diagnostics.Contracts.dll", - "tools/net461/System.Diagnostics.Debug.dll", - "tools/net461/System.Diagnostics.DiagnosticSource.dll", - "tools/net461/System.Diagnostics.FileVersionInfo.dll", - "tools/net461/System.Diagnostics.Process.dll", - "tools/net461/System.Diagnostics.StackTrace.dll", - "tools/net461/System.Diagnostics.TextWriterTraceListener.dll", - "tools/net461/System.Diagnostics.Tools.dll", - "tools/net461/System.Diagnostics.TraceSource.dll", - "tools/net461/System.Diagnostics.Tracing.dll", - "tools/net461/System.Drawing.Primitives.dll", - "tools/net461/System.Dynamic.Runtime.dll", - "tools/net461/System.Globalization.Calendars.dll", - "tools/net461/System.Globalization.Extensions.dll", - "tools/net461/System.Globalization.dll", - "tools/net461/System.IO.Compression.ZipFile.dll", - "tools/net461/System.IO.Compression.dll", - "tools/net461/System.IO.FileSystem.DriveInfo.dll", - "tools/net461/System.IO.FileSystem.Primitives.dll", - "tools/net461/System.IO.FileSystem.Watcher.dll", - "tools/net461/System.IO.FileSystem.dll", - "tools/net461/System.IO.IsolatedStorage.dll", - "tools/net461/System.IO.MemoryMappedFiles.dll", - "tools/net461/System.IO.Pipes.dll", - "tools/net461/System.IO.UnmanagedMemoryStream.dll", - "tools/net461/System.IO.dll", - "tools/net461/System.Linq.Expressions.dll", - "tools/net461/System.Linq.Parallel.dll", - "tools/net461/System.Linq.Queryable.dll", - "tools/net461/System.Linq.dll", - "tools/net461/System.Memory.dll", - "tools/net461/System.Net.Http.dll", - "tools/net461/System.Net.NameResolution.dll", - "tools/net461/System.Net.NetworkInformation.dll", - "tools/net461/System.Net.Ping.dll", - "tools/net461/System.Net.Primitives.dll", - "tools/net461/System.Net.Requests.dll", - "tools/net461/System.Net.Security.dll", - "tools/net461/System.Net.Sockets.dll", - "tools/net461/System.Net.WebHeaderCollection.dll", - "tools/net461/System.Net.WebSockets.Client.dll", - "tools/net461/System.Net.WebSockets.dll", - "tools/net461/System.Numerics.Vectors.dll", - "tools/net461/System.ObjectModel.dll", - "tools/net461/System.Reflection.Extensions.dll", - "tools/net461/System.Reflection.Primitives.dll", - "tools/net461/System.Reflection.dll", - "tools/net461/System.Resources.Reader.dll", - "tools/net461/System.Resources.ResourceManager.dll", - "tools/net461/System.Resources.Writer.dll", - "tools/net461/System.Runtime.CompilerServices.Unsafe.dll", - "tools/net461/System.Runtime.CompilerServices.VisualC.dll", - "tools/net461/System.Runtime.Extensions.dll", - "tools/net461/System.Runtime.Handles.dll", - "tools/net461/System.Runtime.InteropServices.RuntimeInformation.dll", - "tools/net461/System.Runtime.InteropServices.dll", - "tools/net461/System.Runtime.Numerics.dll", - "tools/net461/System.Runtime.Serialization.Formatters.dll", - "tools/net461/System.Runtime.Serialization.Json.dll", - "tools/net461/System.Runtime.Serialization.Primitives.dll", - "tools/net461/System.Runtime.Serialization.Xml.dll", - "tools/net461/System.Runtime.dll", - "tools/net461/System.Security.Claims.dll", - "tools/net461/System.Security.Cryptography.Algorithms.dll", - "tools/net461/System.Security.Cryptography.Csp.dll", - "tools/net461/System.Security.Cryptography.Encoding.dll", - "tools/net461/System.Security.Cryptography.Primitives.dll", - "tools/net461/System.Security.Cryptography.X509Certificates.dll", - "tools/net461/System.Security.Principal.dll", - "tools/net461/System.Security.SecureString.dll", - "tools/net461/System.Text.Encoding.Extensions.dll", - "tools/net461/System.Text.Encoding.dll", - "tools/net461/System.Text.RegularExpressions.dll", - "tools/net461/System.Threading.Overlapped.dll", - "tools/net461/System.Threading.Tasks.Parallel.dll", - "tools/net461/System.Threading.Tasks.dll", - "tools/net461/System.Threading.Thread.dll", - "tools/net461/System.Threading.ThreadPool.dll", - "tools/net461/System.Threading.Timer.dll", - "tools/net461/System.Threading.dll", - "tools/net461/System.ValueTuple.dll", - "tools/net461/System.Xml.ReaderWriter.dll", - "tools/net461/System.Xml.XDocument.dll", - "tools/net461/System.Xml.XPath.XDocument.dll", - "tools/net461/System.Xml.XPath.dll", - "tools/net461/System.Xml.XmlDocument.dll", - "tools/net461/System.Xml.XmlSerializer.dll", - "tools/net461/netstandard.dll", - "tools/netcoreapp2.1/GetDocument.Insider.deps.json", - "tools/netcoreapp2.1/GetDocument.Insider.dll", - "tools/netcoreapp2.1/GetDocument.Insider.runtimeconfig.json", - "tools/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll" - ] - }, - "Microsoft.Extensions.Caching.Abstractions/10.0.2": { - "sha512": "WIRPDa/qoKHmJhTAPCO/zLu9kRLQ2Fd6HD5tzgdXJ3xGEVXDHP6FvakKJjynwKrVDld8H4G4tcbW53wuC/wxMQ==", - "type": "package", - "path": "microsoft.extensions.caching.abstractions/10.0.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets", - "lib/net10.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/net10.0/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/net462/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", - "microsoft.extensions.caching.abstractions.10.0.2.nupkg.sha512", - "microsoft.extensions.caching.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Caching.Memory/8.0.1": { - "sha512": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==", - "type": "package", - "path": "microsoft.extensions.caching.memory/8.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets", - "lib/net462/Microsoft.Extensions.Caching.Memory.dll", - "lib/net462/Microsoft.Extensions.Caching.Memory.xml", - "lib/net6.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/net6.0/Microsoft.Extensions.Caching.Memory.xml", - "lib/net7.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/net7.0/Microsoft.Extensions.Caching.Memory.xml", - "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/net8.0/Microsoft.Extensions.Caching.Memory.xml", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", - "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", - "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", - "microsoft.extensions.caching.memory.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { - "sha512": "WEx0VM6KVv4Bf6lwe4WQTd4EixIfw38ZU3u/7zMe+uC5fOyiANu8Os/qyiqv2iEsIJb296tbd2E2BTaWIha3Vg==", - "type": "package", - "path": "microsoft.extensions.caching.stackexchangeredis/10.0.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll", - "lib/net10.0/Microsoft.Extensions.Caching.StackExchangeRedis.xml", - "lib/net462/Microsoft.Extensions.Caching.StackExchangeRedis.dll", - "lib/net462/Microsoft.Extensions.Caching.StackExchangeRedis.xml", - "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll", - "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.xml", - "microsoft.extensions.caching.stackexchangeredis.10.0.2.nupkg.sha512", - "microsoft.extensions.caching.stackexchangeredis.nuspec" - ] - }, - "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { - "sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", - "type": "package", - "path": "microsoft.extensions.configuration.abstractions/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets", - "lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", - "microsoft.extensions.configuration.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.DependencyInjection/8.0.1": { - "sha512": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection/8.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", - "lib/net462/Microsoft.Extensions.DependencyInjection.dll", - "lib/net462/Microsoft.Extensions.DependencyInjection.xml", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net6.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net7.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", - "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", - "microsoft.extensions.dependencyinjection.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { - "sha512": "zOIurr59+kUf9vNcsUkCvKWZv+fPosUZXURZesYkJCvl0EzTc9F7maAO4Cd2WEV7ZJJ0AZrFQvuH6Npph9wdBw==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", - "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512", - "microsoft.extensions.dependencyinjection.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { - "sha512": "elH2vmwNmsXuKmUeMQ4YW9ldXiF+gSGDgg1vORksob5POnpaI6caj1Hu8zaYbEuibhqCoWg0YRWDazBY3zjBfg==", - "type": "package", - "path": "microsoft.extensions.diagnostics.abstractions/8.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Diagnostics.Abstractions.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.Abstractions.targets", - "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", - "microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512", - "microsoft.extensions.diagnostics.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { - "sha512": "P9SoBuVZhJPpALZmSq72aQEb9ryP67EdquaCZGXGrrcASTNHYdrUhnpgSwIipgM5oVC+dKpRXg5zxobmF9xr5g==", - "type": "package", - "path": "microsoft.extensions.diagnostics.healthchecks/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net462/Microsoft.Extensions.Diagnostics.HealthChecks.dll", - "lib/net462/Microsoft.Extensions.Diagnostics.HealthChecks.xml", - "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.dll", - "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.xml", - "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.HealthChecks.dll", - "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.HealthChecks.xml", - "microsoft.extensions.diagnostics.healthchecks.8.0.0.nupkg.sha512", - "microsoft.extensions.diagnostics.healthchecks.nuspec" - ] - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": { - "sha512": "AT2qqos3IgI09ok36Qag9T8bb6kHJ3uT9Q5ki6CySybFsK6/9JbvQAgAHf1pVEjST0/N4JaFaCbm40R5edffwg==", - "type": "package", - "path": "microsoft.extensions.diagnostics.healthchecks.abstractions/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net462/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.xml", - "microsoft.extensions.diagnostics.healthchecks.abstractions.8.0.0.nupkg.sha512", - "microsoft.extensions.diagnostics.healthchecks.abstractions.nuspec" - ] - }, - "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { - "sha512": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", - "type": "package", - "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.FileProviders.Abstractions.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Abstractions.targets", - "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.dll", - "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.xml", - "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", - "microsoft.extensions.fileproviders.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { - "sha512": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", - "type": "package", - "path": "microsoft.extensions.hosting.abstractions/8.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Hosting.Abstractions.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.Abstractions.targets", - "lib/net462/Microsoft.Extensions.Hosting.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Hosting.Abstractions.xml", - "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.dll", - "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.xml", - "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.dll", - "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.xml", - "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.dll", - "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.xml", - "microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512", - "microsoft.extensions.hosting.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Logging/8.0.1": { - "sha512": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==", - "type": "package", - "path": "microsoft.extensions.logging/8.0.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Logging.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", - "lib/net462/Microsoft.Extensions.Logging.dll", - "lib/net462/Microsoft.Extensions.Logging.xml", - "lib/net6.0/Microsoft.Extensions.Logging.dll", - "lib/net6.0/Microsoft.Extensions.Logging.xml", - "lib/net7.0/Microsoft.Extensions.Logging.dll", - "lib/net7.0/Microsoft.Extensions.Logging.xml", - "lib/net8.0/Microsoft.Extensions.Logging.dll", - "lib/net8.0/Microsoft.Extensions.Logging.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", - "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", - "microsoft.extensions.logging.8.0.1.nupkg.sha512", - "microsoft.extensions.logging.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.2": { - "sha512": "RZkez/JjpnO+MZ6efKkSynN6ZztLpw3WbxNzjLCPBd97wWj1S9ZYPWi0nmT4kWBRa6atHsdM1ydGkUr8GudyDQ==", - "type": "package", - "path": "microsoft.extensions.logging.abstractions/10.0.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", - "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512", - "microsoft.extensions.logging.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.ObjectPool/8.0.11": { - "sha512": "6ApKcHNJigXBfZa6XlDQ8feJpq7SG1ogZXg6M4FiNzgd6irs3LUAzo0Pfn4F2ZI9liGnH1XIBR/OtSbZmJAV5w==", - "type": "package", - "path": "microsoft.extensions.objectpool/8.0.11", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net462/Microsoft.Extensions.ObjectPool.dll", - "lib/net462/Microsoft.Extensions.ObjectPool.xml", - "lib/net8.0/Microsoft.Extensions.ObjectPool.dll", - "lib/net8.0/Microsoft.Extensions.ObjectPool.xml", - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll", - "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.xml", - "microsoft.extensions.objectpool.8.0.11.nupkg.sha512", - "microsoft.extensions.objectpool.nuspec" - ] - }, - "Microsoft.Extensions.Options/10.0.2": { - "sha512": "1De2LJjmxdqopI5AYC5dIhoZQ79AR5ayywxNF1rXrXFtKQfbQOV9+n/IsZBa7qWlr0MqoGpW8+OY2v/57udZOA==", - "type": "package", - "path": "microsoft.extensions.options/10.0.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "buildTransitive/net461/Microsoft.Extensions.Options.targets", - "buildTransitive/net462/Microsoft.Extensions.Options.targets", - "buildTransitive/net8.0/Microsoft.Extensions.Options.targets", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", - "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", - "lib/net10.0/Microsoft.Extensions.Options.dll", - "lib/net10.0/Microsoft.Extensions.Options.xml", - "lib/net462/Microsoft.Extensions.Options.dll", - "lib/net462/Microsoft.Extensions.Options.xml", - "lib/net8.0/Microsoft.Extensions.Options.dll", - "lib/net8.0/Microsoft.Extensions.Options.xml", - "lib/net9.0/Microsoft.Extensions.Options.dll", - "lib/net9.0/Microsoft.Extensions.Options.xml", - "lib/netstandard2.0/Microsoft.Extensions.Options.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.xml", - "lib/netstandard2.1/Microsoft.Extensions.Options.dll", - "lib/netstandard2.1/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.10.0.2.nupkg.sha512", - "microsoft.extensions.options.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Primitives/10.0.2": { - "sha512": "QmSiO+oLBEooGgB3i0GRXyeYRDHjllqt3k365jwfZlYWhvSHA3UL2NEVV5m8aZa041eIlblo6KMI5txvTMpTwA==", - "type": "package", - "path": "microsoft.extensions.primitives/10.0.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", - "lib/net10.0/Microsoft.Extensions.Primitives.dll", - "lib/net10.0/Microsoft.Extensions.Primitives.xml", - "lib/net462/Microsoft.Extensions.Primitives.dll", - "lib/net462/Microsoft.Extensions.Primitives.xml", - "lib/net8.0/Microsoft.Extensions.Primitives.dll", - "lib/net8.0/Microsoft.Extensions.Primitives.xml", - "lib/net9.0/Microsoft.Extensions.Primitives.dll", - "lib/net9.0/Microsoft.Extensions.Primitives.xml", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.10.0.2.nupkg.sha512", - "microsoft.extensions.primitives.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.IdentityModel.Abstractions/8.14.0": { - "sha512": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==", - "type": "package", - "path": "microsoft.identitymodel.abstractions/8.14.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "lib/net462/Microsoft.IdentityModel.Abstractions.dll", - "lib/net462/Microsoft.IdentityModel.Abstractions.xml", - "lib/net472/Microsoft.IdentityModel.Abstractions.dll", - "lib/net472/Microsoft.IdentityModel.Abstractions.xml", - "lib/net6.0/Microsoft.IdentityModel.Abstractions.dll", - "lib/net6.0/Microsoft.IdentityModel.Abstractions.xml", - "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll", - "lib/net8.0/Microsoft.IdentityModel.Abstractions.xml", - "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll", - "lib/net9.0/Microsoft.IdentityModel.Abstractions.xml", - "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll", - "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml", - "microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512", - "microsoft.identitymodel.abstractions.nuspec" - ] - }, - "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { - "sha512": "4jOpiA4THdtpLyMdAb24dtj7+6GmvhOhxf5XHLYWmPKF8ApEnApal1UnJsKO4HxUWRXDA6C4WQVfYyqsRhpNpQ==", - "type": "package", - "path": "microsoft.identitymodel.jsonwebtokens/8.14.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "lib/net462/Microsoft.IdentityModel.JsonWebTokens.dll", - "lib/net462/Microsoft.IdentityModel.JsonWebTokens.xml", - "lib/net472/Microsoft.IdentityModel.JsonWebTokens.dll", - "lib/net472/Microsoft.IdentityModel.JsonWebTokens.xml", - "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.dll", - "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.xml", - "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll", - "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.xml", - "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll", - "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.xml", - "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll", - "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml", - "microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512", - "microsoft.identitymodel.jsonwebtokens.nuspec" - ] - }, - "Microsoft.IdentityModel.Logging/8.14.0": { - "sha512": "eqqnemdW38CKZEHS6diA50BV94QICozDZEvSrsvN3SJXUFwVB9gy+/oz76gldP7nZliA16IglXjXTCTdmU/Ejg==", - "type": "package", - "path": "microsoft.identitymodel.logging/8.14.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "lib/net462/Microsoft.IdentityModel.Logging.dll", - "lib/net462/Microsoft.IdentityModel.Logging.xml", - "lib/net472/Microsoft.IdentityModel.Logging.dll", - "lib/net472/Microsoft.IdentityModel.Logging.xml", - "lib/net6.0/Microsoft.IdentityModel.Logging.dll", - "lib/net6.0/Microsoft.IdentityModel.Logging.xml", - "lib/net8.0/Microsoft.IdentityModel.Logging.dll", - "lib/net8.0/Microsoft.IdentityModel.Logging.xml", - "lib/net9.0/Microsoft.IdentityModel.Logging.dll", - "lib/net9.0/Microsoft.IdentityModel.Logging.xml", - "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll", - "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml", - "microsoft.identitymodel.logging.8.14.0.nupkg.sha512", - "microsoft.identitymodel.logging.nuspec" - ] - }, - "Microsoft.IdentityModel.Protocols/7.1.2": { - "sha512": "SydLwMRFx6EHPWJ+N6+MVaoArN1Htt92b935O3RUWPY1yUF63zEjvd3lBu79eWdZUwedP8TN2I5V9T3nackvIQ==", - "type": "package", - "path": "microsoft.identitymodel.protocols/7.1.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net461/Microsoft.IdentityModel.Protocols.dll", - "lib/net461/Microsoft.IdentityModel.Protocols.xml", - "lib/net462/Microsoft.IdentityModel.Protocols.dll", - "lib/net462/Microsoft.IdentityModel.Protocols.xml", - "lib/net472/Microsoft.IdentityModel.Protocols.dll", - "lib/net472/Microsoft.IdentityModel.Protocols.xml", - "lib/net6.0/Microsoft.IdentityModel.Protocols.dll", - "lib/net6.0/Microsoft.IdentityModel.Protocols.xml", - "lib/net8.0/Microsoft.IdentityModel.Protocols.dll", - "lib/net8.0/Microsoft.IdentityModel.Protocols.xml", - "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.dll", - "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.xml", - "microsoft.identitymodel.protocols.7.1.2.nupkg.sha512", - "microsoft.identitymodel.protocols.nuspec" - ] - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { - "sha512": "6lHQoLXhnMQ42mGrfDkzbIOR3rzKM1W1tgTeMPLgLCqwwGw0d96xFi/UiX/fYsu7d6cD5MJiL3+4HuI8VU+sVQ==", - "type": "package", - "path": "microsoft.identitymodel.protocols.openidconnect/7.1.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net461/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", - "lib/net461/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", - "lib/net462/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", - "lib/net462/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", - "lib/net472/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", - "lib/net472/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", - "lib/net6.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", - "lib/net6.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", - "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", - "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", - "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", - "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", - "microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512", - "microsoft.identitymodel.protocols.openidconnect.nuspec" - ] - }, - "Microsoft.IdentityModel.Tokens/8.14.0": { - "sha512": "lKIZiBiGd36k02TCdMHp1KlNWisyIvQxcYJvIkz7P4gSQ9zi8dgh6S5Grj8NNG7HWYIPfQymGyoZ6JB5d1Lo1g==", - "type": "package", - "path": "microsoft.identitymodel.tokens/8.14.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "lib/net462/Microsoft.IdentityModel.Tokens.dll", - "lib/net462/Microsoft.IdentityModel.Tokens.xml", - "lib/net472/Microsoft.IdentityModel.Tokens.dll", - "lib/net472/Microsoft.IdentityModel.Tokens.xml", - "lib/net6.0/Microsoft.IdentityModel.Tokens.dll", - "lib/net6.0/Microsoft.IdentityModel.Tokens.xml", - "lib/net8.0/Microsoft.IdentityModel.Tokens.dll", - "lib/net8.0/Microsoft.IdentityModel.Tokens.xml", - "lib/net9.0/Microsoft.IdentityModel.Tokens.dll", - "lib/net9.0/Microsoft.IdentityModel.Tokens.xml", - "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll", - "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml", - "microsoft.identitymodel.tokens.8.14.0.nupkg.sha512", - "microsoft.identitymodel.tokens.nuspec" - ] - }, - "Microsoft.Net.Http.Headers/2.3.0": { - "sha512": "/M0wVg6tJUOHutWD3BMOUVZAioJVXe0tCpFiovzv0T9T12TBf4MnaHP0efO8TCr1a6O9RZgQeZ9Gdark8L9XdA==", - "type": "package", - "path": "microsoft.net.http.headers/2.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll", - "lib/netstandard2.0/Microsoft.Net.Http.Headers.xml", - "microsoft.net.http.headers.2.3.0.nupkg.sha512", - "microsoft.net.http.headers.nuspec" - ] - }, - "Microsoft.NET.Test.Sdk/17.8.0": { - "sha512": "BmTYGbD/YuDHmApIENdoyN1jCk0Rj1fJB0+B/fVekyTdVidr91IlzhqzytiUgaEAzL1ZJcYCme0MeBMYvJVzvw==", - "type": "package", - "path": "microsoft.net.test.sdk/17.8.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE_MIT.txt", - "build/net462/Microsoft.NET.Test.Sdk.props", - "build/net462/Microsoft.NET.Test.Sdk.targets", - "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.cs", - "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.fs", - "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.vb", - "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.props", - "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.targets", - "buildMultiTargeting/Microsoft.NET.Test.Sdk.props", - "lib/net462/_._", - "lib/netcoreapp3.1/_._", - "microsoft.net.test.sdk.17.8.0.nupkg.sha512", - "microsoft.net.test.sdk.nuspec" - ] - }, - "Microsoft.NETCore.Platforms/1.1.0": { - "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", - "type": "package", - "path": "microsoft.netcore.platforms/1.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "microsoft.netcore.platforms.1.1.0.nupkg.sha512", - "microsoft.netcore.platforms.nuspec", - "runtime.json" - ] - }, - "Microsoft.NETCore.Targets/1.1.0": { - "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", - "type": "package", - "path": "microsoft.netcore.targets/1.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "microsoft.netcore.targets.1.1.0.nupkg.sha512", - "microsoft.netcore.targets.nuspec", - "runtime.json" - ] - }, - "Microsoft.OpenApi/1.6.14": { - "sha512": "tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==", - "type": "package", - "path": "microsoft.openapi/1.6.14", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "lib/netstandard2.0/Microsoft.OpenApi.dll", - "lib/netstandard2.0/Microsoft.OpenApi.pdb", - "lib/netstandard2.0/Microsoft.OpenApi.xml", - "microsoft.openapi.1.6.14.nupkg.sha512", - "microsoft.openapi.nuspec" - ] - }, - "Microsoft.TestPlatform.ObjectModel/17.8.0": { - "sha512": "AYy6vlpGMfz5kOFq99L93RGbqftW/8eQTqjT9iGXW6s9MRP3UdtY8idJ8rJcjeSja8A18IhIro5YnH3uv1nz4g==", - "type": "package", - "path": "microsoft.testplatform.objectmodel/17.8.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE_MIT.txt", - "lib/net462/Microsoft.TestPlatform.CoreUtilities.dll", - "lib/net462/Microsoft.TestPlatform.PlatformAbstractions.dll", - "lib/net462/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", - "lib/net462/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/net462/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/net462/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll", - "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll", - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/Microsoft.TestPlatform.CoreUtilities.dll", - "lib/netstandard2.0/Microsoft.TestPlatform.PlatformAbstractions.dll", - "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", - "lib/netstandard2.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "lib/netstandard2.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", - "lib/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", - "microsoft.testplatform.objectmodel.17.8.0.nupkg.sha512", - "microsoft.testplatform.objectmodel.nuspec" - ] - }, - "Microsoft.TestPlatform.TestHost/17.8.0": { - "sha512": "9ivcl/7SGRmOT0YYrHQGohWiT5YCpkmy/UEzldfVisLm6QxbLaK3FAJqZXI34rnRLmqqDCeMQxKINwmKwAPiDw==", - "type": "package", - "path": "microsoft.testplatform.testhost/17.8.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE_MIT.txt", - "ThirdPartyNotices.txt", - "build/netcoreapp3.1/Microsoft.TestPlatform.TestHost.props", - "build/netcoreapp3.1/x64/testhost.dll", - "build/netcoreapp3.1/x64/testhost.exe", - "build/netcoreapp3.1/x86/testhost.x86.dll", - "build/netcoreapp3.1/x86/testhost.x86.exe", - "lib/net462/_._", - "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll", - "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll", - "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll", - "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll", - "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll", - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll", - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/testhost.deps.json", - "lib/netcoreapp3.1/testhost.dll", - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/x64/msdia140.dll", - "lib/netcoreapp3.1/x86/msdia140.dll", - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", - "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", - "microsoft.testplatform.testhost.17.8.0.nupkg.sha512", - "microsoft.testplatform.testhost.nuspec" - ] - }, - "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": { - "sha512": "EfYANhAWqmWKoLwN6bxoiPZSOfJSO9lzX+UrU6GVhLhPub1Hd+5f0zL0/tggIA6mRz6Ebw2xCNcIsM4k+7NPng==", - "type": "package", - "path": "microsoft.visualstudio.azure.containers.tools.targets/1.22.1", - "hasTools": true, - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "CHANGELOG.md", - "EULA.md", - "ThirdPartyNotices.txt", - "build/Container.props", - "build/Container.targets", - "build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.props", - "build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.targets", - "build/Rules/GeneralBrowseObject.xaml", - "build/Rules/cs-CZ/GeneralBrowseObject.xaml", - "build/Rules/de-DE/GeneralBrowseObject.xaml", - "build/Rules/es-ES/GeneralBrowseObject.xaml", - "build/Rules/fr-FR/GeneralBrowseObject.xaml", - "build/Rules/it-IT/GeneralBrowseObject.xaml", - "build/Rules/ja-JP/GeneralBrowseObject.xaml", - "build/Rules/ko-KR/GeneralBrowseObject.xaml", - "build/Rules/pl-PL/GeneralBrowseObject.xaml", - "build/Rules/pt-BR/GeneralBrowseObject.xaml", - "build/Rules/ru-RU/GeneralBrowseObject.xaml", - "build/Rules/tr-TR/GeneralBrowseObject.xaml", - "build/Rules/zh-CN/GeneralBrowseObject.xaml", - "build/Rules/zh-TW/GeneralBrowseObject.xaml", - "build/ToolsTarget.props", - "build/ToolsTarget.targets", - "icon.png", - "microsoft.visualstudio.azure.containers.tools.targets.1.22.1.nupkg.sha512", - "microsoft.visualstudio.azure.containers.tools.targets.nuspec", - "tools/Microsoft.VisualStudio.Containers.Tools.Common.dll", - "tools/Microsoft.VisualStudio.Containers.Tools.Shared.dll", - "tools/Microsoft.VisualStudio.Containers.Tools.Tasks.dll", - "tools/Newtonsoft.Json.dll", - "tools/System.Security.Principal.Windows.dll", - "tools/cs/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/cs/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/cs/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/de/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/de/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/de/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/es/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/es/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/es/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/fr/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/fr/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/fr/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/it/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/it/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/it/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/ja/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/ja/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/ja/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/ko/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/ko/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/ko/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/pl/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/pl/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/pl/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/pt-BR/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/pt-BR/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/pt-BR/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/ru/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/ru/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/ru/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/tr/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/tr/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/tr/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/zh-Hans/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/zh-Hans/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/zh-Hans/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", - "tools/zh-Hant/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", - "tools/zh-Hant/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", - "tools/zh-Hant/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll" - ] - }, - "Microsoft.Win32.Primitives/4.3.0": { - "sha512": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", - "type": "package", - "path": "microsoft.win32.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/Microsoft.Win32.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "microsoft.win32.primitives.4.3.0.nupkg.sha512", - "microsoft.win32.primitives.nuspec", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Moq/4.20.72": { - "sha512": "EA55cjyNn8eTNWrgrdZJH5QLFp2L43oxl1tlkoYUKIE9pRwL784OWiTXeCV5ApS+AMYEAlt7Fo03A2XfouvHmQ==", - "type": "package", - "path": "moq/4.20.72", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "icon.png", - "lib/net462/Moq.dll", - "lib/net6.0/Moq.dll", - "lib/netstandard2.0/Moq.dll", - "lib/netstandard2.1/Moq.dll", - "moq.4.20.72.nupkg.sha512", - "moq.nuspec", - "readme.md" - ] - }, - "MySqlConnector/2.3.5": { - "sha512": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", - "type": "package", - "path": "mysqlconnector/2.3.5", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "lib/net462/MySqlConnector.dll", - "lib/net462/MySqlConnector.xml", - "lib/net471/MySqlConnector.dll", - "lib/net471/MySqlConnector.xml", - "lib/net48/MySqlConnector.dll", - "lib/net48/MySqlConnector.xml", - "lib/net6.0/MySqlConnector.dll", - "lib/net6.0/MySqlConnector.xml", - "lib/net7.0/MySqlConnector.dll", - "lib/net7.0/MySqlConnector.xml", - "lib/net8.0/MySqlConnector.dll", - "lib/net8.0/MySqlConnector.xml", - "lib/netstandard2.0/MySqlConnector.dll", - "lib/netstandard2.0/MySqlConnector.xml", - "lib/netstandard2.1/MySqlConnector.dll", - "lib/netstandard2.1/MySqlConnector.xml", - "logo.png", - "mysqlconnector.2.3.5.nupkg.sha512", - "mysqlconnector.nuspec" - ] - }, - "NETStandard.Library/1.6.1": { - "sha512": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", - "type": "package", - "path": "netstandard.library/1.6.1", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "netstandard.library.1.6.1.nupkg.sha512", - "netstandard.library.nuspec" - ] - }, - "Newtonsoft.Json/13.0.4": { - "sha512": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==", - "type": "package", - "path": "newtonsoft.json/13.0.4", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "README.md", - "lib/net20/Newtonsoft.Json.dll", - "lib/net20/Newtonsoft.Json.xml", - "lib/net35/Newtonsoft.Json.dll", - "lib/net35/Newtonsoft.Json.xml", - "lib/net40/Newtonsoft.Json.dll", - "lib/net40/Newtonsoft.Json.xml", - "lib/net45/Newtonsoft.Json.dll", - "lib/net45/Newtonsoft.Json.xml", - "lib/net6.0/Newtonsoft.Json.dll", - "lib/net6.0/Newtonsoft.Json.xml", - "lib/netstandard1.0/Newtonsoft.Json.dll", - "lib/netstandard1.0/Newtonsoft.Json.xml", - "lib/netstandard1.3/Newtonsoft.Json.dll", - "lib/netstandard1.3/Newtonsoft.Json.xml", - "lib/netstandard2.0/Newtonsoft.Json.dll", - "lib/netstandard2.0/Newtonsoft.Json.xml", - "newtonsoft.json.13.0.4.nupkg.sha512", - "newtonsoft.json.nuspec", - "packageIcon.png" - ] - }, - "NuGet.Frameworks/6.5.0": { - "sha512": "QWINE2x3MbTODsWT1Gh71GaGb5icBz4chS8VYvTgsBnsi8esgN6wtHhydd7fvToWECYGq7T4cgBBDiKD/363fg==", - "type": "package", - "path": "nuget.frameworks/6.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "icon.png", - "lib/net472/NuGet.Frameworks.dll", - "lib/netstandard2.0/NuGet.Frameworks.dll", - "nuget.frameworks.6.5.0.nupkg.sha512", - "nuget.frameworks.nuspec" - ] - }, - "Pipelines.Sockets.Unofficial/2.2.8": { - "sha512": "zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==", - "type": "package", - "path": "pipelines.sockets.unofficial/2.2.8", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net461/Pipelines.Sockets.Unofficial.dll", - "lib/net461/Pipelines.Sockets.Unofficial.xml", - "lib/net472/Pipelines.Sockets.Unofficial.dll", - "lib/net472/Pipelines.Sockets.Unofficial.xml", - "lib/net5.0/Pipelines.Sockets.Unofficial.dll", - "lib/net5.0/Pipelines.Sockets.Unofficial.xml", - "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.dll", - "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.xml", - "lib/netstandard2.0/Pipelines.Sockets.Unofficial.dll", - "lib/netstandard2.0/Pipelines.Sockets.Unofficial.xml", - "lib/netstandard2.1/Pipelines.Sockets.Unofficial.dll", - "lib/netstandard2.1/Pipelines.Sockets.Unofficial.xml", - "pipelines.sockets.unofficial.2.2.8.nupkg.sha512", - "pipelines.sockets.unofficial.nuspec" - ] - }, - "Pomelo.EntityFrameworkCore.MySql/8.0.3": { - "sha512": "gOHP6v/nFp5V/FgHqv9mZocGqCLGofihEX9dTbLhiXX3H7SJHmGX70GIPUpiqLT+1jIfDxg1PZh9MTUKuk7Kig==", - "type": "package", - "path": "pomelo.entityframeworkcore.mysql/8.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "icon.png", - "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll", - "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.xml", - "pomelo.entityframeworkcore.mysql.8.0.3.nupkg.sha512", - "pomelo.entityframeworkcore.mysql.nuspec" - ] - }, - "RabbitMQ.Client/7.1.2": { - "sha512": "y3c6ulgULScWthHw5PLM1ShHRLhxg0vCtzX/hh61gRgNecL3ZC3WoBW2HYHoXOVRqTl99Br9E7CZEytGZEsCyQ==", - "type": "package", - "path": "rabbitmq.client/7.1.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "icon.png", - "lib/net8.0/RabbitMQ.Client.dll", - "lib/net8.0/RabbitMQ.Client.xml", - "lib/netstandard2.0/RabbitMQ.Client.dll", - "lib/netstandard2.0/RabbitMQ.Client.xml", - "rabbitmq.client.7.1.2.nupkg.sha512", - "rabbitmq.client.nuspec" - ] - }, - "RedLock.net/2.3.2": { - "sha512": "jlrALAArm4dCE292U3EtRoMnVKJ9M6sunbZn/oG5OuzlGtTpusXBfvDrnGWbgGDlWV027f5E9H5CiVnPxiq8+g==", - "type": "package", - "path": "redlock.net/2.3.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net461/RedLockNet.Abstractions.dll", - "lib/net461/RedLockNet.SERedis.dll", - "lib/net472/RedLockNet.Abstractions.dll", - "lib/net472/RedLockNet.SERedis.dll", - "lib/netstandard2.0/RedLockNet.Abstractions.dll", - "lib/netstandard2.0/RedLockNet.SERedis.dll", - "redlock-icon.png", - "redlock.net.2.3.2.nupkg.sha512", - "redlock.net.nuspec" - ] - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==", - "type": "package", - "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==", - "type": "package", - "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==", - "type": "package", - "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.native.System/4.3.0": { - "sha512": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", - "type": "package", - "path": "runtime.native.system/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.4.3.0.nupkg.sha512", - "runtime.native.system.nuspec" - ] - }, - "runtime.native.System.IO.Compression/4.3.0": { - "sha512": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", - "type": "package", - "path": "runtime.native.system.io.compression/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.io.compression.4.3.0.nupkg.sha512", - "runtime.native.system.io.compression.nuspec" - ] - }, - "runtime.native.System.Net.Http/4.3.0": { - "sha512": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", - "type": "package", - "path": "runtime.native.system.net.http/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.net.http.4.3.0.nupkg.sha512", - "runtime.native.system.net.http.nuspec" - ] - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "sha512": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", - "type": "package", - "path": "runtime.native.system.security.cryptography.apple/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", - "runtime.native.system.security.cryptography.apple.nuspec" - ] - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", - "type": "package", - "path": "runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.native.system.security.cryptography.openssl.nuspec" - ] - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==", - "type": "package", - "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==", - "type": "package", - "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "sha512": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==", - "type": "package", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.nuspec", - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib" - ] - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==", - "type": "package", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib" - ] - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==", - "type": "package", - "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==", - "type": "package", - "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==", - "type": "package", - "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==", - "type": "package", - "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "StackExchange.Redis/2.9.32": { - "sha512": "j5Rjbf7gWz5izrn0UWQy9RlQY4cQDPkwJfVqATnVsOa/+zzJrps12LOgacMsDl/Vit2f01cDiDkG/Rst8v2iGw==", - "type": "package", - "path": "stackexchange.redis/2.9.32", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "lib/net461/StackExchange.Redis.dll", - "lib/net461/StackExchange.Redis.xml", - "lib/net472/StackExchange.Redis.dll", - "lib/net472/StackExchange.Redis.xml", - "lib/net6.0/StackExchange.Redis.dll", - "lib/net6.0/StackExchange.Redis.xml", - "lib/net8.0/StackExchange.Redis.dll", - "lib/net8.0/StackExchange.Redis.xml", - "lib/netcoreapp3.1/StackExchange.Redis.dll", - "lib/netcoreapp3.1/StackExchange.Redis.xml", - "lib/netstandard2.0/StackExchange.Redis.dll", - "lib/netstandard2.0/StackExchange.Redis.xml", - "stackexchange.redis.2.9.32.nupkg.sha512", - "stackexchange.redis.nuspec" - ] - }, - "Swashbuckle.AspNetCore/6.6.2": { - "sha512": "+NB4UYVYN6AhDSjW0IJAd1AGD8V33gemFNLPaxKTtPkHB+HaKAKf9MGAEUPivEWvqeQfcKIw8lJaHq6LHljRuw==", - "type": "package", - "path": "swashbuckle.aspnetcore/6.6.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/Swashbuckle.AspNetCore.props", - "swashbuckle.aspnetcore.6.6.2.nupkg.sha512", - "swashbuckle.aspnetcore.nuspec" - ] - }, - "Swashbuckle.AspNetCore.Swagger/6.6.2": { - "sha512": "ovgPTSYX83UrQUWiS5vzDcJ8TEX1MAxBgDFMK45rC24MorHEPQlZAHlaXj/yth4Zf6xcktpUgTEBvffRQVwDKA==", - "type": "package", - "path": "swashbuckle.aspnetcore.swagger/6.6.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net5.0/Swashbuckle.AspNetCore.Swagger.dll", - "lib/net5.0/Swashbuckle.AspNetCore.Swagger.pdb", - "lib/net5.0/Swashbuckle.AspNetCore.Swagger.xml", - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.dll", - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.pdb", - "lib/net6.0/Swashbuckle.AspNetCore.Swagger.xml", - "lib/net7.0/Swashbuckle.AspNetCore.Swagger.dll", - "lib/net7.0/Swashbuckle.AspNetCore.Swagger.pdb", - "lib/net7.0/Swashbuckle.AspNetCore.Swagger.xml", - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll", - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.pdb", - "lib/net8.0/Swashbuckle.AspNetCore.Swagger.xml", - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.dll", - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.pdb", - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.xml", - "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.dll", - "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.pdb", - "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.xml", - "package-readme.md", - "swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512", - "swashbuckle.aspnetcore.swagger.nuspec" - ] - }, - "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { - "sha512": "zv4ikn4AT1VYuOsDCpktLq4QDq08e7Utzbir86M5/ZkRaLXbCPF11E1/vTmOiDzRTl0zTZINQU2qLKwTcHgfrA==", - "type": "package", - "path": "swashbuckle.aspnetcore.swaggergen/6.6.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.dll", - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.xml", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.xml", - "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll", - "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", - "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.xml", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.xml", - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.dll", - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.xml", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.dll", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.xml", - "package-readme.md", - "swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512", - "swashbuckle.aspnetcore.swaggergen.nuspec" - ] - }, - "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { - "sha512": "mBBb+/8Hm2Q3Wygag+hu2jj69tZW5psuv0vMRXY07Wy+Rrj40vRP8ZTbKBhs91r45/HXT4aY4z0iSBYx1h6JvA==", - "type": "package", - "path": "swashbuckle.aspnetcore.swaggerui/6.6.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.dll", - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", - "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.xml", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", - "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.xml", - "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll", - "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", - "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.xml", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", - "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.xml", - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.dll", - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", - "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.xml", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.dll", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", - "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.xml", - "package-readme.md", - "swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512", - "swashbuckle.aspnetcore.swaggerui.nuspec" - ] - }, - "System.AppContext/4.3.0": { - "sha512": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", - "type": "package", - "path": "system.appcontext/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.AppContext.dll", - "lib/net463/System.AppContext.dll", - "lib/netcore50/System.AppContext.dll", - "lib/netstandard1.6/System.AppContext.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.AppContext.dll", - "ref/net463/System.AppContext.dll", - "ref/netstandard/_._", - "ref/netstandard1.3/System.AppContext.dll", - "ref/netstandard1.3/System.AppContext.xml", - "ref/netstandard1.3/de/System.AppContext.xml", - "ref/netstandard1.3/es/System.AppContext.xml", - "ref/netstandard1.3/fr/System.AppContext.xml", - "ref/netstandard1.3/it/System.AppContext.xml", - "ref/netstandard1.3/ja/System.AppContext.xml", - "ref/netstandard1.3/ko/System.AppContext.xml", - "ref/netstandard1.3/ru/System.AppContext.xml", - "ref/netstandard1.3/zh-hans/System.AppContext.xml", - "ref/netstandard1.3/zh-hant/System.AppContext.xml", - "ref/netstandard1.6/System.AppContext.dll", - "ref/netstandard1.6/System.AppContext.xml", - "ref/netstandard1.6/de/System.AppContext.xml", - "ref/netstandard1.6/es/System.AppContext.xml", - "ref/netstandard1.6/fr/System.AppContext.xml", - "ref/netstandard1.6/it/System.AppContext.xml", - "ref/netstandard1.6/ja/System.AppContext.xml", - "ref/netstandard1.6/ko/System.AppContext.xml", - "ref/netstandard1.6/ru/System.AppContext.xml", - "ref/netstandard1.6/zh-hans/System.AppContext.xml", - "ref/netstandard1.6/zh-hant/System.AppContext.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.AppContext.dll", - "system.appcontext.4.3.0.nupkg.sha512", - "system.appcontext.nuspec" - ] - }, - "System.Buffers/4.6.0": { - "sha512": "lN6tZi7Q46zFzAbRYXTIvfXcyvQQgxnY7Xm6C6xQ9784dEL1amjM6S6Iw4ZpsvesAKnRVsM4scrDQaDqSClkjA==", - "type": "package", - "path": "system.buffers/4.6.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "buildTransitive/net461/System.Buffers.targets", - "buildTransitive/net462/_._", - "lib/net462/System.Buffers.dll", - "lib/net462/System.Buffers.xml", - "lib/netcoreapp2.1/_._", - "lib/netstandard2.0/System.Buffers.dll", - "lib/netstandard2.0/System.Buffers.xml", - "system.buffers.4.6.0.nupkg.sha512", - "system.buffers.nuspec" - ] - }, - "System.Collections/4.3.0": { - "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", - "type": "package", - "path": "system.collections/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.dll", - "ref/netcore50/System.Collections.xml", - "ref/netcore50/de/System.Collections.xml", - "ref/netcore50/es/System.Collections.xml", - "ref/netcore50/fr/System.Collections.xml", - "ref/netcore50/it/System.Collections.xml", - "ref/netcore50/ja/System.Collections.xml", - "ref/netcore50/ko/System.Collections.xml", - "ref/netcore50/ru/System.Collections.xml", - "ref/netcore50/zh-hans/System.Collections.xml", - "ref/netcore50/zh-hant/System.Collections.xml", - "ref/netstandard1.0/System.Collections.dll", - "ref/netstandard1.0/System.Collections.xml", - "ref/netstandard1.0/de/System.Collections.xml", - "ref/netstandard1.0/es/System.Collections.xml", - "ref/netstandard1.0/fr/System.Collections.xml", - "ref/netstandard1.0/it/System.Collections.xml", - "ref/netstandard1.0/ja/System.Collections.xml", - "ref/netstandard1.0/ko/System.Collections.xml", - "ref/netstandard1.0/ru/System.Collections.xml", - "ref/netstandard1.0/zh-hans/System.Collections.xml", - "ref/netstandard1.0/zh-hant/System.Collections.xml", - "ref/netstandard1.3/System.Collections.dll", - "ref/netstandard1.3/System.Collections.xml", - "ref/netstandard1.3/de/System.Collections.xml", - "ref/netstandard1.3/es/System.Collections.xml", - "ref/netstandard1.3/fr/System.Collections.xml", - "ref/netstandard1.3/it/System.Collections.xml", - "ref/netstandard1.3/ja/System.Collections.xml", - "ref/netstandard1.3/ko/System.Collections.xml", - "ref/netstandard1.3/ru/System.Collections.xml", - "ref/netstandard1.3/zh-hans/System.Collections.xml", - "ref/netstandard1.3/zh-hant/System.Collections.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.4.3.0.nupkg.sha512", - "system.collections.nuspec" - ] - }, - "System.Collections.Concurrent/4.3.0": { - "sha512": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", - "type": "package", - "path": "system.collections.concurrent/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Collections.Concurrent.dll", - "lib/netstandard1.3/System.Collections.Concurrent.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.Concurrent.dll", - "ref/netcore50/System.Collections.Concurrent.xml", - "ref/netcore50/de/System.Collections.Concurrent.xml", - "ref/netcore50/es/System.Collections.Concurrent.xml", - "ref/netcore50/fr/System.Collections.Concurrent.xml", - "ref/netcore50/it/System.Collections.Concurrent.xml", - "ref/netcore50/ja/System.Collections.Concurrent.xml", - "ref/netcore50/ko/System.Collections.Concurrent.xml", - "ref/netcore50/ru/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.1/System.Collections.Concurrent.dll", - "ref/netstandard1.1/System.Collections.Concurrent.xml", - "ref/netstandard1.1/de/System.Collections.Concurrent.xml", - "ref/netstandard1.1/es/System.Collections.Concurrent.xml", - "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.1/it/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.3/System.Collections.Concurrent.dll", - "ref/netstandard1.3/System.Collections.Concurrent.xml", - "ref/netstandard1.3/de/System.Collections.Concurrent.xml", - "ref/netstandard1.3/es/System.Collections.Concurrent.xml", - "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.3/it/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.concurrent.4.3.0.nupkg.sha512", - "system.collections.concurrent.nuspec" - ] - }, - "System.Console/4.3.0": { - "sha512": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", - "type": "package", - "path": "system.console/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Console.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Console.dll", - "ref/netstandard1.3/System.Console.dll", - "ref/netstandard1.3/System.Console.xml", - "ref/netstandard1.3/de/System.Console.xml", - "ref/netstandard1.3/es/System.Console.xml", - "ref/netstandard1.3/fr/System.Console.xml", - "ref/netstandard1.3/it/System.Console.xml", - "ref/netstandard1.3/ja/System.Console.xml", - "ref/netstandard1.3/ko/System.Console.xml", - "ref/netstandard1.3/ru/System.Console.xml", - "ref/netstandard1.3/zh-hans/System.Console.xml", - "ref/netstandard1.3/zh-hant/System.Console.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.console.4.3.0.nupkg.sha512", - "system.console.nuspec" - ] - }, - "System.Diagnostics.Debug/4.3.0": { - "sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", - "type": "package", - "path": "system.diagnostics.debug/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Debug.dll", - "ref/netcore50/System.Diagnostics.Debug.xml", - "ref/netcore50/de/System.Diagnostics.Debug.xml", - "ref/netcore50/es/System.Diagnostics.Debug.xml", - "ref/netcore50/fr/System.Diagnostics.Debug.xml", - "ref/netcore50/it/System.Diagnostics.Debug.xml", - "ref/netcore50/ja/System.Diagnostics.Debug.xml", - "ref/netcore50/ko/System.Diagnostics.Debug.xml", - "ref/netcore50/ru/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/System.Diagnostics.Debug.dll", - "ref/netstandard1.0/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/System.Diagnostics.Debug.dll", - "ref/netstandard1.3/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.debug.4.3.0.nupkg.sha512", - "system.diagnostics.debug.nuspec" - ] - }, - "System.Diagnostics.DiagnosticSource/10.0.2": { - "sha512": "lYWBy8fKkJHaRcOuw30d67PrtVjR5754sz5Wl76s8P+vJ9FSThh9b7LIcTSODx1LY7NB3Srvg+JMnzd67qNZOw==", - "type": "package", - "path": "system.diagnostics.diagnosticsource/10.0.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", - "lib/net10.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net10.0/System.Diagnostics.DiagnosticSource.xml", - "lib/net462/System.Diagnostics.DiagnosticSource.dll", - "lib/net462/System.Diagnostics.DiagnosticSource.xml", - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", - "lib/net9.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net9.0/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", - "system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512", - "system.diagnostics.diagnosticsource.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Diagnostics.EventLog/6.0.0": { - "sha512": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==", - "type": "package", - "path": "system.diagnostics.eventlog/6.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/netcoreapp2.0/System.Diagnostics.EventLog.targets", - "buildTransitive/netcoreapp3.1/_._", - "lib/net461/System.Diagnostics.EventLog.dll", - "lib/net461/System.Diagnostics.EventLog.xml", - "lib/net6.0/System.Diagnostics.EventLog.dll", - "lib/net6.0/System.Diagnostics.EventLog.xml", - "lib/netcoreapp3.1/System.Diagnostics.EventLog.dll", - "lib/netcoreapp3.1/System.Diagnostics.EventLog.xml", - "lib/netstandard2.0/System.Diagnostics.EventLog.dll", - "lib/netstandard2.0/System.Diagnostics.EventLog.xml", - "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll", - "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll", - "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.xml", - "runtimes/win/lib/netcoreapp3.1/System.Diagnostics.EventLog.Messages.dll", - "runtimes/win/lib/netcoreapp3.1/System.Diagnostics.EventLog.dll", - "runtimes/win/lib/netcoreapp3.1/System.Diagnostics.EventLog.xml", - "system.diagnostics.eventlog.6.0.0.nupkg.sha512", - "system.diagnostics.eventlog.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Diagnostics.Tools/4.3.0": { - "sha512": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", - "type": "package", - "path": "system.diagnostics.tools/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Tools.dll", - "ref/netcore50/System.Diagnostics.Tools.xml", - "ref/netcore50/de/System.Diagnostics.Tools.xml", - "ref/netcore50/es/System.Diagnostics.Tools.xml", - "ref/netcore50/fr/System.Diagnostics.Tools.xml", - "ref/netcore50/it/System.Diagnostics.Tools.xml", - "ref/netcore50/ja/System.Diagnostics.Tools.xml", - "ref/netcore50/ko/System.Diagnostics.Tools.xml", - "ref/netcore50/ru/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/System.Diagnostics.Tools.dll", - "ref/netstandard1.0/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.tools.4.3.0.nupkg.sha512", - "system.diagnostics.tools.nuspec" - ] - }, - "System.Diagnostics.Tracing/4.3.0": { - "sha512": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", - "type": "package", - "path": "system.diagnostics.tracing/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Diagnostics.Tracing.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.xml", - "ref/netcore50/de/System.Diagnostics.Tracing.xml", - "ref/netcore50/es/System.Diagnostics.Tracing.xml", - "ref/netcore50/fr/System.Diagnostics.Tracing.xml", - "ref/netcore50/it/System.Diagnostics.Tracing.xml", - "ref/netcore50/ja/System.Diagnostics.Tracing.xml", - "ref/netcore50/ko/System.Diagnostics.Tracing.xml", - "ref/netcore50/ru/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/System.Diagnostics.Tracing.dll", - "ref/netstandard1.1/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/System.Diagnostics.Tracing.dll", - "ref/netstandard1.2/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/System.Diagnostics.Tracing.dll", - "ref/netstandard1.3/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/System.Diagnostics.Tracing.dll", - "ref/netstandard1.5/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.tracing.4.3.0.nupkg.sha512", - "system.diagnostics.tracing.nuspec" - ] - }, - "System.Globalization/4.3.0": { - "sha512": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", - "type": "package", - "path": "system.globalization/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Globalization.dll", - "ref/netcore50/System.Globalization.xml", - "ref/netcore50/de/System.Globalization.xml", - "ref/netcore50/es/System.Globalization.xml", - "ref/netcore50/fr/System.Globalization.xml", - "ref/netcore50/it/System.Globalization.xml", - "ref/netcore50/ja/System.Globalization.xml", - "ref/netcore50/ko/System.Globalization.xml", - "ref/netcore50/ru/System.Globalization.xml", - "ref/netcore50/zh-hans/System.Globalization.xml", - "ref/netcore50/zh-hant/System.Globalization.xml", - "ref/netstandard1.0/System.Globalization.dll", - "ref/netstandard1.0/System.Globalization.xml", - "ref/netstandard1.0/de/System.Globalization.xml", - "ref/netstandard1.0/es/System.Globalization.xml", - "ref/netstandard1.0/fr/System.Globalization.xml", - "ref/netstandard1.0/it/System.Globalization.xml", - "ref/netstandard1.0/ja/System.Globalization.xml", - "ref/netstandard1.0/ko/System.Globalization.xml", - "ref/netstandard1.0/ru/System.Globalization.xml", - "ref/netstandard1.0/zh-hans/System.Globalization.xml", - "ref/netstandard1.0/zh-hant/System.Globalization.xml", - "ref/netstandard1.3/System.Globalization.dll", - "ref/netstandard1.3/System.Globalization.xml", - "ref/netstandard1.3/de/System.Globalization.xml", - "ref/netstandard1.3/es/System.Globalization.xml", - "ref/netstandard1.3/fr/System.Globalization.xml", - "ref/netstandard1.3/it/System.Globalization.xml", - "ref/netstandard1.3/ja/System.Globalization.xml", - "ref/netstandard1.3/ko/System.Globalization.xml", - "ref/netstandard1.3/ru/System.Globalization.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.globalization.4.3.0.nupkg.sha512", - "system.globalization.nuspec" - ] - }, - "System.Globalization.Calendars/4.3.0": { - "sha512": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", - "type": "package", - "path": "system.globalization.calendars/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Calendars.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.xml", - "ref/netstandard1.3/de/System.Globalization.Calendars.xml", - "ref/netstandard1.3/es/System.Globalization.Calendars.xml", - "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", - "ref/netstandard1.3/it/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.globalization.calendars.4.3.0.nupkg.sha512", - "system.globalization.calendars.nuspec" - ] - }, - "System.Globalization.Extensions/4.3.0": { - "sha512": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", - "type": "package", - "path": "system.globalization.extensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Extensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.xml", - "ref/netstandard1.3/de/System.Globalization.Extensions.xml", - "ref/netstandard1.3/es/System.Globalization.Extensions.xml", - "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", - "ref/netstandard1.3/it/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", - "runtimes/win/lib/net46/System.Globalization.Extensions.dll", - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll", - "system.globalization.extensions.4.3.0.nupkg.sha512", - "system.globalization.extensions.nuspec" - ] - }, - "System.IdentityModel.Tokens.Jwt/8.14.0": { - "sha512": "EYGgN/S+HK7S6F3GaaPLFAfK0UzMrkXFyWCvXpQWFYmZln3dqtbyIO7VuTM/iIIPMzkelg8ZLlBPvMhxj6nOAA==", - "type": "package", - "path": "system.identitymodel.tokens.jwt/8.14.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "README.md", - "lib/net462/System.IdentityModel.Tokens.Jwt.dll", - "lib/net462/System.IdentityModel.Tokens.Jwt.xml", - "lib/net472/System.IdentityModel.Tokens.Jwt.dll", - "lib/net472/System.IdentityModel.Tokens.Jwt.xml", - "lib/net6.0/System.IdentityModel.Tokens.Jwt.dll", - "lib/net6.0/System.IdentityModel.Tokens.Jwt.xml", - "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll", - "lib/net8.0/System.IdentityModel.Tokens.Jwt.xml", - "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll", - "lib/net9.0/System.IdentityModel.Tokens.Jwt.xml", - "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll", - "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml", - "system.identitymodel.tokens.jwt.8.14.0.nupkg.sha512", - "system.identitymodel.tokens.jwt.nuspec" - ] - }, - "System.IO/4.3.0": { - "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "type": "package", - "path": "system.io/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.IO.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.IO.dll", - "ref/netcore50/System.IO.dll", - "ref/netcore50/System.IO.xml", - "ref/netcore50/de/System.IO.xml", - "ref/netcore50/es/System.IO.xml", - "ref/netcore50/fr/System.IO.xml", - "ref/netcore50/it/System.IO.xml", - "ref/netcore50/ja/System.IO.xml", - "ref/netcore50/ko/System.IO.xml", - "ref/netcore50/ru/System.IO.xml", - "ref/netcore50/zh-hans/System.IO.xml", - "ref/netcore50/zh-hant/System.IO.xml", - "ref/netstandard1.0/System.IO.dll", - "ref/netstandard1.0/System.IO.xml", - "ref/netstandard1.0/de/System.IO.xml", - "ref/netstandard1.0/es/System.IO.xml", - "ref/netstandard1.0/fr/System.IO.xml", - "ref/netstandard1.0/it/System.IO.xml", - "ref/netstandard1.0/ja/System.IO.xml", - "ref/netstandard1.0/ko/System.IO.xml", - "ref/netstandard1.0/ru/System.IO.xml", - "ref/netstandard1.0/zh-hans/System.IO.xml", - "ref/netstandard1.0/zh-hant/System.IO.xml", - "ref/netstandard1.3/System.IO.dll", - "ref/netstandard1.3/System.IO.xml", - "ref/netstandard1.3/de/System.IO.xml", - "ref/netstandard1.3/es/System.IO.xml", - "ref/netstandard1.3/fr/System.IO.xml", - "ref/netstandard1.3/it/System.IO.xml", - "ref/netstandard1.3/ja/System.IO.xml", - "ref/netstandard1.3/ko/System.IO.xml", - "ref/netstandard1.3/ru/System.IO.xml", - "ref/netstandard1.3/zh-hans/System.IO.xml", - "ref/netstandard1.3/zh-hant/System.IO.xml", - "ref/netstandard1.5/System.IO.dll", - "ref/netstandard1.5/System.IO.xml", - "ref/netstandard1.5/de/System.IO.xml", - "ref/netstandard1.5/es/System.IO.xml", - "ref/netstandard1.5/fr/System.IO.xml", - "ref/netstandard1.5/it/System.IO.xml", - "ref/netstandard1.5/ja/System.IO.xml", - "ref/netstandard1.5/ko/System.IO.xml", - "ref/netstandard1.5/ru/System.IO.xml", - "ref/netstandard1.5/zh-hans/System.IO.xml", - "ref/netstandard1.5/zh-hant/System.IO.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.4.3.0.nupkg.sha512", - "system.io.nuspec" - ] - }, - "System.IO.Compression/4.3.0": { - "sha512": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", - "type": "package", - "path": "system.io.compression/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.IO.Compression.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.xml", - "ref/netcore50/de/System.IO.Compression.xml", - "ref/netcore50/es/System.IO.Compression.xml", - "ref/netcore50/fr/System.IO.Compression.xml", - "ref/netcore50/it/System.IO.Compression.xml", - "ref/netcore50/ja/System.IO.Compression.xml", - "ref/netcore50/ko/System.IO.Compression.xml", - "ref/netcore50/ru/System.IO.Compression.xml", - "ref/netcore50/zh-hans/System.IO.Compression.xml", - "ref/netcore50/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.1/System.IO.Compression.dll", - "ref/netstandard1.1/System.IO.Compression.xml", - "ref/netstandard1.1/de/System.IO.Compression.xml", - "ref/netstandard1.1/es/System.IO.Compression.xml", - "ref/netstandard1.1/fr/System.IO.Compression.xml", - "ref/netstandard1.1/it/System.IO.Compression.xml", - "ref/netstandard1.1/ja/System.IO.Compression.xml", - "ref/netstandard1.1/ko/System.IO.Compression.xml", - "ref/netstandard1.1/ru/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.3/System.IO.Compression.dll", - "ref/netstandard1.3/System.IO.Compression.xml", - "ref/netstandard1.3/de/System.IO.Compression.xml", - "ref/netstandard1.3/es/System.IO.Compression.xml", - "ref/netstandard1.3/fr/System.IO.Compression.xml", - "ref/netstandard1.3/it/System.IO.Compression.xml", - "ref/netstandard1.3/ja/System.IO.Compression.xml", - "ref/netstandard1.3/ko/System.IO.Compression.xml", - "ref/netstandard1.3/ru/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", - "runtimes/win/lib/net46/System.IO.Compression.dll", - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll", - "system.io.compression.4.3.0.nupkg.sha512", - "system.io.compression.nuspec" - ] - }, - "System.IO.Compression.ZipFile/4.3.0": { - "sha512": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", - "type": "package", - "path": "system.io.compression.zipfile/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.Compression.ZipFile.dll", - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.compression.zipfile.4.3.0.nupkg.sha512", - "system.io.compression.zipfile.nuspec" - ] - }, - "System.IO.FileSystem/4.3.0": { - "sha512": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", - "type": "package", - "path": "system.io.filesystem/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.filesystem.4.3.0.nupkg.sha512", - "system.io.filesystem.nuspec" - ] - }, - "System.IO.FileSystem.Primitives/4.3.0": { - "sha512": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", - "type": "package", - "path": "system.io.filesystem.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Primitives.dll", - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.filesystem.primitives.4.3.0.nupkg.sha512", - "system.io.filesystem.primitives.nuspec" - ] - }, - "System.IO.Pipelines/8.0.0": { - "sha512": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", - "type": "package", - "path": "system.io.pipelines/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.IO.Pipelines.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets", - "lib/net462/System.IO.Pipelines.dll", - "lib/net462/System.IO.Pipelines.xml", - "lib/net6.0/System.IO.Pipelines.dll", - "lib/net6.0/System.IO.Pipelines.xml", - "lib/net7.0/System.IO.Pipelines.dll", - "lib/net7.0/System.IO.Pipelines.xml", - "lib/net8.0/System.IO.Pipelines.dll", - "lib/net8.0/System.IO.Pipelines.xml", - "lib/netstandard2.0/System.IO.Pipelines.dll", - "lib/netstandard2.0/System.IO.Pipelines.xml", - "system.io.pipelines.8.0.0.nupkg.sha512", - "system.io.pipelines.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Linq/4.3.0": { - "sha512": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", - "type": "package", - "path": "system.linq/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.dll", - "lib/netcore50/System.Linq.dll", - "lib/netstandard1.6/System.Linq.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.dll", - "ref/netcore50/System.Linq.dll", - "ref/netcore50/System.Linq.xml", - "ref/netcore50/de/System.Linq.xml", - "ref/netcore50/es/System.Linq.xml", - "ref/netcore50/fr/System.Linq.xml", - "ref/netcore50/it/System.Linq.xml", - "ref/netcore50/ja/System.Linq.xml", - "ref/netcore50/ko/System.Linq.xml", - "ref/netcore50/ru/System.Linq.xml", - "ref/netcore50/zh-hans/System.Linq.xml", - "ref/netcore50/zh-hant/System.Linq.xml", - "ref/netstandard1.0/System.Linq.dll", - "ref/netstandard1.0/System.Linq.xml", - "ref/netstandard1.0/de/System.Linq.xml", - "ref/netstandard1.0/es/System.Linq.xml", - "ref/netstandard1.0/fr/System.Linq.xml", - "ref/netstandard1.0/it/System.Linq.xml", - "ref/netstandard1.0/ja/System.Linq.xml", - "ref/netstandard1.0/ko/System.Linq.xml", - "ref/netstandard1.0/ru/System.Linq.xml", - "ref/netstandard1.0/zh-hans/System.Linq.xml", - "ref/netstandard1.0/zh-hant/System.Linq.xml", - "ref/netstandard1.6/System.Linq.dll", - "ref/netstandard1.6/System.Linq.xml", - "ref/netstandard1.6/de/System.Linq.xml", - "ref/netstandard1.6/es/System.Linq.xml", - "ref/netstandard1.6/fr/System.Linq.xml", - "ref/netstandard1.6/it/System.Linq.xml", - "ref/netstandard1.6/ja/System.Linq.xml", - "ref/netstandard1.6/ko/System.Linq.xml", - "ref/netstandard1.6/ru/System.Linq.xml", - "ref/netstandard1.6/zh-hans/System.Linq.xml", - "ref/netstandard1.6/zh-hant/System.Linq.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.linq.4.3.0.nupkg.sha512", - "system.linq.nuspec" - ] - }, - "System.Linq.Expressions/4.3.0": { - "sha512": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", - "type": "package", - "path": "system.linq.expressions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.Expressions.dll", - "lib/netcore50/System.Linq.Expressions.dll", - "lib/netstandard1.6/System.Linq.Expressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.xml", - "ref/netcore50/de/System.Linq.Expressions.xml", - "ref/netcore50/es/System.Linq.Expressions.xml", - "ref/netcore50/fr/System.Linq.Expressions.xml", - "ref/netcore50/it/System.Linq.Expressions.xml", - "ref/netcore50/ja/System.Linq.Expressions.xml", - "ref/netcore50/ko/System.Linq.Expressions.xml", - "ref/netcore50/ru/System.Linq.Expressions.xml", - "ref/netcore50/zh-hans/System.Linq.Expressions.xml", - "ref/netcore50/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.0/System.Linq.Expressions.dll", - "ref/netstandard1.0/System.Linq.Expressions.xml", - "ref/netstandard1.0/de/System.Linq.Expressions.xml", - "ref/netstandard1.0/es/System.Linq.Expressions.xml", - "ref/netstandard1.0/fr/System.Linq.Expressions.xml", - "ref/netstandard1.0/it/System.Linq.Expressions.xml", - "ref/netstandard1.0/ja/System.Linq.Expressions.xml", - "ref/netstandard1.0/ko/System.Linq.Expressions.xml", - "ref/netstandard1.0/ru/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.3/System.Linq.Expressions.dll", - "ref/netstandard1.3/System.Linq.Expressions.xml", - "ref/netstandard1.3/de/System.Linq.Expressions.xml", - "ref/netstandard1.3/es/System.Linq.Expressions.xml", - "ref/netstandard1.3/fr/System.Linq.Expressions.xml", - "ref/netstandard1.3/it/System.Linq.Expressions.xml", - "ref/netstandard1.3/ja/System.Linq.Expressions.xml", - "ref/netstandard1.3/ko/System.Linq.Expressions.xml", - "ref/netstandard1.3/ru/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.6/System.Linq.Expressions.dll", - "ref/netstandard1.6/System.Linq.Expressions.xml", - "ref/netstandard1.6/de/System.Linq.Expressions.xml", - "ref/netstandard1.6/es/System.Linq.Expressions.xml", - "ref/netstandard1.6/fr/System.Linq.Expressions.xml", - "ref/netstandard1.6/it/System.Linq.Expressions.xml", - "ref/netstandard1.6/ja/System.Linq.Expressions.xml", - "ref/netstandard1.6/ko/System.Linq.Expressions.xml", - "ref/netstandard1.6/ru/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll", - "system.linq.expressions.4.3.0.nupkg.sha512", - "system.linq.expressions.nuspec" - ] - }, - "System.Net.Http/4.3.0": { - "sha512": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", - "type": "package", - "path": "system.net.http/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/Xamarinmac20/_._", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/net46/System.Net.Http.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/Xamarinmac20/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/net46/System.Net.Http.dll", - "ref/net46/System.Net.Http.xml", - "ref/net46/de/System.Net.Http.xml", - "ref/net46/es/System.Net.Http.xml", - "ref/net46/fr/System.Net.Http.xml", - "ref/net46/it/System.Net.Http.xml", - "ref/net46/ja/System.Net.Http.xml", - "ref/net46/ko/System.Net.Http.xml", - "ref/net46/ru/System.Net.Http.xml", - "ref/net46/zh-hans/System.Net.Http.xml", - "ref/net46/zh-hant/System.Net.Http.xml", - "ref/netcore50/System.Net.Http.dll", - "ref/netcore50/System.Net.Http.xml", - "ref/netcore50/de/System.Net.Http.xml", - "ref/netcore50/es/System.Net.Http.xml", - "ref/netcore50/fr/System.Net.Http.xml", - "ref/netcore50/it/System.Net.Http.xml", - "ref/netcore50/ja/System.Net.Http.xml", - "ref/netcore50/ko/System.Net.Http.xml", - "ref/netcore50/ru/System.Net.Http.xml", - "ref/netcore50/zh-hans/System.Net.Http.xml", - "ref/netcore50/zh-hant/System.Net.Http.xml", - "ref/netstandard1.1/System.Net.Http.dll", - "ref/netstandard1.1/System.Net.Http.xml", - "ref/netstandard1.1/de/System.Net.Http.xml", - "ref/netstandard1.1/es/System.Net.Http.xml", - "ref/netstandard1.1/fr/System.Net.Http.xml", - "ref/netstandard1.1/it/System.Net.Http.xml", - "ref/netstandard1.1/ja/System.Net.Http.xml", - "ref/netstandard1.1/ko/System.Net.Http.xml", - "ref/netstandard1.1/ru/System.Net.Http.xml", - "ref/netstandard1.1/zh-hans/System.Net.Http.xml", - "ref/netstandard1.1/zh-hant/System.Net.Http.xml", - "ref/netstandard1.3/System.Net.Http.dll", - "ref/netstandard1.3/System.Net.Http.xml", - "ref/netstandard1.3/de/System.Net.Http.xml", - "ref/netstandard1.3/es/System.Net.Http.xml", - "ref/netstandard1.3/fr/System.Net.Http.xml", - "ref/netstandard1.3/it/System.Net.Http.xml", - "ref/netstandard1.3/ja/System.Net.Http.xml", - "ref/netstandard1.3/ko/System.Net.Http.xml", - "ref/netstandard1.3/ru/System.Net.Http.xml", - "ref/netstandard1.3/zh-hans/System.Net.Http.xml", - "ref/netstandard1.3/zh-hant/System.Net.Http.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", - "runtimes/win/lib/net46/System.Net.Http.dll", - "runtimes/win/lib/netcore50/System.Net.Http.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll", - "system.net.http.4.3.0.nupkg.sha512", - "system.net.http.nuspec" - ] - }, - "System.Net.Primitives/4.3.0": { - "sha512": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", - "type": "package", - "path": "system.net.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Net.Primitives.dll", - "ref/netcore50/System.Net.Primitives.xml", - "ref/netcore50/de/System.Net.Primitives.xml", - "ref/netcore50/es/System.Net.Primitives.xml", - "ref/netcore50/fr/System.Net.Primitives.xml", - "ref/netcore50/it/System.Net.Primitives.xml", - "ref/netcore50/ja/System.Net.Primitives.xml", - "ref/netcore50/ko/System.Net.Primitives.xml", - "ref/netcore50/ru/System.Net.Primitives.xml", - "ref/netcore50/zh-hans/System.Net.Primitives.xml", - "ref/netcore50/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.0/System.Net.Primitives.dll", - "ref/netstandard1.0/System.Net.Primitives.xml", - "ref/netstandard1.0/de/System.Net.Primitives.xml", - "ref/netstandard1.0/es/System.Net.Primitives.xml", - "ref/netstandard1.0/fr/System.Net.Primitives.xml", - "ref/netstandard1.0/it/System.Net.Primitives.xml", - "ref/netstandard1.0/ja/System.Net.Primitives.xml", - "ref/netstandard1.0/ko/System.Net.Primitives.xml", - "ref/netstandard1.0/ru/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.1/System.Net.Primitives.dll", - "ref/netstandard1.1/System.Net.Primitives.xml", - "ref/netstandard1.1/de/System.Net.Primitives.xml", - "ref/netstandard1.1/es/System.Net.Primitives.xml", - "ref/netstandard1.1/fr/System.Net.Primitives.xml", - "ref/netstandard1.1/it/System.Net.Primitives.xml", - "ref/netstandard1.1/ja/System.Net.Primitives.xml", - "ref/netstandard1.1/ko/System.Net.Primitives.xml", - "ref/netstandard1.1/ru/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.3/System.Net.Primitives.dll", - "ref/netstandard1.3/System.Net.Primitives.xml", - "ref/netstandard1.3/de/System.Net.Primitives.xml", - "ref/netstandard1.3/es/System.Net.Primitives.xml", - "ref/netstandard1.3/fr/System.Net.Primitives.xml", - "ref/netstandard1.3/it/System.Net.Primitives.xml", - "ref/netstandard1.3/ja/System.Net.Primitives.xml", - "ref/netstandard1.3/ko/System.Net.Primitives.xml", - "ref/netstandard1.3/ru/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.net.primitives.4.3.0.nupkg.sha512", - "system.net.primitives.nuspec" - ] - }, - "System.Net.Sockets/4.3.0": { - "sha512": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", - "type": "package", - "path": "system.net.sockets/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Sockets.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.xml", - "ref/netstandard1.3/de/System.Net.Sockets.xml", - "ref/netstandard1.3/es/System.Net.Sockets.xml", - "ref/netstandard1.3/fr/System.Net.Sockets.xml", - "ref/netstandard1.3/it/System.Net.Sockets.xml", - "ref/netstandard1.3/ja/System.Net.Sockets.xml", - "ref/netstandard1.3/ko/System.Net.Sockets.xml", - "ref/netstandard1.3/ru/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.net.sockets.4.3.0.nupkg.sha512", - "system.net.sockets.nuspec" - ] - }, - "System.Net.WebSockets.WebSocketProtocol/5.1.0": { - "sha512": "cVTT/Zw4JuUeX8H0tdWii0OMHsA5MY2PaFYOq/Hstw0jk479jZ+f8baCicWFNzJlCPWAe0uoNCELoB5eNmaMqA==", - "type": "package", - "path": "system.net.websockets.websocketprotocol/5.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "buildTransitive/net461/System.Net.WebSockets.WebSocketProtocol.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/System.Net.WebSockets.WebSocketProtocol.targets", - "lib/net462/System.Net.WebSockets.WebSocketProtocol.dll", - "lib/net462/System.Net.WebSockets.WebSocketProtocol.xml", - "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll", - "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.xml", - "lib/netstandard2.0/System.Net.WebSockets.WebSocketProtocol.dll", - "lib/netstandard2.0/System.Net.WebSockets.WebSocketProtocol.xml", - "system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512", - "system.net.websockets.websocketprotocol.nuspec" - ] - }, - "System.ObjectModel/4.3.0": { - "sha512": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", - "type": "package", - "path": "system.objectmodel/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ObjectModel.dll", - "lib/netstandard1.3/System.ObjectModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ObjectModel.dll", - "ref/netcore50/System.ObjectModel.xml", - "ref/netcore50/de/System.ObjectModel.xml", - "ref/netcore50/es/System.ObjectModel.xml", - "ref/netcore50/fr/System.ObjectModel.xml", - "ref/netcore50/it/System.ObjectModel.xml", - "ref/netcore50/ja/System.ObjectModel.xml", - "ref/netcore50/ko/System.ObjectModel.xml", - "ref/netcore50/ru/System.ObjectModel.xml", - "ref/netcore50/zh-hans/System.ObjectModel.xml", - "ref/netcore50/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.0/System.ObjectModel.dll", - "ref/netstandard1.0/System.ObjectModel.xml", - "ref/netstandard1.0/de/System.ObjectModel.xml", - "ref/netstandard1.0/es/System.ObjectModel.xml", - "ref/netstandard1.0/fr/System.ObjectModel.xml", - "ref/netstandard1.0/it/System.ObjectModel.xml", - "ref/netstandard1.0/ja/System.ObjectModel.xml", - "ref/netstandard1.0/ko/System.ObjectModel.xml", - "ref/netstandard1.0/ru/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.3/System.ObjectModel.dll", - "ref/netstandard1.3/System.ObjectModel.xml", - "ref/netstandard1.3/de/System.ObjectModel.xml", - "ref/netstandard1.3/es/System.ObjectModel.xml", - "ref/netstandard1.3/fr/System.ObjectModel.xml", - "ref/netstandard1.3/it/System.ObjectModel.xml", - "ref/netstandard1.3/ja/System.ObjectModel.xml", - "ref/netstandard1.3/ko/System.ObjectModel.xml", - "ref/netstandard1.3/ru/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.objectmodel.4.3.0.nupkg.sha512", - "system.objectmodel.nuspec" - ] - }, - "System.Reflection/4.3.0": { - "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", - "type": "package", - "path": "system.reflection/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Reflection.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Reflection.dll", - "ref/netcore50/System.Reflection.dll", - "ref/netcore50/System.Reflection.xml", - "ref/netcore50/de/System.Reflection.xml", - "ref/netcore50/es/System.Reflection.xml", - "ref/netcore50/fr/System.Reflection.xml", - "ref/netcore50/it/System.Reflection.xml", - "ref/netcore50/ja/System.Reflection.xml", - "ref/netcore50/ko/System.Reflection.xml", - "ref/netcore50/ru/System.Reflection.xml", - "ref/netcore50/zh-hans/System.Reflection.xml", - "ref/netcore50/zh-hant/System.Reflection.xml", - "ref/netstandard1.0/System.Reflection.dll", - "ref/netstandard1.0/System.Reflection.xml", - "ref/netstandard1.0/de/System.Reflection.xml", - "ref/netstandard1.0/es/System.Reflection.xml", - "ref/netstandard1.0/fr/System.Reflection.xml", - "ref/netstandard1.0/it/System.Reflection.xml", - "ref/netstandard1.0/ja/System.Reflection.xml", - "ref/netstandard1.0/ko/System.Reflection.xml", - "ref/netstandard1.0/ru/System.Reflection.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.xml", - "ref/netstandard1.3/System.Reflection.dll", - "ref/netstandard1.3/System.Reflection.xml", - "ref/netstandard1.3/de/System.Reflection.xml", - "ref/netstandard1.3/es/System.Reflection.xml", - "ref/netstandard1.3/fr/System.Reflection.xml", - "ref/netstandard1.3/it/System.Reflection.xml", - "ref/netstandard1.3/ja/System.Reflection.xml", - "ref/netstandard1.3/ko/System.Reflection.xml", - "ref/netstandard1.3/ru/System.Reflection.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.xml", - "ref/netstandard1.5/System.Reflection.dll", - "ref/netstandard1.5/System.Reflection.xml", - "ref/netstandard1.5/de/System.Reflection.xml", - "ref/netstandard1.5/es/System.Reflection.xml", - "ref/netstandard1.5/fr/System.Reflection.xml", - "ref/netstandard1.5/it/System.Reflection.xml", - "ref/netstandard1.5/ja/System.Reflection.xml", - "ref/netstandard1.5/ko/System.Reflection.xml", - "ref/netstandard1.5/ru/System.Reflection.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.4.3.0.nupkg.sha512", - "system.reflection.nuspec" - ] - }, - "System.Reflection.Emit/4.7.0": { - "sha512": "VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", - "type": "package", - "path": "system.reflection.emit/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.dll", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.1/System.Reflection.Emit.dll", - "lib/netstandard1.1/System.Reflection.Emit.xml", - "lib/netstandard1.3/System.Reflection.Emit.dll", - "lib/netstandard2.0/System.Reflection.Emit.dll", - "lib/netstandard2.0/System.Reflection.Emit.xml", - "lib/netstandard2.1/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.1/System.Reflection.Emit.dll", - "ref/netstandard1.1/System.Reflection.Emit.xml", - "ref/netstandard1.1/de/System.Reflection.Emit.xml", - "ref/netstandard1.1/es/System.Reflection.Emit.xml", - "ref/netstandard1.1/fr/System.Reflection.Emit.xml", - "ref/netstandard1.1/it/System.Reflection.Emit.xml", - "ref/netstandard1.1/ja/System.Reflection.Emit.xml", - "ref/netstandard1.1/ko/System.Reflection.Emit.xml", - "ref/netstandard1.1/ru/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", - "ref/netstandard2.0/System.Reflection.Emit.dll", - "ref/netstandard2.0/System.Reflection.Emit.xml", - "ref/netstandard2.1/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.Emit.dll", - "runtimes/aot/lib/netcore50/System.Reflection.Emit.xml", - "system.reflection.emit.4.7.0.nupkg.sha512", - "system.reflection.emit.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Reflection.Emit.ILGeneration/4.3.0": { - "sha512": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", - "type": "package", - "path": "system.reflection.emit.ilgeneration/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/_._", - "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512", - "system.reflection.emit.ilgeneration.nuspec" - ] - }, - "System.Reflection.Emit.Lightweight/4.3.0": { - "sha512": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", - "type": "package", - "path": "system.reflection.emit.lightweight/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.Lightweight.dll", - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/_._", - "system.reflection.emit.lightweight.4.3.0.nupkg.sha512", - "system.reflection.emit.lightweight.nuspec" - ] - }, - "System.Reflection.Extensions/4.3.0": { - "sha512": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", - "type": "package", - "path": "system.reflection.extensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Extensions.dll", - "ref/netcore50/System.Reflection.Extensions.xml", - "ref/netcore50/de/System.Reflection.Extensions.xml", - "ref/netcore50/es/System.Reflection.Extensions.xml", - "ref/netcore50/fr/System.Reflection.Extensions.xml", - "ref/netcore50/it/System.Reflection.Extensions.xml", - "ref/netcore50/ja/System.Reflection.Extensions.xml", - "ref/netcore50/ko/System.Reflection.Extensions.xml", - "ref/netcore50/ru/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", - "ref/netstandard1.0/System.Reflection.Extensions.dll", - "ref/netstandard1.0/System.Reflection.Extensions.xml", - "ref/netstandard1.0/de/System.Reflection.Extensions.xml", - "ref/netstandard1.0/es/System.Reflection.Extensions.xml", - "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", - "ref/netstandard1.0/it/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.extensions.4.3.0.nupkg.sha512", - "system.reflection.extensions.nuspec" - ] - }, - "System.Reflection.Metadata/1.6.0": { - "sha512": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==", - "type": "package", - "path": "system.reflection.metadata/1.6.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.1/System.Reflection.Metadata.dll", - "lib/netstandard1.1/System.Reflection.Metadata.xml", - "lib/netstandard2.0/System.Reflection.Metadata.dll", - "lib/netstandard2.0/System.Reflection.Metadata.xml", - "lib/portable-net45+win8/System.Reflection.Metadata.dll", - "lib/portable-net45+win8/System.Reflection.Metadata.xml", - "system.reflection.metadata.1.6.0.nupkg.sha512", - "system.reflection.metadata.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Reflection.Primitives/4.3.0": { - "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", - "type": "package", - "path": "system.reflection.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Primitives.dll", - "ref/netcore50/System.Reflection.Primitives.xml", - "ref/netcore50/de/System.Reflection.Primitives.xml", - "ref/netcore50/es/System.Reflection.Primitives.xml", - "ref/netcore50/fr/System.Reflection.Primitives.xml", - "ref/netcore50/it/System.Reflection.Primitives.xml", - "ref/netcore50/ja/System.Reflection.Primitives.xml", - "ref/netcore50/ko/System.Reflection.Primitives.xml", - "ref/netcore50/ru/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", - "ref/netstandard1.0/System.Reflection.Primitives.dll", - "ref/netstandard1.0/System.Reflection.Primitives.xml", - "ref/netstandard1.0/de/System.Reflection.Primitives.xml", - "ref/netstandard1.0/es/System.Reflection.Primitives.xml", - "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", - "ref/netstandard1.0/it/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.reflection.primitives.4.3.0.nupkg.sha512", - "system.reflection.primitives.nuspec" - ] - }, - "System.Reflection.TypeExtensions/4.3.0": { - "sha512": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", - "type": "package", - "path": "system.reflection.typeextensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Reflection.TypeExtensions.dll", - "lib/net462/System.Reflection.TypeExtensions.dll", - "lib/netcore50/System.Reflection.TypeExtensions.dll", - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Reflection.TypeExtensions.dll", - "ref/net462/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll", - "system.reflection.typeextensions.4.3.0.nupkg.sha512", - "system.reflection.typeextensions.nuspec" - ] - }, - "System.Resources.ResourceManager/4.3.0": { - "sha512": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", - "type": "package", - "path": "system.resources.resourcemanager/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Resources.ResourceManager.dll", - "ref/netcore50/System.Resources.ResourceManager.xml", - "ref/netcore50/de/System.Resources.ResourceManager.xml", - "ref/netcore50/es/System.Resources.ResourceManager.xml", - "ref/netcore50/fr/System.Resources.ResourceManager.xml", - "ref/netcore50/it/System.Resources.ResourceManager.xml", - "ref/netcore50/ja/System.Resources.ResourceManager.xml", - "ref/netcore50/ko/System.Resources.ResourceManager.xml", - "ref/netcore50/ru/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/System.Resources.ResourceManager.dll", - "ref/netstandard1.0/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.resources.resourcemanager.4.3.0.nupkg.sha512", - "system.resources.resourcemanager.nuspec" - ] - }, - "System.Runtime/4.3.0": { - "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "type": "package", - "path": "system.runtime/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.dll", - "lib/portable-net45+win8+wp80+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.dll", - "ref/netcore50/System.Runtime.dll", - "ref/netcore50/System.Runtime.xml", - "ref/netcore50/de/System.Runtime.xml", - "ref/netcore50/es/System.Runtime.xml", - "ref/netcore50/fr/System.Runtime.xml", - "ref/netcore50/it/System.Runtime.xml", - "ref/netcore50/ja/System.Runtime.xml", - "ref/netcore50/ko/System.Runtime.xml", - "ref/netcore50/ru/System.Runtime.xml", - "ref/netcore50/zh-hans/System.Runtime.xml", - "ref/netcore50/zh-hant/System.Runtime.xml", - "ref/netstandard1.0/System.Runtime.dll", - "ref/netstandard1.0/System.Runtime.xml", - "ref/netstandard1.0/de/System.Runtime.xml", - "ref/netstandard1.0/es/System.Runtime.xml", - "ref/netstandard1.0/fr/System.Runtime.xml", - "ref/netstandard1.0/it/System.Runtime.xml", - "ref/netstandard1.0/ja/System.Runtime.xml", - "ref/netstandard1.0/ko/System.Runtime.xml", - "ref/netstandard1.0/ru/System.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.xml", - "ref/netstandard1.2/System.Runtime.dll", - "ref/netstandard1.2/System.Runtime.xml", - "ref/netstandard1.2/de/System.Runtime.xml", - "ref/netstandard1.2/es/System.Runtime.xml", - "ref/netstandard1.2/fr/System.Runtime.xml", - "ref/netstandard1.2/it/System.Runtime.xml", - "ref/netstandard1.2/ja/System.Runtime.xml", - "ref/netstandard1.2/ko/System.Runtime.xml", - "ref/netstandard1.2/ru/System.Runtime.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.xml", - "ref/netstandard1.3/System.Runtime.dll", - "ref/netstandard1.3/System.Runtime.xml", - "ref/netstandard1.3/de/System.Runtime.xml", - "ref/netstandard1.3/es/System.Runtime.xml", - "ref/netstandard1.3/fr/System.Runtime.xml", - "ref/netstandard1.3/it/System.Runtime.xml", - "ref/netstandard1.3/ja/System.Runtime.xml", - "ref/netstandard1.3/ko/System.Runtime.xml", - "ref/netstandard1.3/ru/System.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.xml", - "ref/netstandard1.5/System.Runtime.dll", - "ref/netstandard1.5/System.Runtime.xml", - "ref/netstandard1.5/de/System.Runtime.xml", - "ref/netstandard1.5/es/System.Runtime.xml", - "ref/netstandard1.5/fr/System.Runtime.xml", - "ref/netstandard1.5/it/System.Runtime.xml", - "ref/netstandard1.5/ja/System.Runtime.xml", - "ref/netstandard1.5/ko/System.Runtime.xml", - "ref/netstandard1.5/ru/System.Runtime.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.xml", - "ref/portable-net45+win8+wp80+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.4.3.0.nupkg.sha512", - "system.runtime.nuspec" - ] - }, - "System.Runtime.Extensions/4.3.0": { - "sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", - "type": "package", - "path": "system.runtime.extensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.xml", - "ref/netcore50/de/System.Runtime.Extensions.xml", - "ref/netcore50/es/System.Runtime.Extensions.xml", - "ref/netcore50/fr/System.Runtime.Extensions.xml", - "ref/netcore50/it/System.Runtime.Extensions.xml", - "ref/netcore50/ja/System.Runtime.Extensions.xml", - "ref/netcore50/ko/System.Runtime.Extensions.xml", - "ref/netcore50/ru/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.0/System.Runtime.Extensions.dll", - "ref/netstandard1.0/System.Runtime.Extensions.xml", - "ref/netstandard1.0/de/System.Runtime.Extensions.xml", - "ref/netstandard1.0/es/System.Runtime.Extensions.xml", - "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.0/it/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.3/System.Runtime.Extensions.dll", - "ref/netstandard1.3/System.Runtime.Extensions.xml", - "ref/netstandard1.3/de/System.Runtime.Extensions.xml", - "ref/netstandard1.3/es/System.Runtime.Extensions.xml", - "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.3/it/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.5/System.Runtime.Extensions.dll", - "ref/netstandard1.5/System.Runtime.Extensions.xml", - "ref/netstandard1.5/de/System.Runtime.Extensions.xml", - "ref/netstandard1.5/es/System.Runtime.Extensions.xml", - "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.5/it/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.extensions.4.3.0.nupkg.sha512", - "system.runtime.extensions.nuspec" - ] - }, - "System.Runtime.Handles/4.3.0": { - "sha512": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", - "type": "package", - "path": "system.runtime.handles/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Runtime.Handles.dll", - "ref/netstandard1.3/System.Runtime.Handles.xml", - "ref/netstandard1.3/de/System.Runtime.Handles.xml", - "ref/netstandard1.3/es/System.Runtime.Handles.xml", - "ref/netstandard1.3/fr/System.Runtime.Handles.xml", - "ref/netstandard1.3/it/System.Runtime.Handles.xml", - "ref/netstandard1.3/ja/System.Runtime.Handles.xml", - "ref/netstandard1.3/ko/System.Runtime.Handles.xml", - "ref/netstandard1.3/ru/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.handles.4.3.0.nupkg.sha512", - "system.runtime.handles.nuspec" - ] - }, - "System.Runtime.InteropServices/4.3.0": { - "sha512": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", - "type": "package", - "path": "system.runtime.interopservices/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.InteropServices.dll", - "lib/net463/System.Runtime.InteropServices.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.InteropServices.dll", - "ref/net463/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.xml", - "ref/netcore50/de/System.Runtime.InteropServices.xml", - "ref/netcore50/es/System.Runtime.InteropServices.xml", - "ref/netcore50/fr/System.Runtime.InteropServices.xml", - "ref/netcore50/it/System.Runtime.InteropServices.xml", - "ref/netcore50/ja/System.Runtime.InteropServices.xml", - "ref/netcore50/ko/System.Runtime.InteropServices.xml", - "ref/netcore50/ru/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", - "ref/netcoreapp1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/System.Runtime.InteropServices.dll", - "ref/netstandard1.2/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/System.Runtime.InteropServices.dll", - "ref/netstandard1.3/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/System.Runtime.InteropServices.dll", - "ref/netstandard1.5/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.interopservices.4.3.0.nupkg.sha512", - "system.runtime.interopservices.nuspec" - ] - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "sha512": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", - "type": "package", - "path": "system.runtime.interopservices.runtimeinformation/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", - "system.runtime.interopservices.runtimeinformation.nuspec" - ] - }, - "System.Runtime.Numerics/4.3.0": { - "sha512": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", - "type": "package", - "path": "system.runtime.numerics/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Runtime.Numerics.dll", - "lib/netstandard1.3/System.Runtime.Numerics.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Runtime.Numerics.dll", - "ref/netcore50/System.Runtime.Numerics.xml", - "ref/netcore50/de/System.Runtime.Numerics.xml", - "ref/netcore50/es/System.Runtime.Numerics.xml", - "ref/netcore50/fr/System.Runtime.Numerics.xml", - "ref/netcore50/it/System.Runtime.Numerics.xml", - "ref/netcore50/ja/System.Runtime.Numerics.xml", - "ref/netcore50/ko/System.Runtime.Numerics.xml", - "ref/netcore50/ru/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", - "ref/netstandard1.1/System.Runtime.Numerics.dll", - "ref/netstandard1.1/System.Runtime.Numerics.xml", - "ref/netstandard1.1/de/System.Runtime.Numerics.xml", - "ref/netstandard1.1/es/System.Runtime.Numerics.xml", - "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", - "ref/netstandard1.1/it/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.numerics.4.3.0.nupkg.sha512", - "system.runtime.numerics.nuspec" - ] - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "sha512": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", - "type": "package", - "path": "system.security.cryptography.algorithms/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Algorithms.dll", - "lib/net461/System.Security.Cryptography.Algorithms.dll", - "lib/net463/System.Security.Cryptography.Algorithms.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Algorithms.dll", - "ref/net461/System.Security.Cryptography.Algorithms.dll", - "ref/net463/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "system.security.cryptography.algorithms.4.3.0.nupkg.sha512", - "system.security.cryptography.algorithms.nuspec" - ] - }, - "System.Security.Cryptography.Cng/4.3.0": { - "sha512": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", - "type": "package", - "path": "system.security.cryptography.cng/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Cryptography.Cng.dll", - "lib/net461/System.Security.Cryptography.Cng.dll", - "lib/net463/System.Security.Cryptography.Cng.dll", - "ref/net46/System.Security.Cryptography.Cng.dll", - "ref/net461/System.Security.Cryptography.Cng.dll", - "ref/net463/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "system.security.cryptography.cng.4.3.0.nupkg.sha512", - "system.security.cryptography.cng.nuspec" - ] - }, - "System.Security.Cryptography.Csp/4.3.0": { - "sha512": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", - "type": "package", - "path": "system.security.cryptography.csp/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Csp.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Csp.dll", - "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "system.security.cryptography.csp.4.3.0.nupkg.sha512", - "system.security.cryptography.csp.nuspec" - ] - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "sha512": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", - "type": "package", - "path": "system.security.cryptography.encoding/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Encoding.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "system.security.cryptography.encoding.4.3.0.nupkg.sha512", - "system.security.cryptography.encoding.nuspec" - ] - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", - "type": "package", - "path": "system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "system.security.cryptography.openssl.nuspec" - ] - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "sha512": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", - "type": "package", - "path": "system.security.cryptography.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Primitives.dll", - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Primitives.dll", - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.security.cryptography.primitives.4.3.0.nupkg.sha512", - "system.security.cryptography.primitives.nuspec" - ] - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "sha512": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", - "type": "package", - "path": "system.security.cryptography.x509certificates/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.X509Certificates.dll", - "lib/net461/System.Security.Cryptography.X509Certificates.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.X509Certificates.dll", - "ref/net461/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", - "system.security.cryptography.x509certificates.nuspec" - ] - }, - "System.Text.Encoding/4.3.0": { - "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "type": "package", - "path": "system.text.encoding/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.dll", - "ref/netcore50/System.Text.Encoding.xml", - "ref/netcore50/de/System.Text.Encoding.xml", - "ref/netcore50/es/System.Text.Encoding.xml", - "ref/netcore50/fr/System.Text.Encoding.xml", - "ref/netcore50/it/System.Text.Encoding.xml", - "ref/netcore50/ja/System.Text.Encoding.xml", - "ref/netcore50/ko/System.Text.Encoding.xml", - "ref/netcore50/ru/System.Text.Encoding.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.0/System.Text.Encoding.dll", - "ref/netstandard1.0/System.Text.Encoding.xml", - "ref/netstandard1.0/de/System.Text.Encoding.xml", - "ref/netstandard1.0/es/System.Text.Encoding.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.xml", - "ref/netstandard1.0/it/System.Text.Encoding.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.3/System.Text.Encoding.dll", - "ref/netstandard1.3/System.Text.Encoding.xml", - "ref/netstandard1.3/de/System.Text.Encoding.xml", - "ref/netstandard1.3/es/System.Text.Encoding.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.xml", - "ref/netstandard1.3/it/System.Text.Encoding.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.encoding.4.3.0.nupkg.sha512", - "system.text.encoding.nuspec" - ] - }, - "System.Text.Encoding.Extensions/4.3.0": { - "sha512": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", - "type": "package", - "path": "system.text.encoding.extensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.Extensions.dll", - "ref/netcore50/System.Text.Encoding.Extensions.xml", - "ref/netcore50/de/System.Text.Encoding.Extensions.xml", - "ref/netcore50/es/System.Text.Encoding.Extensions.xml", - "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", - "ref/netcore50/it/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.encoding.extensions.4.3.0.nupkg.sha512", - "system.text.encoding.extensions.nuspec" - ] - }, - "System.Text.Encodings.Web/8.0.0": { - "sha512": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", - "type": "package", - "path": "system.text.encodings.web/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Text.Encodings.Web.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", - "lib/net462/System.Text.Encodings.Web.dll", - "lib/net462/System.Text.Encodings.Web.xml", - "lib/net6.0/System.Text.Encodings.Web.dll", - "lib/net6.0/System.Text.Encodings.Web.xml", - "lib/net7.0/System.Text.Encodings.Web.dll", - "lib/net7.0/System.Text.Encodings.Web.xml", - "lib/net8.0/System.Text.Encodings.Web.dll", - "lib/net8.0/System.Text.Encodings.Web.xml", - "lib/netstandard2.0/System.Text.Encodings.Web.dll", - "lib/netstandard2.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", - "system.text.encodings.web.8.0.0.nupkg.sha512", - "system.text.encodings.web.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Text.RegularExpressions/4.3.0": { - "sha512": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", - "type": "package", - "path": "system.text.regularexpressions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Text.RegularExpressions.dll", - "lib/netcore50/System.Text.RegularExpressions.dll", - "lib/netstandard1.6/System.Text.RegularExpressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.xml", - "ref/netcore50/de/System.Text.RegularExpressions.xml", - "ref/netcore50/es/System.Text.RegularExpressions.xml", - "ref/netcore50/fr/System.Text.RegularExpressions.xml", - "ref/netcore50/it/System.Text.RegularExpressions.xml", - "ref/netcore50/ja/System.Text.RegularExpressions.xml", - "ref/netcore50/ko/System.Text.RegularExpressions.xml", - "ref/netcore50/ru/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", - "ref/netcoreapp1.1/System.Text.RegularExpressions.dll", - "ref/netstandard1.0/System.Text.RegularExpressions.dll", - "ref/netstandard1.0/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/System.Text.RegularExpressions.dll", - "ref/netstandard1.3/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/System.Text.RegularExpressions.dll", - "ref/netstandard1.6/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.text.regularexpressions.4.3.0.nupkg.sha512", - "system.text.regularexpressions.nuspec" - ] - }, - "System.Threading/4.3.0": { - "sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", - "type": "package", - "path": "system.threading/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.dll", - "lib/netstandard1.3/System.Threading.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.dll", - "ref/netcore50/System.Threading.xml", - "ref/netcore50/de/System.Threading.xml", - "ref/netcore50/es/System.Threading.xml", - "ref/netcore50/fr/System.Threading.xml", - "ref/netcore50/it/System.Threading.xml", - "ref/netcore50/ja/System.Threading.xml", - "ref/netcore50/ko/System.Threading.xml", - "ref/netcore50/ru/System.Threading.xml", - "ref/netcore50/zh-hans/System.Threading.xml", - "ref/netcore50/zh-hant/System.Threading.xml", - "ref/netstandard1.0/System.Threading.dll", - "ref/netstandard1.0/System.Threading.xml", - "ref/netstandard1.0/de/System.Threading.xml", - "ref/netstandard1.0/es/System.Threading.xml", - "ref/netstandard1.0/fr/System.Threading.xml", - "ref/netstandard1.0/it/System.Threading.xml", - "ref/netstandard1.0/ja/System.Threading.xml", - "ref/netstandard1.0/ko/System.Threading.xml", - "ref/netstandard1.0/ru/System.Threading.xml", - "ref/netstandard1.0/zh-hans/System.Threading.xml", - "ref/netstandard1.0/zh-hant/System.Threading.xml", - "ref/netstandard1.3/System.Threading.dll", - "ref/netstandard1.3/System.Threading.xml", - "ref/netstandard1.3/de/System.Threading.xml", - "ref/netstandard1.3/es/System.Threading.xml", - "ref/netstandard1.3/fr/System.Threading.xml", - "ref/netstandard1.3/it/System.Threading.xml", - "ref/netstandard1.3/ja/System.Threading.xml", - "ref/netstandard1.3/ko/System.Threading.xml", - "ref/netstandard1.3/ru/System.Threading.xml", - "ref/netstandard1.3/zh-hans/System.Threading.xml", - "ref/netstandard1.3/zh-hant/System.Threading.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Threading.dll", - "system.threading.4.3.0.nupkg.sha512", - "system.threading.nuspec" - ] - }, - "System.Threading.Channels/8.0.0": { - "sha512": "CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==", - "type": "package", - "path": "system.threading.channels/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Threading.Channels.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/System.Threading.Channels.targets", - "lib/net462/System.Threading.Channels.dll", - "lib/net462/System.Threading.Channels.xml", - "lib/net6.0/System.Threading.Channels.dll", - "lib/net6.0/System.Threading.Channels.xml", - "lib/net7.0/System.Threading.Channels.dll", - "lib/net7.0/System.Threading.Channels.xml", - "lib/net8.0/System.Threading.Channels.dll", - "lib/net8.0/System.Threading.Channels.xml", - "lib/netstandard2.0/System.Threading.Channels.dll", - "lib/netstandard2.0/System.Threading.Channels.xml", - "lib/netstandard2.1/System.Threading.Channels.dll", - "lib/netstandard2.1/System.Threading.Channels.xml", - "system.threading.channels.8.0.0.nupkg.sha512", - "system.threading.channels.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Threading.RateLimiting/8.0.0": { - "sha512": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==", - "type": "package", - "path": "system.threading.ratelimiting/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Threading.RateLimiting.targets", - "buildTransitive/net462/_._", - "buildTransitive/net6.0/_._", - "buildTransitive/netcoreapp2.0/System.Threading.RateLimiting.targets", - "lib/net462/System.Threading.RateLimiting.dll", - "lib/net462/System.Threading.RateLimiting.xml", - "lib/net6.0/System.Threading.RateLimiting.dll", - "lib/net6.0/System.Threading.RateLimiting.xml", - "lib/net7.0/System.Threading.RateLimiting.dll", - "lib/net7.0/System.Threading.RateLimiting.xml", - "lib/net8.0/System.Threading.RateLimiting.dll", - "lib/net8.0/System.Threading.RateLimiting.xml", - "lib/netstandard2.0/System.Threading.RateLimiting.dll", - "lib/netstandard2.0/System.Threading.RateLimiting.xml", - "system.threading.ratelimiting.8.0.0.nupkg.sha512", - "system.threading.ratelimiting.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Threading.Tasks/4.3.0": { - "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "type": "package", - "path": "system.threading.tasks/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.dll", - "ref/netcore50/System.Threading.Tasks.xml", - "ref/netcore50/de/System.Threading.Tasks.xml", - "ref/netcore50/es/System.Threading.Tasks.xml", - "ref/netcore50/fr/System.Threading.Tasks.xml", - "ref/netcore50/it/System.Threading.Tasks.xml", - "ref/netcore50/ja/System.Threading.Tasks.xml", - "ref/netcore50/ko/System.Threading.Tasks.xml", - "ref/netcore50/ru/System.Threading.Tasks.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.0/System.Threading.Tasks.dll", - "ref/netstandard1.0/System.Threading.Tasks.xml", - "ref/netstandard1.0/de/System.Threading.Tasks.xml", - "ref/netstandard1.0/es/System.Threading.Tasks.xml", - "ref/netstandard1.0/fr/System.Threading.Tasks.xml", - "ref/netstandard1.0/it/System.Threading.Tasks.xml", - "ref/netstandard1.0/ja/System.Threading.Tasks.xml", - "ref/netstandard1.0/ko/System.Threading.Tasks.xml", - "ref/netstandard1.0/ru/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.3/System.Threading.Tasks.dll", - "ref/netstandard1.3/System.Threading.Tasks.xml", - "ref/netstandard1.3/de/System.Threading.Tasks.xml", - "ref/netstandard1.3/es/System.Threading.Tasks.xml", - "ref/netstandard1.3/fr/System.Threading.Tasks.xml", - "ref/netstandard1.3/it/System.Threading.Tasks.xml", - "ref/netstandard1.3/ja/System.Threading.Tasks.xml", - "ref/netstandard1.3/ko/System.Threading.Tasks.xml", - "ref/netstandard1.3/ru/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.tasks.4.3.0.nupkg.sha512", - "system.threading.tasks.nuspec" - ] - }, - "System.Threading.Tasks.Extensions/4.3.0": { - "sha512": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", - "type": "package", - "path": "system.threading.tasks.extensions/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml", - "system.threading.tasks.extensions.4.3.0.nupkg.sha512", - "system.threading.tasks.extensions.nuspec" - ] - }, - "System.Threading.Timer/4.3.0": { - "sha512": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", - "type": "package", - "path": "system.threading.timer/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/_._", - "lib/portable-net451+win81+wpa81/_._", - "lib/win81/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/_._", - "ref/netcore50/System.Threading.Timer.dll", - "ref/netcore50/System.Threading.Timer.xml", - "ref/netcore50/de/System.Threading.Timer.xml", - "ref/netcore50/es/System.Threading.Timer.xml", - "ref/netcore50/fr/System.Threading.Timer.xml", - "ref/netcore50/it/System.Threading.Timer.xml", - "ref/netcore50/ja/System.Threading.Timer.xml", - "ref/netcore50/ko/System.Threading.Timer.xml", - "ref/netcore50/ru/System.Threading.Timer.xml", - "ref/netcore50/zh-hans/System.Threading.Timer.xml", - "ref/netcore50/zh-hant/System.Threading.Timer.xml", - "ref/netstandard1.2/System.Threading.Timer.dll", - "ref/netstandard1.2/System.Threading.Timer.xml", - "ref/netstandard1.2/de/System.Threading.Timer.xml", - "ref/netstandard1.2/es/System.Threading.Timer.xml", - "ref/netstandard1.2/fr/System.Threading.Timer.xml", - "ref/netstandard1.2/it/System.Threading.Timer.xml", - "ref/netstandard1.2/ja/System.Threading.Timer.xml", - "ref/netstandard1.2/ko/System.Threading.Timer.xml", - "ref/netstandard1.2/ru/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", - "ref/portable-net451+win81+wpa81/_._", - "ref/win81/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.timer.4.3.0.nupkg.sha512", - "system.threading.timer.nuspec" - ] - }, - "System.Xml.ReaderWriter/4.3.0": { - "sha512": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", - "type": "package", - "path": "system.xml.readerwriter/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.Xml.ReaderWriter.dll", - "lib/netcore50/System.Xml.ReaderWriter.dll", - "lib/netstandard1.3/System.Xml.ReaderWriter.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.Xml.ReaderWriter.dll", - "ref/netcore50/System.Xml.ReaderWriter.dll", - "ref/netcore50/System.Xml.ReaderWriter.xml", - "ref/netcore50/de/System.Xml.ReaderWriter.xml", - "ref/netcore50/es/System.Xml.ReaderWriter.xml", - "ref/netcore50/fr/System.Xml.ReaderWriter.xml", - "ref/netcore50/it/System.Xml.ReaderWriter.xml", - "ref/netcore50/ja/System.Xml.ReaderWriter.xml", - "ref/netcore50/ko/System.Xml.ReaderWriter.xml", - "ref/netcore50/ru/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/System.Xml.ReaderWriter.dll", - "ref/netstandard1.0/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/System.Xml.ReaderWriter.dll", - "ref/netstandard1.3/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.xml.readerwriter.4.3.0.nupkg.sha512", - "system.xml.readerwriter.nuspec" - ] - }, - "System.Xml.XDocument/4.3.0": { - "sha512": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", - "type": "package", - "path": "system.xml.xdocument/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.XDocument.dll", - "lib/netstandard1.3/System.Xml.XDocument.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.XDocument.dll", - "ref/netcore50/System.Xml.XDocument.xml", - "ref/netcore50/de/System.Xml.XDocument.xml", - "ref/netcore50/es/System.Xml.XDocument.xml", - "ref/netcore50/fr/System.Xml.XDocument.xml", - "ref/netcore50/it/System.Xml.XDocument.xml", - "ref/netcore50/ja/System.Xml.XDocument.xml", - "ref/netcore50/ko/System.Xml.XDocument.xml", - "ref/netcore50/ru/System.Xml.XDocument.xml", - "ref/netcore50/zh-hans/System.Xml.XDocument.xml", - "ref/netcore50/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.0/System.Xml.XDocument.dll", - "ref/netstandard1.0/System.Xml.XDocument.xml", - "ref/netstandard1.0/de/System.Xml.XDocument.xml", - "ref/netstandard1.0/es/System.Xml.XDocument.xml", - "ref/netstandard1.0/fr/System.Xml.XDocument.xml", - "ref/netstandard1.0/it/System.Xml.XDocument.xml", - "ref/netstandard1.0/ja/System.Xml.XDocument.xml", - "ref/netstandard1.0/ko/System.Xml.XDocument.xml", - "ref/netstandard1.0/ru/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.3/System.Xml.XDocument.dll", - "ref/netstandard1.3/System.Xml.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.xml.xdocument.4.3.0.nupkg.sha512", - "system.xml.xdocument.nuspec" - ] - }, - "xunit/2.5.3": { - "sha512": "VxYDiWSwrLxOJ3UEN+ZPrBybB0SFShQ1E6PjT65VdoKCJhorgerFznThjSwawRH/WAip73YnucDVsE8WRj/8KQ==", - "type": "package", - "path": "xunit/2.5.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "xunit.2.5.3.nupkg.sha512", - "xunit.nuspec" - ] - }, - "xunit.abstractions/2.0.3": { - "sha512": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", - "type": "package", - "path": "xunit.abstractions/2.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net35/xunit.abstractions.dll", - "lib/net35/xunit.abstractions.xml", - "lib/netstandard1.0/xunit.abstractions.dll", - "lib/netstandard1.0/xunit.abstractions.xml", - "lib/netstandard2.0/xunit.abstractions.dll", - "lib/netstandard2.0/xunit.abstractions.xml", - "xunit.abstractions.2.0.3.nupkg.sha512", - "xunit.abstractions.nuspec" - ] - }, - "xunit.analyzers/1.4.0": { - "sha512": "7ljnTJfFjz5zK+Jf0h2dd2QOSO6UmFizXsojv/x4QX7TU5vEgtKZPk9RvpkiuUqg2bddtNZufBoKQalsi7djfA==", - "type": "package", - "path": "xunit.analyzers/1.4.0", - "hasTools": true, - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "analyzers/dotnet/cs/xunit.analyzers.dll", - "analyzers/dotnet/cs/xunit.analyzers.fixes.dll", - "tools/install.ps1", - "tools/uninstall.ps1", - "xunit.analyzers.1.4.0.nupkg.sha512", - "xunit.analyzers.nuspec" - ] - }, - "xunit.assert/2.5.3": { - "sha512": "MK3HiBckO3vdxEdUxXZyyRPsBNPsC/nz6y1gj/UZIZkjMnsVQyZPU8yxS/3cjTchYcqskt/nqUOS5wmD8JezdQ==", - "type": "package", - "path": "xunit.assert/2.5.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "lib/netstandard1.1/xunit.assert.dll", - "lib/netstandard1.1/xunit.assert.xml", - "xunit.assert.2.5.3.nupkg.sha512", - "xunit.assert.nuspec" - ] - }, - "xunit.core/2.5.3": { - "sha512": "FE8yEEUkoMLd6kOHDXm/QYfX/dYzwc0c+Q4MQon6VGRwFuy6UVGwK/CFA5LEea+ZBEmcco7AEl2q78VjsA0j/w==", - "type": "package", - "path": "xunit.core/2.5.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "build/xunit.core.props", - "build/xunit.core.targets", - "buildMultiTargeting/xunit.core.props", - "buildMultiTargeting/xunit.core.targets", - "xunit.core.2.5.3.nupkg.sha512", - "xunit.core.nuspec" - ] - }, - "xunit.extensibility.core/2.5.3": { - "sha512": "IjAQlPeZWXP89pl1EuOG9991GH1qgAL0rQfkmX2UV+PDenbYb7oBnQopL9ujE6YaXxgaQazp7lFjsDyyxD6Mtw==", - "type": "package", - "path": "xunit.extensibility.core/2.5.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "lib/net452/xunit.core.dll", - "lib/net452/xunit.core.dll.tdnet", - "lib/net452/xunit.core.xml", - "lib/net452/xunit.runner.tdnet.dll", - "lib/net452/xunit.runner.utility.net452.dll", - "lib/netstandard1.1/xunit.core.dll", - "lib/netstandard1.1/xunit.core.xml", - "xunit.extensibility.core.2.5.3.nupkg.sha512", - "xunit.extensibility.core.nuspec" - ] - }, - "xunit.extensibility.execution/2.5.3": { - "sha512": "w9eGCHl+gJj1GzZSf0VTzYPp/gv4fiUDkr+yR7/Wv9/ucO2CHltGg2TnyySLFjzekkjuxVJZUE+tZyDNzryJFw==", - "type": "package", - "path": "xunit.extensibility.execution/2.5.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "lib/net452/xunit.execution.desktop.dll", - "lib/net452/xunit.execution.desktop.xml", - "lib/netstandard1.1/xunit.execution.dotnet.dll", - "lib/netstandard1.1/xunit.execution.dotnet.xml", - "xunit.extensibility.execution.2.5.3.nupkg.sha512", - "xunit.extensibility.execution.nuspec" - ] - }, - "xunit.runner.visualstudio/2.5.3": { - "sha512": "HFFL6O+QLEOfs555SqHii48ovVa4CqGYanY+B32BjLpPptdE+wEJmCFNXlLHdEOD5LYeayb9EroaUpydGpcybg==", - "type": "package", - "path": "xunit.runner.visualstudio/2.5.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "build/net462/xunit.abstractions.dll", - "build/net462/xunit.runner.reporters.net452.dll", - "build/net462/xunit.runner.utility.net452.dll", - "build/net462/xunit.runner.visualstudio.props", - "build/net462/xunit.runner.visualstudio.testadapter.dll", - "build/net6.0/xunit.abstractions.dll", - "build/net6.0/xunit.runner.reporters.netcoreapp10.dll", - "build/net6.0/xunit.runner.utility.netcoreapp10.dll", - "build/net6.0/xunit.runner.visualstudio.dotnetcore.testadapter.dll", - "build/net6.0/xunit.runner.visualstudio.props", - "lib/net462/_._", - "lib/net6.0/_._", - "xunit.runner.visualstudio.2.5.3.nupkg.sha512", - "xunit.runner.visualstudio.nuspec" - ] - }, - "IM_API/1.0.0": { - "type": "project", - "path": "../IM_API/IM_API.csproj", - "msbuildProject": "../IM_API/IM_API.csproj" - } - }, - "projectFileDependencyGroups": { - "net8.0": [ - "IM_API >= 1.0.0", - "Microsoft.EntityFrameworkCore.InMemory >= 8.0.22", - "Microsoft.NET.Test.Sdk >= 17.8.0", - "Moq >= 4.20.72", - "coverlet.collector >= 6.0.0", - "xunit >= 2.5.3", - "xunit.runner.visualstudio >= 2.5.3" - ] - }, - "packageFolders": { - "C:\\Users\\nanxun\\.nuget\\packages\\": {}, - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "C:\\Users\\nanxun\\Documents\\IM\\backend\\IMTest\\IMTest.csproj", - "projectName": "IMTest", - "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\IMTest\\IMTest.csproj", - "packagesPath": "C:\\Users\\nanxun\\.nuget\\packages\\", - "outputPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\IMTest\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\nanxun\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net8.0" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "projectReferences": { - "C:\\Users\\nanxun\\Documents\\IM\\backend\\IM_API\\IM_API.csproj": { - "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\IM_API\\IM_API.csproj" - } - } - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - }, - "SdkAnalysisLevel": "9.0.300" - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "dependencies": { - "Microsoft.EntityFrameworkCore.InMemory": { - "target": "Package", - "version": "[8.0.22, )" - }, - "Microsoft.NET.Test.Sdk": { - "target": "Package", - "version": "[17.8.0, )" - }, - "Moq": { - "target": "Package", - "version": "[4.20.72, )" - }, - "coverlet.collector": { - "target": "Package", - "version": "[6.0.0, )" - }, - "xunit": { - "target": "Package", - "version": "[2.5.3, )" - }, - "xunit.runner.visualstudio": { - "target": "Package", - "version": "[2.5.3, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" - } - } - } +{ + "version": 3, + "targets": { + "net8.0": { + "AutoMapper/12.0.1": { + "type": "package", + "dependencies": { + "Microsoft.CSharp": "4.7.0" + }, + "compile": { + "lib/netstandard2.1/AutoMapper.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/AutoMapper.dll": { + "related": ".xml" + } + } + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { + "type": "package", + "dependencies": { + "AutoMapper": "12.0.0", + "Microsoft.Extensions.Options": "6.0.0" + }, + "compile": { + "lib/netstandard2.1/AutoMapper.Extensions.Microsoft.DependencyInjection.dll": {} + }, + "runtime": { + "lib/netstandard2.1/AutoMapper.Extensions.Microsoft.DependencyInjection.dll": {} + } + }, + "Castle.Core/5.1.1": { + "type": "package", + "dependencies": { + "System.Diagnostics.EventLog": "6.0.0" + }, + "compile": { + "lib/net6.0/Castle.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Castle.Core.dll": { + "related": ".xml" + } + } + }, + "coverlet.collector/6.0.0": { + "type": "package", + "build": { + "build/netstandard1.0/coverlet.collector.targets": {} + } + }, + "MassTransit/8.5.5": { + "type": "package", + "dependencies": { + "MassTransit.Abstractions": "8.5.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Diagnostics.HealthChecks": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + }, + "compile": { + "lib/net8.0/MassTransit.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/MassTransit.dll": { + "related": ".xml" + } + } + }, + "MassTransit.Abstractions/8.5.5": { + "type": "package", + "compile": { + "lib/net8.0/MassTransit.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/MassTransit.Abstractions.dll": { + "related": ".xml" + } + } + }, + "MassTransit.RabbitMQ/8.5.5": { + "type": "package", + "dependencies": { + "MassTransit": "8.5.5", + "RabbitMQ.Client": "7.1.2" + }, + "compile": { + "lib/net8.0/MassTransit.RabbitMqTransport.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/MassTransit.RabbitMqTransport.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Authentication.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Authentication.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.1.2" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.AspNetCore.Authorization/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Authentication.Abstractions": "2.3.0", + "Microsoft.AspNetCore.Authorization": "2.3.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "2.3.0", + "System.IO.Pipelines": "8.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.3.0", + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.1" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "2.3.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.AspNetCore.WebUtilities": "2.3.0", + "Microsoft.Extensions.ObjectPool": "8.0.11", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Net.Http.Headers": "2.3.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "2.3.0", + "System.Text.Encodings.Web": "8.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http.Connections/1.2.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Authorization.Policy": "2.3.0", + "Microsoft.AspNetCore.Hosting.Abstractions": "2.3.0", + "Microsoft.AspNetCore.Http": "2.3.0", + "Microsoft.AspNetCore.Http.Connections.Common": "1.2.0", + "Microsoft.AspNetCore.Routing": "2.3.0", + "Microsoft.AspNetCore.WebSockets": "2.3.0", + "Newtonsoft.Json": "11.0.2", + "System.Net.WebSockets.WebSocketProtocol": "5.1.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", + "Newtonsoft.Json": "11.0.2", + "System.Buffers": "4.6.0", + "System.IO.Pipelines": "8.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http.Extensions/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Net.Http.Headers": "2.3.0", + "System.Buffers": "4.6.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http.Features/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Routing/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Extensions": "2.3.0", + "Microsoft.AspNetCore.Routing.Abstractions": "2.3.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.ObjectPool": "8.0.11", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Routing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Routing.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR/1.2.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Connections": "1.2.0", + "Microsoft.AspNetCore.SignalR.Core": "1.2.0", + "Microsoft.AspNetCore.WebSockets": "2.3.0", + "System.IO.Pipelines": "8.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Common/1.2.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", + "Microsoft.Extensions.Options": "8.0.2", + "Newtonsoft.Json": "11.0.2", + "System.Buffers": "4.6.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Core/1.2.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Authorization": "2.3.0", + "Microsoft.AspNetCore.SignalR.Common": "1.2.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "1.2.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "System.IO.Pipelines": "8.0.0", + "System.Reflection.Emit": "4.7.0", + "System.Threading.Channels": "8.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "1.2.0", + "Newtonsoft.Json": "11.0.2", + "System.IO.Pipelines": "8.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.WebSockets/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Extensions": "2.3.0", + "Microsoft.Extensions.Options": "8.0.2", + "System.Net.WebSockets.WebSocketProtocol": "5.1.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.WebUtilities/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.Net.Http.Headers": "2.3.0", + "System.Text.Encodings.Web": "8.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.0": { + "type": "package", + "compile": { + "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {} + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + } + }, + "Microsoft.CodeCoverage/17.8.0": { + "type": "package", + "compile": { + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "build": { + "build/netstandard2.0/Microsoft.CodeCoverage.props": {}, + "build/netstandard2.0/Microsoft.CodeCoverage.targets": {} + } + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "Microsoft.EntityFrameworkCore/8.0.22": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "8.0.22", + "Microsoft.EntityFrameworkCore.Analyzers": "8.0.22", + "Microsoft.Extensions.Caching.Memory": "8.0.1", + "Microsoft.Extensions.Logging": "8.0.1" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {} + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.22": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.22": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/_._": {} + } + }, + "Microsoft.EntityFrameworkCore.InMemory/8.0.22": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore": "8.0.22" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.InMemory.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.InMemory.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.13": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore": "8.0.13", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": { + "type": "package", + "build": { + "build/_._": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/_._": {} + } + }, + "Microsoft.Extensions.Caching.Abstractions/10.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "10.0.2", + "Microsoft.Extensions.Options": "10.0.2", + "StackExchange.Redis": "2.7.27" + }, + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "System.Diagnostics.DiagnosticSource": "10.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + } + }, + "Microsoft.Extensions.ObjectPool/8.0.11": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.ObjectPool.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.ObjectPool.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Options/10.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2", + "Microsoft.Extensions.Primitives": "10.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {} + } + }, + "Microsoft.Extensions.Primitives/10.0.2": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.IdentityModel.Abstractions/8.14.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.14.0" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Logging/8.14.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.14.0" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Protocols/7.1.2": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Logging": "7.1.2", + "Microsoft.IdentityModel.Tokens": "7.1.2" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "7.1.2", + "System.IdentityModel.Tokens.Jwt": "7.1.2" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Tokens/8.14.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.14.0" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Net.Http.Headers/2.3.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0", + "System.Buffers": "4.6.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": { + "related": ".xml" + } + } + }, + "Microsoft.NET.Test.Sdk/17.8.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeCoverage": "17.8.0", + "Microsoft.TestPlatform.TestHost": "17.8.0" + }, + "compile": { + "lib/netcoreapp3.1/_._": {} + }, + "runtime": { + "lib/netcoreapp3.1/_._": {} + }, + "build": { + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.props": {}, + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/Microsoft.NET.Test.Sdk.props": {} + } + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.OpenApi/1.6.14": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.TestPlatform.ObjectModel/17.8.0": { + "type": "package", + "dependencies": { + "NuGet.Frameworks": "6.5.0", + "System.Reflection.Metadata": "1.6.0" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.TestPlatform.TestHost/17.8.0": { + "type": "package", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.8.0", + "Newtonsoft.Json": "13.0.1" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/netcoreapp3.1/testhost.dll": { + "related": ".deps.json" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/netcoreapp3.1/testhost.dll": { + "related": ".deps.json" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hant" + } + }, + "build": { + "build/netcoreapp3.1/Microsoft.TestPlatform.TestHost.props": {} + } + }, + "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": { + "type": "package", + "build": { + "build/_._": {} + } + }, + "Microsoft.Win32.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": { + "related": ".xml" + } + } + }, + "Moq/4.20.72": { + "type": "package", + "dependencies": { + "Castle.Core": "5.1.1" + }, + "compile": { + "lib/net6.0/Moq.dll": {} + }, + "runtime": { + "lib/net6.0/Moq.dll": {} + } + }, + "MySqlConnector/2.3.5": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "7.0.1" + }, + "compile": { + "lib/net8.0/MySqlConnector.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/MySqlConnector.dll": { + "related": ".xml" + } + } + }, + "NETStandard.Library/1.6.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.Win32.Primitives": "4.3.0", + "System.AppContext": "4.3.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Console": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.Compression.ZipFile": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Net.Http": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Net.Sockets": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Timer": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0" + } + }, + "Newtonsoft.Json/13.0.4": { + "type": "package", + "compile": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + } + }, + "NuGet.Frameworks/6.5.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/NuGet.Frameworks.dll": {} + }, + "runtime": { + "lib/netstandard2.0/NuGet.Frameworks.dll": {} + } + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "5.0.1" + }, + "compile": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "related": ".xml" + } + } + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.3": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "[8.0.13, 8.0.999]", + "MySqlConnector": "2.3.5" + }, + "compile": { + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { + "related": ".xml" + } + } + }, + "RabbitMQ.Client/7.1.2": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "8.0.0", + "System.Threading.RateLimiting": "8.0.0" + }, + "compile": { + "lib/net8.0/RabbitMQ.Client.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/RabbitMQ.Client.dll": { + "related": ".xml" + } + } + }, + "RedLock.net/2.3.2": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0", + "Microsoft.Extensions.Logging": "2.0.0", + "Microsoft.Extensions.Logging.Abstractions": "2.0.0", + "StackExchange.Redis": "2.0.513" + }, + "compile": { + "lib/netstandard2.0/RedLockNet.Abstractions.dll": {}, + "lib/netstandard2.0/RedLockNet.SERedis.dll": {} + }, + "runtime": { + "lib/netstandard2.0/RedLockNet.Abstractions.dll": {}, + "lib/netstandard2.0/RedLockNet.SERedis.dll": {} + } + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "debian.8-x64" + } + } + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "fedora.23-x64" + } + } + }, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "fedora.24-x64" + } + } + }, + "runtime.native.System/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.IO.Compression/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Net.Http/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "dependencies": { + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "dependencies": { + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "opensuse.13.2-x64" + } + } + }, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "opensuse.42.1-x64" + } + } + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib": { + "assetType": "native", + "rid": "osx.10.10-x64" + } + } + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib": { + "assetType": "native", + "rid": "osx.10.10-x64" + } + } + }, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "rhel.7-x64" + } + } + }, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.14.04-x64" + } + } + }, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.16.04-x64" + } + } + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.16.10-x64" + } + } + }, + "StackExchange.Redis/2.9.32": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Pipelines.Sockets.Unofficial": "2.2.8" + }, + "compile": { + "lib/net8.0/StackExchange.Redis.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/StackExchange.Redis.dll": { + "related": ".xml" + } + } + }, + "Swashbuckle.AspNetCore/6.6.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "6.0.5", + "Swashbuckle.AspNetCore.Swagger": "6.6.2", + "Swashbuckle.AspNetCore.SwaggerGen": "6.6.2", + "Swashbuckle.AspNetCore.SwaggerUI": "6.6.2" + }, + "build": { + "build/_._": {} + } + }, + "Swashbuckle.AspNetCore.Swagger/6.6.2": { + "type": "package", + "dependencies": { + "Microsoft.OpenApi": "1.6.14" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { + "type": "package", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "6.6.2" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { + "type": "package", + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "System.AppContext/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/System.AppContext.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.6/System.AppContext.dll": {} + } + }, + "System.Buffers/4.6.0": { + "type": "package", + "compile": { + "lib/netcoreapp2.1/_._": {} + }, + "runtime": { + "lib/netcoreapp2.1/_._": {} + } + }, + "System.Collections/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Collections.dll": { + "related": ".xml" + } + } + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Collections.Concurrent.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Concurrent.dll": {} + } + }, + "System.Console/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Console.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Diagnostics.Debug.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.DiagnosticSource/10.0.2": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.Diagnostics.EventLog/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll": { + "assetType": "runtime", + "rid": "win" + }, + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Diagnostics.Tools/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Diagnostics.Tools.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Diagnostics.Tracing.dll": { + "related": ".xml" + } + } + }, + "System.Globalization/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.dll": { + "related": ".xml" + } + } + }, + "System.Globalization.Calendars/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.Calendars.dll": { + "related": ".xml" + } + } + }, + "System.Globalization.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IdentityModel.Tokens.Jwt/8.14.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "8.14.0", + "Microsoft.IdentityModel.Tokens": "8.14.0" + }, + "compile": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + } + }, + "System.IO/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.IO.dll": { + "related": ".xml" + } + } + }, + "System.IO.Compression/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Buffers": "4.3.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.IO.Compression": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.Compression.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO.Compression.ZipFile/4.3.0": { + "type": "package", + "dependencies": { + "System.Buffers": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.IO.Compression.ZipFile.dll": {} + } + }, + "System.IO.FileSystem/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.dll": { + "related": ".xml" + } + } + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} + } + }, + "System.IO.Pipelines/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Linq/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/System.Linq.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.6/System.Linq.dll": {} + } + }, + "System.Linq.Expressions/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Emit.Lightweight": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/System.Linq.Expressions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.6/System.Linq.Expressions.dll": {} + } + }, + "System.Net.Http/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.DiagnosticSource": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Extensions": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Http.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Net.Http.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Primitives.dll": { + "related": ".xml" + } + } + }, + "System.Net.Sockets/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Sockets.dll": { + "related": ".xml" + } + } + }, + "System.Net.WebSockets.WebSocketProtocol/5.1.0": { + "type": "package", + "compile": { + "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.ObjectModel/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.ObjectModel.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.ObjectModel.dll": {} + } + }, + "System.Reflection/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Reflection.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.Emit/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} + } + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} + } + }, + "System.Reflection.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.Metadata/1.6.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Primitives.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.TypeExtensions/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} + } + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Resources.ResourceManager.dll": { + "related": ".xml" + } + } + }, + "System.Runtime/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.Handles/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Runtime.Handles.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.InteropServices/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + }, + "compile": { + "ref/netcoreapp1.1/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0" + }, + "compile": { + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtime": { + "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Runtime.Numerics/4.3.0": { + "type": "package", + "dependencies": { + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + }, + "compile": { + "ref/netstandard1.1/System.Runtime.Numerics.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Numerics.dll": {} + } + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.Apple": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} + }, + "runtimeTargets": { + "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "osx" + }, + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Cng/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Csp/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Linq": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtime": { + "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": { + "assetType": "runtime", + "rid": "unix" + } + } + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} + } + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Cng": "4.3.0", + "System.Security.Cryptography.Csp": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Text.Encoding.dll": { + "related": ".xml" + } + } + }, + "System.Text.Encoding.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { + "assetType": "runtime", + "rid": "browser" + } + } + }, + "System.Text.RegularExpressions/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netcoreapp1.1/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} + } + }, + "System.Threading/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Threading.dll": {} + } + }, + "System.Threading.Channels/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Threading.Channels.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Threading.Channels.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Threading.RateLimiting/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Threading.RateLimiting.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Threading.RateLimiting.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.Tasks.dll": { + "related": ".xml" + } + } + }, + "System.Threading.Tasks.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Threading.Timer/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.2/System.Threading.Timer.dll": { + "related": ".xml" + } + } + }, + "System.Xml.ReaderWriter/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Tasks.Extensions": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Xml.ReaderWriter.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} + } + }, + "System.Xml.XDocument/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Xml.XDocument.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XDocument.dll": {} + } + }, + "xunit/2.5.3": { + "type": "package", + "dependencies": { + "xunit.analyzers": "1.4.0", + "xunit.assert": "2.5.3", + "xunit.core": "[2.5.3]" + } + }, + "xunit.abstractions/2.0.3": { + "type": "package", + "compile": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "related": ".xml" + } + } + }, + "xunit.analyzers/1.4.0": { + "type": "package" + }, + "xunit.assert/2.5.3": { + "type": "package", + "dependencies": { + "NETStandard.Library": "1.6.1" + }, + "compile": { + "lib/netstandard1.1/xunit.assert.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.1/xunit.assert.dll": { + "related": ".xml" + } + } + }, + "xunit.core/2.5.3": { + "type": "package", + "dependencies": { + "xunit.extensibility.core": "[2.5.3]", + "xunit.extensibility.execution": "[2.5.3]" + }, + "build": { + "build/xunit.core.props": {}, + "build/xunit.core.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/xunit.core.props": {}, + "buildMultiTargeting/xunit.core.targets": {} + } + }, + "xunit.extensibility.core/2.5.3": { + "type": "package", + "dependencies": { + "NETStandard.Library": "1.6.1", + "xunit.abstractions": "2.0.3" + }, + "compile": { + "lib/netstandard1.1/xunit.core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.1/xunit.core.dll": { + "related": ".xml" + } + } + }, + "xunit.extensibility.execution/2.5.3": { + "type": "package", + "dependencies": { + "NETStandard.Library": "1.6.1", + "xunit.extensibility.core": "[2.5.3]" + }, + "compile": { + "lib/netstandard1.1/xunit.execution.dotnet.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.1/xunit.execution.dotnet.dll": { + "related": ".xml" + } + } + }, + "xunit.runner.visualstudio/2.5.3": { + "type": "package", + "compile": { + "lib/net6.0/_._": {} + }, + "runtime": { + "lib/net6.0/_._": {} + }, + "build": { + "build/net6.0/xunit.runner.visualstudio.props": {} + } + }, + "IM_API/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "AutoMapper": "12.0.1", + "AutoMapper.Extensions.Microsoft.DependencyInjection": "12.0.0", + "MassTransit.RabbitMQ": "8.5.5", + "Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.21", + "Microsoft.AspNetCore.SignalR": "1.2.0", + "Microsoft.Extensions.Caching.StackExchangeRedis": "10.0.2", + "Microsoft.VisualStudio.Azure.Containers.Tools.Targets": "1.22.1", + "Newtonsoft.Json": "13.0.4", + "Pomelo.EntityFrameworkCore.MySql": "8.0.3", + "RedLock.net": "2.3.2", + "StackExchange.Redis": "2.9.32", + "Swashbuckle.AspNetCore": "6.6.2", + "System.IdentityModel.Tokens.Jwt": "8.14.0" + }, + "compile": { + "bin/placeholder/IM_API.dll": {} + }, + "runtime": { + "bin/placeholder/IM_API.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + } + } + }, + "libraries": { + "AutoMapper/12.0.1": { + "sha512": "hvV62vl6Hp/WfQ24yzo3Co9+OPl8wH8hApwVtgWpiAynVJkUcs7xvehnSftawL8Pe8FrPffBRM3hwzLQqWDNjA==", + "type": "package", + "path": "automapper/12.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.12.0.1.nupkg.sha512", + "automapper.nuspec", + "icon.png", + "lib/netstandard2.1/AutoMapper.dll", + "lib/netstandard2.1/AutoMapper.xml" + ] + }, + "AutoMapper.Extensions.Microsoft.DependencyInjection/12.0.0": { + "sha512": "XCJ4E3oKrbRl1qY9Mr+7uyC0xZj1+bqQjmQRWTiTKiVuuXTny+7YFWHi20tPjwkMukLbicN6yGlDy5PZ4wyi1w==", + "type": "package", + "path": "automapper.extensions.microsoft.dependencyinjection/12.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "automapper.extensions.microsoft.dependencyinjection.12.0.0.nupkg.sha512", + "automapper.extensions.microsoft.dependencyinjection.nuspec", + "icon.png", + "lib/netstandard2.1/AutoMapper.Extensions.Microsoft.DependencyInjection.dll" + ] + }, + "Castle.Core/5.1.1": { + "sha512": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", + "type": "package", + "path": "castle.core/5.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ASL - Apache Software Foundation License.txt", + "CHANGELOG.md", + "LICENSE", + "castle-logo.png", + "castle.core.5.1.1.nupkg.sha512", + "castle.core.nuspec", + "lib/net462/Castle.Core.dll", + "lib/net462/Castle.Core.xml", + "lib/net6.0/Castle.Core.dll", + "lib/net6.0/Castle.Core.xml", + "lib/netstandard2.0/Castle.Core.dll", + "lib/netstandard2.0/Castle.Core.xml", + "lib/netstandard2.1/Castle.Core.dll", + "lib/netstandard2.1/Castle.Core.xml", + "readme.txt" + ] + }, + "coverlet.collector/6.0.0": { + "sha512": "tW3lsNS+dAEII6YGUX/VMoJjBS1QvsxqJeqLaJXub08y1FSjasFPtQ4UBUsudE9PNrzLjooClMsPtY2cZLdXpQ==", + "type": "package", + "path": "coverlet.collector/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/netstandard1.0/Microsoft.Bcl.AsyncInterfaces.dll", + "build/netstandard1.0/Microsoft.CSharp.dll", + "build/netstandard1.0/Microsoft.DotNet.PlatformAbstractions.dll", + "build/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "build/netstandard1.0/Microsoft.Extensions.DependencyInjection.dll", + "build/netstandard1.0/Microsoft.Extensions.DependencyModel.dll", + "build/netstandard1.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "build/netstandard1.0/Microsoft.TestPlatform.CoreUtilities.dll", + "build/netstandard1.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "build/netstandard1.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "build/netstandard1.0/Mono.Cecil.Mdb.dll", + "build/netstandard1.0/Mono.Cecil.Pdb.dll", + "build/netstandard1.0/Mono.Cecil.Rocks.dll", + "build/netstandard1.0/Mono.Cecil.dll", + "build/netstandard1.0/Newtonsoft.Json.dll", + "build/netstandard1.0/NuGet.Frameworks.dll", + "build/netstandard1.0/System.AppContext.dll", + "build/netstandard1.0/System.Collections.Immutable.dll", + "build/netstandard1.0/System.Dynamic.Runtime.dll", + "build/netstandard1.0/System.IO.FileSystem.Primitives.dll", + "build/netstandard1.0/System.Linq.Expressions.dll", + "build/netstandard1.0/System.Linq.dll", + "build/netstandard1.0/System.ObjectModel.dll", + "build/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", + "build/netstandard1.0/System.Reflection.Emit.Lightweight.dll", + "build/netstandard1.0/System.Reflection.Emit.dll", + "build/netstandard1.0/System.Reflection.Metadata.dll", + "build/netstandard1.0/System.Reflection.TypeExtensions.dll", + "build/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", + "build/netstandard1.0/System.Runtime.Serialization.Primitives.dll", + "build/netstandard1.0/System.Text.RegularExpressions.dll", + "build/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "build/netstandard1.0/System.Threading.dll", + "build/netstandard1.0/System.Xml.ReaderWriter.dll", + "build/netstandard1.0/System.Xml.XDocument.dll", + "build/netstandard1.0/coverlet.collector.deps.json", + "build/netstandard1.0/coverlet.collector.dll", + "build/netstandard1.0/coverlet.collector.pdb", + "build/netstandard1.0/coverlet.collector.targets", + "build/netstandard1.0/coverlet.core.dll", + "build/netstandard1.0/coverlet.core.pdb", + "coverlet-icon.png", + "coverlet.collector.6.0.0.nupkg.sha512", + "coverlet.collector.nuspec" + ] + }, + "MassTransit/8.5.5": { + "sha512": "bSg8k5q+rP1s+dIGXLLbctqDGdIkfDjdxwNWtCUH7xNCN9ZuM7mqSPQPIFgaYIi34e81m4FqAqo4CAHuWPkhRA==", + "type": "package", + "path": "masstransit/8.5.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NuGet.README.md", + "lib/net472/MassTransit.dll", + "lib/net472/MassTransit.xml", + "lib/net8.0/MassTransit.dll", + "lib/net8.0/MassTransit.xml", + "lib/net9.0/MassTransit.dll", + "lib/net9.0/MassTransit.xml", + "lib/netstandard2.0/MassTransit.dll", + "lib/netstandard2.0/MassTransit.xml", + "masstransit.8.5.5.nupkg.sha512", + "masstransit.nuspec", + "mt-logo-small.png" + ] + }, + "MassTransit.Abstractions/8.5.5": { + "sha512": "0mn2Ay17dD6z5tgSLjbVRlldSbL9iowzFEfVgVfBXVG5ttz9dSWeR4TrdD6pqH93GWXp4CvSmF8i1HqxLX7DZw==", + "type": "package", + "path": "masstransit.abstractions/8.5.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NuGet.README.md", + "lib/net472/MassTransit.Abstractions.dll", + "lib/net472/MassTransit.Abstractions.xml", + "lib/net8.0/MassTransit.Abstractions.dll", + "lib/net8.0/MassTransit.Abstractions.xml", + "lib/net9.0/MassTransit.Abstractions.dll", + "lib/net9.0/MassTransit.Abstractions.xml", + "lib/netstandard2.0/MassTransit.Abstractions.dll", + "lib/netstandard2.0/MassTransit.Abstractions.xml", + "masstransit.abstractions.8.5.5.nupkg.sha512", + "masstransit.abstractions.nuspec", + "mt-logo-small.png" + ] + }, + "MassTransit.RabbitMQ/8.5.5": { + "sha512": "UxWn4o90YVMF9PBkJeoskOFPneh6YtnI1fLJHtvZiSAG0eoiRrWPGa+6FQCvjkQ/ljCKfjzok2eGZc/vmNZ01A==", + "type": "package", + "path": "masstransit.rabbitmq/8.5.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NuGet.README.md", + "lib/net472/MassTransit.RabbitMqTransport.dll", + "lib/net472/MassTransit.RabbitMqTransport.xml", + "lib/net8.0/MassTransit.RabbitMqTransport.dll", + "lib/net8.0/MassTransit.RabbitMqTransport.xml", + "lib/net9.0/MassTransit.RabbitMqTransport.dll", + "lib/net9.0/MassTransit.RabbitMqTransport.xml", + "lib/netstandard2.0/MassTransit.RabbitMqTransport.dll", + "lib/netstandard2.0/MassTransit.RabbitMqTransport.xml", + "masstransit.rabbitmq.8.5.5.nupkg.sha512", + "masstransit.rabbitmq.nuspec", + "mt-logo-small.png" + ] + }, + "Microsoft.AspNetCore.Authentication.Abstractions/2.3.0": { + "sha512": "ve6uvLwKNRkfnO/QeN9M8eUJ49lCnWv/6/9p6iTEuiI6Rtsz+myaBAjdMzLuTViQY032xbTF5AdZF5BJzJJyXQ==", + "type": "package", + "path": "microsoft.aspnetcore.authentication.abstractions/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Authentication.Abstractions.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Authentication.Abstractions.xml", + "microsoft.aspnetcore.authentication.abstractions.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.authentication.abstractions.nuspec" + ] + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.21": { + "sha512": "ZuUpJ4DvmVArmTlyGGg+b9IdKgd8Kw0SmEzhjy4dQw8R6rxfNqCXfGvGm3ld7xlrgthJFou/le9tadsSyjFLuw==", + "type": "package", + "path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.21", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll", + "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.xml", + "microsoft.aspnetcore.authentication.jwtbearer.8.0.21.nupkg.sha512", + "microsoft.aspnetcore.authentication.jwtbearer.nuspec" + ] + }, + "Microsoft.AspNetCore.Authorization/2.3.0": { + "sha512": "2/aBgLqBXva/+w8pzRNY8ET43Gi+dr1gv/7ySfbsh23lTK6IAgID5MGUEa1hreNIF+0XpW4tX7QwVe70+YvaPg==", + "type": "package", + "path": "microsoft.aspnetcore.authorization/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.xml", + "microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.authorization.nuspec" + ] + }, + "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { + "sha512": "vn31uQ1dA1MIV2WNNDOOOm88V5KgR9esfi0LyQ6eVaGq2h0Yw+R29f5A6qUNJt+RccS3qkYayylAy9tP1wV+7Q==", + "type": "package", + "path": "microsoft.aspnetcore.authorization.policy/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Authorization.Policy.xml", + "microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.authorization.policy.nuspec" + ] + }, + "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { + "sha512": "ULFSa+/L+WiAHVlIFHyg0OmHChU9Hx+K+xnt0hbIU5XmT1EGy0pNDx23QAzDtAy9jxQrTG6MX0MdvMeU4D4c7w==", + "type": "package", + "path": "microsoft.aspnetcore.connections.abstractions/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.xml", + "microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.connections.abstractions.nuspec" + ] + }, + "Microsoft.AspNetCore.Hosting.Abstractions/2.3.0": { + "sha512": "4ivq53W2k6Nj4eez9wc81ytfGj6HR1NaZJCpOrvghJo9zHuQF57PLhPoQH5ItyCpHXnrN/y7yJDUm+TGYzrx0w==", + "type": "package", + "path": "microsoft.aspnetcore.hosting.abstractions/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Abstractions.xml", + "microsoft.aspnetcore.hosting.abstractions.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.hosting.abstractions.nuspec" + ] + }, + "Microsoft.AspNetCore.Hosting.Server.Abstractions/2.3.0": { + "sha512": "F5iHx7odAbFKBV1DNPDkFFcVmD5Tk7rk+tYm3LMQxHEFFdjlg5QcYb5XhHAefl5YaaPeG6ad+/ck8kSG3/D6kw==", + "type": "package", + "path": "microsoft.aspnetcore.hosting.server.abstractions/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.xml", + "microsoft.aspnetcore.hosting.server.abstractions.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.hosting.server.abstractions.nuspec" + ] + }, + "Microsoft.AspNetCore.Http/2.3.0": { + "sha512": "I9azEG2tZ4DDHAFgv+N38e6Yhttvf+QjE2j2UYyCACE7Swm5/0uoihCMWZ87oOZYeqiEFSxbsfpT71OYHe2tpw==", + "type": "package", + "path": "microsoft.aspnetcore.http/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.xml", + "microsoft.aspnetcore.http.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.http.nuspec" + ] + }, + "Microsoft.AspNetCore.Http.Abstractions/2.3.0": { + "sha512": "39r9PPrjA6s0blyFv5qarckjNkaHRA5B+3b53ybuGGNTXEj1/DStQJ4NWjFL6QTRQpL9zt7nDyKxZdJOlcnq+Q==", + "type": "package", + "path": "microsoft.aspnetcore.http.abstractions/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.xml", + "microsoft.aspnetcore.http.abstractions.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.http.abstractions.nuspec" + ] + }, + "Microsoft.AspNetCore.Http.Connections/1.2.0": { + "sha512": "VYMCOLvdT0y3O9lk4jUuIs8+re7u5+i+ka6ZZ6fIzSJ94c/JeMnAOOg39EB2i4crPXvLoiSdzKWlNPJgTbCZ2g==", + "type": "package", + "path": "microsoft.aspnetcore.http.connections/1.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.xml", + "microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512", + "microsoft.aspnetcore.http.connections.nuspec" + ] + }, + "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { + "sha512": "yUA7eg6kv7Wbz5TCW4PqS5/kYE5VxUIEDvoxjw4p1RwS2LGm84F9fBtM0mD6wrRfiv1NUyJ7WBjn3PWd/ccO+w==", + "type": "package", + "path": "microsoft.aspnetcore.http.connections.common/1.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.xml", + "microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512", + "microsoft.aspnetcore.http.connections.common.nuspec" + ] + }, + "Microsoft.AspNetCore.Http.Extensions/2.3.0": { + "sha512": "EY2u/wFF5jsYwGXXswfQWrSsFPmiXsniAlUWo3rv/MGYf99ZFsENDnZcQP6W3c/+xQmQXq0NauzQ7jyy+o1LDQ==", + "type": "package", + "path": "microsoft.aspnetcore.http.extensions/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Extensions.xml", + "microsoft.aspnetcore.http.extensions.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.http.extensions.nuspec" + ] + }, + "Microsoft.AspNetCore.Http.Features/2.3.0": { + "sha512": "f10WUgcsKqrkmnz6gt8HeZ7kyKjYN30PO7cSic1lPtH7paPtnQqXPOveul/SIPI43PhRD4trttg4ywnrEmmJpA==", + "type": "package", + "path": "microsoft.aspnetcore.http.features/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.xml", + "microsoft.aspnetcore.http.features.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.http.features.nuspec" + ] + }, + "Microsoft.AspNetCore.Routing/2.3.0": { + "sha512": "no5/VC0CAQuT4PK4rp2K5fqwuSfzr2mdB6m1XNfWVhHnwzpRQzKAu9flChiT/JTLKwVI0Vq2MSmSW2OFMDCNXg==", + "type": "package", + "path": "microsoft.aspnetcore.routing/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Routing.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Routing.xml", + "microsoft.aspnetcore.routing.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.routing.nuspec" + ] + }, + "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { + "sha512": "ZkFpUrSmp6TocxZLBEX3IBv5dPMbQuMs6L/BPl0WRfn32UVOtNYJQ0bLdh3cL9LMV0rmTW/5R0w8CBYxr0AOUw==", + "type": "package", + "path": "microsoft.aspnetcore.routing.abstractions/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.xml", + "microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.routing.abstractions.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR/1.2.0": { + "sha512": "XoCcsOTdtBiXyOzUtpbCl0IaqMOYjnr+6dbDxvUCFn7NR6bu7CwrlQ3oQzkltTwDZH0b6VEUN9wZPOYvPHi+Lg==", + "type": "package", + "path": "microsoft.aspnetcore.signalr/1.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.xml", + "microsoft.aspnetcore.signalr.1.2.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR.Common/1.2.0": { + "sha512": "FZeXIaoWqe145ZPdfiptwkw/sP1BX1UD0706GNBwwoaFiKsNbLEl/Trhj2+idlp3qbX1BEwkQesKNxkopVY5Xg==", + "type": "package", + "path": "microsoft.aspnetcore.signalr.common/1.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.xml", + "microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.common.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR.Core/1.2.0": { + "sha512": "eZTuMkSDw1uwjhLhJbMxgW2Cuyxfn0Kfqm8OBmqvuzE9Qc/VVzh8dGrAp2F9Pk7XKTDHmlhc5RTLcPPAZ5PSZw==", + "type": "package", + "path": "microsoft.aspnetcore.signalr.core/1.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Core.xml", + "microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.core.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { + "sha512": "hNvZ7kQxp5Udqd/IFWViU35bUJvi4xnNzjkF28HRvrdrS7JNsIASTvMqArP6HLQUc3j6nlUOeShNhVmgI1wzHg==", + "type": "package", + "path": "microsoft.aspnetcore.signalr.protocols.json/1.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", + "microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.protocols.json.nuspec" + ] + }, + "Microsoft.AspNetCore.WebSockets/2.3.0": { + "sha512": "+T4zpnVPkIjvvkyhTH3WBJlTfqmTBRozvnMudAUDvcb4e+NrWf52q8BXh52rkCrBgX6Cudf6F/UhZwTowyBtKg==", + "type": "package", + "path": "microsoft.aspnetcore.websockets/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.WebSockets.xml", + "microsoft.aspnetcore.websockets.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.websockets.nuspec" + ] + }, + "Microsoft.AspNetCore.WebUtilities/2.3.0": { + "sha512": "trbXdWzoAEUVd0PE2yTopkz4kjZaAIA7xUWekd5uBw+7xE8Do/YOVTeb9d9koPTlbtZT539aESJjSLSqD8eYrQ==", + "type": "package", + "path": "microsoft.aspnetcore.webutilities/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.xml", + "microsoft.aspnetcore.webutilities.2.3.0.nupkg.sha512", + "microsoft.aspnetcore.webutilities.nuspec" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.0": { + "sha512": "1Am6l4Vpn3/K32daEqZI+FFr96OlZkgwK2LcT3pZ2zWubR5zTPW3/FkO1Rat9kb7oQOa4rxgl9LJHc5tspCWfg==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.1.1.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "ref/net461/Microsoft.Bcl.AsyncInterfaces.dll", + "ref/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.CodeCoverage/17.8.0": { + "sha512": "KC8SXWbGIdoFVdlxKk9WHccm0llm9HypcHMLUUFabRiTS3SO2fQXNZfdiF3qkEdTJhbRrxhdRxjL4jbtwPq4Ew==", + "type": "package", + "path": "microsoft.codecoverage/17.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "ThirdPartyNotices.txt", + "build/netstandard2.0/CodeCoverage/CodeCoverage.config", + "build/netstandard2.0/CodeCoverage/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/VanguardInstrumentationProfiler_x86.config", + "build/netstandard2.0/CodeCoverage/amd64/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/amd64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/CodeCoverage/amd64/covrun64.dll", + "build/netstandard2.0/CodeCoverage/amd64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/arm64/VanguardInstrumentationProfiler_arm64.config", + "build/netstandard2.0/CodeCoverage/arm64/covrunarm64.dll", + "build/netstandard2.0/CodeCoverage/arm64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/codecoveragemessages.dll", + "build/netstandard2.0/CodeCoverage/coreclr/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "build/netstandard2.0/CodeCoverage/covrun32.dll", + "build/netstandard2.0/CodeCoverage/msdia140.dll", + "build/netstandard2.0/InstrumentationEngine/alpine/x64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/InstrumentationEngine/alpine/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/InstrumentationEngine/alpine/x64/libInstrumentationEngine.so", + "build/netstandard2.0/InstrumentationEngine/arm64/MicrosoftInstrumentationEngine_arm64.dll", + "build/netstandard2.0/InstrumentationEngine/macos/x64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/InstrumentationEngine/macos/x64/libCoverageInstrumentationMethod.dylib", + "build/netstandard2.0/InstrumentationEngine/macos/x64/libInstrumentationEngine.dylib", + "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/libInstrumentationEngine.so", + "build/netstandard2.0/InstrumentationEngine/x64/MicrosoftInstrumentationEngine_x64.dll", + "build/netstandard2.0/InstrumentationEngine/x86/MicrosoftInstrumentationEngine_x86.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Core.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Interprocess.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.props", + "build/netstandard2.0/Microsoft.CodeCoverage.targets", + "build/netstandard2.0/Microsoft.DiaSymReader.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TraceDataCollector.dll", + "build/netstandard2.0/Mono.Cecil.Pdb.dll", + "build/netstandard2.0/Mono.Cecil.Rocks.dll", + "build/netstandard2.0/Mono.Cecil.dll", + "build/netstandard2.0/ThirdPartyNotices.txt", + "build/netstandard2.0/cs/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/de/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/es/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/fr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/it/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ja/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ko/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/pl/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ru/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/tr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "lib/net462/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "microsoft.codecoverage.17.8.0.nupkg.sha512", + "microsoft.codecoverage.nuspec" + ] + }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.EntityFrameworkCore/8.0.22": { + "sha512": "nKGrD/WOO1d7qtXvghFAHre5Fk3ubw41pDFM0hbFxVIkMFxl4B0ug2LylMHOq+dgAceUeo3bx0qMh6/Jl9NbrA==", + "type": "package", + "path": "microsoft.entityframeworkcore/8.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props", + "lib/net8.0/Microsoft.EntityFrameworkCore.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.xml", + "microsoft.entityframeworkcore.8.0.22.nupkg.sha512", + "microsoft.entityframeworkcore.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.22": { + "sha512": "p4Fw9mpJnZHmkdOGCbBqbvuyj1LnnFxNon8snMKIQ0MGSB+j9f6ffWDfvGRaOS/9ikqQG9RMOTzZk52q1G23ng==", + "type": "package", + "path": "microsoft.entityframeworkcore.abstractions/8.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml", + "microsoft.entityframeworkcore.abstractions.8.0.22.nupkg.sha512", + "microsoft.entityframeworkcore.abstractions.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.22": { + "sha512": "lrSWwr+X+Fn5XGOwOYFQJWx+u+eameqhMjQ1mohXUE2N7LauucZAtcH/j+yXwQntosKoXU1TOoggTL/zmYqbHQ==", + "type": "package", + "path": "microsoft.entityframeworkcore.analyzers/8.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", + "docs/PACKAGE.md", + "lib/netstandard2.0/_._", + "microsoft.entityframeworkcore.analyzers.8.0.22.nupkg.sha512", + "microsoft.entityframeworkcore.analyzers.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.InMemory/8.0.22": { + "sha512": "dPbM/KLIh/AdHRjh/OhrzhAiHRLT0JBC5KSvAZ71eg42+QwF9aEuBfTzqr+GJE6DK9CLhqh9jXAqRKFojPki5g==", + "type": "package", + "path": "microsoft.entityframeworkcore.inmemory/8.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.InMemory.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.InMemory.xml", + "microsoft.entityframeworkcore.inmemory.8.0.22.nupkg.sha512", + "microsoft.entityframeworkcore.inmemory.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.13": { + "sha512": "uQR2iTar+6ZEjEHTwgH0/7ySSRme4R9sDiupfG3w/eBub3365fPw/MjhsuOMQkdq9YzLM7veH4Qt/K9OqL26Qg==", + "type": "package", + "path": "microsoft.entityframeworkcore.relational/8.0.13", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.xml", + "microsoft.entityframeworkcore.relational.8.0.13.nupkg.sha512", + "microsoft.entityframeworkcore.relational.nuspec" + ] + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": { + "sha512": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", + "type": "package", + "path": "microsoft.extensions.apidescription.server/6.0.5", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/Microsoft.Extensions.ApiDescription.Server.props", + "build/Microsoft.Extensions.ApiDescription.Server.targets", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", + "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", + "microsoft.extensions.apidescription.server.nuspec", + "tools/Newtonsoft.Json.dll", + "tools/dotnet-getdocument.deps.json", + "tools/dotnet-getdocument.dll", + "tools/dotnet-getdocument.runtimeconfig.json", + "tools/net461-x86/GetDocument.Insider.exe", + "tools/net461-x86/GetDocument.Insider.exe.config", + "tools/net461-x86/Microsoft.Win32.Primitives.dll", + "tools/net461-x86/System.AppContext.dll", + "tools/net461-x86/System.Buffers.dll", + "tools/net461-x86/System.Collections.Concurrent.dll", + "tools/net461-x86/System.Collections.NonGeneric.dll", + "tools/net461-x86/System.Collections.Specialized.dll", + "tools/net461-x86/System.Collections.dll", + "tools/net461-x86/System.ComponentModel.EventBasedAsync.dll", + "tools/net461-x86/System.ComponentModel.Primitives.dll", + "tools/net461-x86/System.ComponentModel.TypeConverter.dll", + "tools/net461-x86/System.ComponentModel.dll", + "tools/net461-x86/System.Console.dll", + "tools/net461-x86/System.Data.Common.dll", + "tools/net461-x86/System.Diagnostics.Contracts.dll", + "tools/net461-x86/System.Diagnostics.Debug.dll", + "tools/net461-x86/System.Diagnostics.DiagnosticSource.dll", + "tools/net461-x86/System.Diagnostics.FileVersionInfo.dll", + "tools/net461-x86/System.Diagnostics.Process.dll", + "tools/net461-x86/System.Diagnostics.StackTrace.dll", + "tools/net461-x86/System.Diagnostics.TextWriterTraceListener.dll", + "tools/net461-x86/System.Diagnostics.Tools.dll", + "tools/net461-x86/System.Diagnostics.TraceSource.dll", + "tools/net461-x86/System.Diagnostics.Tracing.dll", + "tools/net461-x86/System.Drawing.Primitives.dll", + "tools/net461-x86/System.Dynamic.Runtime.dll", + "tools/net461-x86/System.Globalization.Calendars.dll", + "tools/net461-x86/System.Globalization.Extensions.dll", + "tools/net461-x86/System.Globalization.dll", + "tools/net461-x86/System.IO.Compression.ZipFile.dll", + "tools/net461-x86/System.IO.Compression.dll", + "tools/net461-x86/System.IO.FileSystem.DriveInfo.dll", + "tools/net461-x86/System.IO.FileSystem.Primitives.dll", + "tools/net461-x86/System.IO.FileSystem.Watcher.dll", + "tools/net461-x86/System.IO.FileSystem.dll", + "tools/net461-x86/System.IO.IsolatedStorage.dll", + "tools/net461-x86/System.IO.MemoryMappedFiles.dll", + "tools/net461-x86/System.IO.Pipes.dll", + "tools/net461-x86/System.IO.UnmanagedMemoryStream.dll", + "tools/net461-x86/System.IO.dll", + "tools/net461-x86/System.Linq.Expressions.dll", + "tools/net461-x86/System.Linq.Parallel.dll", + "tools/net461-x86/System.Linq.Queryable.dll", + "tools/net461-x86/System.Linq.dll", + "tools/net461-x86/System.Memory.dll", + "tools/net461-x86/System.Net.Http.dll", + "tools/net461-x86/System.Net.NameResolution.dll", + "tools/net461-x86/System.Net.NetworkInformation.dll", + "tools/net461-x86/System.Net.Ping.dll", + "tools/net461-x86/System.Net.Primitives.dll", + "tools/net461-x86/System.Net.Requests.dll", + "tools/net461-x86/System.Net.Security.dll", + "tools/net461-x86/System.Net.Sockets.dll", + "tools/net461-x86/System.Net.WebHeaderCollection.dll", + "tools/net461-x86/System.Net.WebSockets.Client.dll", + "tools/net461-x86/System.Net.WebSockets.dll", + "tools/net461-x86/System.Numerics.Vectors.dll", + "tools/net461-x86/System.ObjectModel.dll", + "tools/net461-x86/System.Reflection.Extensions.dll", + "tools/net461-x86/System.Reflection.Primitives.dll", + "tools/net461-x86/System.Reflection.dll", + "tools/net461-x86/System.Resources.Reader.dll", + "tools/net461-x86/System.Resources.ResourceManager.dll", + "tools/net461-x86/System.Resources.Writer.dll", + "tools/net461-x86/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net461-x86/System.Runtime.CompilerServices.VisualC.dll", + "tools/net461-x86/System.Runtime.Extensions.dll", + "tools/net461-x86/System.Runtime.Handles.dll", + "tools/net461-x86/System.Runtime.InteropServices.RuntimeInformation.dll", + "tools/net461-x86/System.Runtime.InteropServices.dll", + "tools/net461-x86/System.Runtime.Numerics.dll", + "tools/net461-x86/System.Runtime.Serialization.Formatters.dll", + "tools/net461-x86/System.Runtime.Serialization.Json.dll", + "tools/net461-x86/System.Runtime.Serialization.Primitives.dll", + "tools/net461-x86/System.Runtime.Serialization.Xml.dll", + "tools/net461-x86/System.Runtime.dll", + "tools/net461-x86/System.Security.Claims.dll", + "tools/net461-x86/System.Security.Cryptography.Algorithms.dll", + "tools/net461-x86/System.Security.Cryptography.Csp.dll", + "tools/net461-x86/System.Security.Cryptography.Encoding.dll", + "tools/net461-x86/System.Security.Cryptography.Primitives.dll", + "tools/net461-x86/System.Security.Cryptography.X509Certificates.dll", + "tools/net461-x86/System.Security.Principal.dll", + "tools/net461-x86/System.Security.SecureString.dll", + "tools/net461-x86/System.Text.Encoding.Extensions.dll", + "tools/net461-x86/System.Text.Encoding.dll", + "tools/net461-x86/System.Text.RegularExpressions.dll", + "tools/net461-x86/System.Threading.Overlapped.dll", + "tools/net461-x86/System.Threading.Tasks.Parallel.dll", + "tools/net461-x86/System.Threading.Tasks.dll", + "tools/net461-x86/System.Threading.Thread.dll", + "tools/net461-x86/System.Threading.ThreadPool.dll", + "tools/net461-x86/System.Threading.Timer.dll", + "tools/net461-x86/System.Threading.dll", + "tools/net461-x86/System.ValueTuple.dll", + "tools/net461-x86/System.Xml.ReaderWriter.dll", + "tools/net461-x86/System.Xml.XDocument.dll", + "tools/net461-x86/System.Xml.XPath.XDocument.dll", + "tools/net461-x86/System.Xml.XPath.dll", + "tools/net461-x86/System.Xml.XmlDocument.dll", + "tools/net461-x86/System.Xml.XmlSerializer.dll", + "tools/net461-x86/netstandard.dll", + "tools/net461/GetDocument.Insider.exe", + "tools/net461/GetDocument.Insider.exe.config", + "tools/net461/Microsoft.Win32.Primitives.dll", + "tools/net461/System.AppContext.dll", + "tools/net461/System.Buffers.dll", + "tools/net461/System.Collections.Concurrent.dll", + "tools/net461/System.Collections.NonGeneric.dll", + "tools/net461/System.Collections.Specialized.dll", + "tools/net461/System.Collections.dll", + "tools/net461/System.ComponentModel.EventBasedAsync.dll", + "tools/net461/System.ComponentModel.Primitives.dll", + "tools/net461/System.ComponentModel.TypeConverter.dll", + "tools/net461/System.ComponentModel.dll", + "tools/net461/System.Console.dll", + "tools/net461/System.Data.Common.dll", + "tools/net461/System.Diagnostics.Contracts.dll", + "tools/net461/System.Diagnostics.Debug.dll", + "tools/net461/System.Diagnostics.DiagnosticSource.dll", + "tools/net461/System.Diagnostics.FileVersionInfo.dll", + "tools/net461/System.Diagnostics.Process.dll", + "tools/net461/System.Diagnostics.StackTrace.dll", + "tools/net461/System.Diagnostics.TextWriterTraceListener.dll", + "tools/net461/System.Diagnostics.Tools.dll", + "tools/net461/System.Diagnostics.TraceSource.dll", + "tools/net461/System.Diagnostics.Tracing.dll", + "tools/net461/System.Drawing.Primitives.dll", + "tools/net461/System.Dynamic.Runtime.dll", + "tools/net461/System.Globalization.Calendars.dll", + "tools/net461/System.Globalization.Extensions.dll", + "tools/net461/System.Globalization.dll", + "tools/net461/System.IO.Compression.ZipFile.dll", + "tools/net461/System.IO.Compression.dll", + "tools/net461/System.IO.FileSystem.DriveInfo.dll", + "tools/net461/System.IO.FileSystem.Primitives.dll", + "tools/net461/System.IO.FileSystem.Watcher.dll", + "tools/net461/System.IO.FileSystem.dll", + "tools/net461/System.IO.IsolatedStorage.dll", + "tools/net461/System.IO.MemoryMappedFiles.dll", + "tools/net461/System.IO.Pipes.dll", + "tools/net461/System.IO.UnmanagedMemoryStream.dll", + "tools/net461/System.IO.dll", + "tools/net461/System.Linq.Expressions.dll", + "tools/net461/System.Linq.Parallel.dll", + "tools/net461/System.Linq.Queryable.dll", + "tools/net461/System.Linq.dll", + "tools/net461/System.Memory.dll", + "tools/net461/System.Net.Http.dll", + "tools/net461/System.Net.NameResolution.dll", + "tools/net461/System.Net.NetworkInformation.dll", + "tools/net461/System.Net.Ping.dll", + "tools/net461/System.Net.Primitives.dll", + "tools/net461/System.Net.Requests.dll", + "tools/net461/System.Net.Security.dll", + "tools/net461/System.Net.Sockets.dll", + "tools/net461/System.Net.WebHeaderCollection.dll", + "tools/net461/System.Net.WebSockets.Client.dll", + "tools/net461/System.Net.WebSockets.dll", + "tools/net461/System.Numerics.Vectors.dll", + "tools/net461/System.ObjectModel.dll", + "tools/net461/System.Reflection.Extensions.dll", + "tools/net461/System.Reflection.Primitives.dll", + "tools/net461/System.Reflection.dll", + "tools/net461/System.Resources.Reader.dll", + "tools/net461/System.Resources.ResourceManager.dll", + "tools/net461/System.Resources.Writer.dll", + "tools/net461/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net461/System.Runtime.CompilerServices.VisualC.dll", + "tools/net461/System.Runtime.Extensions.dll", + "tools/net461/System.Runtime.Handles.dll", + "tools/net461/System.Runtime.InteropServices.RuntimeInformation.dll", + "tools/net461/System.Runtime.InteropServices.dll", + "tools/net461/System.Runtime.Numerics.dll", + "tools/net461/System.Runtime.Serialization.Formatters.dll", + "tools/net461/System.Runtime.Serialization.Json.dll", + "tools/net461/System.Runtime.Serialization.Primitives.dll", + "tools/net461/System.Runtime.Serialization.Xml.dll", + "tools/net461/System.Runtime.dll", + "tools/net461/System.Security.Claims.dll", + "tools/net461/System.Security.Cryptography.Algorithms.dll", + "tools/net461/System.Security.Cryptography.Csp.dll", + "tools/net461/System.Security.Cryptography.Encoding.dll", + "tools/net461/System.Security.Cryptography.Primitives.dll", + "tools/net461/System.Security.Cryptography.X509Certificates.dll", + "tools/net461/System.Security.Principal.dll", + "tools/net461/System.Security.SecureString.dll", + "tools/net461/System.Text.Encoding.Extensions.dll", + "tools/net461/System.Text.Encoding.dll", + "tools/net461/System.Text.RegularExpressions.dll", + "tools/net461/System.Threading.Overlapped.dll", + "tools/net461/System.Threading.Tasks.Parallel.dll", + "tools/net461/System.Threading.Tasks.dll", + "tools/net461/System.Threading.Thread.dll", + "tools/net461/System.Threading.ThreadPool.dll", + "tools/net461/System.Threading.Timer.dll", + "tools/net461/System.Threading.dll", + "tools/net461/System.ValueTuple.dll", + "tools/net461/System.Xml.ReaderWriter.dll", + "tools/net461/System.Xml.XDocument.dll", + "tools/net461/System.Xml.XPath.XDocument.dll", + "tools/net461/System.Xml.XPath.dll", + "tools/net461/System.Xml.XmlDocument.dll", + "tools/net461/System.Xml.XmlSerializer.dll", + "tools/net461/netstandard.dll", + "tools/netcoreapp2.1/GetDocument.Insider.deps.json", + "tools/netcoreapp2.1/GetDocument.Insider.dll", + "tools/netcoreapp2.1/GetDocument.Insider.runtimeconfig.json", + "tools/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll" + ] + }, + "Microsoft.Extensions.Caching.Abstractions/10.0.2": { + "sha512": "WIRPDa/qoKHmJhTAPCO/zLu9kRLQ2Fd6HD5tzgdXJ3xGEVXDHP6FvakKJjynwKrVDld8H4G4tcbW53wuC/wxMQ==", + "type": "package", + "path": "microsoft.extensions.caching.abstractions/10.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets", + "lib/net10.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net10.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net462/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", + "microsoft.extensions.caching.abstractions.10.0.2.nupkg.sha512", + "microsoft.extensions.caching.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "sha512": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==", + "type": "package", + "path": "microsoft.extensions.caching.memory/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets", + "lib/net462/Microsoft.Extensions.Caching.Memory.dll", + "lib/net462/Microsoft.Extensions.Caching.Memory.xml", + "lib/net6.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net6.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net7.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net7.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net8.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", + "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", + "microsoft.extensions.caching.memory.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Caching.StackExchangeRedis/10.0.2": { + "sha512": "WEx0VM6KVv4Bf6lwe4WQTd4EixIfw38ZU3u/7zMe+uC5fOyiANu8Os/qyiqv2iEsIJb296tbd2E2BTaWIha3Vg==", + "type": "package", + "path": "microsoft.extensions.caching.stackexchangeredis/10.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll", + "lib/net10.0/Microsoft.Extensions.Caching.StackExchangeRedis.xml", + "lib/net462/Microsoft.Extensions.Caching.StackExchangeRedis.dll", + "lib/net462/Microsoft.Extensions.Caching.StackExchangeRedis.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.StackExchangeRedis.xml", + "microsoft.extensions.caching.stackexchangeredis.10.0.2.nupkg.sha512", + "microsoft.extensions.caching.stackexchangeredis.nuspec" + ] + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "type": "package", + "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "sha512": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", + "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": { + "sha512": "zOIurr59+kUf9vNcsUkCvKWZv+fPosUZXURZesYkJCvl0EzTc9F7maAO4Cd2WEV7ZJJ0AZrFQvuH6Npph9wdBw==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "sha512": "elH2vmwNmsXuKmUeMQ4YW9ldXiF+gSGDgg1vORksob5POnpaI6caj1Hu8zaYbEuibhqCoWg0YRWDazBY3zjBfg==", + "type": "package", + "path": "microsoft.extensions.diagnostics.abstractions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512", + "microsoft.extensions.diagnostics.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics.HealthChecks/8.0.0": { + "sha512": "P9SoBuVZhJPpALZmSq72aQEb9ryP67EdquaCZGXGrrcASTNHYdrUhnpgSwIipgM5oVC+dKpRXg5zxobmF9xr5g==", + "type": "package", + "path": "microsoft.extensions.diagnostics.healthchecks/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net462/Microsoft.Extensions.Diagnostics.HealthChecks.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.HealthChecks.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.HealthChecks.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.HealthChecks.xml", + "microsoft.extensions.diagnostics.healthchecks.8.0.0.nupkg.sha512", + "microsoft.extensions.diagnostics.healthchecks.nuspec" + ] + }, + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions/8.0.0": { + "sha512": "AT2qqos3IgI09ok36Qag9T8bb6kHJ3uT9Q5ki6CySybFsK6/9JbvQAgAHf1pVEjST0/N4JaFaCbm40R5edffwg==", + "type": "package", + "path": "microsoft.extensions.diagnostics.healthchecks.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net462/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.xml", + "microsoft.extensions.diagnostics.healthchecks.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.diagnostics.healthchecks.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "sha512": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", + "type": "package", + "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileProviders.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Abstractions.targets", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.fileproviders.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "sha512": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", + "type": "package", + "path": "microsoft.extensions.hosting.abstractions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Hosting.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.xml", + "microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512", + "microsoft.extensions.hosting.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging/8.0.1": { + "sha512": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==", + "type": "package", + "path": "microsoft.extensions.logging/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", + "lib/net462/Microsoft.Extensions.Logging.dll", + "lib/net462/Microsoft.Extensions.Logging.xml", + "lib/net6.0/Microsoft.Extensions.Logging.dll", + "lib/net6.0/Microsoft.Extensions.Logging.xml", + "lib/net7.0/Microsoft.Extensions.Logging.dll", + "lib/net7.0/Microsoft.Extensions.Logging.xml", + "lib/net8.0/Microsoft.Extensions.Logging.dll", + "lib/net8.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", + "microsoft.extensions.logging.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.2": { + "sha512": "RZkez/JjpnO+MZ6efKkSynN6ZztLpw3WbxNzjLCPBd97wWj1S9ZYPWi0nmT4kWBRa6atHsdM1ydGkUr8GudyDQ==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/10.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.ObjectPool/8.0.11": { + "sha512": "6ApKcHNJigXBfZa6XlDQ8feJpq7SG1ogZXg6M4FiNzgd6irs3LUAzo0Pfn4F2ZI9liGnH1XIBR/OtSbZmJAV5w==", + "type": "package", + "path": "microsoft.extensions.objectpool/8.0.11", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net462/Microsoft.Extensions.ObjectPool.dll", + "lib/net462/Microsoft.Extensions.ObjectPool.xml", + "lib/net8.0/Microsoft.Extensions.ObjectPool.dll", + "lib/net8.0/Microsoft.Extensions.ObjectPool.xml", + "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll", + "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.xml", + "microsoft.extensions.objectpool.8.0.11.nupkg.sha512", + "microsoft.extensions.objectpool.nuspec" + ] + }, + "Microsoft.Extensions.Options/10.0.2": { + "sha512": "1De2LJjmxdqopI5AYC5dIhoZQ79AR5ayywxNF1rXrXFtKQfbQOV9+n/IsZBa7qWlr0MqoGpW8+OY2v/57udZOA==", + "type": "package", + "path": "microsoft.extensions.options/10.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Options.targets", + "buildTransitive/net462/Microsoft.Extensions.Options.targets", + "buildTransitive/net8.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", + "lib/net10.0/Microsoft.Extensions.Options.dll", + "lib/net10.0/Microsoft.Extensions.Options.xml", + "lib/net462/Microsoft.Extensions.Options.dll", + "lib/net462/Microsoft.Extensions.Options.xml", + "lib/net8.0/Microsoft.Extensions.Options.dll", + "lib/net8.0/Microsoft.Extensions.Options.xml", + "lib/net9.0/Microsoft.Extensions.Options.dll", + "lib/net9.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.1/Microsoft.Extensions.Options.dll", + "lib/netstandard2.1/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.10.0.2.nupkg.sha512", + "microsoft.extensions.options.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Primitives/10.0.2": { + "sha512": "QmSiO+oLBEooGgB3i0GRXyeYRDHjllqt3k365jwfZlYWhvSHA3UL2NEVV5m8aZa041eIlblo6KMI5txvTMpTwA==", + "type": "package", + "path": "microsoft.extensions.primitives/10.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", + "lib/net10.0/Microsoft.Extensions.Primitives.dll", + "lib/net10.0/Microsoft.Extensions.Primitives.xml", + "lib/net462/Microsoft.Extensions.Primitives.dll", + "lib/net462/Microsoft.Extensions.Primitives.xml", + "lib/net8.0/Microsoft.Extensions.Primitives.dll", + "lib/net8.0/Microsoft.Extensions.Primitives.xml", + "lib/net9.0/Microsoft.Extensions.Primitives.dll", + "lib/net9.0/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.10.0.2.nupkg.sha512", + "microsoft.extensions.primitives.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.IdentityModel.Abstractions/8.14.0": { + "sha512": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==", + "type": "package", + "path": "microsoft.identitymodel.abstractions/8.14.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/Microsoft.IdentityModel.Abstractions.dll", + "lib/net462/Microsoft.IdentityModel.Abstractions.xml", + "lib/net472/Microsoft.IdentityModel.Abstractions.dll", + "lib/net472/Microsoft.IdentityModel.Abstractions.xml", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net9.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml", + "microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512", + "microsoft.identitymodel.abstractions.nuspec" + ] + }, + "Microsoft.IdentityModel.JsonWebTokens/8.14.0": { + "sha512": "4jOpiA4THdtpLyMdAb24dtj7+6GmvhOhxf5XHLYWmPKF8ApEnApal1UnJsKO4HxUWRXDA6C4WQVfYyqsRhpNpQ==", + "type": "package", + "path": "microsoft.identitymodel.jsonwebtokens/8.14.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512", + "microsoft.identitymodel.jsonwebtokens.nuspec" + ] + }, + "Microsoft.IdentityModel.Logging/8.14.0": { + "sha512": "eqqnemdW38CKZEHS6diA50BV94QICozDZEvSrsvN3SJXUFwVB9gy+/oz76gldP7nZliA16IglXjXTCTdmU/Ejg==", + "type": "package", + "path": "microsoft.identitymodel.logging/8.14.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/Microsoft.IdentityModel.Logging.dll", + "lib/net462/Microsoft.IdentityModel.Logging.xml", + "lib/net472/Microsoft.IdentityModel.Logging.dll", + "lib/net472/Microsoft.IdentityModel.Logging.xml", + "lib/net6.0/Microsoft.IdentityModel.Logging.dll", + "lib/net6.0/Microsoft.IdentityModel.Logging.xml", + "lib/net8.0/Microsoft.IdentityModel.Logging.dll", + "lib/net8.0/Microsoft.IdentityModel.Logging.xml", + "lib/net9.0/Microsoft.IdentityModel.Logging.dll", + "lib/net9.0/Microsoft.IdentityModel.Logging.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml", + "microsoft.identitymodel.logging.8.14.0.nupkg.sha512", + "microsoft.identitymodel.logging.nuspec" + ] + }, + "Microsoft.IdentityModel.Protocols/7.1.2": { + "sha512": "SydLwMRFx6EHPWJ+N6+MVaoArN1Htt92b935O3RUWPY1yUF63zEjvd3lBu79eWdZUwedP8TN2I5V9T3nackvIQ==", + "type": "package", + "path": "microsoft.identitymodel.protocols/7.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Protocols.dll", + "lib/net461/Microsoft.IdentityModel.Protocols.xml", + "lib/net462/Microsoft.IdentityModel.Protocols.dll", + "lib/net462/Microsoft.IdentityModel.Protocols.xml", + "lib/net472/Microsoft.IdentityModel.Protocols.dll", + "lib/net472/Microsoft.IdentityModel.Protocols.xml", + "lib/net6.0/Microsoft.IdentityModel.Protocols.dll", + "lib/net6.0/Microsoft.IdentityModel.Protocols.xml", + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll", + "lib/net8.0/Microsoft.IdentityModel.Protocols.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.xml", + "microsoft.identitymodel.protocols.7.1.2.nupkg.sha512", + "microsoft.identitymodel.protocols.nuspec" + ] + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { + "sha512": "6lHQoLXhnMQ42mGrfDkzbIOR3rzKM1W1tgTeMPLgLCqwwGw0d96xFi/UiX/fYsu7d6cD5MJiL3+4HuI8VU+sVQ==", + "type": "package", + "path": "microsoft.identitymodel.protocols.openidconnect/7.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net461/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net462/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net462/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net472/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net472/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net6.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net6.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512", + "microsoft.identitymodel.protocols.openidconnect.nuspec" + ] + }, + "Microsoft.IdentityModel.Tokens/8.14.0": { + "sha512": "lKIZiBiGd36k02TCdMHp1KlNWisyIvQxcYJvIkz7P4gSQ9zi8dgh6S5Grj8NNG7HWYIPfQymGyoZ6JB5d1Lo1g==", + "type": "package", + "path": "microsoft.identitymodel.tokens/8.14.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/Microsoft.IdentityModel.Tokens.dll", + "lib/net462/Microsoft.IdentityModel.Tokens.xml", + "lib/net472/Microsoft.IdentityModel.Tokens.dll", + "lib/net472/Microsoft.IdentityModel.Tokens.xml", + "lib/net6.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net6.0/Microsoft.IdentityModel.Tokens.xml", + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net8.0/Microsoft.IdentityModel.Tokens.xml", + "lib/net9.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net9.0/Microsoft.IdentityModel.Tokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml", + "microsoft.identitymodel.tokens.8.14.0.nupkg.sha512", + "microsoft.identitymodel.tokens.nuspec" + ] + }, + "Microsoft.Net.Http.Headers/2.3.0": { + "sha512": "/M0wVg6tJUOHutWD3BMOUVZAioJVXe0tCpFiovzv0T9T12TBf4MnaHP0efO8TCr1a6O9RZgQeZ9Gdark8L9XdA==", + "type": "package", + "path": "microsoft.net.http.headers/2.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Microsoft.Net.Http.Headers.dll", + "lib/netstandard2.0/Microsoft.Net.Http.Headers.xml", + "microsoft.net.http.headers.2.3.0.nupkg.sha512", + "microsoft.net.http.headers.nuspec" + ] + }, + "Microsoft.NET.Test.Sdk/17.8.0": { + "sha512": "BmTYGbD/YuDHmApIENdoyN1jCk0Rj1fJB0+B/fVekyTdVidr91IlzhqzytiUgaEAzL1ZJcYCme0MeBMYvJVzvw==", + "type": "package", + "path": "microsoft.net.test.sdk/17.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "build/net462/Microsoft.NET.Test.Sdk.props", + "build/net462/Microsoft.NET.Test.Sdk.targets", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.cs", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.fs", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.vb", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.props", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.targets", + "buildMultiTargeting/Microsoft.NET.Test.Sdk.props", + "lib/net462/_._", + "lib/netcoreapp3.1/_._", + "microsoft.net.test.sdk.17.8.0.nupkg.sha512", + "microsoft.net.test.sdk.nuspec" + ] + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "type": "package", + "path": "microsoft.netcore.platforms/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", + "runtime.json" + ] + }, + "Microsoft.NETCore.Targets/1.1.0": { + "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "type": "package", + "path": "microsoft.netcore.targets/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.targets.1.1.0.nupkg.sha512", + "microsoft.netcore.targets.nuspec", + "runtime.json" + ] + }, + "Microsoft.OpenApi/1.6.14": { + "sha512": "tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==", + "type": "package", + "path": "microsoft.openapi/1.6.14", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/netstandard2.0/Microsoft.OpenApi.dll", + "lib/netstandard2.0/Microsoft.OpenApi.pdb", + "lib/netstandard2.0/Microsoft.OpenApi.xml", + "microsoft.openapi.1.6.14.nupkg.sha512", + "microsoft.openapi.nuspec" + ] + }, + "Microsoft.TestPlatform.ObjectModel/17.8.0": { + "sha512": "AYy6vlpGMfz5kOFq99L93RGbqftW/8eQTqjT9iGXW6s9MRP3UdtY8idJ8rJcjeSja8A18IhIro5YnH3uv1nz4g==", + "type": "package", + "path": "microsoft.testplatform.objectmodel/17.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "lib/net462/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net462/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net462/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net462/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netstandard2.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "microsoft.testplatform.objectmodel.17.8.0.nupkg.sha512", + "microsoft.testplatform.objectmodel.nuspec" + ] + }, + "Microsoft.TestPlatform.TestHost/17.8.0": { + "sha512": "9ivcl/7SGRmOT0YYrHQGohWiT5YCpkmy/UEzldfVisLm6QxbLaK3FAJqZXI34rnRLmqqDCeMQxKINwmKwAPiDw==", + "type": "package", + "path": "microsoft.testplatform.testhost/17.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "ThirdPartyNotices.txt", + "build/netcoreapp3.1/Microsoft.TestPlatform.TestHost.props", + "build/netcoreapp3.1/x64/testhost.dll", + "build/netcoreapp3.1/x64/testhost.exe", + "build/netcoreapp3.1/x86/testhost.x86.dll", + "build/netcoreapp3.1/x86/testhost.x86.exe", + "lib/net462/_._", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/testhost.deps.json", + "lib/netcoreapp3.1/testhost.dll", + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/x64/msdia140.dll", + "lib/netcoreapp3.1/x86/msdia140.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "microsoft.testplatform.testhost.17.8.0.nupkg.sha512", + "microsoft.testplatform.testhost.nuspec" + ] + }, + "Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.22.1": { + "sha512": "EfYANhAWqmWKoLwN6bxoiPZSOfJSO9lzX+UrU6GVhLhPub1Hd+5f0zL0/tggIA6mRz6Ebw2xCNcIsM4k+7NPng==", + "type": "package", + "path": "microsoft.visualstudio.azure.containers.tools.targets/1.22.1", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "CHANGELOG.md", + "EULA.md", + "ThirdPartyNotices.txt", + "build/Container.props", + "build/Container.targets", + "build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.props", + "build/Microsoft.VisualStudio.Azure.Containers.Tools.Targets.targets", + "build/Rules/GeneralBrowseObject.xaml", + "build/Rules/cs-CZ/GeneralBrowseObject.xaml", + "build/Rules/de-DE/GeneralBrowseObject.xaml", + "build/Rules/es-ES/GeneralBrowseObject.xaml", + "build/Rules/fr-FR/GeneralBrowseObject.xaml", + "build/Rules/it-IT/GeneralBrowseObject.xaml", + "build/Rules/ja-JP/GeneralBrowseObject.xaml", + "build/Rules/ko-KR/GeneralBrowseObject.xaml", + "build/Rules/pl-PL/GeneralBrowseObject.xaml", + "build/Rules/pt-BR/GeneralBrowseObject.xaml", + "build/Rules/ru-RU/GeneralBrowseObject.xaml", + "build/Rules/tr-TR/GeneralBrowseObject.xaml", + "build/Rules/zh-CN/GeneralBrowseObject.xaml", + "build/Rules/zh-TW/GeneralBrowseObject.xaml", + "build/ToolsTarget.props", + "build/ToolsTarget.targets", + "icon.png", + "microsoft.visualstudio.azure.containers.tools.targets.1.22.1.nupkg.sha512", + "microsoft.visualstudio.azure.containers.tools.targets.nuspec", + "tools/Microsoft.VisualStudio.Containers.Tools.Common.dll", + "tools/Microsoft.VisualStudio.Containers.Tools.Shared.dll", + "tools/Microsoft.VisualStudio.Containers.Tools.Tasks.dll", + "tools/Newtonsoft.Json.dll", + "tools/System.Security.Principal.Windows.dll", + "tools/cs/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/cs/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/cs/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/de/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/de/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/de/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/es/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/es/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/es/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/fr/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/fr/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/fr/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/it/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/it/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/it/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/ja/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/ja/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/ja/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/ko/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/ko/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/ko/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/pl/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/pl/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/pl/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/pt-BR/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/pt-BR/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/pt-BR/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/ru/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/ru/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/ru/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/tr/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/tr/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/tr/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/zh-Hans/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/zh-Hans/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/zh-Hans/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll", + "tools/zh-Hant/Microsoft.VisualStudio.Containers.Tools.Common.resources.dll", + "tools/zh-Hant/Microsoft.VisualStudio.Containers.Tools.Shared.resources.dll", + "tools/zh-Hant/Microsoft.VisualStudio.Containers.Tools.Tasks.resources.dll" + ] + }, + "Microsoft.Win32.Primitives/4.3.0": { + "sha512": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", + "type": "package", + "path": "microsoft.win32.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/Microsoft.Win32.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.win32.primitives.4.3.0.nupkg.sha512", + "microsoft.win32.primitives.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "Moq/4.20.72": { + "sha512": "EA55cjyNn8eTNWrgrdZJH5QLFp2L43oxl1tlkoYUKIE9pRwL784OWiTXeCV5ApS+AMYEAlt7Fo03A2XfouvHmQ==", + "type": "package", + "path": "moq/4.20.72", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "lib/net462/Moq.dll", + "lib/net6.0/Moq.dll", + "lib/netstandard2.0/Moq.dll", + "lib/netstandard2.1/Moq.dll", + "moq.4.20.72.nupkg.sha512", + "moq.nuspec", + "readme.md" + ] + }, + "MySqlConnector/2.3.5": { + "sha512": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", + "type": "package", + "path": "mysqlconnector/2.3.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/MySqlConnector.dll", + "lib/net462/MySqlConnector.xml", + "lib/net471/MySqlConnector.dll", + "lib/net471/MySqlConnector.xml", + "lib/net48/MySqlConnector.dll", + "lib/net48/MySqlConnector.xml", + "lib/net6.0/MySqlConnector.dll", + "lib/net6.0/MySqlConnector.xml", + "lib/net7.0/MySqlConnector.dll", + "lib/net7.0/MySqlConnector.xml", + "lib/net8.0/MySqlConnector.dll", + "lib/net8.0/MySqlConnector.xml", + "lib/netstandard2.0/MySqlConnector.dll", + "lib/netstandard2.0/MySqlConnector.xml", + "lib/netstandard2.1/MySqlConnector.dll", + "lib/netstandard2.1/MySqlConnector.xml", + "logo.png", + "mysqlconnector.2.3.5.nupkg.sha512", + "mysqlconnector.nuspec" + ] + }, + "NETStandard.Library/1.6.1": { + "sha512": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", + "type": "package", + "path": "netstandard.library/1.6.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "netstandard.library.1.6.1.nupkg.sha512", + "netstandard.library.nuspec" + ] + }, + "Newtonsoft.Json/13.0.4": { + "sha512": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==", + "type": "package", + "path": "newtonsoft.json/13.0.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "README.md", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/net6.0/Newtonsoft.Json.dll", + "lib/net6.0/Newtonsoft.Json.xml", + "lib/netstandard1.0/Newtonsoft.Json.dll", + "lib/netstandard1.0/Newtonsoft.Json.xml", + "lib/netstandard1.3/Newtonsoft.Json.dll", + "lib/netstandard1.3/Newtonsoft.Json.xml", + "lib/netstandard2.0/Newtonsoft.Json.dll", + "lib/netstandard2.0/Newtonsoft.Json.xml", + "newtonsoft.json.13.0.4.nupkg.sha512", + "newtonsoft.json.nuspec", + "packageIcon.png" + ] + }, + "NuGet.Frameworks/6.5.0": { + "sha512": "QWINE2x3MbTODsWT1Gh71GaGb5icBz4chS8VYvTgsBnsi8esgN6wtHhydd7fvToWECYGq7T4cgBBDiKD/363fg==", + "type": "package", + "path": "nuget.frameworks/6.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net472/NuGet.Frameworks.dll", + "lib/netstandard2.0/NuGet.Frameworks.dll", + "nuget.frameworks.6.5.0.nupkg.sha512", + "nuget.frameworks.nuspec" + ] + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "sha512": "zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==", + "type": "package", + "path": "pipelines.sockets.unofficial/2.2.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Pipelines.Sockets.Unofficial.dll", + "lib/net461/Pipelines.Sockets.Unofficial.xml", + "lib/net472/Pipelines.Sockets.Unofficial.dll", + "lib/net472/Pipelines.Sockets.Unofficial.xml", + "lib/net5.0/Pipelines.Sockets.Unofficial.dll", + "lib/net5.0/Pipelines.Sockets.Unofficial.xml", + "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.dll", + "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.xml", + "lib/netstandard2.0/Pipelines.Sockets.Unofficial.dll", + "lib/netstandard2.0/Pipelines.Sockets.Unofficial.xml", + "lib/netstandard2.1/Pipelines.Sockets.Unofficial.dll", + "lib/netstandard2.1/Pipelines.Sockets.Unofficial.xml", + "pipelines.sockets.unofficial.2.2.8.nupkg.sha512", + "pipelines.sockets.unofficial.nuspec" + ] + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.3": { + "sha512": "gOHP6v/nFp5V/FgHqv9mZocGqCLGofihEX9dTbLhiXX3H7SJHmGX70GIPUpiqLT+1jIfDxg1PZh9MTUKuk7Kig==", + "type": "package", + "path": "pomelo.entityframeworkcore.mysql/8.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll", + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.xml", + "pomelo.entityframeworkcore.mysql.8.0.3.nupkg.sha512", + "pomelo.entityframeworkcore.mysql.nuspec" + ] + }, + "RabbitMQ.Client/7.1.2": { + "sha512": "y3c6ulgULScWthHw5PLM1ShHRLhxg0vCtzX/hh61gRgNecL3ZC3WoBW2HYHoXOVRqTl99Br9E7CZEytGZEsCyQ==", + "type": "package", + "path": "rabbitmq.client/7.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net8.0/RabbitMQ.Client.dll", + "lib/net8.0/RabbitMQ.Client.xml", + "lib/netstandard2.0/RabbitMQ.Client.dll", + "lib/netstandard2.0/RabbitMQ.Client.xml", + "rabbitmq.client.7.1.2.nupkg.sha512", + "rabbitmq.client.nuspec" + ] + }, + "RedLock.net/2.3.2": { + "sha512": "jlrALAArm4dCE292U3EtRoMnVKJ9M6sunbZn/oG5OuzlGtTpusXBfvDrnGWbgGDlWV027f5E9H5CiVnPxiq8+g==", + "type": "package", + "path": "redlock.net/2.3.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/RedLockNet.Abstractions.dll", + "lib/net461/RedLockNet.SERedis.dll", + "lib/net472/RedLockNet.Abstractions.dll", + "lib/net472/RedLockNet.SERedis.dll", + "lib/netstandard2.0/RedLockNet.Abstractions.dll", + "lib/netstandard2.0/RedLockNet.SERedis.dll", + "redlock-icon.png", + "redlock.net.2.3.2.nupkg.sha512", + "redlock.net.nuspec" + ] + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==", + "type": "package", + "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==", + "type": "package", + "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==", + "type": "package", + "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.native.System/4.3.0": { + "sha512": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", + "type": "package", + "path": "runtime.native.system/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.4.3.0.nupkg.sha512", + "runtime.native.system.nuspec" + ] + }, + "runtime.native.System.IO.Compression/4.3.0": { + "sha512": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", + "type": "package", + "path": "runtime.native.system.io.compression/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.io.compression.4.3.0.nupkg.sha512", + "runtime.native.system.io.compression.nuspec" + ] + }, + "runtime.native.System.Net.Http/4.3.0": { + "sha512": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", + "type": "package", + "path": "runtime.native.system.net.http/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.net.http.4.3.0.nupkg.sha512", + "runtime.native.system.net.http.nuspec" + ] + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "sha512": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", + "type": "package", + "path": "runtime.native.system.security.cryptography.apple/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "runtime.native.system.security.cryptography.apple.nuspec" + ] + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", + "type": "package", + "path": "runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.native.system.security.cryptography.openssl.nuspec" + ] + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==", + "type": "package", + "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==", + "type": "package", + "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "sha512": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==", + "type": "package", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.nuspec", + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib" + ] + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==", + "type": "package", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib" + ] + }, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==", + "type": "package", + "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==", + "type": "package", + "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==", + "type": "package", + "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==", + "type": "package", + "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "StackExchange.Redis/2.9.32": { + "sha512": "j5Rjbf7gWz5izrn0UWQy9RlQY4cQDPkwJfVqATnVsOa/+zzJrps12LOgacMsDl/Vit2f01cDiDkG/Rst8v2iGw==", + "type": "package", + "path": "stackexchange.redis/2.9.32", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net461/StackExchange.Redis.dll", + "lib/net461/StackExchange.Redis.xml", + "lib/net472/StackExchange.Redis.dll", + "lib/net472/StackExchange.Redis.xml", + "lib/net6.0/StackExchange.Redis.dll", + "lib/net6.0/StackExchange.Redis.xml", + "lib/net8.0/StackExchange.Redis.dll", + "lib/net8.0/StackExchange.Redis.xml", + "lib/netcoreapp3.1/StackExchange.Redis.dll", + "lib/netcoreapp3.1/StackExchange.Redis.xml", + "lib/netstandard2.0/StackExchange.Redis.dll", + "lib/netstandard2.0/StackExchange.Redis.xml", + "stackexchange.redis.2.9.32.nupkg.sha512", + "stackexchange.redis.nuspec" + ] + }, + "Swashbuckle.AspNetCore/6.6.2": { + "sha512": "+NB4UYVYN6AhDSjW0IJAd1AGD8V33gemFNLPaxKTtPkHB+HaKAKf9MGAEUPivEWvqeQfcKIw8lJaHq6LHljRuw==", + "type": "package", + "path": "swashbuckle.aspnetcore/6.6.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/Swashbuckle.AspNetCore.props", + "swashbuckle.aspnetcore.6.6.2.nupkg.sha512", + "swashbuckle.aspnetcore.nuspec" + ] + }, + "Swashbuckle.AspNetCore.Swagger/6.6.2": { + "sha512": "ovgPTSYX83UrQUWiS5vzDcJ8TEX1MAxBgDFMK45rC24MorHEPQlZAHlaXj/yth4Zf6xcktpUgTEBvffRQVwDKA==", + "type": "package", + "path": "swashbuckle.aspnetcore.swagger/6.6.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net5.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net5.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net5.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net6.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net6.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net6.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512", + "swashbuckle.aspnetcore.swagger.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.6.2": { + "sha512": "zv4ikn4AT1VYuOsDCpktLq4QDq08e7Utzbir86M5/ZkRaLXbCPF11E1/vTmOiDzRTl0zTZINQU2qLKwTcHgfrA==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggergen/6.6.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512", + "swashbuckle.aspnetcore.swaggergen.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.6.2": { + "sha512": "mBBb+/8Hm2Q3Wygag+hu2jj69tZW5psuv0vMRXY07Wy+Rrj40vRP8ZTbKBhs91r45/HXT4aY4z0iSBYx1h6JvA==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggerui/6.6.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512", + "swashbuckle.aspnetcore.swaggerui.nuspec" + ] + }, + "System.AppContext/4.3.0": { + "sha512": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", + "type": "package", + "path": "system.appcontext/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.AppContext.dll", + "lib/net463/System.AppContext.dll", + "lib/netcore50/System.AppContext.dll", + "lib/netstandard1.6/System.AppContext.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.AppContext.dll", + "ref/net463/System.AppContext.dll", + "ref/netstandard/_._", + "ref/netstandard1.3/System.AppContext.dll", + "ref/netstandard1.3/System.AppContext.xml", + "ref/netstandard1.3/de/System.AppContext.xml", + "ref/netstandard1.3/es/System.AppContext.xml", + "ref/netstandard1.3/fr/System.AppContext.xml", + "ref/netstandard1.3/it/System.AppContext.xml", + "ref/netstandard1.3/ja/System.AppContext.xml", + "ref/netstandard1.3/ko/System.AppContext.xml", + "ref/netstandard1.3/ru/System.AppContext.xml", + "ref/netstandard1.3/zh-hans/System.AppContext.xml", + "ref/netstandard1.3/zh-hant/System.AppContext.xml", + "ref/netstandard1.6/System.AppContext.dll", + "ref/netstandard1.6/System.AppContext.xml", + "ref/netstandard1.6/de/System.AppContext.xml", + "ref/netstandard1.6/es/System.AppContext.xml", + "ref/netstandard1.6/fr/System.AppContext.xml", + "ref/netstandard1.6/it/System.AppContext.xml", + "ref/netstandard1.6/ja/System.AppContext.xml", + "ref/netstandard1.6/ko/System.AppContext.xml", + "ref/netstandard1.6/ru/System.AppContext.xml", + "ref/netstandard1.6/zh-hans/System.AppContext.xml", + "ref/netstandard1.6/zh-hant/System.AppContext.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.AppContext.dll", + "system.appcontext.4.3.0.nupkg.sha512", + "system.appcontext.nuspec" + ] + }, + "System.Buffers/4.6.0": { + "sha512": "lN6tZi7Q46zFzAbRYXTIvfXcyvQQgxnY7Xm6C6xQ9784dEL1amjM6S6Iw4ZpsvesAKnRVsM4scrDQaDqSClkjA==", + "type": "package", + "path": "system.buffers/4.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Buffers.targets", + "buildTransitive/net462/_._", + "lib/net462/System.Buffers.dll", + "lib/net462/System.Buffers.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard2.0/System.Buffers.dll", + "lib/netstandard2.0/System.Buffers.xml", + "system.buffers.4.6.0.nupkg.sha512", + "system.buffers.nuspec" + ] + }, + "System.Collections/4.3.0": { + "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "type": "package", + "path": "system.collections/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.dll", + "ref/netcore50/System.Collections.xml", + "ref/netcore50/de/System.Collections.xml", + "ref/netcore50/es/System.Collections.xml", + "ref/netcore50/fr/System.Collections.xml", + "ref/netcore50/it/System.Collections.xml", + "ref/netcore50/ja/System.Collections.xml", + "ref/netcore50/ko/System.Collections.xml", + "ref/netcore50/ru/System.Collections.xml", + "ref/netcore50/zh-hans/System.Collections.xml", + "ref/netcore50/zh-hant/System.Collections.xml", + "ref/netstandard1.0/System.Collections.dll", + "ref/netstandard1.0/System.Collections.xml", + "ref/netstandard1.0/de/System.Collections.xml", + "ref/netstandard1.0/es/System.Collections.xml", + "ref/netstandard1.0/fr/System.Collections.xml", + "ref/netstandard1.0/it/System.Collections.xml", + "ref/netstandard1.0/ja/System.Collections.xml", + "ref/netstandard1.0/ko/System.Collections.xml", + "ref/netstandard1.0/ru/System.Collections.xml", + "ref/netstandard1.0/zh-hans/System.Collections.xml", + "ref/netstandard1.0/zh-hant/System.Collections.xml", + "ref/netstandard1.3/System.Collections.dll", + "ref/netstandard1.3/System.Collections.xml", + "ref/netstandard1.3/de/System.Collections.xml", + "ref/netstandard1.3/es/System.Collections.xml", + "ref/netstandard1.3/fr/System.Collections.xml", + "ref/netstandard1.3/it/System.Collections.xml", + "ref/netstandard1.3/ja/System.Collections.xml", + "ref/netstandard1.3/ko/System.Collections.xml", + "ref/netstandard1.3/ru/System.Collections.xml", + "ref/netstandard1.3/zh-hans/System.Collections.xml", + "ref/netstandard1.3/zh-hant/System.Collections.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.4.3.0.nupkg.sha512", + "system.collections.nuspec" + ] + }, + "System.Collections.Concurrent/4.3.0": { + "sha512": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "type": "package", + "path": "system.collections.concurrent/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Collections.Concurrent.dll", + "lib/netstandard1.3/System.Collections.Concurrent.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.Concurrent.dll", + "ref/netcore50/System.Collections.Concurrent.xml", + "ref/netcore50/de/System.Collections.Concurrent.xml", + "ref/netcore50/es/System.Collections.Concurrent.xml", + "ref/netcore50/fr/System.Collections.Concurrent.xml", + "ref/netcore50/it/System.Collections.Concurrent.xml", + "ref/netcore50/ja/System.Collections.Concurrent.xml", + "ref/netcore50/ko/System.Collections.Concurrent.xml", + "ref/netcore50/ru/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.1/System.Collections.Concurrent.dll", + "ref/netstandard1.1/System.Collections.Concurrent.xml", + "ref/netstandard1.1/de/System.Collections.Concurrent.xml", + "ref/netstandard1.1/es/System.Collections.Concurrent.xml", + "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.1/it/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.3/System.Collections.Concurrent.dll", + "ref/netstandard1.3/System.Collections.Concurrent.xml", + "ref/netstandard1.3/de/System.Collections.Concurrent.xml", + "ref/netstandard1.3/es/System.Collections.Concurrent.xml", + "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.3/it/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.concurrent.4.3.0.nupkg.sha512", + "system.collections.concurrent.nuspec" + ] + }, + "System.Console/4.3.0": { + "sha512": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", + "type": "package", + "path": "system.console/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Console.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Console.dll", + "ref/netstandard1.3/System.Console.dll", + "ref/netstandard1.3/System.Console.xml", + "ref/netstandard1.3/de/System.Console.xml", + "ref/netstandard1.3/es/System.Console.xml", + "ref/netstandard1.3/fr/System.Console.xml", + "ref/netstandard1.3/it/System.Console.xml", + "ref/netstandard1.3/ja/System.Console.xml", + "ref/netstandard1.3/ko/System.Console.xml", + "ref/netstandard1.3/ru/System.Console.xml", + "ref/netstandard1.3/zh-hans/System.Console.xml", + "ref/netstandard1.3/zh-hant/System.Console.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.console.4.3.0.nupkg.sha512", + "system.console.nuspec" + ] + }, + "System.Diagnostics.Debug/4.3.0": { + "sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "type": "package", + "path": "system.diagnostics.debug/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Debug.dll", + "ref/netcore50/System.Diagnostics.Debug.xml", + "ref/netcore50/de/System.Diagnostics.Debug.xml", + "ref/netcore50/es/System.Diagnostics.Debug.xml", + "ref/netcore50/fr/System.Diagnostics.Debug.xml", + "ref/netcore50/it/System.Diagnostics.Debug.xml", + "ref/netcore50/ja/System.Diagnostics.Debug.xml", + "ref/netcore50/ko/System.Diagnostics.Debug.xml", + "ref/netcore50/ru/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/System.Diagnostics.Debug.dll", + "ref/netstandard1.0/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/System.Diagnostics.Debug.dll", + "ref/netstandard1.3/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.debug.4.3.0.nupkg.sha512", + "system.diagnostics.debug.nuspec" + ] + }, + "System.Diagnostics.DiagnosticSource/10.0.2": { + "sha512": "lYWBy8fKkJHaRcOuw30d67PrtVjR5754sz5Wl76s8P+vJ9FSThh9b7LIcTSODx1LY7NB3Srvg+JMnzd67qNZOw==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/10.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", + "lib/net10.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net10.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net462/System.Diagnostics.DiagnosticSource.dll", + "lib/net462/System.Diagnostics.DiagnosticSource.xml", + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net9.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net9.0/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", + "system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512", + "system.diagnostics.diagnosticsource.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Diagnostics.EventLog/6.0.0": { + "sha512": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==", + "type": "package", + "path": "system.diagnostics.eventlog/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Diagnostics.EventLog.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Diagnostics.EventLog.dll", + "lib/net461/System.Diagnostics.EventLog.xml", + "lib/net6.0/System.Diagnostics.EventLog.dll", + "lib/net6.0/System.Diagnostics.EventLog.xml", + "lib/netcoreapp3.1/System.Diagnostics.EventLog.dll", + "lib/netcoreapp3.1/System.Diagnostics.EventLog.xml", + "lib/netstandard2.0/System.Diagnostics.EventLog.dll", + "lib/netstandard2.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/netcoreapp3.1/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/netcoreapp3.1/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/netcoreapp3.1/System.Diagnostics.EventLog.xml", + "system.diagnostics.eventlog.6.0.0.nupkg.sha512", + "system.diagnostics.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Diagnostics.Tools/4.3.0": { + "sha512": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", + "type": "package", + "path": "system.diagnostics.tools/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Tools.dll", + "ref/netcore50/System.Diagnostics.Tools.xml", + "ref/netcore50/de/System.Diagnostics.Tools.xml", + "ref/netcore50/es/System.Diagnostics.Tools.xml", + "ref/netcore50/fr/System.Diagnostics.Tools.xml", + "ref/netcore50/it/System.Diagnostics.Tools.xml", + "ref/netcore50/ja/System.Diagnostics.Tools.xml", + "ref/netcore50/ko/System.Diagnostics.Tools.xml", + "ref/netcore50/ru/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/System.Diagnostics.Tools.dll", + "ref/netstandard1.0/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tools.4.3.0.nupkg.sha512", + "system.diagnostics.tools.nuspec" + ] + }, + "System.Diagnostics.Tracing/4.3.0": { + "sha512": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "type": "package", + "path": "system.diagnostics.tracing/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Diagnostics.Tracing.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.xml", + "ref/netcore50/de/System.Diagnostics.Tracing.xml", + "ref/netcore50/es/System.Diagnostics.Tracing.xml", + "ref/netcore50/fr/System.Diagnostics.Tracing.xml", + "ref/netcore50/it/System.Diagnostics.Tracing.xml", + "ref/netcore50/ja/System.Diagnostics.Tracing.xml", + "ref/netcore50/ko/System.Diagnostics.Tracing.xml", + "ref/netcore50/ru/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/System.Diagnostics.Tracing.dll", + "ref/netstandard1.1/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/System.Diagnostics.Tracing.dll", + "ref/netstandard1.2/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/System.Diagnostics.Tracing.dll", + "ref/netstandard1.3/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/System.Diagnostics.Tracing.dll", + "ref/netstandard1.5/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tracing.4.3.0.nupkg.sha512", + "system.diagnostics.tracing.nuspec" + ] + }, + "System.Globalization/4.3.0": { + "sha512": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "type": "package", + "path": "system.globalization/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Globalization.dll", + "ref/netcore50/System.Globalization.xml", + "ref/netcore50/de/System.Globalization.xml", + "ref/netcore50/es/System.Globalization.xml", + "ref/netcore50/fr/System.Globalization.xml", + "ref/netcore50/it/System.Globalization.xml", + "ref/netcore50/ja/System.Globalization.xml", + "ref/netcore50/ko/System.Globalization.xml", + "ref/netcore50/ru/System.Globalization.xml", + "ref/netcore50/zh-hans/System.Globalization.xml", + "ref/netcore50/zh-hant/System.Globalization.xml", + "ref/netstandard1.0/System.Globalization.dll", + "ref/netstandard1.0/System.Globalization.xml", + "ref/netstandard1.0/de/System.Globalization.xml", + "ref/netstandard1.0/es/System.Globalization.xml", + "ref/netstandard1.0/fr/System.Globalization.xml", + "ref/netstandard1.0/it/System.Globalization.xml", + "ref/netstandard1.0/ja/System.Globalization.xml", + "ref/netstandard1.0/ko/System.Globalization.xml", + "ref/netstandard1.0/ru/System.Globalization.xml", + "ref/netstandard1.0/zh-hans/System.Globalization.xml", + "ref/netstandard1.0/zh-hant/System.Globalization.xml", + "ref/netstandard1.3/System.Globalization.dll", + "ref/netstandard1.3/System.Globalization.xml", + "ref/netstandard1.3/de/System.Globalization.xml", + "ref/netstandard1.3/es/System.Globalization.xml", + "ref/netstandard1.3/fr/System.Globalization.xml", + "ref/netstandard1.3/it/System.Globalization.xml", + "ref/netstandard1.3/ja/System.Globalization.xml", + "ref/netstandard1.3/ko/System.Globalization.xml", + "ref/netstandard1.3/ru/System.Globalization.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.4.3.0.nupkg.sha512", + "system.globalization.nuspec" + ] + }, + "System.Globalization.Calendars/4.3.0": { + "sha512": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", + "type": "package", + "path": "system.globalization.calendars/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Calendars.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.xml", + "ref/netstandard1.3/de/System.Globalization.Calendars.xml", + "ref/netstandard1.3/es/System.Globalization.Calendars.xml", + "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", + "ref/netstandard1.3/it/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.calendars.4.3.0.nupkg.sha512", + "system.globalization.calendars.nuspec" + ] + }, + "System.Globalization.Extensions/4.3.0": { + "sha512": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", + "type": "package", + "path": "system.globalization.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Extensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.xml", + "ref/netstandard1.3/de/System.Globalization.Extensions.xml", + "ref/netstandard1.3/es/System.Globalization.Extensions.xml", + "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", + "ref/netstandard1.3/it/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", + "runtimes/win/lib/net46/System.Globalization.Extensions.dll", + "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll", + "system.globalization.extensions.4.3.0.nupkg.sha512", + "system.globalization.extensions.nuspec" + ] + }, + "System.IdentityModel.Tokens.Jwt/8.14.0": { + "sha512": "EYGgN/S+HK7S6F3GaaPLFAfK0UzMrkXFyWCvXpQWFYmZln3dqtbyIO7VuTM/iIIPMzkelg8ZLlBPvMhxj6nOAA==", + "type": "package", + "path": "system.identitymodel.tokens.jwt/8.14.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/System.IdentityModel.Tokens.Jwt.dll", + "lib/net462/System.IdentityModel.Tokens.Jwt.xml", + "lib/net472/System.IdentityModel.Tokens.Jwt.dll", + "lib/net472/System.IdentityModel.Tokens.Jwt.xml", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net9.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml", + "system.identitymodel.tokens.jwt.8.14.0.nupkg.sha512", + "system.identitymodel.tokens.jwt.nuspec" + ] + }, + "System.IO/4.3.0": { + "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "type": "package", + "path": "system.io/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.IO.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.IO.dll", + "ref/netcore50/System.IO.dll", + "ref/netcore50/System.IO.xml", + "ref/netcore50/de/System.IO.xml", + "ref/netcore50/es/System.IO.xml", + "ref/netcore50/fr/System.IO.xml", + "ref/netcore50/it/System.IO.xml", + "ref/netcore50/ja/System.IO.xml", + "ref/netcore50/ko/System.IO.xml", + "ref/netcore50/ru/System.IO.xml", + "ref/netcore50/zh-hans/System.IO.xml", + "ref/netcore50/zh-hant/System.IO.xml", + "ref/netstandard1.0/System.IO.dll", + "ref/netstandard1.0/System.IO.xml", + "ref/netstandard1.0/de/System.IO.xml", + "ref/netstandard1.0/es/System.IO.xml", + "ref/netstandard1.0/fr/System.IO.xml", + "ref/netstandard1.0/it/System.IO.xml", + "ref/netstandard1.0/ja/System.IO.xml", + "ref/netstandard1.0/ko/System.IO.xml", + "ref/netstandard1.0/ru/System.IO.xml", + "ref/netstandard1.0/zh-hans/System.IO.xml", + "ref/netstandard1.0/zh-hant/System.IO.xml", + "ref/netstandard1.3/System.IO.dll", + "ref/netstandard1.3/System.IO.xml", + "ref/netstandard1.3/de/System.IO.xml", + "ref/netstandard1.3/es/System.IO.xml", + "ref/netstandard1.3/fr/System.IO.xml", + "ref/netstandard1.3/it/System.IO.xml", + "ref/netstandard1.3/ja/System.IO.xml", + "ref/netstandard1.3/ko/System.IO.xml", + "ref/netstandard1.3/ru/System.IO.xml", + "ref/netstandard1.3/zh-hans/System.IO.xml", + "ref/netstandard1.3/zh-hant/System.IO.xml", + "ref/netstandard1.5/System.IO.dll", + "ref/netstandard1.5/System.IO.xml", + "ref/netstandard1.5/de/System.IO.xml", + "ref/netstandard1.5/es/System.IO.xml", + "ref/netstandard1.5/fr/System.IO.xml", + "ref/netstandard1.5/it/System.IO.xml", + "ref/netstandard1.5/ja/System.IO.xml", + "ref/netstandard1.5/ko/System.IO.xml", + "ref/netstandard1.5/ru/System.IO.xml", + "ref/netstandard1.5/zh-hans/System.IO.xml", + "ref/netstandard1.5/zh-hant/System.IO.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.4.3.0.nupkg.sha512", + "system.io.nuspec" + ] + }, + "System.IO.Compression/4.3.0": { + "sha512": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", + "type": "package", + "path": "system.io.compression/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.IO.Compression.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.xml", + "ref/netcore50/de/System.IO.Compression.xml", + "ref/netcore50/es/System.IO.Compression.xml", + "ref/netcore50/fr/System.IO.Compression.xml", + "ref/netcore50/it/System.IO.Compression.xml", + "ref/netcore50/ja/System.IO.Compression.xml", + "ref/netcore50/ko/System.IO.Compression.xml", + "ref/netcore50/ru/System.IO.Compression.xml", + "ref/netcore50/zh-hans/System.IO.Compression.xml", + "ref/netcore50/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.1/System.IO.Compression.dll", + "ref/netstandard1.1/System.IO.Compression.xml", + "ref/netstandard1.1/de/System.IO.Compression.xml", + "ref/netstandard1.1/es/System.IO.Compression.xml", + "ref/netstandard1.1/fr/System.IO.Compression.xml", + "ref/netstandard1.1/it/System.IO.Compression.xml", + "ref/netstandard1.1/ja/System.IO.Compression.xml", + "ref/netstandard1.1/ko/System.IO.Compression.xml", + "ref/netstandard1.1/ru/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.3/System.IO.Compression.dll", + "ref/netstandard1.3/System.IO.Compression.xml", + "ref/netstandard1.3/de/System.IO.Compression.xml", + "ref/netstandard1.3/es/System.IO.Compression.xml", + "ref/netstandard1.3/fr/System.IO.Compression.xml", + "ref/netstandard1.3/it/System.IO.Compression.xml", + "ref/netstandard1.3/ja/System.IO.Compression.xml", + "ref/netstandard1.3/ko/System.IO.Compression.xml", + "ref/netstandard1.3/ru/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", + "runtimes/win/lib/net46/System.IO.Compression.dll", + "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll", + "system.io.compression.4.3.0.nupkg.sha512", + "system.io.compression.nuspec" + ] + }, + "System.IO.Compression.ZipFile/4.3.0": { + "sha512": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", + "type": "package", + "path": "system.io.compression.zipfile/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.Compression.ZipFile.dll", + "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.compression.zipfile.4.3.0.nupkg.sha512", + "system.io.compression.zipfile.nuspec" + ] + }, + "System.IO.FileSystem/4.3.0": { + "sha512": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", + "type": "package", + "path": "system.io.filesystem/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.filesystem.4.3.0.nupkg.sha512", + "system.io.filesystem.nuspec" + ] + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "sha512": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", + "type": "package", + "path": "system.io.filesystem.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.Primitives.dll", + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.filesystem.primitives.4.3.0.nupkg.sha512", + "system.io.filesystem.primitives.nuspec" + ] + }, + "System.IO.Pipelines/8.0.0": { + "sha512": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", + "type": "package", + "path": "system.io.pipelines/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.IO.Pipelines.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets", + "lib/net462/System.IO.Pipelines.dll", + "lib/net462/System.IO.Pipelines.xml", + "lib/net6.0/System.IO.Pipelines.dll", + "lib/net6.0/System.IO.Pipelines.xml", + "lib/net7.0/System.IO.Pipelines.dll", + "lib/net7.0/System.IO.Pipelines.xml", + "lib/net8.0/System.IO.Pipelines.dll", + "lib/net8.0/System.IO.Pipelines.xml", + "lib/netstandard2.0/System.IO.Pipelines.dll", + "lib/netstandard2.0/System.IO.Pipelines.xml", + "system.io.pipelines.8.0.0.nupkg.sha512", + "system.io.pipelines.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Linq/4.3.0": { + "sha512": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", + "type": "package", + "path": "system.linq/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.dll", + "lib/netcore50/System.Linq.dll", + "lib/netstandard1.6/System.Linq.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.dll", + "ref/netcore50/System.Linq.dll", + "ref/netcore50/System.Linq.xml", + "ref/netcore50/de/System.Linq.xml", + "ref/netcore50/es/System.Linq.xml", + "ref/netcore50/fr/System.Linq.xml", + "ref/netcore50/it/System.Linq.xml", + "ref/netcore50/ja/System.Linq.xml", + "ref/netcore50/ko/System.Linq.xml", + "ref/netcore50/ru/System.Linq.xml", + "ref/netcore50/zh-hans/System.Linq.xml", + "ref/netcore50/zh-hant/System.Linq.xml", + "ref/netstandard1.0/System.Linq.dll", + "ref/netstandard1.0/System.Linq.xml", + "ref/netstandard1.0/de/System.Linq.xml", + "ref/netstandard1.0/es/System.Linq.xml", + "ref/netstandard1.0/fr/System.Linq.xml", + "ref/netstandard1.0/it/System.Linq.xml", + "ref/netstandard1.0/ja/System.Linq.xml", + "ref/netstandard1.0/ko/System.Linq.xml", + "ref/netstandard1.0/ru/System.Linq.xml", + "ref/netstandard1.0/zh-hans/System.Linq.xml", + "ref/netstandard1.0/zh-hant/System.Linq.xml", + "ref/netstandard1.6/System.Linq.dll", + "ref/netstandard1.6/System.Linq.xml", + "ref/netstandard1.6/de/System.Linq.xml", + "ref/netstandard1.6/es/System.Linq.xml", + "ref/netstandard1.6/fr/System.Linq.xml", + "ref/netstandard1.6/it/System.Linq.xml", + "ref/netstandard1.6/ja/System.Linq.xml", + "ref/netstandard1.6/ko/System.Linq.xml", + "ref/netstandard1.6/ru/System.Linq.xml", + "ref/netstandard1.6/zh-hans/System.Linq.xml", + "ref/netstandard1.6/zh-hant/System.Linq.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.linq.4.3.0.nupkg.sha512", + "system.linq.nuspec" + ] + }, + "System.Linq.Expressions/4.3.0": { + "sha512": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", + "type": "package", + "path": "system.linq.expressions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.Expressions.dll", + "lib/netcore50/System.Linq.Expressions.dll", + "lib/netstandard1.6/System.Linq.Expressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.xml", + "ref/netcore50/de/System.Linq.Expressions.xml", + "ref/netcore50/es/System.Linq.Expressions.xml", + "ref/netcore50/fr/System.Linq.Expressions.xml", + "ref/netcore50/it/System.Linq.Expressions.xml", + "ref/netcore50/ja/System.Linq.Expressions.xml", + "ref/netcore50/ko/System.Linq.Expressions.xml", + "ref/netcore50/ru/System.Linq.Expressions.xml", + "ref/netcore50/zh-hans/System.Linq.Expressions.xml", + "ref/netcore50/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.0/System.Linq.Expressions.dll", + "ref/netstandard1.0/System.Linq.Expressions.xml", + "ref/netstandard1.0/de/System.Linq.Expressions.xml", + "ref/netstandard1.0/es/System.Linq.Expressions.xml", + "ref/netstandard1.0/fr/System.Linq.Expressions.xml", + "ref/netstandard1.0/it/System.Linq.Expressions.xml", + "ref/netstandard1.0/ja/System.Linq.Expressions.xml", + "ref/netstandard1.0/ko/System.Linq.Expressions.xml", + "ref/netstandard1.0/ru/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.3/System.Linq.Expressions.dll", + "ref/netstandard1.3/System.Linq.Expressions.xml", + "ref/netstandard1.3/de/System.Linq.Expressions.xml", + "ref/netstandard1.3/es/System.Linq.Expressions.xml", + "ref/netstandard1.3/fr/System.Linq.Expressions.xml", + "ref/netstandard1.3/it/System.Linq.Expressions.xml", + "ref/netstandard1.3/ja/System.Linq.Expressions.xml", + "ref/netstandard1.3/ko/System.Linq.Expressions.xml", + "ref/netstandard1.3/ru/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.6/System.Linq.Expressions.dll", + "ref/netstandard1.6/System.Linq.Expressions.xml", + "ref/netstandard1.6/de/System.Linq.Expressions.xml", + "ref/netstandard1.6/es/System.Linq.Expressions.xml", + "ref/netstandard1.6/fr/System.Linq.Expressions.xml", + "ref/netstandard1.6/it/System.Linq.Expressions.xml", + "ref/netstandard1.6/ja/System.Linq.Expressions.xml", + "ref/netstandard1.6/ko/System.Linq.Expressions.xml", + "ref/netstandard1.6/ru/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll", + "system.linq.expressions.4.3.0.nupkg.sha512", + "system.linq.expressions.nuspec" + ] + }, + "System.Net.Http/4.3.0": { + "sha512": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", + "type": "package", + "path": "system.net.http/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/Xamarinmac20/_._", + "lib/monoandroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/net46/System.Net.Http.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/Xamarinmac20/_._", + "ref/monoandroid10/_._", + "ref/monotouch10/_._", + "ref/net45/_._", + "ref/net46/System.Net.Http.dll", + "ref/net46/System.Net.Http.xml", + "ref/net46/de/System.Net.Http.xml", + "ref/net46/es/System.Net.Http.xml", + "ref/net46/fr/System.Net.Http.xml", + "ref/net46/it/System.Net.Http.xml", + "ref/net46/ja/System.Net.Http.xml", + "ref/net46/ko/System.Net.Http.xml", + "ref/net46/ru/System.Net.Http.xml", + "ref/net46/zh-hans/System.Net.Http.xml", + "ref/net46/zh-hant/System.Net.Http.xml", + "ref/netcore50/System.Net.Http.dll", + "ref/netcore50/System.Net.Http.xml", + "ref/netcore50/de/System.Net.Http.xml", + "ref/netcore50/es/System.Net.Http.xml", + "ref/netcore50/fr/System.Net.Http.xml", + "ref/netcore50/it/System.Net.Http.xml", + "ref/netcore50/ja/System.Net.Http.xml", + "ref/netcore50/ko/System.Net.Http.xml", + "ref/netcore50/ru/System.Net.Http.xml", + "ref/netcore50/zh-hans/System.Net.Http.xml", + "ref/netcore50/zh-hant/System.Net.Http.xml", + "ref/netstandard1.1/System.Net.Http.dll", + "ref/netstandard1.1/System.Net.Http.xml", + "ref/netstandard1.1/de/System.Net.Http.xml", + "ref/netstandard1.1/es/System.Net.Http.xml", + "ref/netstandard1.1/fr/System.Net.Http.xml", + "ref/netstandard1.1/it/System.Net.Http.xml", + "ref/netstandard1.1/ja/System.Net.Http.xml", + "ref/netstandard1.1/ko/System.Net.Http.xml", + "ref/netstandard1.1/ru/System.Net.Http.xml", + "ref/netstandard1.1/zh-hans/System.Net.Http.xml", + "ref/netstandard1.1/zh-hant/System.Net.Http.xml", + "ref/netstandard1.3/System.Net.Http.dll", + "ref/netstandard1.3/System.Net.Http.xml", + "ref/netstandard1.3/de/System.Net.Http.xml", + "ref/netstandard1.3/es/System.Net.Http.xml", + "ref/netstandard1.3/fr/System.Net.Http.xml", + "ref/netstandard1.3/it/System.Net.Http.xml", + "ref/netstandard1.3/ja/System.Net.Http.xml", + "ref/netstandard1.3/ko/System.Net.Http.xml", + "ref/netstandard1.3/ru/System.Net.Http.xml", + "ref/netstandard1.3/zh-hans/System.Net.Http.xml", + "ref/netstandard1.3/zh-hant/System.Net.Http.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", + "runtimes/win/lib/net46/System.Net.Http.dll", + "runtimes/win/lib/netcore50/System.Net.Http.dll", + "runtimes/win/lib/netstandard1.3/System.Net.Http.dll", + "system.net.http.4.3.0.nupkg.sha512", + "system.net.http.nuspec" + ] + }, + "System.Net.Primitives/4.3.0": { + "sha512": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", + "type": "package", + "path": "system.net.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Net.Primitives.dll", + "ref/netcore50/System.Net.Primitives.xml", + "ref/netcore50/de/System.Net.Primitives.xml", + "ref/netcore50/es/System.Net.Primitives.xml", + "ref/netcore50/fr/System.Net.Primitives.xml", + "ref/netcore50/it/System.Net.Primitives.xml", + "ref/netcore50/ja/System.Net.Primitives.xml", + "ref/netcore50/ko/System.Net.Primitives.xml", + "ref/netcore50/ru/System.Net.Primitives.xml", + "ref/netcore50/zh-hans/System.Net.Primitives.xml", + "ref/netcore50/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.0/System.Net.Primitives.dll", + "ref/netstandard1.0/System.Net.Primitives.xml", + "ref/netstandard1.0/de/System.Net.Primitives.xml", + "ref/netstandard1.0/es/System.Net.Primitives.xml", + "ref/netstandard1.0/fr/System.Net.Primitives.xml", + "ref/netstandard1.0/it/System.Net.Primitives.xml", + "ref/netstandard1.0/ja/System.Net.Primitives.xml", + "ref/netstandard1.0/ko/System.Net.Primitives.xml", + "ref/netstandard1.0/ru/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.1/System.Net.Primitives.dll", + "ref/netstandard1.1/System.Net.Primitives.xml", + "ref/netstandard1.1/de/System.Net.Primitives.xml", + "ref/netstandard1.1/es/System.Net.Primitives.xml", + "ref/netstandard1.1/fr/System.Net.Primitives.xml", + "ref/netstandard1.1/it/System.Net.Primitives.xml", + "ref/netstandard1.1/ja/System.Net.Primitives.xml", + "ref/netstandard1.1/ko/System.Net.Primitives.xml", + "ref/netstandard1.1/ru/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.3/System.Net.Primitives.dll", + "ref/netstandard1.3/System.Net.Primitives.xml", + "ref/netstandard1.3/de/System.Net.Primitives.xml", + "ref/netstandard1.3/es/System.Net.Primitives.xml", + "ref/netstandard1.3/fr/System.Net.Primitives.xml", + "ref/netstandard1.3/it/System.Net.Primitives.xml", + "ref/netstandard1.3/ja/System.Net.Primitives.xml", + "ref/netstandard1.3/ko/System.Net.Primitives.xml", + "ref/netstandard1.3/ru/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.net.primitives.4.3.0.nupkg.sha512", + "system.net.primitives.nuspec" + ] + }, + "System.Net.Sockets/4.3.0": { + "sha512": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", + "type": "package", + "path": "system.net.sockets/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Net.Sockets.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.xml", + "ref/netstandard1.3/de/System.Net.Sockets.xml", + "ref/netstandard1.3/es/System.Net.Sockets.xml", + "ref/netstandard1.3/fr/System.Net.Sockets.xml", + "ref/netstandard1.3/it/System.Net.Sockets.xml", + "ref/netstandard1.3/ja/System.Net.Sockets.xml", + "ref/netstandard1.3/ko/System.Net.Sockets.xml", + "ref/netstandard1.3/ru/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.net.sockets.4.3.0.nupkg.sha512", + "system.net.sockets.nuspec" + ] + }, + "System.Net.WebSockets.WebSocketProtocol/5.1.0": { + "sha512": "cVTT/Zw4JuUeX8H0tdWii0OMHsA5MY2PaFYOq/Hstw0jk479jZ+f8baCicWFNzJlCPWAe0uoNCELoB5eNmaMqA==", + "type": "package", + "path": "system.net.websockets.websocketprotocol/5.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Net.WebSockets.WebSocketProtocol.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Net.WebSockets.WebSocketProtocol.targets", + "lib/net462/System.Net.WebSockets.WebSocketProtocol.dll", + "lib/net462/System.Net.WebSockets.WebSocketProtocol.xml", + "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll", + "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.xml", + "lib/netstandard2.0/System.Net.WebSockets.WebSocketProtocol.dll", + "lib/netstandard2.0/System.Net.WebSockets.WebSocketProtocol.xml", + "system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512", + "system.net.websockets.websocketprotocol.nuspec" + ] + }, + "System.ObjectModel/4.3.0": { + "sha512": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", + "type": "package", + "path": "system.objectmodel/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.ObjectModel.dll", + "lib/netstandard1.3/System.ObjectModel.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.ObjectModel.dll", + "ref/netcore50/System.ObjectModel.xml", + "ref/netcore50/de/System.ObjectModel.xml", + "ref/netcore50/es/System.ObjectModel.xml", + "ref/netcore50/fr/System.ObjectModel.xml", + "ref/netcore50/it/System.ObjectModel.xml", + "ref/netcore50/ja/System.ObjectModel.xml", + "ref/netcore50/ko/System.ObjectModel.xml", + "ref/netcore50/ru/System.ObjectModel.xml", + "ref/netcore50/zh-hans/System.ObjectModel.xml", + "ref/netcore50/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.0/System.ObjectModel.dll", + "ref/netstandard1.0/System.ObjectModel.xml", + "ref/netstandard1.0/de/System.ObjectModel.xml", + "ref/netstandard1.0/es/System.ObjectModel.xml", + "ref/netstandard1.0/fr/System.ObjectModel.xml", + "ref/netstandard1.0/it/System.ObjectModel.xml", + "ref/netstandard1.0/ja/System.ObjectModel.xml", + "ref/netstandard1.0/ko/System.ObjectModel.xml", + "ref/netstandard1.0/ru/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.3/System.ObjectModel.dll", + "ref/netstandard1.3/System.ObjectModel.xml", + "ref/netstandard1.3/de/System.ObjectModel.xml", + "ref/netstandard1.3/es/System.ObjectModel.xml", + "ref/netstandard1.3/fr/System.ObjectModel.xml", + "ref/netstandard1.3/it/System.ObjectModel.xml", + "ref/netstandard1.3/ja/System.ObjectModel.xml", + "ref/netstandard1.3/ko/System.ObjectModel.xml", + "ref/netstandard1.3/ru/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.objectmodel.4.3.0.nupkg.sha512", + "system.objectmodel.nuspec" + ] + }, + "System.Reflection/4.3.0": { + "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "type": "package", + "path": "system.reflection/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Reflection.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Reflection.dll", + "ref/netcore50/System.Reflection.dll", + "ref/netcore50/System.Reflection.xml", + "ref/netcore50/de/System.Reflection.xml", + "ref/netcore50/es/System.Reflection.xml", + "ref/netcore50/fr/System.Reflection.xml", + "ref/netcore50/it/System.Reflection.xml", + "ref/netcore50/ja/System.Reflection.xml", + "ref/netcore50/ko/System.Reflection.xml", + "ref/netcore50/ru/System.Reflection.xml", + "ref/netcore50/zh-hans/System.Reflection.xml", + "ref/netcore50/zh-hant/System.Reflection.xml", + "ref/netstandard1.0/System.Reflection.dll", + "ref/netstandard1.0/System.Reflection.xml", + "ref/netstandard1.0/de/System.Reflection.xml", + "ref/netstandard1.0/es/System.Reflection.xml", + "ref/netstandard1.0/fr/System.Reflection.xml", + "ref/netstandard1.0/it/System.Reflection.xml", + "ref/netstandard1.0/ja/System.Reflection.xml", + "ref/netstandard1.0/ko/System.Reflection.xml", + "ref/netstandard1.0/ru/System.Reflection.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.xml", + "ref/netstandard1.3/System.Reflection.dll", + "ref/netstandard1.3/System.Reflection.xml", + "ref/netstandard1.3/de/System.Reflection.xml", + "ref/netstandard1.3/es/System.Reflection.xml", + "ref/netstandard1.3/fr/System.Reflection.xml", + "ref/netstandard1.3/it/System.Reflection.xml", + "ref/netstandard1.3/ja/System.Reflection.xml", + "ref/netstandard1.3/ko/System.Reflection.xml", + "ref/netstandard1.3/ru/System.Reflection.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.xml", + "ref/netstandard1.5/System.Reflection.dll", + "ref/netstandard1.5/System.Reflection.xml", + "ref/netstandard1.5/de/System.Reflection.xml", + "ref/netstandard1.5/es/System.Reflection.xml", + "ref/netstandard1.5/fr/System.Reflection.xml", + "ref/netstandard1.5/it/System.Reflection.xml", + "ref/netstandard1.5/ja/System.Reflection.xml", + "ref/netstandard1.5/ko/System.Reflection.xml", + "ref/netstandard1.5/ru/System.Reflection.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.4.3.0.nupkg.sha512", + "system.reflection.nuspec" + ] + }, + "System.Reflection.Emit/4.7.0": { + "sha512": "VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", + "type": "package", + "path": "system.reflection.emit/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.1/System.Reflection.Emit.dll", + "lib/netstandard1.1/System.Reflection.Emit.xml", + "lib/netstandard1.3/System.Reflection.Emit.dll", + "lib/netstandard2.0/System.Reflection.Emit.dll", + "lib/netstandard2.0/System.Reflection.Emit.xml", + "lib/netstandard2.1/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.1/System.Reflection.Emit.dll", + "ref/netstandard1.1/System.Reflection.Emit.xml", + "ref/netstandard1.1/de/System.Reflection.Emit.xml", + "ref/netstandard1.1/es/System.Reflection.Emit.xml", + "ref/netstandard1.1/fr/System.Reflection.Emit.xml", + "ref/netstandard1.1/it/System.Reflection.Emit.xml", + "ref/netstandard1.1/ja/System.Reflection.Emit.xml", + "ref/netstandard1.1/ko/System.Reflection.Emit.xml", + "ref/netstandard1.1/ru/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", + "ref/netstandard2.0/System.Reflection.Emit.dll", + "ref/netstandard2.0/System.Reflection.Emit.xml", + "ref/netstandard2.1/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.Emit.dll", + "runtimes/aot/lib/netcore50/System.Reflection.Emit.xml", + "system.reflection.emit.4.7.0.nupkg.sha512", + "system.reflection.emit.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "sha512": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", + "type": "package", + "path": "system.reflection.emit.ilgeneration/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/_._", + "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512", + "system.reflection.emit.ilgeneration.nuspec" + ] + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "sha512": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", + "type": "package", + "path": "system.reflection.emit.lightweight/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.Lightweight.dll", + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/_._", + "system.reflection.emit.lightweight.4.3.0.nupkg.sha512", + "system.reflection.emit.lightweight.nuspec" + ] + }, + "System.Reflection.Extensions/4.3.0": { + "sha512": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", + "type": "package", + "path": "system.reflection.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Extensions.dll", + "ref/netcore50/System.Reflection.Extensions.xml", + "ref/netcore50/de/System.Reflection.Extensions.xml", + "ref/netcore50/es/System.Reflection.Extensions.xml", + "ref/netcore50/fr/System.Reflection.Extensions.xml", + "ref/netcore50/it/System.Reflection.Extensions.xml", + "ref/netcore50/ja/System.Reflection.Extensions.xml", + "ref/netcore50/ko/System.Reflection.Extensions.xml", + "ref/netcore50/ru/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", + "ref/netstandard1.0/System.Reflection.Extensions.dll", + "ref/netstandard1.0/System.Reflection.Extensions.xml", + "ref/netstandard1.0/de/System.Reflection.Extensions.xml", + "ref/netstandard1.0/es/System.Reflection.Extensions.xml", + "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", + "ref/netstandard1.0/it/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.extensions.4.3.0.nupkg.sha512", + "system.reflection.extensions.nuspec" + ] + }, + "System.Reflection.Metadata/1.6.0": { + "sha512": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==", + "type": "package", + "path": "system.reflection.metadata/1.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netstandard1.1/System.Reflection.Metadata.dll", + "lib/netstandard1.1/System.Reflection.Metadata.xml", + "lib/netstandard2.0/System.Reflection.Metadata.dll", + "lib/netstandard2.0/System.Reflection.Metadata.xml", + "lib/portable-net45+win8/System.Reflection.Metadata.dll", + "lib/portable-net45+win8/System.Reflection.Metadata.xml", + "system.reflection.metadata.1.6.0.nupkg.sha512", + "system.reflection.metadata.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Reflection.Primitives/4.3.0": { + "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "type": "package", + "path": "system.reflection.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Primitives.dll", + "ref/netcore50/System.Reflection.Primitives.xml", + "ref/netcore50/de/System.Reflection.Primitives.xml", + "ref/netcore50/es/System.Reflection.Primitives.xml", + "ref/netcore50/fr/System.Reflection.Primitives.xml", + "ref/netcore50/it/System.Reflection.Primitives.xml", + "ref/netcore50/ja/System.Reflection.Primitives.xml", + "ref/netcore50/ko/System.Reflection.Primitives.xml", + "ref/netcore50/ru/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", + "ref/netstandard1.0/System.Reflection.Primitives.dll", + "ref/netstandard1.0/System.Reflection.Primitives.xml", + "ref/netstandard1.0/de/System.Reflection.Primitives.xml", + "ref/netstandard1.0/es/System.Reflection.Primitives.xml", + "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", + "ref/netstandard1.0/it/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.primitives.4.3.0.nupkg.sha512", + "system.reflection.primitives.nuspec" + ] + }, + "System.Reflection.TypeExtensions/4.3.0": { + "sha512": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", + "type": "package", + "path": "system.reflection.typeextensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Reflection.TypeExtensions.dll", + "lib/net462/System.Reflection.TypeExtensions.dll", + "lib/netcore50/System.Reflection.TypeExtensions.dll", + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Reflection.TypeExtensions.dll", + "ref/net462/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll", + "system.reflection.typeextensions.4.3.0.nupkg.sha512", + "system.reflection.typeextensions.nuspec" + ] + }, + "System.Resources.ResourceManager/4.3.0": { + "sha512": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "type": "package", + "path": "system.resources.resourcemanager/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Resources.ResourceManager.dll", + "ref/netcore50/System.Resources.ResourceManager.xml", + "ref/netcore50/de/System.Resources.ResourceManager.xml", + "ref/netcore50/es/System.Resources.ResourceManager.xml", + "ref/netcore50/fr/System.Resources.ResourceManager.xml", + "ref/netcore50/it/System.Resources.ResourceManager.xml", + "ref/netcore50/ja/System.Resources.ResourceManager.xml", + "ref/netcore50/ko/System.Resources.ResourceManager.xml", + "ref/netcore50/ru/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/System.Resources.ResourceManager.dll", + "ref/netstandard1.0/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.resources.resourcemanager.4.3.0.nupkg.sha512", + "system.resources.resourcemanager.nuspec" + ] + }, + "System.Runtime/4.3.0": { + "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "type": "package", + "path": "system.runtime/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.dll", + "lib/portable-net45+win8+wp80+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.dll", + "ref/netcore50/System.Runtime.dll", + "ref/netcore50/System.Runtime.xml", + "ref/netcore50/de/System.Runtime.xml", + "ref/netcore50/es/System.Runtime.xml", + "ref/netcore50/fr/System.Runtime.xml", + "ref/netcore50/it/System.Runtime.xml", + "ref/netcore50/ja/System.Runtime.xml", + "ref/netcore50/ko/System.Runtime.xml", + "ref/netcore50/ru/System.Runtime.xml", + "ref/netcore50/zh-hans/System.Runtime.xml", + "ref/netcore50/zh-hant/System.Runtime.xml", + "ref/netstandard1.0/System.Runtime.dll", + "ref/netstandard1.0/System.Runtime.xml", + "ref/netstandard1.0/de/System.Runtime.xml", + "ref/netstandard1.0/es/System.Runtime.xml", + "ref/netstandard1.0/fr/System.Runtime.xml", + "ref/netstandard1.0/it/System.Runtime.xml", + "ref/netstandard1.0/ja/System.Runtime.xml", + "ref/netstandard1.0/ko/System.Runtime.xml", + "ref/netstandard1.0/ru/System.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.xml", + "ref/netstandard1.2/System.Runtime.dll", + "ref/netstandard1.2/System.Runtime.xml", + "ref/netstandard1.2/de/System.Runtime.xml", + "ref/netstandard1.2/es/System.Runtime.xml", + "ref/netstandard1.2/fr/System.Runtime.xml", + "ref/netstandard1.2/it/System.Runtime.xml", + "ref/netstandard1.2/ja/System.Runtime.xml", + "ref/netstandard1.2/ko/System.Runtime.xml", + "ref/netstandard1.2/ru/System.Runtime.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.xml", + "ref/netstandard1.3/System.Runtime.dll", + "ref/netstandard1.3/System.Runtime.xml", + "ref/netstandard1.3/de/System.Runtime.xml", + "ref/netstandard1.3/es/System.Runtime.xml", + "ref/netstandard1.3/fr/System.Runtime.xml", + "ref/netstandard1.3/it/System.Runtime.xml", + "ref/netstandard1.3/ja/System.Runtime.xml", + "ref/netstandard1.3/ko/System.Runtime.xml", + "ref/netstandard1.3/ru/System.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.xml", + "ref/netstandard1.5/System.Runtime.dll", + "ref/netstandard1.5/System.Runtime.xml", + "ref/netstandard1.5/de/System.Runtime.xml", + "ref/netstandard1.5/es/System.Runtime.xml", + "ref/netstandard1.5/fr/System.Runtime.xml", + "ref/netstandard1.5/it/System.Runtime.xml", + "ref/netstandard1.5/ja/System.Runtime.xml", + "ref/netstandard1.5/ko/System.Runtime.xml", + "ref/netstandard1.5/ru/System.Runtime.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.xml", + "ref/portable-net45+win8+wp80+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.4.3.0.nupkg.sha512", + "system.runtime.nuspec" + ] + }, + "System.Runtime.Extensions/4.3.0": { + "sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "type": "package", + "path": "system.runtime.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.xml", + "ref/netcore50/de/System.Runtime.Extensions.xml", + "ref/netcore50/es/System.Runtime.Extensions.xml", + "ref/netcore50/fr/System.Runtime.Extensions.xml", + "ref/netcore50/it/System.Runtime.Extensions.xml", + "ref/netcore50/ja/System.Runtime.Extensions.xml", + "ref/netcore50/ko/System.Runtime.Extensions.xml", + "ref/netcore50/ru/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.0/System.Runtime.Extensions.dll", + "ref/netstandard1.0/System.Runtime.Extensions.xml", + "ref/netstandard1.0/de/System.Runtime.Extensions.xml", + "ref/netstandard1.0/es/System.Runtime.Extensions.xml", + "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.0/it/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.3/System.Runtime.Extensions.dll", + "ref/netstandard1.3/System.Runtime.Extensions.xml", + "ref/netstandard1.3/de/System.Runtime.Extensions.xml", + "ref/netstandard1.3/es/System.Runtime.Extensions.xml", + "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.3/it/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.5/System.Runtime.Extensions.dll", + "ref/netstandard1.5/System.Runtime.Extensions.xml", + "ref/netstandard1.5/de/System.Runtime.Extensions.xml", + "ref/netstandard1.5/es/System.Runtime.Extensions.xml", + "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.5/it/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.extensions.4.3.0.nupkg.sha512", + "system.runtime.extensions.nuspec" + ] + }, + "System.Runtime.Handles/4.3.0": { + "sha512": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "type": "package", + "path": "system.runtime.handles/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/netstandard1.3/System.Runtime.Handles.dll", + "ref/netstandard1.3/System.Runtime.Handles.xml", + "ref/netstandard1.3/de/System.Runtime.Handles.xml", + "ref/netstandard1.3/es/System.Runtime.Handles.xml", + "ref/netstandard1.3/fr/System.Runtime.Handles.xml", + "ref/netstandard1.3/it/System.Runtime.Handles.xml", + "ref/netstandard1.3/ja/System.Runtime.Handles.xml", + "ref/netstandard1.3/ko/System.Runtime.Handles.xml", + "ref/netstandard1.3/ru/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.handles.4.3.0.nupkg.sha512", + "system.runtime.handles.nuspec" + ] + }, + "System.Runtime.InteropServices/4.3.0": { + "sha512": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "type": "package", + "path": "system.runtime.interopservices/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.InteropServices.dll", + "lib/net463/System.Runtime.InteropServices.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.InteropServices.dll", + "ref/net463/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.xml", + "ref/netcore50/de/System.Runtime.InteropServices.xml", + "ref/netcore50/es/System.Runtime.InteropServices.xml", + "ref/netcore50/fr/System.Runtime.InteropServices.xml", + "ref/netcore50/it/System.Runtime.InteropServices.xml", + "ref/netcore50/ja/System.Runtime.InteropServices.xml", + "ref/netcore50/ko/System.Runtime.InteropServices.xml", + "ref/netcore50/ru/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", + "ref/netcoreapp1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/System.Runtime.InteropServices.dll", + "ref/netstandard1.2/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/System.Runtime.InteropServices.dll", + "ref/netstandard1.3/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/System.Runtime.InteropServices.dll", + "ref/netstandard1.5/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.interopservices.4.3.0.nupkg.sha512", + "system.runtime.interopservices.nuspec" + ] + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "sha512": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", + "type": "package", + "path": "system.runtime.interopservices.runtimeinformation/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", + "system.runtime.interopservices.runtimeinformation.nuspec" + ] + }, + "System.Runtime.Numerics/4.3.0": { + "sha512": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", + "type": "package", + "path": "system.runtime.numerics/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Runtime.Numerics.dll", + "lib/netstandard1.3/System.Runtime.Numerics.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Runtime.Numerics.dll", + "ref/netcore50/System.Runtime.Numerics.xml", + "ref/netcore50/de/System.Runtime.Numerics.xml", + "ref/netcore50/es/System.Runtime.Numerics.xml", + "ref/netcore50/fr/System.Runtime.Numerics.xml", + "ref/netcore50/it/System.Runtime.Numerics.xml", + "ref/netcore50/ja/System.Runtime.Numerics.xml", + "ref/netcore50/ko/System.Runtime.Numerics.xml", + "ref/netcore50/ru/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", + "ref/netstandard1.1/System.Runtime.Numerics.dll", + "ref/netstandard1.1/System.Runtime.Numerics.xml", + "ref/netstandard1.1/de/System.Runtime.Numerics.xml", + "ref/netstandard1.1/es/System.Runtime.Numerics.xml", + "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", + "ref/netstandard1.1/it/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.numerics.4.3.0.nupkg.sha512", + "system.runtime.numerics.nuspec" + ] + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "sha512": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", + "type": "package", + "path": "system.security.cryptography.algorithms/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Algorithms.dll", + "lib/net461/System.Security.Cryptography.Algorithms.dll", + "lib/net463/System.Security.Cryptography.Algorithms.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Algorithms.dll", + "ref/net461/System.Security.Cryptography.Algorithms.dll", + "ref/net463/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "system.security.cryptography.algorithms.4.3.0.nupkg.sha512", + "system.security.cryptography.algorithms.nuspec" + ] + }, + "System.Security.Cryptography.Cng/4.3.0": { + "sha512": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", + "type": "package", + "path": "system.security.cryptography.cng/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Security.Cryptography.Cng.dll", + "lib/net461/System.Security.Cryptography.Cng.dll", + "lib/net463/System.Security.Cryptography.Cng.dll", + "ref/net46/System.Security.Cryptography.Cng.dll", + "ref/net461/System.Security.Cryptography.Cng.dll", + "ref/net463/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "system.security.cryptography.cng.4.3.0.nupkg.sha512", + "system.security.cryptography.cng.nuspec" + ] + }, + "System.Security.Cryptography.Csp/4.3.0": { + "sha512": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", + "type": "package", + "path": "system.security.cryptography.csp/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Csp.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Csp.dll", + "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/netcore50/_._", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", + "system.security.cryptography.csp.4.3.0.nupkg.sha512", + "system.security.cryptography.csp.nuspec" + ] + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "sha512": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", + "type": "package", + "path": "system.security.cryptography.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Encoding.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "system.security.cryptography.encoding.4.3.0.nupkg.sha512", + "system.security.cryptography.encoding.nuspec" + ] + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", + "type": "package", + "path": "system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "system.security.cryptography.openssl.nuspec" + ] + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "sha512": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", + "type": "package", + "path": "system.security.cryptography.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Primitives.dll", + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Primitives.dll", + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.security.cryptography.primitives.4.3.0.nupkg.sha512", + "system.security.cryptography.primitives.nuspec" + ] + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "sha512": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", + "type": "package", + "path": "system.security.cryptography.x509certificates/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.X509Certificates.dll", + "lib/net461/System.Security.Cryptography.X509Certificates.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.X509Certificates.dll", + "ref/net461/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", + "system.security.cryptography.x509certificates.nuspec" + ] + }, + "System.Text.Encoding/4.3.0": { + "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "type": "package", + "path": "system.text.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.dll", + "ref/netcore50/System.Text.Encoding.xml", + "ref/netcore50/de/System.Text.Encoding.xml", + "ref/netcore50/es/System.Text.Encoding.xml", + "ref/netcore50/fr/System.Text.Encoding.xml", + "ref/netcore50/it/System.Text.Encoding.xml", + "ref/netcore50/ja/System.Text.Encoding.xml", + "ref/netcore50/ko/System.Text.Encoding.xml", + "ref/netcore50/ru/System.Text.Encoding.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.0/System.Text.Encoding.dll", + "ref/netstandard1.0/System.Text.Encoding.xml", + "ref/netstandard1.0/de/System.Text.Encoding.xml", + "ref/netstandard1.0/es/System.Text.Encoding.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.xml", + "ref/netstandard1.0/it/System.Text.Encoding.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.3/System.Text.Encoding.dll", + "ref/netstandard1.3/System.Text.Encoding.xml", + "ref/netstandard1.3/de/System.Text.Encoding.xml", + "ref/netstandard1.3/es/System.Text.Encoding.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.xml", + "ref/netstandard1.3/it/System.Text.Encoding.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.4.3.0.nupkg.sha512", + "system.text.encoding.nuspec" + ] + }, + "System.Text.Encoding.Extensions/4.3.0": { + "sha512": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", + "type": "package", + "path": "system.text.encoding.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.Extensions.dll", + "ref/netcore50/System.Text.Encoding.Extensions.xml", + "ref/netcore50/de/System.Text.Encoding.Extensions.xml", + "ref/netcore50/es/System.Text.Encoding.Extensions.xml", + "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", + "ref/netcore50/it/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.extensions.4.3.0.nupkg.sha512", + "system.text.encoding.extensions.nuspec" + ] + }, + "System.Text.Encodings.Web/8.0.0": { + "sha512": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "type": "package", + "path": "system.text.encodings.web/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Text.Encodings.Web.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", + "lib/net462/System.Text.Encodings.Web.dll", + "lib/net462/System.Text.Encodings.Web.xml", + "lib/net6.0/System.Text.Encodings.Web.dll", + "lib/net6.0/System.Text.Encodings.Web.xml", + "lib/net7.0/System.Text.Encodings.Web.dll", + "lib/net7.0/System.Text.Encodings.Web.xml", + "lib/net8.0/System.Text.Encodings.Web.dll", + "lib/net8.0/System.Text.Encodings.Web.xml", + "lib/netstandard2.0/System.Text.Encodings.Web.dll", + "lib/netstandard2.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", + "system.text.encodings.web.8.0.0.nupkg.sha512", + "system.text.encodings.web.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.RegularExpressions/4.3.0": { + "sha512": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", + "type": "package", + "path": "system.text.regularexpressions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Text.RegularExpressions.dll", + "lib/netcore50/System.Text.RegularExpressions.dll", + "lib/netstandard1.6/System.Text.RegularExpressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.xml", + "ref/netcore50/de/System.Text.RegularExpressions.xml", + "ref/netcore50/es/System.Text.RegularExpressions.xml", + "ref/netcore50/fr/System.Text.RegularExpressions.xml", + "ref/netcore50/it/System.Text.RegularExpressions.xml", + "ref/netcore50/ja/System.Text.RegularExpressions.xml", + "ref/netcore50/ko/System.Text.RegularExpressions.xml", + "ref/netcore50/ru/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", + "ref/netcoreapp1.1/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/System.Text.RegularExpressions.dll", + "ref/netstandard1.3/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/System.Text.RegularExpressions.dll", + "ref/netstandard1.6/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.regularexpressions.4.3.0.nupkg.sha512", + "system.text.regularexpressions.nuspec" + ] + }, + "System.Threading/4.3.0": { + "sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "type": "package", + "path": "system.threading/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Threading.dll", + "lib/netstandard1.3/System.Threading.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.dll", + "ref/netcore50/System.Threading.xml", + "ref/netcore50/de/System.Threading.xml", + "ref/netcore50/es/System.Threading.xml", + "ref/netcore50/fr/System.Threading.xml", + "ref/netcore50/it/System.Threading.xml", + "ref/netcore50/ja/System.Threading.xml", + "ref/netcore50/ko/System.Threading.xml", + "ref/netcore50/ru/System.Threading.xml", + "ref/netcore50/zh-hans/System.Threading.xml", + "ref/netcore50/zh-hant/System.Threading.xml", + "ref/netstandard1.0/System.Threading.dll", + "ref/netstandard1.0/System.Threading.xml", + "ref/netstandard1.0/de/System.Threading.xml", + "ref/netstandard1.0/es/System.Threading.xml", + "ref/netstandard1.0/fr/System.Threading.xml", + "ref/netstandard1.0/it/System.Threading.xml", + "ref/netstandard1.0/ja/System.Threading.xml", + "ref/netstandard1.0/ko/System.Threading.xml", + "ref/netstandard1.0/ru/System.Threading.xml", + "ref/netstandard1.0/zh-hans/System.Threading.xml", + "ref/netstandard1.0/zh-hant/System.Threading.xml", + "ref/netstandard1.3/System.Threading.dll", + "ref/netstandard1.3/System.Threading.xml", + "ref/netstandard1.3/de/System.Threading.xml", + "ref/netstandard1.3/es/System.Threading.xml", + "ref/netstandard1.3/fr/System.Threading.xml", + "ref/netstandard1.3/it/System.Threading.xml", + "ref/netstandard1.3/ja/System.Threading.xml", + "ref/netstandard1.3/ko/System.Threading.xml", + "ref/netstandard1.3/ru/System.Threading.xml", + "ref/netstandard1.3/zh-hans/System.Threading.xml", + "ref/netstandard1.3/zh-hant/System.Threading.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Threading.dll", + "system.threading.4.3.0.nupkg.sha512", + "system.threading.nuspec" + ] + }, + "System.Threading.Channels/8.0.0": { + "sha512": "CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==", + "type": "package", + "path": "system.threading.channels/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Threading.Channels.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Threading.Channels.targets", + "lib/net462/System.Threading.Channels.dll", + "lib/net462/System.Threading.Channels.xml", + "lib/net6.0/System.Threading.Channels.dll", + "lib/net6.0/System.Threading.Channels.xml", + "lib/net7.0/System.Threading.Channels.dll", + "lib/net7.0/System.Threading.Channels.xml", + "lib/net8.0/System.Threading.Channels.dll", + "lib/net8.0/System.Threading.Channels.xml", + "lib/netstandard2.0/System.Threading.Channels.dll", + "lib/netstandard2.0/System.Threading.Channels.xml", + "lib/netstandard2.1/System.Threading.Channels.dll", + "lib/netstandard2.1/System.Threading.Channels.xml", + "system.threading.channels.8.0.0.nupkg.sha512", + "system.threading.channels.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Threading.RateLimiting/8.0.0": { + "sha512": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==", + "type": "package", + "path": "system.threading.ratelimiting/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Threading.RateLimiting.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Threading.RateLimiting.targets", + "lib/net462/System.Threading.RateLimiting.dll", + "lib/net462/System.Threading.RateLimiting.xml", + "lib/net6.0/System.Threading.RateLimiting.dll", + "lib/net6.0/System.Threading.RateLimiting.xml", + "lib/net7.0/System.Threading.RateLimiting.dll", + "lib/net7.0/System.Threading.RateLimiting.xml", + "lib/net8.0/System.Threading.RateLimiting.dll", + "lib/net8.0/System.Threading.RateLimiting.xml", + "lib/netstandard2.0/System.Threading.RateLimiting.dll", + "lib/netstandard2.0/System.Threading.RateLimiting.xml", + "system.threading.ratelimiting.8.0.0.nupkg.sha512", + "system.threading.ratelimiting.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Threading.Tasks/4.3.0": { + "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "type": "package", + "path": "system.threading.tasks/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.dll", + "ref/netcore50/System.Threading.Tasks.xml", + "ref/netcore50/de/System.Threading.Tasks.xml", + "ref/netcore50/es/System.Threading.Tasks.xml", + "ref/netcore50/fr/System.Threading.Tasks.xml", + "ref/netcore50/it/System.Threading.Tasks.xml", + "ref/netcore50/ja/System.Threading.Tasks.xml", + "ref/netcore50/ko/System.Threading.Tasks.xml", + "ref/netcore50/ru/System.Threading.Tasks.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.0/System.Threading.Tasks.dll", + "ref/netstandard1.0/System.Threading.Tasks.xml", + "ref/netstandard1.0/de/System.Threading.Tasks.xml", + "ref/netstandard1.0/es/System.Threading.Tasks.xml", + "ref/netstandard1.0/fr/System.Threading.Tasks.xml", + "ref/netstandard1.0/it/System.Threading.Tasks.xml", + "ref/netstandard1.0/ja/System.Threading.Tasks.xml", + "ref/netstandard1.0/ko/System.Threading.Tasks.xml", + "ref/netstandard1.0/ru/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.3/System.Threading.Tasks.dll", + "ref/netstandard1.3/System.Threading.Tasks.xml", + "ref/netstandard1.3/de/System.Threading.Tasks.xml", + "ref/netstandard1.3/es/System.Threading.Tasks.xml", + "ref/netstandard1.3/fr/System.Threading.Tasks.xml", + "ref/netstandard1.3/it/System.Threading.Tasks.xml", + "ref/netstandard1.3/ja/System.Threading.Tasks.xml", + "ref/netstandard1.3/ko/System.Threading.Tasks.xml", + "ref/netstandard1.3/ru/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.4.3.0.nupkg.sha512", + "system.threading.tasks.nuspec" + ] + }, + "System.Threading.Tasks.Extensions/4.3.0": { + "sha512": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "type": "package", + "path": "system.threading.tasks.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml", + "system.threading.tasks.extensions.4.3.0.nupkg.sha512", + "system.threading.tasks.extensions.nuspec" + ] + }, + "System.Threading.Timer/4.3.0": { + "sha512": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", + "type": "package", + "path": "system.threading.timer/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net451/_._", + "lib/portable-net451+win81+wpa81/_._", + "lib/win81/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net451/_._", + "ref/netcore50/System.Threading.Timer.dll", + "ref/netcore50/System.Threading.Timer.xml", + "ref/netcore50/de/System.Threading.Timer.xml", + "ref/netcore50/es/System.Threading.Timer.xml", + "ref/netcore50/fr/System.Threading.Timer.xml", + "ref/netcore50/it/System.Threading.Timer.xml", + "ref/netcore50/ja/System.Threading.Timer.xml", + "ref/netcore50/ko/System.Threading.Timer.xml", + "ref/netcore50/ru/System.Threading.Timer.xml", + "ref/netcore50/zh-hans/System.Threading.Timer.xml", + "ref/netcore50/zh-hant/System.Threading.Timer.xml", + "ref/netstandard1.2/System.Threading.Timer.dll", + "ref/netstandard1.2/System.Threading.Timer.xml", + "ref/netstandard1.2/de/System.Threading.Timer.xml", + "ref/netstandard1.2/es/System.Threading.Timer.xml", + "ref/netstandard1.2/fr/System.Threading.Timer.xml", + "ref/netstandard1.2/it/System.Threading.Timer.xml", + "ref/netstandard1.2/ja/System.Threading.Timer.xml", + "ref/netstandard1.2/ko/System.Threading.Timer.xml", + "ref/netstandard1.2/ru/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", + "ref/portable-net451+win81+wpa81/_._", + "ref/win81/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.timer.4.3.0.nupkg.sha512", + "system.threading.timer.nuspec" + ] + }, + "System.Xml.ReaderWriter/4.3.0": { + "sha512": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", + "type": "package", + "path": "system.xml.readerwriter/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.Xml.ReaderWriter.dll", + "lib/netcore50/System.Xml.ReaderWriter.dll", + "lib/netstandard1.3/System.Xml.ReaderWriter.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.xml", + "ref/netcore50/de/System.Xml.ReaderWriter.xml", + "ref/netcore50/es/System.Xml.ReaderWriter.xml", + "ref/netcore50/fr/System.Xml.ReaderWriter.xml", + "ref/netcore50/it/System.Xml.ReaderWriter.xml", + "ref/netcore50/ja/System.Xml.ReaderWriter.xml", + "ref/netcore50/ko/System.Xml.ReaderWriter.xml", + "ref/netcore50/ru/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/System.Xml.ReaderWriter.dll", + "ref/netstandard1.0/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/System.Xml.ReaderWriter.dll", + "ref/netstandard1.3/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.readerwriter.4.3.0.nupkg.sha512", + "system.xml.readerwriter.nuspec" + ] + }, + "System.Xml.XDocument/4.3.0": { + "sha512": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", + "type": "package", + "path": "system.xml.xdocument/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Xml.XDocument.dll", + "lib/netstandard1.3/System.Xml.XDocument.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Xml.XDocument.dll", + "ref/netcore50/System.Xml.XDocument.xml", + "ref/netcore50/de/System.Xml.XDocument.xml", + "ref/netcore50/es/System.Xml.XDocument.xml", + "ref/netcore50/fr/System.Xml.XDocument.xml", + "ref/netcore50/it/System.Xml.XDocument.xml", + "ref/netcore50/ja/System.Xml.XDocument.xml", + "ref/netcore50/ko/System.Xml.XDocument.xml", + "ref/netcore50/ru/System.Xml.XDocument.xml", + "ref/netcore50/zh-hans/System.Xml.XDocument.xml", + "ref/netcore50/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.0/System.Xml.XDocument.dll", + "ref/netstandard1.0/System.Xml.XDocument.xml", + "ref/netstandard1.0/de/System.Xml.XDocument.xml", + "ref/netstandard1.0/es/System.Xml.XDocument.xml", + "ref/netstandard1.0/fr/System.Xml.XDocument.xml", + "ref/netstandard1.0/it/System.Xml.XDocument.xml", + "ref/netstandard1.0/ja/System.Xml.XDocument.xml", + "ref/netstandard1.0/ko/System.Xml.XDocument.xml", + "ref/netstandard1.0/ru/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.3/System.Xml.XDocument.dll", + "ref/netstandard1.3/System.Xml.XDocument.xml", + "ref/netstandard1.3/de/System.Xml.XDocument.xml", + "ref/netstandard1.3/es/System.Xml.XDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XDocument.xml", + "ref/netstandard1.3/it/System.Xml.XDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.xdocument.4.3.0.nupkg.sha512", + "system.xml.xdocument.nuspec" + ] + }, + "xunit/2.5.3": { + "sha512": "VxYDiWSwrLxOJ3UEN+ZPrBybB0SFShQ1E6PjT65VdoKCJhorgerFznThjSwawRH/WAip73YnucDVsE8WRj/8KQ==", + "type": "package", + "path": "xunit/2.5.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "xunit.2.5.3.nupkg.sha512", + "xunit.nuspec" + ] + }, + "xunit.abstractions/2.0.3": { + "sha512": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", + "type": "package", + "path": "xunit.abstractions/2.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net35/xunit.abstractions.dll", + "lib/net35/xunit.abstractions.xml", + "lib/netstandard1.0/xunit.abstractions.dll", + "lib/netstandard1.0/xunit.abstractions.xml", + "lib/netstandard2.0/xunit.abstractions.dll", + "lib/netstandard2.0/xunit.abstractions.xml", + "xunit.abstractions.2.0.3.nupkg.sha512", + "xunit.abstractions.nuspec" + ] + }, + "xunit.analyzers/1.4.0": { + "sha512": "7ljnTJfFjz5zK+Jf0h2dd2QOSO6UmFizXsojv/x4QX7TU5vEgtKZPk9RvpkiuUqg2bddtNZufBoKQalsi7djfA==", + "type": "package", + "path": "xunit.analyzers/1.4.0", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "analyzers/dotnet/cs/xunit.analyzers.dll", + "analyzers/dotnet/cs/xunit.analyzers.fixes.dll", + "tools/install.ps1", + "tools/uninstall.ps1", + "xunit.analyzers.1.4.0.nupkg.sha512", + "xunit.analyzers.nuspec" + ] + }, + "xunit.assert/2.5.3": { + "sha512": "MK3HiBckO3vdxEdUxXZyyRPsBNPsC/nz6y1gj/UZIZkjMnsVQyZPU8yxS/3cjTchYcqskt/nqUOS5wmD8JezdQ==", + "type": "package", + "path": "xunit.assert/2.5.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/netstandard1.1/xunit.assert.dll", + "lib/netstandard1.1/xunit.assert.xml", + "xunit.assert.2.5.3.nupkg.sha512", + "xunit.assert.nuspec" + ] + }, + "xunit.core/2.5.3": { + "sha512": "FE8yEEUkoMLd6kOHDXm/QYfX/dYzwc0c+Q4MQon6VGRwFuy6UVGwK/CFA5LEea+ZBEmcco7AEl2q78VjsA0j/w==", + "type": "package", + "path": "xunit.core/2.5.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "build/xunit.core.props", + "build/xunit.core.targets", + "buildMultiTargeting/xunit.core.props", + "buildMultiTargeting/xunit.core.targets", + "xunit.core.2.5.3.nupkg.sha512", + "xunit.core.nuspec" + ] + }, + "xunit.extensibility.core/2.5.3": { + "sha512": "IjAQlPeZWXP89pl1EuOG9991GH1qgAL0rQfkmX2UV+PDenbYb7oBnQopL9ujE6YaXxgaQazp7lFjsDyyxD6Mtw==", + "type": "package", + "path": "xunit.extensibility.core/2.5.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net452/xunit.core.dll", + "lib/net452/xunit.core.dll.tdnet", + "lib/net452/xunit.core.xml", + "lib/net452/xunit.runner.tdnet.dll", + "lib/net452/xunit.runner.utility.net452.dll", + "lib/netstandard1.1/xunit.core.dll", + "lib/netstandard1.1/xunit.core.xml", + "xunit.extensibility.core.2.5.3.nupkg.sha512", + "xunit.extensibility.core.nuspec" + ] + }, + "xunit.extensibility.execution/2.5.3": { + "sha512": "w9eGCHl+gJj1GzZSf0VTzYPp/gv4fiUDkr+yR7/Wv9/ucO2CHltGg2TnyySLFjzekkjuxVJZUE+tZyDNzryJFw==", + "type": "package", + "path": "xunit.extensibility.execution/2.5.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net452/xunit.execution.desktop.dll", + "lib/net452/xunit.execution.desktop.xml", + "lib/netstandard1.1/xunit.execution.dotnet.dll", + "lib/netstandard1.1/xunit.execution.dotnet.xml", + "xunit.extensibility.execution.2.5.3.nupkg.sha512", + "xunit.extensibility.execution.nuspec" + ] + }, + "xunit.runner.visualstudio/2.5.3": { + "sha512": "HFFL6O+QLEOfs555SqHii48ovVa4CqGYanY+B32BjLpPptdE+wEJmCFNXlLHdEOD5LYeayb9EroaUpydGpcybg==", + "type": "package", + "path": "xunit.runner.visualstudio/2.5.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "build/net462/xunit.abstractions.dll", + "build/net462/xunit.runner.reporters.net452.dll", + "build/net462/xunit.runner.utility.net452.dll", + "build/net462/xunit.runner.visualstudio.props", + "build/net462/xunit.runner.visualstudio.testadapter.dll", + "build/net6.0/xunit.abstractions.dll", + "build/net6.0/xunit.runner.reporters.netcoreapp10.dll", + "build/net6.0/xunit.runner.utility.netcoreapp10.dll", + "build/net6.0/xunit.runner.visualstudio.dotnetcore.testadapter.dll", + "build/net6.0/xunit.runner.visualstudio.props", + "lib/net462/_._", + "lib/net6.0/_._", + "xunit.runner.visualstudio.2.5.3.nupkg.sha512", + "xunit.runner.visualstudio.nuspec" + ] + }, + "IM_API/1.0.0": { + "type": "project", + "path": "../IM_API/IM_API.csproj", + "msbuildProject": "../IM_API/IM_API.csproj" + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "IM_API >= 1.0.0", + "Microsoft.EntityFrameworkCore.InMemory >= 8.0.22", + "Microsoft.NET.Test.Sdk >= 17.8.0", + "Moq >= 4.20.72", + "coverlet.collector >= 6.0.0", + "xunit >= 2.5.3", + "xunit.runner.visualstudio >= 2.5.3" + ] + }, + "packageFolders": { + "C:\\Users\\nanxun\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\nanxun\\Documents\\IM\\backend\\IMTest\\IMTest.csproj", + "projectName": "IMTest", + "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\IMTest\\IMTest.csproj", + "packagesPath": "C:\\Users\\nanxun\\.nuget\\packages\\", + "outputPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\IMTest\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\nanxun\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "C:\\Users\\nanxun\\Documents\\IM\\backend\\IM_API\\IM_API.csproj": { + "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\IM_API\\IM_API.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Microsoft.EntityFrameworkCore.InMemory": { + "target": "Package", + "version": "[8.0.22, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[17.8.0, )" + }, + "Moq": { + "target": "Package", + "version": "[4.20.72, )" + }, + "coverlet.collector": { + "target": "Package", + "version": "[6.0.0, )" + }, + "xunit": { + "target": "Package", + "version": "[2.5.3, )" + }, + "xunit.runner.visualstudio": { + "target": "Package", + "version": "[2.5.3, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + } } \ No newline at end of file diff --git a/backend/IMTest/obj/project.nuget.cache b/backend/IMTest/obj/project.nuget.cache index e5a6826..b3383d7 100644 --- a/backend/IMTest/obj/project.nuget.cache +++ b/backend/IMTest/obj/project.nuget.cache @@ -1,176 +1,176 @@ -{ - "version": 2, - "dgSpecHash": "ueA0djhC8vQ=", - "success": true, - "projectFilePath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\IMTest\\IMTest.csproj", - "expectedPackageFiles": [ - "C:\\Users\\nanxun\\.nuget\\packages\\automapper\\12.0.1\\automapper.12.0.1.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\automapper.extensions.microsoft.dependencyinjection\\12.0.0\\automapper.extensions.microsoft.dependencyinjection.12.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\castle.core\\5.1.1\\castle.core.5.1.1.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\coverlet.collector\\6.0.0\\coverlet.collector.6.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\masstransit\\8.5.5\\masstransit.8.5.5.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\masstransit.abstractions\\8.5.5\\masstransit.abstractions.8.5.5.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\masstransit.rabbitmq\\8.5.5\\masstransit.rabbitmq.8.5.5.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.authentication.abstractions\\2.3.0\\microsoft.aspnetcore.authentication.abstractions.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.authentication.jwtbearer\\8.0.21\\microsoft.aspnetcore.authentication.jwtbearer.8.0.21.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.authorization\\2.3.0\\microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.authorization.policy\\2.3.0\\microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.connections.abstractions\\2.3.0\\microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.hosting.abstractions\\2.3.0\\microsoft.aspnetcore.hosting.abstractions.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.hosting.server.abstractions\\2.3.0\\microsoft.aspnetcore.hosting.server.abstractions.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http\\2.3.0\\microsoft.aspnetcore.http.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.abstractions\\2.3.0\\microsoft.aspnetcore.http.abstractions.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections\\1.2.0\\microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections.common\\1.2.0\\microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.extensions\\2.3.0\\microsoft.aspnetcore.http.extensions.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.features\\2.3.0\\microsoft.aspnetcore.http.features.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.routing\\2.3.0\\microsoft.aspnetcore.routing.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.routing.abstractions\\2.3.0\\microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr\\1.2.0\\microsoft.aspnetcore.signalr.1.2.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.common\\1.2.0\\microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.core\\1.2.0\\microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.protocols.json\\1.2.0\\microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.websockets\\2.3.0\\microsoft.aspnetcore.websockets.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.webutilities\\2.3.0\\microsoft.aspnetcore.webutilities.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\1.1.0\\microsoft.bcl.asyncinterfaces.1.1.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.codecoverage\\17.8.0\\microsoft.codecoverage.17.8.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.22\\microsoft.entityframeworkcore.8.0.22.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.22\\microsoft.entityframeworkcore.abstractions.8.0.22.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.22\\microsoft.entityframeworkcore.analyzers.8.0.22.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.entityframeworkcore.inmemory\\8.0.22\\microsoft.entityframeworkcore.inmemory.8.0.22.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.13\\microsoft.entityframeworkcore.relational.8.0.13.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\10.0.2\\microsoft.extensions.caching.abstractions.10.0.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.caching.stackexchangeredis\\10.0.2\\microsoft.extensions.caching.stackexchangeredis.10.0.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\10.0.2\\microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.diagnostics.abstractions\\8.0.1\\microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.diagnostics.healthchecks\\8.0.0\\microsoft.extensions.diagnostics.healthchecks.8.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.diagnostics.healthchecks.abstractions\\8.0.0\\microsoft.extensions.diagnostics.healthchecks.abstractions.8.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.fileproviders.abstractions\\8.0.0\\microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.hosting.abstractions\\8.0.1\\microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\10.0.2\\microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.objectpool\\8.0.11\\microsoft.extensions.objectpool.8.0.11.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.options\\10.0.2\\microsoft.extensions.options.10.0.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.primitives\\10.0.2\\microsoft.extensions.primitives.10.0.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.14.0\\microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\8.14.0\\microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.logging\\8.14.0\\microsoft.identitymodel.logging.8.14.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.protocols\\7.1.2\\microsoft.identitymodel.protocols.7.1.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\7.1.2\\microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.tokens\\8.14.0\\microsoft.identitymodel.tokens.8.14.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.net.http.headers\\2.3.0\\microsoft.net.http.headers.2.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.net.test.sdk\\17.8.0\\microsoft.net.test.sdk.17.8.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.netcore.platforms\\1.1.0\\microsoft.netcore.platforms.1.1.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.netcore.targets\\1.1.0\\microsoft.netcore.targets.1.1.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.openapi\\1.6.14\\microsoft.openapi.1.6.14.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.testplatform.objectmodel\\17.8.0\\microsoft.testplatform.objectmodel.17.8.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.testplatform.testhost\\17.8.0\\microsoft.testplatform.testhost.17.8.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.visualstudio.azure.containers.tools.targets\\1.22.1\\microsoft.visualstudio.azure.containers.tools.targets.1.22.1.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.win32.primitives\\4.3.0\\microsoft.win32.primitives.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\moq\\4.20.72\\moq.4.20.72.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\mysqlconnector\\2.3.5\\mysqlconnector.2.3.5.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\netstandard.library\\1.6.1\\netstandard.library.1.6.1.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\newtonsoft.json\\13.0.4\\newtonsoft.json.13.0.4.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\nuget.frameworks\\6.5.0\\nuget.frameworks.6.5.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\pipelines.sockets.unofficial\\2.2.8\\pipelines.sockets.unofficial.2.2.8.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\pomelo.entityframeworkcore.mysql\\8.0.3\\pomelo.entityframeworkcore.mysql.8.0.3.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\rabbitmq.client\\7.1.2\\rabbitmq.client.7.1.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\redlock.net\\2.3.2\\redlock.net.2.3.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.native.system\\4.3.0\\runtime.native.system.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.native.system.io.compression\\4.3.0\\runtime.native.system.io.compression.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.native.system.net.http\\4.3.0\\runtime.native.system.net.http.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\stackexchange.redis\\2.9.32\\stackexchange.redis.2.9.32.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\swashbuckle.aspnetcore\\6.6.2\\swashbuckle.aspnetcore.6.6.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.6.2\\swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.6.2\\swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.6.2\\swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.appcontext\\4.3.0\\system.appcontext.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.buffers\\4.6.0\\system.buffers.4.6.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.collections\\4.3.0\\system.collections.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.collections.concurrent\\4.3.0\\system.collections.concurrent.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.console\\4.3.0\\system.console.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.debug\\4.3.0\\system.diagnostics.debug.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.diagnosticsource\\10.0.2\\system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.eventlog\\6.0.0\\system.diagnostics.eventlog.6.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.tools\\4.3.0\\system.diagnostics.tools.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.tracing\\4.3.0\\system.diagnostics.tracing.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.globalization.calendars\\4.3.0\\system.globalization.calendars.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.globalization.extensions\\4.3.0\\system.globalization.extensions.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.identitymodel.tokens.jwt\\8.14.0\\system.identitymodel.tokens.jwt.8.14.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.io.compression\\4.3.0\\system.io.compression.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.io.compression.zipfile\\4.3.0\\system.io.compression.zipfile.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.io.filesystem\\4.3.0\\system.io.filesystem.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.io.filesystem.primitives\\4.3.0\\system.io.filesystem.primitives.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.io.pipelines\\8.0.0\\system.io.pipelines.8.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.linq\\4.3.0\\system.linq.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.linq.expressions\\4.3.0\\system.linq.expressions.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.net.http\\4.3.0\\system.net.http.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.net.primitives\\4.3.0\\system.net.primitives.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.net.sockets\\4.3.0\\system.net.sockets.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.net.websockets.websocketprotocol\\5.1.0\\system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.objectmodel\\4.3.0\\system.objectmodel.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.emit\\4.7.0\\system.reflection.emit.4.7.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.emit.ilgeneration\\4.3.0\\system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.emit.lightweight\\4.3.0\\system.reflection.emit.lightweight.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.extensions\\4.3.0\\system.reflection.extensions.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.metadata\\1.6.0\\system.reflection.metadata.1.6.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.typeextensions\\4.3.0\\system.reflection.typeextensions.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime.handles\\4.3.0\\system.runtime.handles.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime.interopservices\\4.3.0\\system.runtime.interopservices.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime.interopservices.runtimeinformation\\4.3.0\\system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime.numerics\\4.3.0\\system.runtime.numerics.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.algorithms\\4.3.0\\system.security.cryptography.algorithms.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.cng\\4.3.0\\system.security.cryptography.cng.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.csp\\4.3.0\\system.security.cryptography.csp.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.encoding\\4.3.0\\system.security.cryptography.encoding.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.openssl\\4.3.0\\system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.primitives\\4.3.0\\system.security.cryptography.primitives.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.x509certificates\\4.3.0\\system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.text.encoding.extensions\\4.3.0\\system.text.encoding.extensions.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.text.regularexpressions\\4.3.0\\system.text.regularexpressions.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.threading\\4.3.0\\system.threading.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.channels\\8.0.0\\system.threading.channels.8.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.ratelimiting\\8.0.0\\system.threading.ratelimiting.8.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.tasks.extensions\\4.3.0\\system.threading.tasks.extensions.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.timer\\4.3.0\\system.threading.timer.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.xml.readerwriter\\4.3.0\\system.xml.readerwriter.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.xml.xdocument\\4.3.0\\system.xml.xdocument.4.3.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\xunit\\2.5.3\\xunit.2.5.3.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\xunit.abstractions\\2.0.3\\xunit.abstractions.2.0.3.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\xunit.analyzers\\1.4.0\\xunit.analyzers.1.4.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\xunit.assert\\2.5.3\\xunit.assert.2.5.3.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\xunit.core\\2.5.3\\xunit.core.2.5.3.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\xunit.extensibility.core\\2.5.3\\xunit.extensibility.core.2.5.3.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\xunit.extensibility.execution\\2.5.3\\xunit.extensibility.execution.2.5.3.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\xunit.runner.visualstudio\\2.5.3\\xunit.runner.visualstudio.2.5.3.nupkg.sha512" - ], - "logs": [] +{ + "version": 2, + "dgSpecHash": "ueA0djhC8vQ=", + "success": true, + "projectFilePath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\IMTest\\IMTest.csproj", + "expectedPackageFiles": [ + "C:\\Users\\nanxun\\.nuget\\packages\\automapper\\12.0.1\\automapper.12.0.1.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\automapper.extensions.microsoft.dependencyinjection\\12.0.0\\automapper.extensions.microsoft.dependencyinjection.12.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\castle.core\\5.1.1\\castle.core.5.1.1.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\coverlet.collector\\6.0.0\\coverlet.collector.6.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\masstransit\\8.5.5\\masstransit.8.5.5.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\masstransit.abstractions\\8.5.5\\masstransit.abstractions.8.5.5.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\masstransit.rabbitmq\\8.5.5\\masstransit.rabbitmq.8.5.5.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.authentication.abstractions\\2.3.0\\microsoft.aspnetcore.authentication.abstractions.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.authentication.jwtbearer\\8.0.21\\microsoft.aspnetcore.authentication.jwtbearer.8.0.21.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.authorization\\2.3.0\\microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.authorization.policy\\2.3.0\\microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.connections.abstractions\\2.3.0\\microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.hosting.abstractions\\2.3.0\\microsoft.aspnetcore.hosting.abstractions.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.hosting.server.abstractions\\2.3.0\\microsoft.aspnetcore.hosting.server.abstractions.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http\\2.3.0\\microsoft.aspnetcore.http.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.abstractions\\2.3.0\\microsoft.aspnetcore.http.abstractions.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections\\1.2.0\\microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections.common\\1.2.0\\microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.extensions\\2.3.0\\microsoft.aspnetcore.http.extensions.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.features\\2.3.0\\microsoft.aspnetcore.http.features.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.routing\\2.3.0\\microsoft.aspnetcore.routing.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.routing.abstractions\\2.3.0\\microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr\\1.2.0\\microsoft.aspnetcore.signalr.1.2.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.common\\1.2.0\\microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.core\\1.2.0\\microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.protocols.json\\1.2.0\\microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.websockets\\2.3.0\\microsoft.aspnetcore.websockets.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.webutilities\\2.3.0\\microsoft.aspnetcore.webutilities.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\1.1.0\\microsoft.bcl.asyncinterfaces.1.1.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.codecoverage\\17.8.0\\microsoft.codecoverage.17.8.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.22\\microsoft.entityframeworkcore.8.0.22.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.22\\microsoft.entityframeworkcore.abstractions.8.0.22.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.22\\microsoft.entityframeworkcore.analyzers.8.0.22.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.entityframeworkcore.inmemory\\8.0.22\\microsoft.entityframeworkcore.inmemory.8.0.22.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.13\\microsoft.entityframeworkcore.relational.8.0.13.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\10.0.2\\microsoft.extensions.caching.abstractions.10.0.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.caching.stackexchangeredis\\10.0.2\\microsoft.extensions.caching.stackexchangeredis.10.0.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\10.0.2\\microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.diagnostics.abstractions\\8.0.1\\microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.diagnostics.healthchecks\\8.0.0\\microsoft.extensions.diagnostics.healthchecks.8.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.diagnostics.healthchecks.abstractions\\8.0.0\\microsoft.extensions.diagnostics.healthchecks.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.fileproviders.abstractions\\8.0.0\\microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.hosting.abstractions\\8.0.1\\microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\10.0.2\\microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.objectpool\\8.0.11\\microsoft.extensions.objectpool.8.0.11.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.options\\10.0.2\\microsoft.extensions.options.10.0.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.primitives\\10.0.2\\microsoft.extensions.primitives.10.0.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.14.0\\microsoft.identitymodel.abstractions.8.14.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\8.14.0\\microsoft.identitymodel.jsonwebtokens.8.14.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.logging\\8.14.0\\microsoft.identitymodel.logging.8.14.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.protocols\\7.1.2\\microsoft.identitymodel.protocols.7.1.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\7.1.2\\microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.identitymodel.tokens\\8.14.0\\microsoft.identitymodel.tokens.8.14.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.net.http.headers\\2.3.0\\microsoft.net.http.headers.2.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.net.test.sdk\\17.8.0\\microsoft.net.test.sdk.17.8.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.netcore.platforms\\1.1.0\\microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.netcore.targets\\1.1.0\\microsoft.netcore.targets.1.1.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.openapi\\1.6.14\\microsoft.openapi.1.6.14.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.testplatform.objectmodel\\17.8.0\\microsoft.testplatform.objectmodel.17.8.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.testplatform.testhost\\17.8.0\\microsoft.testplatform.testhost.17.8.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.visualstudio.azure.containers.tools.targets\\1.22.1\\microsoft.visualstudio.azure.containers.tools.targets.1.22.1.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.win32.primitives\\4.3.0\\microsoft.win32.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\moq\\4.20.72\\moq.4.20.72.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\mysqlconnector\\2.3.5\\mysqlconnector.2.3.5.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\netstandard.library\\1.6.1\\netstandard.library.1.6.1.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\newtonsoft.json\\13.0.4\\newtonsoft.json.13.0.4.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\nuget.frameworks\\6.5.0\\nuget.frameworks.6.5.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\pipelines.sockets.unofficial\\2.2.8\\pipelines.sockets.unofficial.2.2.8.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\pomelo.entityframeworkcore.mysql\\8.0.3\\pomelo.entityframeworkcore.mysql.8.0.3.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\rabbitmq.client\\7.1.2\\rabbitmq.client.7.1.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\redlock.net\\2.3.2\\redlock.net.2.3.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.native.system\\4.3.0\\runtime.native.system.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.native.system.io.compression\\4.3.0\\runtime.native.system.io.compression.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.native.system.net.http\\4.3.0\\runtime.native.system.net.http.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\stackexchange.redis\\2.9.32\\stackexchange.redis.2.9.32.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\swashbuckle.aspnetcore\\6.6.2\\swashbuckle.aspnetcore.6.6.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.6.2\\swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.6.2\\swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.6.2\\swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.appcontext\\4.3.0\\system.appcontext.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.buffers\\4.6.0\\system.buffers.4.6.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.collections\\4.3.0\\system.collections.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.collections.concurrent\\4.3.0\\system.collections.concurrent.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.console\\4.3.0\\system.console.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.debug\\4.3.0\\system.diagnostics.debug.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.diagnosticsource\\10.0.2\\system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.eventlog\\6.0.0\\system.diagnostics.eventlog.6.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.tools\\4.3.0\\system.diagnostics.tools.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.tracing\\4.3.0\\system.diagnostics.tracing.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.globalization.calendars\\4.3.0\\system.globalization.calendars.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.globalization.extensions\\4.3.0\\system.globalization.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.identitymodel.tokens.jwt\\8.14.0\\system.identitymodel.tokens.jwt.8.14.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.io.compression\\4.3.0\\system.io.compression.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.io.compression.zipfile\\4.3.0\\system.io.compression.zipfile.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.io.filesystem\\4.3.0\\system.io.filesystem.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.io.filesystem.primitives\\4.3.0\\system.io.filesystem.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.io.pipelines\\8.0.0\\system.io.pipelines.8.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.linq\\4.3.0\\system.linq.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.linq.expressions\\4.3.0\\system.linq.expressions.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.net.http\\4.3.0\\system.net.http.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.net.primitives\\4.3.0\\system.net.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.net.sockets\\4.3.0\\system.net.sockets.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.net.websockets.websocketprotocol\\5.1.0\\system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.objectmodel\\4.3.0\\system.objectmodel.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.emit\\4.7.0\\system.reflection.emit.4.7.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.emit.ilgeneration\\4.3.0\\system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.emit.lightweight\\4.3.0\\system.reflection.emit.lightweight.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.extensions\\4.3.0\\system.reflection.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.metadata\\1.6.0\\system.reflection.metadata.1.6.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.reflection.typeextensions\\4.3.0\\system.reflection.typeextensions.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime.handles\\4.3.0\\system.runtime.handles.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime.interopservices\\4.3.0\\system.runtime.interopservices.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime.interopservices.runtimeinformation\\4.3.0\\system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.runtime.numerics\\4.3.0\\system.runtime.numerics.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.algorithms\\4.3.0\\system.security.cryptography.algorithms.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.cng\\4.3.0\\system.security.cryptography.cng.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.csp\\4.3.0\\system.security.cryptography.csp.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.encoding\\4.3.0\\system.security.cryptography.encoding.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.openssl\\4.3.0\\system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.primitives\\4.3.0\\system.security.cryptography.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.security.cryptography.x509certificates\\4.3.0\\system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.text.encoding.extensions\\4.3.0\\system.text.encoding.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.text.regularexpressions\\4.3.0\\system.text.regularexpressions.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.threading\\4.3.0\\system.threading.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.channels\\8.0.0\\system.threading.channels.8.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.ratelimiting\\8.0.0\\system.threading.ratelimiting.8.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.tasks.extensions\\4.3.0\\system.threading.tasks.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.timer\\4.3.0\\system.threading.timer.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.xml.readerwriter\\4.3.0\\system.xml.readerwriter.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.xml.xdocument\\4.3.0\\system.xml.xdocument.4.3.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\xunit\\2.5.3\\xunit.2.5.3.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\xunit.abstractions\\2.0.3\\xunit.abstractions.2.0.3.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\xunit.analyzers\\1.4.0\\xunit.analyzers.1.4.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\xunit.assert\\2.5.3\\xunit.assert.2.5.3.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\xunit.core\\2.5.3\\xunit.core.2.5.3.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\xunit.extensibility.core\\2.5.3\\xunit.extensibility.core.2.5.3.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\xunit.extensibility.execution\\2.5.3\\xunit.extensibility.execution.2.5.3.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\xunit.runner.visualstudio\\2.5.3\\xunit.runner.visualstudio.2.5.3.nupkg.sha512" + ], + "logs": [] } \ No newline at end of file diff --git a/backend/IM_API/.dockerignore b/backend/IM_API/.dockerignore index fe1152b..4d72b4f 100644 --- a/backend/IM_API/.dockerignore +++ b/backend/IM_API/.dockerignore @@ -1,30 +1,30 @@ -**/.classpath -**/.dockerignore -**/.env -**/.git -**/.gitignore -**/.project -**/.settings -**/.toolstarget -**/.vs -**/.vscode -**/*.*proj.user -**/*.dbmdl -**/*.jfm -**/azds.yaml -**/bin -**/charts -**/docker-compose* -**/Dockerfile* -**/node_modules -**/npm-debug.log -**/obj -**/secrets.dev.yaml -**/values.dev.yaml -LICENSE -README.md -!**/.gitignore -!.git/HEAD -!.git/config -!.git/packed-refs +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md +!**/.gitignore +!.git/HEAD +!.git/config +!.git/packed-refs !.git/refs/heads/** \ No newline at end of file diff --git a/backend/IM_API/.gitignore b/backend/IM_API/.gitignore index 3e16852..0e6ce67 100644 --- a/backend/IM_API/.gitignore +++ b/backend/IM_API/.gitignore @@ -1,3 +1,3 @@ -bin/ -obj/ +bin/ +obj/ .vs/ \ No newline at end of file diff --git a/backend/IM_API/Aggregate/FriendRequestAggregate.cs b/backend/IM_API/Aggregate/FriendRequestAggregate.cs index a5bfb43..bd48d2e 100644 --- a/backend/IM_API/Aggregate/FriendRequestAggregate.cs +++ b/backend/IM_API/Aggregate/FriendRequestAggregate.cs @@ -1,20 +1,20 @@ -using IM_API.Models; - -namespace IM_API.Aggregate -{ - public class FriendRequestAggregate - { - public Friend Friend { get; private set; } - public FriendRequest FriendRequest { get; private set; } - public FriendRequestAggregate() { } - public FriendRequestAggregate(Friend friend,FriendRequest friendRequest) - { - Friend = friend; - FriendRequest = friendRequest; - } - public void Accept(string? remarkName = null) - { - - } - } -} +using IM_API.Models; + +namespace IM_API.Aggregate +{ + public class FriendRequestAggregate + { + public Friend Friend { get; private set; } + public FriendRequest FriendRequest { get; private set; } + public FriendRequestAggregate() { } + public FriendRequestAggregate(Friend friend,FriendRequest friendRequest) + { + Friend = friend; + FriendRequest = friendRequest; + } + public void Accept(string? remarkName = null) + { + + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddConversationHandler.cs b/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddConversationHandler.cs index e621e48..8bc260a 100644 --- a/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddConversationHandler.cs +++ b/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddConversationHandler.cs @@ -1,23 +1,23 @@ -using IM_API.Domain.Events; -using IM_API.Interface.Services; -using MassTransit; - -namespace IM_API.Application.EventHandlers.FriendAddHandler -{ - public class FriendAddConversationHandler : IConsumer - { - private readonly IConversationService _cService; - public FriendAddConversationHandler(IConversationService cService) - { - _cService = cService; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - await _cService.MakeConversationAsync(@event.RequestUserId, @event.ResponseUserId, Models.ChatType.PRIVATE); - await _cService.MakeConversationAsync(@event.ResponseUserId, @event.RequestUserId, Models.ChatType.PRIVATE); - - } - } -} +using IM_API.Domain.Events; +using IM_API.Interface.Services; +using MassTransit; + +namespace IM_API.Application.EventHandlers.FriendAddHandler +{ + public class FriendAddConversationHandler : IConsumer + { + private readonly IConversationService _cService; + public FriendAddConversationHandler(IConversationService cService) + { + _cService = cService; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + await _cService.MakeConversationAsync(@event.RequestUserId, @event.ResponseUserId, Models.ChatType.PRIVATE); + await _cService.MakeConversationAsync(@event.ResponseUserId, @event.RequestUserId, Models.ChatType.PRIVATE); + + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddDBHandler.cs b/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddDBHandler.cs index 052cdd5..403990b 100644 --- a/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddDBHandler.cs +++ b/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddDBHandler.cs @@ -1,29 +1,29 @@ -using IM_API.Domain.Events; -using IM_API.Interface.Services; -using MassTransit; - -namespace IM_API.Application.EventHandlers.FriendAddHandler -{ - public class FriendAddDBHandler : IConsumer - { - private readonly IFriendSerivce _friendService; - private readonly ILogger _logger; - public FriendAddDBHandler(IFriendSerivce friendService, ILogger logger) - { - _friendService = friendService; - _logger = logger; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - - //为请求发起人添加好友记录 - await _friendService.MakeFriendshipAsync( - @event.RequestUserId, @event.ResponseUserId, @event.RequestInfo.RemarkName); - //为接收人添加好友记录 - await _friendService.MakeFriendshipAsync( - @event.ResponseUserId, @event.RequestUserId, @event.requestUserRemarkname); - } - } -} +using IM_API.Domain.Events; +using IM_API.Interface.Services; +using MassTransit; + +namespace IM_API.Application.EventHandlers.FriendAddHandler +{ + public class FriendAddDBHandler : IConsumer + { + private readonly IFriendSerivce _friendService; + private readonly ILogger _logger; + public FriendAddDBHandler(IFriendSerivce friendService, ILogger logger) + { + _friendService = friendService; + _logger = logger; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + + //为请求发起人添加好友记录 + await _friendService.MakeFriendshipAsync( + @event.RequestUserId, @event.ResponseUserId, @event.RequestInfo.RemarkName); + //为接收人添加好友记录 + await _friendService.MakeFriendshipAsync( + @event.ResponseUserId, @event.RequestUserId, @event.requestUserRemarkname); + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddSignalRHandler.cs b/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddSignalRHandler.cs index e692035..77e1ca8 100644 --- a/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddSignalRHandler.cs +++ b/backend/IM_API/Application/EventHandlers/FriendAddHandler/FriendAddSignalRHandler.cs @@ -1,37 +1,37 @@ -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Hubs; -using IM_API.Interface.Services; -using IM_API.Models; -using MassTransit; -using Microsoft.AspNetCore.SignalR; - -namespace IM_API.Application.EventHandlers.FriendAddHandler -{ - public class FriendAddSignalRHandler : IConsumer - { - private readonly IHubContext _chathub; - public FriendAddSignalRHandler(IHubContext chathub) - { - _chathub = chathub; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - var usersList = new List { - @event.RequestUserId.ToString(), @event.ResponseUserId.ToString() - }; - var res = new HubResponse("Event", new MessageBaseDto() - { - ChatType = ChatType.PRIVATE, - Content = "您有新的好友关系已添加", - //MsgId = @event.EventId.ToString(), - ReceiverId = @event.ResponseUserId, - SenderId = @event.RequestUserId, - TimeStamp = DateTime.Now - }); - await _chathub.Clients.Users(usersList).SendAsync("ReceiveMessage", res); - } - } -} +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Hubs; +using IM_API.Interface.Services; +using IM_API.Models; +using MassTransit; +using Microsoft.AspNetCore.SignalR; + +namespace IM_API.Application.EventHandlers.FriendAddHandler +{ + public class FriendAddSignalRHandler : IConsumer + { + private readonly IHubContext _chathub; + public FriendAddSignalRHandler(IHubContext chathub) + { + _chathub = chathub; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + var usersList = new List { + @event.RequestUserId.ToString(), @event.ResponseUserId.ToString() + }; + var res = new HubResponse("Event", new MessageBaseDto() + { + ChatType = ChatType.PRIVATE, + Content = "您有新的好友关系已添加", + //MsgId = @event.EventId.ToString(), + ReceiverId = @event.ResponseUserId, + SenderId = @event.RequestUserId, + TimeStamp = DateTime.Now + }); + await _chathub.Clients.Users(usersList).SendAsync("ReceiveMessage", res); + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/GroupInviteActionUpdateHandler/RequestDbHandler.cs b/backend/IM_API/Application/EventHandlers/GroupInviteActionUpdateHandler/RequestDbHandler.cs index c5c7620..1268419 100644 --- a/backend/IM_API/Application/EventHandlers/GroupInviteActionUpdateHandler/RequestDbHandler.cs +++ b/backend/IM_API/Application/EventHandlers/GroupInviteActionUpdateHandler/RequestDbHandler.cs @@ -1,24 +1,24 @@ -using IM_API.Domain.Events; -using IM_API.Interface.Services; -using MassTransit; - -namespace IM_API.Application.EventHandlers.GroupInviteActionUpdateHandler -{ - public class RequestDbHandler : IConsumer - { - private readonly IGroupService _groupService; - public RequestDbHandler(IGroupService groupService) - { - _groupService = groupService; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - if(@event.Action == Models.GroupInviteState.Passed) - { - await _groupService.MakeGroupRequestAsync(@event.UserId, @event.InviteUserId,@event.GroupId); - } - } - } -} +using IM_API.Domain.Events; +using IM_API.Interface.Services; +using MassTransit; + +namespace IM_API.Application.EventHandlers.GroupInviteActionUpdateHandler +{ + public class RequestDbHandler : IConsumer + { + private readonly IGroupService _groupService; + public RequestDbHandler(IGroupService groupService) + { + _groupService = groupService; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + if(@event.Action == Models.GroupInviteState.Passed) + { + await _groupService.MakeGroupRequestAsync(@event.UserId, @event.InviteUserId,@event.GroupId); + } + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/GroupInviteActionUpdateHandler/SignalRHandler.cs b/backend/IM_API/Application/EventHandlers/GroupInviteActionUpdateHandler/SignalRHandler.cs index 7c09dc1..a934a7b 100644 --- a/backend/IM_API/Application/EventHandlers/GroupInviteActionUpdateHandler/SignalRHandler.cs +++ b/backend/IM_API/Application/EventHandlers/GroupInviteActionUpdateHandler/SignalRHandler.cs @@ -1,34 +1,34 @@ -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Hubs; -using IM_API.VOs.Group; -using MassTransit; -using Microsoft.AspNetCore.SignalR; - -namespace IM_API.Application.EventHandlers.GroupInviteActionUpdateHandler -{ - public class SignalRHandler : IConsumer - { - private IHubContext _hub; - public SignalRHandler(IHubContext hub) - { - _hub = hub; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - var msg = new HubResponse("Event", new GroupInviteActionUpdateVo - { - Action = @event.Action, - GroupId = @event.GroupId, - InvitedUserId = @event.UserId, - InviteUserId = @event.InviteUserId, - InviteId = @event.InviteId - }); - - await _hub.Clients.Users([@event.UserId.ToString(), @event.InviteUserId.ToString()]) - .SendAsync("ReceiveMessage",msg); - } - } -} +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Hubs; +using IM_API.VOs.Group; +using MassTransit; +using Microsoft.AspNetCore.SignalR; + +namespace IM_API.Application.EventHandlers.GroupInviteActionUpdateHandler +{ + public class SignalRHandler : IConsumer + { + private IHubContext _hub; + public SignalRHandler(IHubContext hub) + { + _hub = hub; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + var msg = new HubResponse("Event", new GroupInviteActionUpdateVo + { + Action = @event.Action, + GroupId = @event.GroupId, + InvitedUserId = @event.UserId, + InviteUserId = @event.InviteUserId, + InviteId = @event.InviteId + }); + + await _hub.Clients.Users([@event.UserId.ToString(), @event.InviteUserId.ToString()]) + .SendAsync("ReceiveMessage",msg); + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/GroupInviteHandler/GroupInviteSignalRHandler.cs b/backend/IM_API/Application/EventHandlers/GroupInviteHandler/GroupInviteSignalRHandler.cs index fc49076..f7c2e2f 100644 --- a/backend/IM_API/Application/EventHandlers/GroupInviteHandler/GroupInviteSignalRHandler.cs +++ b/backend/IM_API/Application/EventHandlers/GroupInviteHandler/GroupInviteSignalRHandler.cs @@ -1,26 +1,26 @@ -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Hubs; -using IM_API.VOs.Group; -using MassTransit; -using Microsoft.AspNetCore.SignalR; - -namespace IM_API.Application.EventHandlers.GroupInviteHandler -{ - public class GroupInviteSignalRHandler : IConsumer - { - private readonly IHubContext _hub; - public GroupInviteSignalRHandler(IHubContext hub) - { - _hub = hub; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - var list = @event.Ids.Select(id => id.ToString()).ToArray(); - var msg = new HubResponse("Event", new GroupInviteVo { GroupId = @event.GroupId, UserId = @event.UserId }); - await _hub.Clients.Users(list).SendAsync("ReceiveMessage", msg); - } - } -} +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Hubs; +using IM_API.VOs.Group; +using MassTransit; +using Microsoft.AspNetCore.SignalR; + +namespace IM_API.Application.EventHandlers.GroupInviteHandler +{ + public class GroupInviteSignalRHandler : IConsumer + { + private readonly IHubContext _hub; + public GroupInviteSignalRHandler(IHubContext hub) + { + _hub = hub; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + var list = @event.Ids.Select(id => id.ToString()).ToArray(); + var msg = new HubResponse("Event", new GroupInviteVo { GroupId = @event.GroupId, UserId = @event.UserId }); + await _hub.Clients.Users(list).SendAsync("ReceiveMessage", msg); + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinConversationHandler.cs b/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinConversationHandler.cs index 6992475..4e928f2 100644 --- a/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinConversationHandler.cs +++ b/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinConversationHandler.cs @@ -1,21 +1,21 @@ -using IM_API.Domain.Events; -using IM_API.Interface.Services; -using MassTransit; - -namespace IM_API.Application.EventHandlers.GroupJoinHandler -{ - public class GroupJoinConversationHandler : IConsumer - { - private IConversationService _conversationService; - public GroupJoinConversationHandler(IConversationService conversationService) - { - _conversationService = conversationService; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - await _conversationService.MakeConversationAsync(@event.UserId, @event.GroupId, Models.ChatType.GROUP); - } - } -} +using IM_API.Domain.Events; +using IM_API.Interface.Services; +using MassTransit; + +namespace IM_API.Application.EventHandlers.GroupJoinHandler +{ + public class GroupJoinConversationHandler : IConsumer + { + private IConversationService _conversationService; + public GroupJoinConversationHandler(IConversationService conversationService) + { + _conversationService = conversationService; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + await _conversationService.MakeConversationAsync(@event.UserId, @event.GroupId, Models.ChatType.GROUP); + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinDbHandler.cs b/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinDbHandler.cs index a4ba4d2..7bfaccb 100644 --- a/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinDbHandler.cs +++ b/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinDbHandler.cs @@ -1,22 +1,22 @@ -using IM_API.Domain.Events; -using IM_API.Interface.Services; -using MassTransit; - -namespace IM_API.Application.EventHandlers.GroupJoinHandler -{ - public class GroupJoinDbHandler : IConsumer - { - private readonly IGroupService _groupService; - public GroupJoinDbHandler(IGroupService groupService) - { - _groupService = groupService; - } - - public async Task Consume(ConsumeContext context) - { - await _groupService.MakeGroupMemberAsync(context.Message.UserId, - context.Message.GroupId, context.Message.IsCreated ? - Models.GroupMemberRole.Master : Models.GroupMemberRole.Normal); - } - } -} +using IM_API.Domain.Events; +using IM_API.Interface.Services; +using MassTransit; + +namespace IM_API.Application.EventHandlers.GroupJoinHandler +{ + public class GroupJoinDbHandler : IConsumer + { + private readonly IGroupService _groupService; + public GroupJoinDbHandler(IGroupService groupService) + { + _groupService = groupService; + } + + public async Task Consume(ConsumeContext context) + { + await _groupService.MakeGroupMemberAsync(context.Message.UserId, + context.Message.GroupId, context.Message.IsCreated ? + Models.GroupMemberRole.Master : Models.GroupMemberRole.Normal); + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinSignalrHandler.cs b/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinSignalrHandler.cs index deb7493..05a772d 100644 --- a/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinSignalrHandler.cs +++ b/backend/IM_API/Application/EventHandlers/GroupJoinHandler/GroupJoinSignalrHandler.cs @@ -1,45 +1,45 @@ -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Hubs; -using IM_API.Tools; -using IM_API.VOs.Group; -using MassTransit; -using Microsoft.AspNetCore.SignalR; -using StackExchange.Redis; - -namespace IM_API.Application.EventHandlers.GroupJoinHandler -{ - public class GroupJoinSignalrHandler : IConsumer - { - private readonly IHubContext _hub; - private readonly IDatabase _redis; - public GroupJoinSignalrHandler(IHubContext hub, IConnectionMultiplexer connectionMultiplexer) - { - _hub = hub; - _redis = connectionMultiplexer.GetDatabase(); - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - string stramKey = StreamKeyBuilder.Group(@event.GroupId); - //将用户加入群组通知 - var list = await _redis.SetMembersAsync(RedisKeys.GetConnectionIdKey(@event.UserId.ToString())); - if(list != null && list.Length > 0) - { - var tasks = list.Select(connectionId => - _hub.Groups.AddToGroupAsync(connectionId!, stramKey) - ).ToList(); - - await Task.WhenAll(tasks); - } - //发送通知给群成员 - var msg = new GroupJoinVo - { - GroupId = @event.GroupId, - UserId = @event.UserId - }; - await _hub.Clients.Group(stramKey).SendAsync("ReceiveMessage",new HubResponse("Event",msg)); - } - } -} +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Hubs; +using IM_API.Tools; +using IM_API.VOs.Group; +using MassTransit; +using Microsoft.AspNetCore.SignalR; +using StackExchange.Redis; + +namespace IM_API.Application.EventHandlers.GroupJoinHandler +{ + public class GroupJoinSignalrHandler : IConsumer + { + private readonly IHubContext _hub; + private readonly IDatabase _redis; + public GroupJoinSignalrHandler(IHubContext hub, IConnectionMultiplexer connectionMultiplexer) + { + _hub = hub; + _redis = connectionMultiplexer.GetDatabase(); + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + string stramKey = StreamKeyBuilder.Group(@event.GroupId); + //将用户加入群组通知 + var list = await _redis.SetMembersAsync(RedisKeys.GetConnectionIdKey(@event.UserId.ToString())); + if(list != null && list.Length > 0) + { + var tasks = list.Select(connectionId => + _hub.Groups.AddToGroupAsync(connectionId!, stramKey) + ).ToList(); + + await Task.WhenAll(tasks); + } + //发送通知给群成员 + var msg = new GroupJoinVo + { + GroupId = @event.GroupId, + UserId = @event.UserId + }; + await _hub.Clients.Group(stramKey).SendAsync("ReceiveMessage",new HubResponse("Event",msg)); + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/GroupRequestHandler/GroupRequestSignalRHandler.cs b/backend/IM_API/Application/EventHandlers/GroupRequestHandler/GroupRequestSignalRHandler.cs index 69f0351..29d0454 100644 --- a/backend/IM_API/Application/EventHandlers/GroupRequestHandler/GroupRequestSignalRHandler.cs +++ b/backend/IM_API/Application/EventHandlers/GroupRequestHandler/GroupRequestSignalRHandler.cs @@ -1,17 +1,17 @@ -using IM_API.Domain.Events; -using IM_API.Hubs; -using MassTransit; -using Microsoft.AspNetCore.SignalR; - -namespace IM_API.Application.EventHandlers.GroupRequestHandler -{ - public class GroupRequestSignalRHandler(IHubContext hubContext) : IConsumer - { - private readonly IHubContext _hub = hubContext; - - public async Task Consume(ConsumeContext context) - { - - } - } -} +using IM_API.Domain.Events; +using IM_API.Hubs; +using MassTransit; +using Microsoft.AspNetCore.SignalR; + +namespace IM_API.Application.EventHandlers.GroupRequestHandler +{ + public class GroupRequestSignalRHandler(IHubContext hubContext) : IConsumer + { + private readonly IHubContext _hub = hubContext; + + public async Task Consume(ConsumeContext context) + { + + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/GroupRequestHandler/NextEventHandler.cs b/backend/IM_API/Application/EventHandlers/GroupRequestHandler/NextEventHandler.cs index 8e19129..bd9ee8f 100644 --- a/backend/IM_API/Application/EventHandlers/GroupRequestHandler/NextEventHandler.cs +++ b/backend/IM_API/Application/EventHandlers/GroupRequestHandler/NextEventHandler.cs @@ -1,31 +1,31 @@ -using IM_API.Domain.Events; -using MassTransit; - -namespace IM_API.Application.EventHandlers.GroupRequestHandler -{ - public class NextEventHandler : IConsumer - { - private readonly IPublishEndpoint _endpoint; - public NextEventHandler(IPublishEndpoint endpoint) - { - _endpoint = endpoint; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - if(@event.Action == Models.GroupRequestState.Passed) - { - await _endpoint.Publish(new GroupJoinEvent - { - AggregateId = @event.AggregateId, - OccurredAt = @event.OccurredAt, - EventId = Guid.NewGuid(), - GroupId = @event.GroupId, - OperatorId = @event.OperatorId, - UserId = @event.UserId - }); - } - } - } -} +using IM_API.Domain.Events; +using MassTransit; + +namespace IM_API.Application.EventHandlers.GroupRequestHandler +{ + public class NextEventHandler : IConsumer + { + private readonly IPublishEndpoint _endpoint; + public NextEventHandler(IPublishEndpoint endpoint) + { + _endpoint = endpoint; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + if(@event.Action == Models.GroupRequestState.Passed) + { + await _endpoint.Publish(new GroupJoinEvent + { + AggregateId = @event.AggregateId, + OccurredAt = @event.OccurredAt, + EventId = Guid.NewGuid(), + GroupId = @event.GroupId, + OperatorId = @event.OperatorId, + UserId = @event.UserId + }); + } + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/GroupRequestUpdateHandler/NextEventHandler.cs b/backend/IM_API/Application/EventHandlers/GroupRequestUpdateHandler/NextEventHandler.cs index 4bbcb8e..6dc49e7 100644 --- a/backend/IM_API/Application/EventHandlers/GroupRequestUpdateHandler/NextEventHandler.cs +++ b/backend/IM_API/Application/EventHandlers/GroupRequestUpdateHandler/NextEventHandler.cs @@ -1,31 +1,31 @@ -using IM_API.Domain.Events; -using MassTransit; - -namespace IM_API.Application.EventHandlers.GroupRequestUpdateHandler -{ - public class NextEventHandler : IConsumer - { - private readonly IPublishEndpoint _endpoint; - public NextEventHandler(IPublishEndpoint endpoint) - { - _endpoint = endpoint; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - if(@event.Action == Models.GroupRequestState.Passed) - { - await _endpoint.Publish(new GroupJoinEvent - { - AggregateId = @event.AggregateId, - OccurredAt = @event.OccurredAt, - EventId = Guid.NewGuid(), - GroupId = @event.GroupId, - OperatorId = @event.OperatorId, - UserId = @event.UserId - }); - } - } - } -} +using IM_API.Domain.Events; +using MassTransit; + +namespace IM_API.Application.EventHandlers.GroupRequestUpdateHandler +{ + public class NextEventHandler : IConsumer + { + private readonly IPublishEndpoint _endpoint; + public NextEventHandler(IPublishEndpoint endpoint) + { + _endpoint = endpoint; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + if(@event.Action == Models.GroupRequestState.Passed) + { + await _endpoint.Publish(new GroupJoinEvent + { + AggregateId = @event.AggregateId, + OccurredAt = @event.OccurredAt, + EventId = Guid.NewGuid(), + GroupId = @event.GroupId, + OperatorId = @event.OperatorId, + UserId = @event.UserId + }); + } + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/GroupRequestUpdateHandler/RequestUpdateSignalrHandler.cs b/backend/IM_API/Application/EventHandlers/GroupRequestUpdateHandler/RequestUpdateSignalrHandler.cs index 3692545..3b4e20a 100644 --- a/backend/IM_API/Application/EventHandlers/GroupRequestUpdateHandler/RequestUpdateSignalrHandler.cs +++ b/backend/IM_API/Application/EventHandlers/GroupRequestUpdateHandler/RequestUpdateSignalrHandler.cs @@ -1,29 +1,29 @@ -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Hubs; -using IM_API.VOs.Group; -using MassTransit; -using Microsoft.AspNetCore.SignalR; - -namespace IM_API.Application.EventHandlers.GroupRequestUpdateHandler -{ - public class RequestUpdateSignalrHandler : IConsumer - { - private readonly IHubContext _hub; - public RequestUpdateSignalrHandler(IHubContext hub) - { - _hub = hub; - } - - public async Task Consume(ConsumeContext context) - { - var msg = new HubResponse("Event", new GroupRequestUpdateVo - { - GroupId = context.Message.GroupId, - RequestId = context.Message.RequestId, - UserId = context.Message.UserId - }); - await _hub.Clients.User(context.Message.UserId.ToString()).SendAsync("ReceiveMessage", msg); - } - } -} +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Hubs; +using IM_API.VOs.Group; +using MassTransit; +using Microsoft.AspNetCore.SignalR; + +namespace IM_API.Application.EventHandlers.GroupRequestUpdateHandler +{ + public class RequestUpdateSignalrHandler : IConsumer + { + private readonly IHubContext _hub; + public RequestUpdateSignalrHandler(IHubContext hub) + { + _hub = hub; + } + + public async Task Consume(ConsumeContext context) + { + var msg = new HubResponse("Event", new GroupRequestUpdateVo + { + GroupId = context.Message.GroupId, + RequestId = context.Message.RequestId, + UserId = context.Message.UserId + }); + await _hub.Clients.User(context.Message.UserId.ToString()).SendAsync("ReceiveMessage", msg); + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/ConversationEventHandler.cs b/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/ConversationEventHandler.cs index 60c18da..9a51daf 100644 --- a/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/ConversationEventHandler.cs +++ b/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/ConversationEventHandler.cs @@ -1,66 +1,66 @@ -using AutoMapper; -using IM_API.Application.Interfaces; -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Exceptions; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Services; -using IM_API.Tools; -using MassTransit; -using Microsoft.EntityFrameworkCore; -using Newtonsoft.Json; - -namespace IM_API.Application.EventHandlers.MessageCreatedHandler -{ - public class ConversationEventHandler : IConsumer - { - private readonly IConversationService _conversationService; - private readonly ILogger _logger; - private readonly IUserService _userSerivce; - private readonly IGroupService _groupService; - public ConversationEventHandler( - IConversationService conversationService, - ILogger logger, - IUserService userService, - IGroupService groupService - ) - { - _conversationService = conversationService; - _logger = logger; - _userSerivce = userService; - _groupService = groupService; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - if (@event.ChatType == ChatType.GROUP) - { - var userinfo = await _userSerivce.GetUserInfoAsync(@event.MsgSenderId); - await _groupService.UpdateGroupConversationAsync(new Dtos.Group.GroupUpdateConversationDto - { - GroupId = @event.MsgRecipientId, - LastMessage = @event.MessageContent, - LastSenderName = userinfo.NickName, - LastUpdateTime = @event.MessageCreated, - MaxSequenceId = @event.SequenceId - }); - } - else - { - await _conversationService.UpdateConversationAfterSentAsync(new Dtos.Conversation.UpdateConversationDto - { - LastMessage = @event.MessageContent, - LastSequenceId = @event.SequenceId, - ReceiptId = @event.MsgRecipientId, - SenderId = @event.MsgSenderId, - StreamKey = @event.StreamKey, - DateTime = @event.MessageCreated - }); - } - - } - - } -} +using AutoMapper; +using IM_API.Application.Interfaces; +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Exceptions; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Services; +using IM_API.Tools; +using MassTransit; +using Microsoft.EntityFrameworkCore; +using Newtonsoft.Json; + +namespace IM_API.Application.EventHandlers.MessageCreatedHandler +{ + public class ConversationEventHandler : IConsumer + { + private readonly IConversationService _conversationService; + private readonly ILogger _logger; + private readonly IUserService _userSerivce; + private readonly IGroupService _groupService; + public ConversationEventHandler( + IConversationService conversationService, + ILogger logger, + IUserService userService, + IGroupService groupService + ) + { + _conversationService = conversationService; + _logger = logger; + _userSerivce = userService; + _groupService = groupService; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + if (@event.ChatType == ChatType.GROUP) + { + var userinfo = await _userSerivce.GetUserInfoAsync(@event.MsgSenderId); + await _groupService.UpdateGroupConversationAsync(new Dtos.Group.GroupUpdateConversationDto + { + GroupId = @event.MsgRecipientId, + LastMessage = @event.MessageContent, + LastSenderName = userinfo.NickName, + LastUpdateTime = @event.MessageCreated, + MaxSequenceId = @event.SequenceId + }); + } + else + { + await _conversationService.UpdateConversationAfterSentAsync(new Dtos.Conversation.UpdateConversationDto + { + LastMessage = @event.MessageContent, + LastSequenceId = @event.SequenceId, + ReceiptId = @event.MsgRecipientId, + SenderId = @event.MsgSenderId, + StreamKey = @event.StreamKey, + DateTime = @event.MessageCreated + }); + } + + } + + } +} diff --git a/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/MessageCreatedDbHandler.cs b/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/MessageCreatedDbHandler.cs index d926a81..ee1d19e 100644 --- a/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/MessageCreatedDbHandler.cs +++ b/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/MessageCreatedDbHandler.cs @@ -1,26 +1,26 @@ -using IM_API.Domain.Events; -using MassTransit; -using IM_API.Interface.Services; -using AutoMapper; -using IM_API.Models; - -namespace IM_API.Application.EventHandlers.MessageCreatedHandler -{ - public class MessageCreatedDbHandler : IConsumer - { - private readonly IMessageSevice _messageService; - public readonly IMapper _mapper; - public MessageCreatedDbHandler(IMessageSevice messageSevice, IMapper mapper) - { - _messageService = messageSevice; - _mapper = mapper; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - var msg = _mapper.Map(@event); - await _messageService.MakeMessageAsync(msg); - } - } -} +using IM_API.Domain.Events; +using MassTransit; +using IM_API.Interface.Services; +using AutoMapper; +using IM_API.Models; + +namespace IM_API.Application.EventHandlers.MessageCreatedHandler +{ + public class MessageCreatedDbHandler : IConsumer + { + private readonly IMessageSevice _messageService; + public readonly IMapper _mapper; + public MessageCreatedDbHandler(IMessageSevice messageSevice, IMapper mapper) + { + _messageService = messageSevice; + _mapper = mapper; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + var msg = _mapper.Map(@event); + await _messageService.MakeMessageAsync(msg); + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/SignalREventHandler.cs b/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/SignalREventHandler.cs index 8166f2f..564c3f9 100644 --- a/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/SignalREventHandler.cs +++ b/backend/IM_API/Application/EventHandlers/MessageCreatedHandler/SignalREventHandler.cs @@ -1,48 +1,48 @@ -using AutoMapper; -using IM_API.Application.Interfaces; -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Hubs; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Tools; -using IM_API.VOs.Message; -using MassTransit; -using Microsoft.AspNetCore.SignalR; - -namespace IM_API.Application.EventHandlers.MessageCreatedHandler -{ - public class SignalREventHandler : IConsumer - { - private readonly IHubContext _hub; - private readonly IMapper _mapper; - private readonly IUserService _userService; - public SignalREventHandler(IHubContext hub, IMapper mapper,IUserService userService) - { - _hub = hub; - _mapper = mapper; - _userService = userService; - } - - public async Task Consume(ConsumeContext context) - { - Console.ForegroundColor = ConsoleColor.Red; - var @event = context.Message; - try - { - var entity = _mapper.Map(@event); - var messageBaseVo = _mapper.Map(entity); - var senderinfo = await _userService.GetUserInfoAsync(@event.MsgSenderId); - messageBaseVo.SenderName = senderinfo.NickName; - messageBaseVo.SenderAvatar = senderinfo.Avatar ?? ""; - await _hub.Clients.Group(@event.StreamKey).SendAsync("ReceiveMessage", new HubResponse("Event", messageBaseVo)); - } - catch (Exception ex) - { - Console.WriteLine($"[SignalR] 发送失败: {ex.Message}"); - Console.ResetColor(); - throw; - } - } - } -} +using AutoMapper; +using IM_API.Application.Interfaces; +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Hubs; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Tools; +using IM_API.VOs.Message; +using MassTransit; +using Microsoft.AspNetCore.SignalR; + +namespace IM_API.Application.EventHandlers.MessageCreatedHandler +{ + public class SignalREventHandler : IConsumer + { + private readonly IHubContext _hub; + private readonly IMapper _mapper; + private readonly IUserService _userService; + public SignalREventHandler(IHubContext hub, IMapper mapper,IUserService userService) + { + _hub = hub; + _mapper = mapper; + _userService = userService; + } + + public async Task Consume(ConsumeContext context) + { + Console.ForegroundColor = ConsoleColor.Red; + var @event = context.Message; + try + { + var entity = _mapper.Map(@event); + var messageBaseVo = _mapper.Map(entity); + var senderinfo = await _userService.GetUserInfoAsync(@event.MsgSenderId); + messageBaseVo.SenderName = senderinfo.NickName; + messageBaseVo.SenderAvatar = senderinfo.Avatar ?? ""; + await _hub.Clients.Group(@event.StreamKey).SendAsync("ReceiveMessage", new HubResponse("Event", messageBaseVo)); + } + catch (Exception ex) + { + Console.WriteLine($"[SignalR] 发送失败: {ex.Message}"); + Console.ResetColor(); + throw; + } + } + } +} diff --git a/backend/IM_API/Application/EventHandlers/RequestFriendHandler/RequestFriendSignalRHandler.cs b/backend/IM_API/Application/EventHandlers/RequestFriendHandler/RequestFriendSignalRHandler.cs index e39be9d..743767a 100644 --- a/backend/IM_API/Application/EventHandlers/RequestFriendHandler/RequestFriendSignalRHandler.cs +++ b/backend/IM_API/Application/EventHandlers/RequestFriendHandler/RequestFriendSignalRHandler.cs @@ -1,37 +1,37 @@ -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Dtos.Friend; -using IM_API.Hubs; -using IM_API.Interface.Services; -using MassTransit; -using Microsoft.AspNetCore.SignalR; - -namespace IM_API.Application.EventHandlers.RequestFriendHandler -{ - public class RequestFriendSignalRHandler:IConsumer - { - private readonly IHubContext _hub; - private readonly IUserService _userService; - public RequestFriendSignalRHandler(IHubContext hubContext, IUserService userService) - { - _hub = hubContext; - _userService = userService; - } - - public async Task Consume(ConsumeContext context) - { - var @event = context.Message; - var userInfo = await _userService.GetUserInfoAsync(@event.FromUserId); - var res = new HubResponse("Event", new FriendRequestResDto() - { - RequestUser = @event.FromUserId, - ResponseUser = @event.ToUserId, - Created = DateTime.UtcNow, - Description = @event.Description, - Avatar = userInfo.Avatar, - NickName = userInfo.NickName - }); - await _hub.Clients.User(@event.ToUserId.ToString()).SendAsync("ReceiveMessage", res); - } - } -} +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Dtos.Friend; +using IM_API.Hubs; +using IM_API.Interface.Services; +using MassTransit; +using Microsoft.AspNetCore.SignalR; + +namespace IM_API.Application.EventHandlers.RequestFriendHandler +{ + public class RequestFriendSignalRHandler:IConsumer + { + private readonly IHubContext _hub; + private readonly IUserService _userService; + public RequestFriendSignalRHandler(IHubContext hubContext, IUserService userService) + { + _hub = hubContext; + _userService = userService; + } + + public async Task Consume(ConsumeContext context) + { + var @event = context.Message; + var userInfo = await _userService.GetUserInfoAsync(@event.FromUserId); + var res = new HubResponse("Event", new FriendRequestResDto() + { + RequestUser = @event.FromUserId, + ResponseUser = @event.ToUserId, + Created = DateTime.UtcNow, + Description = @event.Description, + Avatar = userInfo.Avatar, + NickName = userInfo.NickName + }); + await _hub.Clients.User(@event.ToUserId.ToString()).SendAsync("ReceiveMessage", res); + } + } +} diff --git a/backend/IM_API/Application/Interfaces/IEventBus.cs b/backend/IM_API/Application/Interfaces/IEventBus.cs index a2d67eb..839c9e4 100644 --- a/backend/IM_API/Application/Interfaces/IEventBus.cs +++ b/backend/IM_API/Application/Interfaces/IEventBus.cs @@ -1,9 +1,9 @@ -using IM_API.Domain.Interfaces; - -namespace IM_API.Application.Interfaces -{ - public interface IEventBus - { - Task PublishAsync(TEvent @event) where TEvent : IEvent; - } -} +using IM_API.Domain.Interfaces; + +namespace IM_API.Application.Interfaces +{ + public interface IEventBus + { + Task PublishAsync(TEvent @event) where TEvent : IEvent; + } +} diff --git a/backend/IM_API/Application/Interfaces/IEventHandler.cs b/backend/IM_API/Application/Interfaces/IEventHandler.cs index 7c6eb47..d959ea4 100644 --- a/backend/IM_API/Application/Interfaces/IEventHandler.cs +++ b/backend/IM_API/Application/Interfaces/IEventHandler.cs @@ -1,9 +1,9 @@ -using IM_API.Domain.Interfaces; - -namespace IM_API.Application.Interfaces -{ - public interface IEventHandler where TEvent : IEvent - { - Task Handle(TEvent @event); - } -} +using IM_API.Domain.Interfaces; + +namespace IM_API.Application.Interfaces +{ + public interface IEventHandler where TEvent : IEvent + { + Task Handle(TEvent @event); + } +} diff --git a/backend/IM_API/Configs/MQConfig.cs b/backend/IM_API/Configs/MQConfig.cs index bcac5d6..1527f81 100644 --- a/backend/IM_API/Configs/MQConfig.cs +++ b/backend/IM_API/Configs/MQConfig.cs @@ -1,65 +1,65 @@ -using AutoMapper; -using IM_API.Application.EventHandlers.FriendAddHandler; -using IM_API.Application.EventHandlers.GroupInviteActionUpdateHandler; -using IM_API.Application.EventHandlers.GroupInviteHandler; -using IM_API.Application.EventHandlers.GroupJoinHandler; -using IM_API.Application.EventHandlers.GroupRequestHandler; -using IM_API.Application.EventHandlers.GroupRequestUpdateHandler; -using IM_API.Application.EventHandlers.MessageCreatedHandler; -using IM_API.Application.EventHandlers.RequestFriendHandler; -using IM_API.Configs.Options; -using IM_API.Domain.Events; -using MassTransit; -using MySqlConnector; - -namespace IM_API.Configs -{ - public static class MQConfig - { - public static IServiceCollection AddRabbitMQ(this IServiceCollection services, RabbitMQOptions options) - { - services.AddMassTransit(x => - { - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.AddConsumer(); - x.UsingRabbitMq((ctx,cfg) => - { - cfg.Host(options.Host, "/", h => - { - h.Username(options.Username); - h.Password(options.Password); - }); - cfg.ConfigureEndpoints(ctx); - cfg.UseMessageRetry(r => - { - r.Handle(); - r.Handle(); - r.Ignore(); - r.Exponential(5, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(60), TimeSpan.FromSeconds(2)); - }); - cfg.ConfigureEndpoints(ctx); - }); - }); - - - return services; - } - } - - -} +using AutoMapper; +using IM_API.Application.EventHandlers.FriendAddHandler; +using IM_API.Application.EventHandlers.GroupInviteActionUpdateHandler; +using IM_API.Application.EventHandlers.GroupInviteHandler; +using IM_API.Application.EventHandlers.GroupJoinHandler; +using IM_API.Application.EventHandlers.GroupRequestHandler; +using IM_API.Application.EventHandlers.GroupRequestUpdateHandler; +using IM_API.Application.EventHandlers.MessageCreatedHandler; +using IM_API.Application.EventHandlers.RequestFriendHandler; +using IM_API.Configs.Options; +using IM_API.Domain.Events; +using MassTransit; +using MySqlConnector; + +namespace IM_API.Configs +{ + public static class MQConfig + { + public static IServiceCollection AddRabbitMQ(this IServiceCollection services, RabbitMQOptions options) + { + services.AddMassTransit(x => + { + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.AddConsumer(); + x.UsingRabbitMq((ctx,cfg) => + { + cfg.Host(options.Host, "/", h => + { + h.Username(options.Username); + h.Password(options.Password); + }); + cfg.ConfigureEndpoints(ctx); + cfg.UseMessageRetry(r => + { + r.Handle(); + r.Handle(); + r.Ignore(); + r.Exponential(5, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(60), TimeSpan.FromSeconds(2)); + }); + cfg.ConfigureEndpoints(ctx); + }); + }); + + + return services; + } + } + + +} diff --git a/backend/IM_API/Configs/MapperConfig.cs b/backend/IM_API/Configs/MapperConfig.cs index 9ba80cc..def0ff5 100644 --- a/backend/IM_API/Configs/MapperConfig.cs +++ b/backend/IM_API/Configs/MapperConfig.cs @@ -1,176 +1,176 @@ -using AutoMapper; -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Dtos.Auth; -using IM_API.Dtos.Friend; -using IM_API.Dtos.Group; -using IM_API.Dtos.User; -using IM_API.Models; -using IM_API.Tools; -using IM_API.VOs.Conversation; -using IM_API.VOs.Message; - -namespace IM_API.Configs -{ - public class MapperConfig:Profile - { - public MapperConfig() - { - CreateMap(); - //用户信息更新模型转换 - CreateMap() - .ForMember(dest => dest.Updated,opt => opt.MapFrom(src => DateTime.Now)) - .ForAllMembers(opts => opts.Condition((src,dest,srcMember) => srcMember != null)); - //用户注册模型转换 - CreateMap() - .ForMember(dest => dest.Username,opt => opt.MapFrom(src => src.Username)) - .ForMember(dest => dest.Password,opt => opt.MapFrom(src => src.Password)) - .ForMember(dest => dest.Avatar,opt => opt.MapFrom(src => "https://ts1.tc.mm.bing.net/th/id/OIP-C.dl0WpkTP6E2J4FnhDC_jHwAAAA?rs=1&pid=ImgDetMain&o=7&rm=3")) - .ForMember(dest => dest.StatusEnum,opt => opt.MapFrom(src => UserStatus.Normal)) - .ForMember(dest => dest.OnlineStatusEnum,opt => opt.MapFrom(src => UserOnlineStatus.Offline)) - .ForMember(dest => dest.NickName,opt => opt.MapFrom(src => src.NickName??"默认用户")) - .ForMember(dest => dest.Created,opt => opt.MapFrom(src => DateTime.Now)) - .ForMember(dest => dest.IsDeleted,opt => opt.MapFrom(src => 0)) - ; - //好友信息模型转换 - CreateMap() - .ForMember(dest => dest.UserInfo, opt => opt.MapFrom(src => src.FriendNavigation)) - .ForMember(dest => dest.Avatar, opt => opt.MapFrom(src => src.FriendNavigation.Avatar)) - ; - //好友请求通过后新增好友关系 - CreateMap() - .ForMember(dest => dest.UserId , opt => opt.MapFrom(src => src.FromUserId)) - .ForMember(dest => dest.FriendId , opt => opt.MapFrom(src => src.ToUserId)) - .ForMember(dest => dest.StatusEnum , opt =>opt.MapFrom(src => FriendStatus.Pending)) - .ForMember(dest => dest.RemarkName , opt => opt.MapFrom(src => src.RemarkName)) - .ForMember(dest => dest.Created , opt => opt.MapFrom(src => DateTime.Now)) - ; - //发起好友请求转换请求对象 - CreateMap() - .ForMember(dest => dest.RequestUser , opt => opt.MapFrom(src => src.FromUserId)) - .ForMember(dest => dest.ResponseUser , opt => opt.MapFrom(src => src.ToUserId)) - .ForMember(dest => dest.Created , opt => opt.MapFrom(src => DateTime.Now)) - .ForMember(dest => dest.StateEnum , opt => opt.MapFrom(src => FriendRequestState.Pending)) - .ForMember(dest => dest.Description , opt => opt.MapFrom(src => src.Description)) - ; - - CreateMap() - .ForMember(dest => dest.ToUserId, opt => opt.MapFrom(src => src.ResponseUser)) - .ForMember(dest => dest.FromUserId, opt => opt.MapFrom(src => src.RequestUser)) - .ForMember(dest => dest.RemarkName, opt => opt.MapFrom(src => src.RemarkName)) - .ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description)) - ; - //消息模型转换 - CreateMap() - .ForMember(dest => dest.Type , opt => opt.MapFrom(src => src.MsgTypeEnum)) - .ForMember(dest => dest.MsgId , opt => opt.MapFrom(src => src.ClientMsgId)) - .ForMember(dest => dest.SenderId , opt => opt.MapFrom(src => src.Sender)) - .ForMember(dest => dest.ChatType , opt => opt.MapFrom(src => src.ChatTypeEnum)) - .ForMember(dest => dest.ReceiverId, opt => opt.MapFrom(src => src.Recipient)) - .ForMember(dest => dest.Content, opt => opt.MapFrom(src => src.Content)) - .ForMember(dest => dest.TimeStamp, opt => opt.MapFrom(src => src.Created)) - .ForMember(dest => dest.SequenceId, opt => opt.MapFrom(src => src.SequenceId)) - ; - CreateMap() - .ForMember(dest => dest.Sender, opt => opt.MapFrom(src => src.SenderId)) - .ForMember(dest => dest.ChatTypeEnum,opt => opt.MapFrom(src => src.ChatType)) - .ForMember(dest => dest.MsgTypeEnum, opt => opt.MapFrom(src => src.Type)) - .ForMember(dest => dest.Created, opt => opt.MapFrom(src => src.TimeStamp)) - .ForMember(dest => dest.Content, opt => opt.MapFrom(src => src.Content)) - .ForMember(dest => dest.Recipient, opt => opt.MapFrom(src => src.ReceiverId)) - .ForMember(dest => dest.StreamKey, opt => opt.Ignore() ) - .ForMember(dest => dest.StateEnum, opt => opt.MapFrom(src => MessageState.Sent)) - .ForMember(dest => dest.ChatType, opt => opt.Ignore()) - .ForMember(dest => dest.MsgType, opt => opt.Ignore()) - .ForMember(dest => dest.ClientMsgId, opt => opt.MapFrom(src => src.MsgId)) - ; - - //会话对象深拷贝 - CreateMap() - .ForMember(dest => dest.Id, opt => opt.Ignore()) - .ForMember(dest => dest.UserId, opt => opt.Ignore()) - .ForMember(dest => dest.TargetId, opt => opt.Ignore()) - .ForMember(dest => dest.ChatType, opt => opt.Ignore()) - .ForMember(dest => dest.StreamKey, opt => opt.Ignore()) - ; - - //消息对象转消息创建事件对象 - CreateMap() - .ForMember(dest => dest.MessageMsgType, opt => opt.MapFrom(src => src.MsgTypeEnum)) - .ForMember(dest => dest.ChatType, opt => opt.MapFrom(src => src.ChatTypeEnum)) - .ForMember(dest => dest.MessageContent, opt => opt.MapFrom(src => src.Content)) - .ForMember(dest => dest.State, opt => opt.MapFrom(src => src.StateEnum)) - .ForMember(dest => dest.MessageCreated, opt => opt.MapFrom(src => src.Created)) - .ForMember(dest => dest.MsgRecipientId, opt => opt.MapFrom(src => src.Recipient)) - .ForMember(dest => dest.MsgSenderId, opt => opt.MapFrom(src => src.Sender)) - .ForMember(dest => dest.EventId, opt => opt.MapFrom(src => Guid.NewGuid())) - .ForMember(dest => dest.AggregateId, opt => opt.MapFrom(src => src.Sender.ToString())) - .ForMember(dest => dest.OccurredAt , opt => opt.MapFrom(src => DateTime.Now)) - .ForMember(dest => dest.OperatorId, opt => opt.MapFrom(src => src.Sender)) - .ForMember(dest => dest.StreamKey, opt => opt.MapFrom(src => src.StreamKey)) - ; - - CreateMap() - .ForMember(dest => dest.SequenceId, opt => opt.MapFrom(src => src.SequenceId)) - .ForMember(dest => dest.ClientMsgId, opt => opt.MapFrom(src => src.ClientMsgId)) - .ForMember(dest => dest.StateEnum, opt => opt.MapFrom(src => src.State)) - .ForMember(dest => dest.ChatTypeEnum, opt => opt.MapFrom(src => src.ChatType)) - .ForMember(dest => dest.Content, opt => opt.MapFrom(src => src.MessageContent)) - .ForMember(dest => dest.Created, opt => opt.MapFrom(src => src.MessageCreated)) - .ForMember(dest => dest.MsgTypeEnum, opt => opt.MapFrom(src => src.MessageMsgType)) - .ForMember(dest => dest.Recipient, opt => opt.MapFrom(src => src.MsgRecipientId)) - .ForMember(dest => dest.Sender, opt => opt.MapFrom(src => src.MsgSenderId)) - .ForMember(dest => dest.StreamKey, opt => opt.MapFrom(src => src.StreamKey)) - .ForMember(dest => dest.ChatType, opt => opt.Ignore()) - .ForMember(dest => dest.State, opt => opt.Ignore()) - .ForMember(dest => dest.MsgType, opt => opt.Ignore()); - - //消息发送事件转换会话对象 - CreateMap() - //.ForMember(dest => dest.LastReadMessageId, opt => opt.MapFrom(src => src.MessageId)) - .ForMember(dest => dest.LastMessage, opt => opt.MapFrom(src => src.MessageContent)) - .ForMember(dest => dest.ChatType, opt => opt.MapFrom(src => src.ChatType)) - .ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.MsgSenderId)) - .ForMember(dest => dest.TargetId, opt => opt.MapFrom(src => src.MsgRecipientId)) - .ForMember(dest => dest.UnreadCount, opt => opt.MapFrom(src => 0)) - .ForMember(dest => dest.StreamKey, opt => opt.MapFrom(src => src.StreamKey)) - .ForMember(dest => dest.LastMessageTime, opt => opt.MapFrom(src => DateTime.Now)) - ; - - //创建会话对象 - CreateMap() - .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) - .ForMember(dest => dest.LastMessage, opt => opt.MapFrom(src => src.LastMessage)) - .ForMember(dest => dest.LastSequenceId, opt => opt.MapFrom(src => src.LastReadSequenceId)) - .ForMember(dest => dest.ChatType, opt => opt.MapFrom(src => src.ChatTypeEnum)) - .ForMember(dest => dest.DateTime, opt => opt.MapFrom(src => src.LastMessageTime)) - .ForMember(dest => dest.TargetId, opt => opt.MapFrom(src => src.TargetId)) - .ForMember(dest => dest.UnreadCount, opt => opt.MapFrom(src => src.UnreadCount)) - .ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.UserId)); - - CreateMap() - .ForMember(dest => dest.TargetAvatar, opt => opt.MapFrom(src => src.FriendNavigation.Avatar)) - .ForMember(dest => dest.TargetName, opt => opt.MapFrom(src => src.RemarkName)); - - CreateMap() - .ForMember(dest => dest.TargetAvatar, opt => opt.MapFrom(src => src.Avatar)) - .ForMember(dest => dest.TargetName, opt => opt.MapFrom(src => src.Name)); - - - //群模型转换 - CreateMap() - .ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.StatusEnum)) - .ForMember(dest => dest.AllMembersBanned, opt => opt.MapFrom(src => src.AllMembersBannedEnum)) - .ForMember(dest => dest.Auhority, opt => opt.MapFrom(src => src.AuhorityEnum)); - - CreateMap() - .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)) - .ForMember(dest => dest.Avatar, opt => opt.MapFrom(src => src.Avatar)) - .ForMember(dest => dest.Created, opt => opt.MapFrom(src => DateTime.Now)) - .ForMember(dest => dest.AllMembersBannedEnum, opt => opt.MapFrom(src => GroupAllMembersBanned.ALLOWED)) - .ForMember(dest => dest.AuhorityEnum, opt => opt.MapFrom(src => GroupAuhority.REQUIRE_CONSENT)) - .ForMember(dest => dest.StatusEnum, opt => opt.MapFrom(src => GroupStatus.Normal)) - ; - } - } -} +using AutoMapper; +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Dtos.Auth; +using IM_API.Dtos.Friend; +using IM_API.Dtos.Group; +using IM_API.Dtos.User; +using IM_API.Models; +using IM_API.Tools; +using IM_API.VOs.Conversation; +using IM_API.VOs.Message; + +namespace IM_API.Configs +{ + public class MapperConfig:Profile + { + public MapperConfig() + { + CreateMap(); + //用户信息更新模型转换 + CreateMap() + .ForMember(dest => dest.Updated,opt => opt.MapFrom(src => DateTime.Now)) + .ForAllMembers(opts => opts.Condition((src,dest,srcMember) => srcMember != null)); + //用户注册模型转换 + CreateMap() + .ForMember(dest => dest.Username,opt => opt.MapFrom(src => src.Username)) + .ForMember(dest => dest.Password,opt => opt.MapFrom(src => src.Password)) + .ForMember(dest => dest.Avatar,opt => opt.MapFrom(src => "https://ts1.tc.mm.bing.net/th/id/OIP-C.dl0WpkTP6E2J4FnhDC_jHwAAAA?rs=1&pid=ImgDetMain&o=7&rm=3")) + .ForMember(dest => dest.StatusEnum,opt => opt.MapFrom(src => UserStatus.Normal)) + .ForMember(dest => dest.OnlineStatusEnum,opt => opt.MapFrom(src => UserOnlineStatus.Offline)) + .ForMember(dest => dest.NickName,opt => opt.MapFrom(src => src.NickName??"默认用户")) + .ForMember(dest => dest.Created,opt => opt.MapFrom(src => DateTime.Now)) + .ForMember(dest => dest.IsDeleted,opt => opt.MapFrom(src => 0)) + ; + //好友信息模型转换 + CreateMap() + .ForMember(dest => dest.UserInfo, opt => opt.MapFrom(src => src.FriendNavigation)) + .ForMember(dest => dest.Avatar, opt => opt.MapFrom(src => src.FriendNavigation.Avatar)) + ; + //好友请求通过后新增好友关系 + CreateMap() + .ForMember(dest => dest.UserId , opt => opt.MapFrom(src => src.FromUserId)) + .ForMember(dest => dest.FriendId , opt => opt.MapFrom(src => src.ToUserId)) + .ForMember(dest => dest.StatusEnum , opt =>opt.MapFrom(src => FriendStatus.Pending)) + .ForMember(dest => dest.RemarkName , opt => opt.MapFrom(src => src.RemarkName)) + .ForMember(dest => dest.Created , opt => opt.MapFrom(src => DateTime.Now)) + ; + //发起好友请求转换请求对象 + CreateMap() + .ForMember(dest => dest.RequestUser , opt => opt.MapFrom(src => src.FromUserId)) + .ForMember(dest => dest.ResponseUser , opt => opt.MapFrom(src => src.ToUserId)) + .ForMember(dest => dest.Created , opt => opt.MapFrom(src => DateTime.Now)) + .ForMember(dest => dest.StateEnum , opt => opt.MapFrom(src => FriendRequestState.Pending)) + .ForMember(dest => dest.Description , opt => opt.MapFrom(src => src.Description)) + ; + + CreateMap() + .ForMember(dest => dest.ToUserId, opt => opt.MapFrom(src => src.ResponseUser)) + .ForMember(dest => dest.FromUserId, opt => opt.MapFrom(src => src.RequestUser)) + .ForMember(dest => dest.RemarkName, opt => opt.MapFrom(src => src.RemarkName)) + .ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description)) + ; + //消息模型转换 + CreateMap() + .ForMember(dest => dest.Type , opt => opt.MapFrom(src => src.MsgTypeEnum)) + .ForMember(dest => dest.MsgId , opt => opt.MapFrom(src => src.ClientMsgId)) + .ForMember(dest => dest.SenderId , opt => opt.MapFrom(src => src.Sender)) + .ForMember(dest => dest.ChatType , opt => opt.MapFrom(src => src.ChatTypeEnum)) + .ForMember(dest => dest.ReceiverId, opt => opt.MapFrom(src => src.Recipient)) + .ForMember(dest => dest.Content, opt => opt.MapFrom(src => src.Content)) + .ForMember(dest => dest.TimeStamp, opt => opt.MapFrom(src => src.Created)) + .ForMember(dest => dest.SequenceId, opt => opt.MapFrom(src => src.SequenceId)) + ; + CreateMap() + .ForMember(dest => dest.Sender, opt => opt.MapFrom(src => src.SenderId)) + .ForMember(dest => dest.ChatTypeEnum,opt => opt.MapFrom(src => src.ChatType)) + .ForMember(dest => dest.MsgTypeEnum, opt => opt.MapFrom(src => src.Type)) + .ForMember(dest => dest.Created, opt => opt.MapFrom(src => src.TimeStamp)) + .ForMember(dest => dest.Content, opt => opt.MapFrom(src => src.Content)) + .ForMember(dest => dest.Recipient, opt => opt.MapFrom(src => src.ReceiverId)) + .ForMember(dest => dest.StreamKey, opt => opt.Ignore() ) + .ForMember(dest => dest.StateEnum, opt => opt.MapFrom(src => MessageState.Sent)) + .ForMember(dest => dest.ChatType, opt => opt.Ignore()) + .ForMember(dest => dest.MsgType, opt => opt.Ignore()) + .ForMember(dest => dest.ClientMsgId, opt => opt.MapFrom(src => src.MsgId)) + ; + + //会话对象深拷贝 + CreateMap() + .ForMember(dest => dest.Id, opt => opt.Ignore()) + .ForMember(dest => dest.UserId, opt => opt.Ignore()) + .ForMember(dest => dest.TargetId, opt => opt.Ignore()) + .ForMember(dest => dest.ChatType, opt => opt.Ignore()) + .ForMember(dest => dest.StreamKey, opt => opt.Ignore()) + ; + + //消息对象转消息创建事件对象 + CreateMap() + .ForMember(dest => dest.MessageMsgType, opt => opt.MapFrom(src => src.MsgTypeEnum)) + .ForMember(dest => dest.ChatType, opt => opt.MapFrom(src => src.ChatTypeEnum)) + .ForMember(dest => dest.MessageContent, opt => opt.MapFrom(src => src.Content)) + .ForMember(dest => dest.State, opt => opt.MapFrom(src => src.StateEnum)) + .ForMember(dest => dest.MessageCreated, opt => opt.MapFrom(src => src.Created)) + .ForMember(dest => dest.MsgRecipientId, opt => opt.MapFrom(src => src.Recipient)) + .ForMember(dest => dest.MsgSenderId, opt => opt.MapFrom(src => src.Sender)) + .ForMember(dest => dest.EventId, opt => opt.MapFrom(src => Guid.NewGuid())) + .ForMember(dest => dest.AggregateId, opt => opt.MapFrom(src => src.Sender.ToString())) + .ForMember(dest => dest.OccurredAt , opt => opt.MapFrom(src => DateTime.Now)) + .ForMember(dest => dest.OperatorId, opt => opt.MapFrom(src => src.Sender)) + .ForMember(dest => dest.StreamKey, opt => opt.MapFrom(src => src.StreamKey)) + ; + + CreateMap() + .ForMember(dest => dest.SequenceId, opt => opt.MapFrom(src => src.SequenceId)) + .ForMember(dest => dest.ClientMsgId, opt => opt.MapFrom(src => src.ClientMsgId)) + .ForMember(dest => dest.StateEnum, opt => opt.MapFrom(src => src.State)) + .ForMember(dest => dest.ChatTypeEnum, opt => opt.MapFrom(src => src.ChatType)) + .ForMember(dest => dest.Content, opt => opt.MapFrom(src => src.MessageContent)) + .ForMember(dest => dest.Created, opt => opt.MapFrom(src => src.MessageCreated)) + .ForMember(dest => dest.MsgTypeEnum, opt => opt.MapFrom(src => src.MessageMsgType)) + .ForMember(dest => dest.Recipient, opt => opt.MapFrom(src => src.MsgRecipientId)) + .ForMember(dest => dest.Sender, opt => opt.MapFrom(src => src.MsgSenderId)) + .ForMember(dest => dest.StreamKey, opt => opt.MapFrom(src => src.StreamKey)) + .ForMember(dest => dest.ChatType, opt => opt.Ignore()) + .ForMember(dest => dest.State, opt => opt.Ignore()) + .ForMember(dest => dest.MsgType, opt => opt.Ignore()); + + //消息发送事件转换会话对象 + CreateMap() + //.ForMember(dest => dest.LastReadMessageId, opt => opt.MapFrom(src => src.MessageId)) + .ForMember(dest => dest.LastMessage, opt => opt.MapFrom(src => src.MessageContent)) + .ForMember(dest => dest.ChatType, opt => opt.MapFrom(src => src.ChatType)) + .ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.MsgSenderId)) + .ForMember(dest => dest.TargetId, opt => opt.MapFrom(src => src.MsgRecipientId)) + .ForMember(dest => dest.UnreadCount, opt => opt.MapFrom(src => 0)) + .ForMember(dest => dest.StreamKey, opt => opt.MapFrom(src => src.StreamKey)) + .ForMember(dest => dest.LastMessageTime, opt => opt.MapFrom(src => DateTime.Now)) + ; + + //创建会话对象 + CreateMap() + .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) + .ForMember(dest => dest.LastMessage, opt => opt.MapFrom(src => src.LastMessage)) + .ForMember(dest => dest.LastSequenceId, opt => opt.MapFrom(src => src.LastReadSequenceId)) + .ForMember(dest => dest.ChatType, opt => opt.MapFrom(src => src.ChatTypeEnum)) + .ForMember(dest => dest.DateTime, opt => opt.MapFrom(src => src.LastMessageTime)) + .ForMember(dest => dest.TargetId, opt => opt.MapFrom(src => src.TargetId)) + .ForMember(dest => dest.UnreadCount, opt => opt.MapFrom(src => src.UnreadCount)) + .ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.UserId)); + + CreateMap() + .ForMember(dest => dest.TargetAvatar, opt => opt.MapFrom(src => src.FriendNavigation.Avatar)) + .ForMember(dest => dest.TargetName, opt => opt.MapFrom(src => src.RemarkName)); + + CreateMap() + .ForMember(dest => dest.TargetAvatar, opt => opt.MapFrom(src => src.Avatar)) + .ForMember(dest => dest.TargetName, opt => opt.MapFrom(src => src.Name)); + + + //群模型转换 + CreateMap() + .ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.StatusEnum)) + .ForMember(dest => dest.AllMembersBanned, opt => opt.MapFrom(src => src.AllMembersBannedEnum)) + .ForMember(dest => dest.Auhority, opt => opt.MapFrom(src => src.AuhorityEnum)); + + CreateMap() + .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)) + .ForMember(dest => dest.Avatar, opt => opt.MapFrom(src => src.Avatar)) + .ForMember(dest => dest.Created, opt => opt.MapFrom(src => DateTime.Now)) + .ForMember(dest => dest.AllMembersBannedEnum, opt => opt.MapFrom(src => GroupAllMembersBanned.ALLOWED)) + .ForMember(dest => dest.AuhorityEnum, opt => opt.MapFrom(src => GroupAuhority.REQUIRE_CONSENT)) + .ForMember(dest => dest.StatusEnum, opt => opt.MapFrom(src => GroupStatus.Normal)) + ; + } + } +} diff --git a/backend/IM_API/Configs/Options/ConnectionOptions.cs b/backend/IM_API/Configs/Options/ConnectionOptions.cs index 53e1d3b..ac733f8 100644 --- a/backend/IM_API/Configs/Options/ConnectionOptions.cs +++ b/backend/IM_API/Configs/Options/ConnectionOptions.cs @@ -1,8 +1,8 @@ -namespace IM_API.Configs.Options -{ - public class ConnectionOptions - { - public string DefaultConnection { get; set; } - public string Redis { get; set; } - } -} +namespace IM_API.Configs.Options +{ + public class ConnectionOptions + { + public string DefaultConnection { get; set; } + public string Redis { get; set; } + } +} diff --git a/backend/IM_API/Configs/Options/RabbitMQOptions.cs b/backend/IM_API/Configs/Options/RabbitMQOptions.cs index 045cb1d..5556a31 100644 --- a/backend/IM_API/Configs/Options/RabbitMQOptions.cs +++ b/backend/IM_API/Configs/Options/RabbitMQOptions.cs @@ -1,10 +1,10 @@ -namespace IM_API.Configs.Options -{ - public class RabbitMQOptions - { - public string Host { get; set; } - public int Port { get; set; } - public string Username { get; set; } - public string Password { get; set; } - } -} +namespace IM_API.Configs.Options +{ + public class RabbitMQOptions + { + public string Host { get; set; } + public int Port { get; set; } + public string Username { get; set; } + public string Password { get; set; } + } +} diff --git a/backend/IM_API/Configs/ServiceCollectionExtensions.cs b/backend/IM_API/Configs/ServiceCollectionExtensions.cs index 4823103..931a544 100644 --- a/backend/IM_API/Configs/ServiceCollectionExtensions.cs +++ b/backend/IM_API/Configs/ServiceCollectionExtensions.cs @@ -1,64 +1,64 @@ -using IM_API.Application.EventHandlers; -using IM_API.Application.Interfaces; -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Infrastructure.EventBus; -using IM_API.Interface.Services; -using IM_API.Services; -using IM_API.Tools; -using Microsoft.AspNetCore.Http.HttpResults; -using Microsoft.AspNetCore.Mvc; -using RedLockNet; -using RedLockNet.SERedis; -using RedLockNet.SERedis.Configuration; -using StackExchange.Redis; - -namespace IM_API.Configs -{ - public static class ServiceCollectionExtensions - { - public static IServiceCollection AddAllService(this IServiceCollection services, IConfiguration configuration) - { - - services.AddAutoMapper(typeof(MapperConfig)); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var connection = sp.GetRequiredService(); - // 这里可以配置多个 Redis 节点提高安全性,单机运行传一个即可 - return RedLockFactory.Create(new List { new RedLockMultiplexer(connection) }); - }); - return services; - } - public static IServiceCollection AddModelValidation(this IServiceCollection services, IConfiguration configuration) - { - services.Configure(options => - { - options.InvalidModelStateResponseFactory = context => - { - var errors = context.ModelState - .Where(e => e.Value.Errors.Count > 0) - .Select(e => new - { - Field = e.Key, - Message = e.Value.Errors.First().ErrorMessage - }); - Console.WriteLine(errors); - return new BadRequestObjectResult(new BaseResponse(CodeDefine.PARAMETER_ERROR.Code, errors.First().Message)); - }; - }); - return services; - } - - } -} +using IM_API.Application.EventHandlers; +using IM_API.Application.Interfaces; +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Infrastructure.EventBus; +using IM_API.Interface.Services; +using IM_API.Services; +using IM_API.Tools; +using Microsoft.AspNetCore.Http.HttpResults; +using Microsoft.AspNetCore.Mvc; +using RedLockNet; +using RedLockNet.SERedis; +using RedLockNet.SERedis.Configuration; +using StackExchange.Redis; + +namespace IM_API.Configs +{ + public static class ServiceCollectionExtensions + { + public static IServiceCollection AddAllService(this IServiceCollection services, IConfiguration configuration) + { + + services.AddAutoMapper(typeof(MapperConfig)); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(sp => + { + var connection = sp.GetRequiredService(); + // 这里可以配置多个 Redis 节点提高安全性,单机运行传一个即可 + return RedLockFactory.Create(new List { new RedLockMultiplexer(connection) }); + }); + return services; + } + public static IServiceCollection AddModelValidation(this IServiceCollection services, IConfiguration configuration) + { + services.Configure(options => + { + options.InvalidModelStateResponseFactory = context => + { + var errors = context.ModelState + .Where(e => e.Value.Errors.Count > 0) + .Select(e => new + { + Field = e.Key, + Message = e.Value.Errors.First().ErrorMessage + }); + Console.WriteLine(errors); + return new BadRequestObjectResult(new BaseResponse(CodeDefine.PARAMETER_ERROR.Code, errors.First().Message)); + }; + }); + return services; + } + + } +} diff --git a/backend/IM_API/Controllers/AuthController.cs b/backend/IM_API/Controllers/AuthController.cs index 5d17d89..44be0a1 100644 --- a/backend/IM_API/Controllers/AuthController.cs +++ b/backend/IM_API/Controllers/AuthController.cs @@ -1,82 +1,82 @@ -using AutoMapper; -using IM_API.Dtos; -using IM_API.Dtos.Auth; -using IM_API.Dtos.User; -using IM_API.Interface.Services; -using IM_API.Tools; -using IM_API.VOs.Auth; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Http.HttpResults; -using Microsoft.AspNetCore.Mvc; -using System.Diagnostics; - -namespace IM_API.Controllers -{ - [Route("api/[controller]/[action]")] - [ApiController] - public class AuthController : ControllerBase - { - private readonly ILogger _logger; - private readonly IAuthService _authService; - private readonly IUserService _userService; - private readonly IJWTService _jwtService; - private readonly IRefreshTokenService _refreshTokenService; - private readonly IConfiguration _configuration; - private IMapper _mapper; - public AuthController(ILogger logger, IAuthService authService, - IJWTService jwtService, IRefreshTokenService refreshTokenService, - IConfiguration configuration,IUserService userService, - IMapper mapper - ) - { - _logger = logger; - _authService = authService; - _jwtService = jwtService; - _refreshTokenService = refreshTokenService; - _configuration = configuration; - _userService = userService; - _mapper = mapper; - } - [HttpPost] - public async Task Login(LoginRequestDto dto) - { - Stopwatch sw = Stopwatch.StartNew(); - var user = await _authService.LoginAsync(dto); - _logger.LogInformation("服务耗时: {ms}ms", sw.ElapsedMilliseconds); - var userInfo = _mapper.Map(user); - _logger.LogInformation("序列化耗时: {ms}ms", sw.ElapsedMilliseconds); - //生成凭证 - (string token,DateTime expiresAt) = _jwtService.CreateAccessTokenForUser(user.Id,user.Username,"user"); - _logger.LogInformation("Token生成耗时: {ms}ms", sw.ElapsedMilliseconds); - //生成刷新凭证 - - string refreshToken = await _refreshTokenService.CreateRefreshTokenAsync(user.Id); - _logger.LogInformation("RefreshToken生成耗时: {ms}ms", sw.ElapsedMilliseconds); - var res = new BaseResponse(new LoginVo(userInfo,token,refreshToken, expiresAt)); - _logger.LogInformation("总耗时: {ms}ms", sw.ElapsedMilliseconds); - return Ok(res); - } - [HttpPost] - public async Task Register(RegisterRequestDto dto) - { - var userInfo = await _authService.RegisterAsync(dto); - var res = new BaseResponse(userInfo); - return Ok(res); - } - [HttpPost] - [ProducesResponseType(typeof(BaseResponse),StatusCodes.Status200OK)] - public async Task Refresh(RefreshDto dto) - { - (bool ok,int userId) = await _refreshTokenService.ValidateRefreshTokenAsync(dto.refreshToken); - if (!ok) - { - var err = new BaseResponse(CodeDefine.AUTH_FAILED); - return Unauthorized(err); - } - var userinfo = await _userService.GetUserInfoAsync(userId); - (string token,DateTime expiresAt) = _jwtService.CreateAccessTokenForUser(userinfo.Id,userinfo.Username,"user"); - var res = new BaseResponse(new LoginVo(userinfo,token, dto.refreshToken, expiresAt)); - return Ok(res); - } - } -} +using AutoMapper; +using IM_API.Dtos; +using IM_API.Dtos.Auth; +using IM_API.Dtos.User; +using IM_API.Interface.Services; +using IM_API.Tools; +using IM_API.VOs.Auth; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.HttpResults; +using Microsoft.AspNetCore.Mvc; +using System.Diagnostics; + +namespace IM_API.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class AuthController : ControllerBase + { + private readonly ILogger _logger; + private readonly IAuthService _authService; + private readonly IUserService _userService; + private readonly IJWTService _jwtService; + private readonly IRefreshTokenService _refreshTokenService; + private readonly IConfiguration _configuration; + private IMapper _mapper; + public AuthController(ILogger logger, IAuthService authService, + IJWTService jwtService, IRefreshTokenService refreshTokenService, + IConfiguration configuration,IUserService userService, + IMapper mapper + ) + { + _logger = logger; + _authService = authService; + _jwtService = jwtService; + _refreshTokenService = refreshTokenService; + _configuration = configuration; + _userService = userService; + _mapper = mapper; + } + [HttpPost] + public async Task Login(LoginRequestDto dto) + { + Stopwatch sw = Stopwatch.StartNew(); + var user = await _authService.LoginAsync(dto); + _logger.LogInformation("服务耗时: {ms}ms", sw.ElapsedMilliseconds); + var userInfo = _mapper.Map(user); + _logger.LogInformation("序列化耗时: {ms}ms", sw.ElapsedMilliseconds); + //生成凭证 + (string token,DateTime expiresAt) = _jwtService.CreateAccessTokenForUser(user.Id,user.Username,"user"); + _logger.LogInformation("Token生成耗时: {ms}ms", sw.ElapsedMilliseconds); + //生成刷新凭证 + + string refreshToken = await _refreshTokenService.CreateRefreshTokenAsync(user.Id); + _logger.LogInformation("RefreshToken生成耗时: {ms}ms", sw.ElapsedMilliseconds); + var res = new BaseResponse(new LoginVo(userInfo,token,refreshToken, expiresAt)); + _logger.LogInformation("总耗时: {ms}ms", sw.ElapsedMilliseconds); + return Ok(res); + } + [HttpPost] + public async Task Register(RegisterRequestDto dto) + { + var userInfo = await _authService.RegisterAsync(dto); + var res = new BaseResponse(userInfo); + return Ok(res); + } + [HttpPost] + [ProducesResponseType(typeof(BaseResponse),StatusCodes.Status200OK)] + public async Task Refresh(RefreshDto dto) + { + (bool ok,int userId) = await _refreshTokenService.ValidateRefreshTokenAsync(dto.refreshToken); + if (!ok) + { + var err = new BaseResponse(CodeDefine.AUTH_FAILED); + return Unauthorized(err); + } + var userinfo = await _userService.GetUserInfoAsync(userId); + (string token,DateTime expiresAt) = _jwtService.CreateAccessTokenForUser(userinfo.Id,userinfo.Username,"user"); + var res = new BaseResponse(new LoginVo(userinfo,token, dto.refreshToken, expiresAt)); + return Ok(res); + } + } +} diff --git a/backend/IM_API/Controllers/ConversationController.cs b/backend/IM_API/Controllers/ConversationController.cs index 4b72791..c031c4d 100644 --- a/backend/IM_API/Controllers/ConversationController.cs +++ b/backend/IM_API/Controllers/ConversationController.cs @@ -1,56 +1,56 @@ -using IM_API.Dtos; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.VOs.Conversation; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using System.Security.Claims; - -namespace IM_API.Controllers -{ - [Route("api/[controller]/[action]")] - [Authorize] - [ApiController] - public class ConversationController : ControllerBase - { - private readonly IConversationService _conversationSerivice; - private readonly ILogger _logger; - public ConversationController(IConversationService conversationSerivice, ILogger logger) - { - _conversationSerivice = conversationSerivice; - _logger = logger; - } - [HttpGet] - public async Task List() - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - var list = await _conversationSerivice.GetConversationsAsync(int.Parse(userIdStr)); - var res = new BaseResponse>(list); - return Ok(res); - } - [HttpGet] - public async Task Get([FromQuery]int conversationId) - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - var conversation = await _conversationSerivice.GetConversationByIdAsync(int.Parse(userIdStr), conversationId); - var res = new BaseResponse(conversation); - return Ok(res); - } - [HttpPost] - public async Task Clear() - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - await _conversationSerivice.ClearConversationsAsync(int.Parse(userIdStr)); - return Ok(new BaseResponse()); - } - [HttpPost] - public async Task Delete(int cid) - { - await _conversationSerivice.DeleteConversationAsync(cid); - return Ok(new BaseResponse()); - } - - - } -} +using IM_API.Dtos; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.VOs.Conversation; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System.Security.Claims; + +namespace IM_API.Controllers +{ + [Route("api/[controller]/[action]")] + [Authorize] + [ApiController] + public class ConversationController : ControllerBase + { + private readonly IConversationService _conversationSerivice; + private readonly ILogger _logger; + public ConversationController(IConversationService conversationSerivice, ILogger logger) + { + _conversationSerivice = conversationSerivice; + _logger = logger; + } + [HttpGet] + public async Task List() + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + var list = await _conversationSerivice.GetConversationsAsync(int.Parse(userIdStr)); + var res = new BaseResponse>(list); + return Ok(res); + } + [HttpGet] + public async Task Get([FromQuery]int conversationId) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + var conversation = await _conversationSerivice.GetConversationByIdAsync(int.Parse(userIdStr), conversationId); + var res = new BaseResponse(conversation); + return Ok(res); + } + [HttpPost] + public async Task Clear() + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + await _conversationSerivice.ClearConversationsAsync(int.Parse(userIdStr)); + return Ok(new BaseResponse()); + } + [HttpPost] + public async Task Delete(int cid) + { + await _conversationSerivice.DeleteConversationAsync(cid); + return Ok(new BaseResponse()); + } + + + } +} diff --git a/backend/IM_API/Controllers/FriendController.cs b/backend/IM_API/Controllers/FriendController.cs index ea8c53f..972a31a 100644 --- a/backend/IM_API/Controllers/FriendController.cs +++ b/backend/IM_API/Controllers/FriendController.cs @@ -1,117 +1,117 @@ -using IM_API.Dtos; -using IM_API.Dtos.Friend; -using IM_API.Interface.Services; -using IM_API.Models; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using System.Security.Claims; - -namespace IM_API.Controllers -{ - [Authorize] - [Route("api/[controller]/[action]")] - [ApiController] - public class FriendController : ControllerBase - { - private readonly IFriendSerivce _friendService; - private readonly ILogger _logger; - public FriendController(IFriendSerivce friendService, ILogger logger) - { - _friendService = friendService; - _logger = logger; - } - /// - /// 发起好友请求 - /// - /// - /// - [HttpPost] - public async Task Request(FriendRequestDto dto) - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - int userId = int.Parse(userIdStr); - dto.FromUserId = userId; - await _friendService.SendFriendRequestAsync(dto); - var res = new BaseResponse(); - return Ok(res); - } - /// - /// 获取好友请求列表 - /// - /// - /// - /// - /// - /// - [HttpGet] - public async Task Requests(int page,int limit,bool desc) - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - int userId = int.Parse(userIdStr); - var list = await _friendService.GetFriendRequestListAsync(userId,page,limit,desc); - var res = new BaseResponse>(list); - return Ok(res); - } - /// - /// 处理好友请求 - /// - /// - /// - /// - [HttpPost] - public async Task HandleRequest( - [FromQuery]int id, [FromBody]FriendRequestHandleDto dto - ) - { - await _friendService.HandleFriendRequestAsync(new HandleFriendRequestDto() - { - RequestId = id, - RemarkName = dto.RemarkName, - Action = dto.Action - }); - var res = new BaseResponse(); - return Ok(res); - } - /// - /// 获取好友列表 - /// - /// - /// - /// - /// - [HttpGet] - public async Task List(int page,int limit,bool desc) - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - int userId = int.Parse(userIdStr); - var list = await _friendService.GetFriendListAsync(userId,page,limit,desc); - var res = new BaseResponse>(list); - return Ok(res); - } - /// - /// 删除好友 - /// - /// - /// - [HttpPost] - public async Task Delete([FromRoute] int friendId) - { - //TODO: 这里存在安全问题,当用户传入的id与用户无关时也可以删除成功,待修复。 - await _friendService.DeleteFriendAsync(friendId); - return Ok(new BaseResponse()); - } - /// - /// 拉黑好友 - /// - /// - /// - [HttpPost] - public async Task Block([FromRoute] int friendId) - { - //TODO: 这里存在安全问题,当用户传入的id与用户无关时也可以拉黑成功,待修复。 - await _friendService.BlockeFriendAsync(friendId); - return Ok(new BaseResponse()); - } - } -} +using IM_API.Dtos; +using IM_API.Dtos.Friend; +using IM_API.Interface.Services; +using IM_API.Models; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System.Security.Claims; + +namespace IM_API.Controllers +{ + [Authorize] + [Route("api/[controller]/[action]")] + [ApiController] + public class FriendController : ControllerBase + { + private readonly IFriendSerivce _friendService; + private readonly ILogger _logger; + public FriendController(IFriendSerivce friendService, ILogger logger) + { + _friendService = friendService; + _logger = logger; + } + /// + /// 发起好友请求 + /// + /// + /// + [HttpPost] + public async Task Request(FriendRequestDto dto) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + int userId = int.Parse(userIdStr); + dto.FromUserId = userId; + await _friendService.SendFriendRequestAsync(dto); + var res = new BaseResponse(); + return Ok(res); + } + /// + /// 获取好友请求列表 + /// + /// + /// + /// + /// + /// + [HttpGet] + public async Task Requests(int page,int limit,bool desc) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + int userId = int.Parse(userIdStr); + var list = await _friendService.GetFriendRequestListAsync(userId,page,limit,desc); + var res = new BaseResponse>(list); + return Ok(res); + } + /// + /// 处理好友请求 + /// + /// + /// + /// + [HttpPost] + public async Task HandleRequest( + [FromQuery]int id, [FromBody]FriendRequestHandleDto dto + ) + { + await _friendService.HandleFriendRequestAsync(new HandleFriendRequestDto() + { + RequestId = id, + RemarkName = dto.RemarkName, + Action = dto.Action + }); + var res = new BaseResponse(); + return Ok(res); + } + /// + /// 获取好友列表 + /// + /// + /// + /// + /// + [HttpGet] + public async Task List(int page,int limit,bool desc) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + int userId = int.Parse(userIdStr); + var list = await _friendService.GetFriendListAsync(userId,page,limit,desc); + var res = new BaseResponse>(list); + return Ok(res); + } + /// + /// 删除好友 + /// + /// + /// + [HttpPost] + public async Task Delete([FromRoute] int friendId) + { + //TODO: 这里存在安全问题,当用户传入的id与用户无关时也可以删除成功,待修复。 + await _friendService.DeleteFriendAsync(friendId); + return Ok(new BaseResponse()); + } + /// + /// 拉黑好友 + /// + /// + /// + [HttpPost] + public async Task Block([FromRoute] int friendId) + { + //TODO: 这里存在安全问题,当用户传入的id与用户无关时也可以拉黑成功,待修复。 + await _friendService.BlockeFriendAsync(friendId); + return Ok(new BaseResponse()); + } + } +} diff --git a/backend/IM_API/Controllers/GroupController.cs b/backend/IM_API/Controllers/GroupController.cs index 0f7582f..2a084ce 100644 --- a/backend/IM_API/Controllers/GroupController.cs +++ b/backend/IM_API/Controllers/GroupController.cs @@ -1,71 +1,71 @@ -using IM_API.Dtos; -using IM_API.Dtos.Group; -using IM_API.Interface.Services; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using System.Security.Claims; - -namespace IM_API.Controllers -{ - [Authorize] - [Route("api/[controller]/[action]")] - [ApiController] - public class GroupController : ControllerBase - { - private readonly IGroupService _groupService; - private readonly ILogger _logger; - public GroupController(IGroupService groupService, ILogger logger) - { - _groupService = groupService; - _logger = logger; - } - [HttpGet] - [ProducesResponseType(typeof(BaseResponse>) ,StatusCodes.Status200OK)] - public async Task GetGroups(int page = 1, int limit = 100, bool desc = false) - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - var list = await _groupService.GetGroupListAsync(int.Parse(userIdStr), page, limit, desc); - var res = new BaseResponse>(list); - return Ok(res); - } - - [HttpPost] - [ProducesResponseType(typeof(BaseResponse), StatusCodes.Status200OK)] - public async Task CreateGroup([FromBody]GroupCreateDto groupCreateDto) - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - var groupInfo = await _groupService.CreateGroupAsync(int.Parse(userIdStr), groupCreateDto); - var res = new BaseResponse(groupInfo); - return Ok(res); - } - - [HttpPost] - [ProducesResponseType(typeof(BaseResponse), StatusCodes.Status200OK)] - public async Task HandleGroupInvite([FromBody]HandleGroupInviteDto dto) - { - string userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier)!; - await _groupService.HandleGroupInviteAsync(int.Parse(userIdStr), dto); - var res = new BaseResponse(); - return Ok(res); - } - [HttpPost] - [ProducesResponseType(typeof(BaseResponse), StatusCodes.Status200OK)] - public async Task HandleGroupRequest([FromBody]HandleGroupRequestDto dto) - { - string userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - await _groupService.HandleGroupRequestAsync(int.Parse(userIdStr),dto); - var res = new BaseResponse(); - return Ok(res); - } - [HttpPost] - [ProducesResponseType(typeof(BaseResponse), StatusCodes.Status200OK)] - public async Task InviteUser([FromBody]GroupInviteUserDto dto) - { - string userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - await _groupService.InviteUsersAsync(int.Parse(userIdStr), dto.GroupId, dto.Ids); - var res = new BaseResponse(); - return Ok(res); - } - } -} +using IM_API.Dtos; +using IM_API.Dtos.Group; +using IM_API.Interface.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System.Security.Claims; + +namespace IM_API.Controllers +{ + [Authorize] + [Route("api/[controller]/[action]")] + [ApiController] + public class GroupController : ControllerBase + { + private readonly IGroupService _groupService; + private readonly ILogger _logger; + public GroupController(IGroupService groupService, ILogger logger) + { + _groupService = groupService; + _logger = logger; + } + [HttpGet] + [ProducesResponseType(typeof(BaseResponse>) ,StatusCodes.Status200OK)] + public async Task GetGroups(int page = 1, int limit = 100, bool desc = false) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + var list = await _groupService.GetGroupListAsync(int.Parse(userIdStr), page, limit, desc); + var res = new BaseResponse>(list); + return Ok(res); + } + + [HttpPost] + [ProducesResponseType(typeof(BaseResponse), StatusCodes.Status200OK)] + public async Task CreateGroup([FromBody]GroupCreateDto groupCreateDto) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + var groupInfo = await _groupService.CreateGroupAsync(int.Parse(userIdStr), groupCreateDto); + var res = new BaseResponse(groupInfo); + return Ok(res); + } + + [HttpPost] + [ProducesResponseType(typeof(BaseResponse), StatusCodes.Status200OK)] + public async Task HandleGroupInvite([FromBody]HandleGroupInviteDto dto) + { + string userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier)!; + await _groupService.HandleGroupInviteAsync(int.Parse(userIdStr), dto); + var res = new BaseResponse(); + return Ok(res); + } + [HttpPost] + [ProducesResponseType(typeof(BaseResponse), StatusCodes.Status200OK)] + public async Task HandleGroupRequest([FromBody]HandleGroupRequestDto dto) + { + string userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + await _groupService.HandleGroupRequestAsync(int.Parse(userIdStr),dto); + var res = new BaseResponse(); + return Ok(res); + } + [HttpPost] + [ProducesResponseType(typeof(BaseResponse), StatusCodes.Status200OK)] + public async Task InviteUser([FromBody]GroupInviteUserDto dto) + { + string userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + await _groupService.InviteUsersAsync(int.Parse(userIdStr), dto.GroupId, dto.Ids); + var res = new BaseResponse(); + return Ok(res); + } + } +} diff --git a/backend/IM_API/Controllers/MessageController.cs b/backend/IM_API/Controllers/MessageController.cs index be09207..18ec5de 100644 --- a/backend/IM_API/Controllers/MessageController.cs +++ b/backend/IM_API/Controllers/MessageController.cs @@ -1,55 +1,55 @@ -using IM_API.Application.Interfaces; -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Dtos.Message; -using IM_API.Interface.Services; -using IM_API.VOs.Message; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using System.ComponentModel.DataAnnotations; -using System.Security.Claims; - -namespace IM_API.Controllers -{ - [Authorize] - [Route("api/[controller]/[action]")] - [ApiController] - public class MessageController : ControllerBase - { - private readonly IMessageSevice _messageService; - private readonly ILogger _logger; - private readonly IEventBus _eventBus; - public MessageController(IMessageSevice messageService, ILogger logger, IEventBus eventBus) - { - _messageService = messageService; - _logger = logger; - _eventBus = eventBus; - } - [HttpPost] - [ProducesResponseType(typeof(BaseResponse), StatusCodes.Status200OK)] - public async Task SendMessage(MessageBaseDto dto) - { - var userIdstr = User.FindFirstValue(ClaimTypes.NameIdentifier); - MessageBaseVo messageBaseVo = new MessageBaseVo(); - if(dto.ChatType == Models.ChatType.PRIVATE) - { - messageBaseVo = await _messageService.SendPrivateMessageAsync(int.Parse(userIdstr), dto.ReceiverId, dto); - } - else - { - messageBaseVo = await _messageService.SendGroupMessageAsync(int.Parse(userIdstr), dto.ReceiverId, dto); - } - return Ok(new BaseResponse(messageBaseVo)); - } - [HttpGet] - [ProducesResponseType(typeof(BaseResponse>), StatusCodes.Status200OK)] - public async Task GetMessageList([FromQuery]MessageQueryDto dto) - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - var msgList = await _messageService.GetMessagesAsync(int.Parse(userIdStr),dto); - var res = new BaseResponse>(msgList); - return Ok(res); - } - } -} +using IM_API.Application.Interfaces; +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Dtos.Message; +using IM_API.Interface.Services; +using IM_API.VOs.Message; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System.ComponentModel.DataAnnotations; +using System.Security.Claims; + +namespace IM_API.Controllers +{ + [Authorize] + [Route("api/[controller]/[action]")] + [ApiController] + public class MessageController : ControllerBase + { + private readonly IMessageSevice _messageService; + private readonly ILogger _logger; + private readonly IEventBus _eventBus; + public MessageController(IMessageSevice messageService, ILogger logger, IEventBus eventBus) + { + _messageService = messageService; + _logger = logger; + _eventBus = eventBus; + } + [HttpPost] + [ProducesResponseType(typeof(BaseResponse), StatusCodes.Status200OK)] + public async Task SendMessage(MessageBaseDto dto) + { + var userIdstr = User.FindFirstValue(ClaimTypes.NameIdentifier); + MessageBaseVo messageBaseVo = new MessageBaseVo(); + if(dto.ChatType == Models.ChatType.PRIVATE) + { + messageBaseVo = await _messageService.SendPrivateMessageAsync(int.Parse(userIdstr), dto.ReceiverId, dto); + } + else + { + messageBaseVo = await _messageService.SendGroupMessageAsync(int.Parse(userIdstr), dto.ReceiverId, dto); + } + return Ok(new BaseResponse(messageBaseVo)); + } + [HttpGet] + [ProducesResponseType(typeof(BaseResponse>), StatusCodes.Status200OK)] + public async Task GetMessageList([FromQuery]MessageQueryDto dto) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + var msgList = await _messageService.GetMessagesAsync(int.Parse(userIdStr),dto); + var res = new BaseResponse>(msgList); + return Ok(res); + } + } +} diff --git a/backend/IM_API/Controllers/UserController.cs b/backend/IM_API/Controllers/UserController.cs index f4b4c3a..8aad5de 100644 --- a/backend/IM_API/Controllers/UserController.cs +++ b/backend/IM_API/Controllers/UserController.cs @@ -1,114 +1,114 @@ -using IM_API.Dtos; -using IM_API.Dtos.User; -using IM_API.Interface.Services; -using IM_API.Tools; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using System.ComponentModel.DataAnnotations; -using System.IdentityModel.Tokens.Jwt; -using System.Security.Claims; - -namespace IM_API.Controllers -{ - [Authorize] - [Route("api/[controller]/[action]")] - [ApiController] - public class UserController : ControllerBase - { - private readonly IUserService _userService; - private readonly ILogger _logger; - public UserController(IUserService userService, ILogger logger) - { - _userService = userService; - _logger = logger; - } - /// - /// 获取当前用户信息 - /// - /// - [HttpGet] - public async Task Me() - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - int userId = int.Parse(userIdStr); - var userinfo = await _userService.GetUserInfoAsync(userId); - var res = new BaseResponse(userinfo); - return Ok(res); - } - /// - /// 修改用户资料 - /// - /// - /// - [HttpPost] - public async Task Profile(UpdateUserDto dto) - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - int userId = int.Parse(userIdStr); - var userinfo = await _userService.UpdateUserAsync(userId, dto); - var res = new BaseResponse(userinfo); - return Ok(res); - - } - /// - /// ID查询用户 - /// - /// - /// - [HttpGet] - public async Task Find(int userId) - { - var userinfo = await _userService.GetUserInfoAsync(userId); - var res = new BaseResponse(userinfo); - return Ok(res); - } - /// - /// 用户名查询用户 - /// - /// - /// - [HttpGet] - public async Task FindByUsername(string username) - { - var userinfo = await _userService.GetUserInfoByUsernameAsync(username); - var res = new BaseResponse(userinfo); - return Ok(res); - } - /// - /// 重置用户密码 - /// - /// - /// - [HttpPost] - public async Task ResetPassword(PasswordResetDto dto) - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - int userId = int.Parse(userIdStr); - await _userService.ResetPasswordAsync(userId, dto.OldPassword, dto.Password); - return Ok(new BaseResponse()); - } - /// - /// 设置在线状态 - /// - /// - /// - [HttpPost] - public async Task SetOnlineStatus(OnlineStatusSetDto dto) - { - var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); - int userId = int.Parse(userIdStr); - await _userService.UpdateOlineStatusAsync(userId, dto.OnlineStatus); - return Ok(new BaseResponse()); - } - - [HttpPost] - [ProducesResponseType(typeof(BaseResponse>), StatusCodes.Status200OK)] - public async Task GetUserList([FromBody][Required]List ids) - { - var users = await _userService.GetUserInfoListAsync(ids); - var res = new BaseResponse>(users); - return Ok(res); - } - } -} +using IM_API.Dtos; +using IM_API.Dtos.User; +using IM_API.Interface.Services; +using IM_API.Tools; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System.ComponentModel.DataAnnotations; +using System.IdentityModel.Tokens.Jwt; +using System.Security.Claims; + +namespace IM_API.Controllers +{ + [Authorize] + [Route("api/[controller]/[action]")] + [ApiController] + public class UserController : ControllerBase + { + private readonly IUserService _userService; + private readonly ILogger _logger; + public UserController(IUserService userService, ILogger logger) + { + _userService = userService; + _logger = logger; + } + /// + /// 获取当前用户信息 + /// + /// + [HttpGet] + public async Task Me() + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + int userId = int.Parse(userIdStr); + var userinfo = await _userService.GetUserInfoAsync(userId); + var res = new BaseResponse(userinfo); + return Ok(res); + } + /// + /// 修改用户资料 + /// + /// + /// + [HttpPost] + public async Task Profile(UpdateUserDto dto) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + int userId = int.Parse(userIdStr); + var userinfo = await _userService.UpdateUserAsync(userId, dto); + var res = new BaseResponse(userinfo); + return Ok(res); + + } + /// + /// ID查询用户 + /// + /// + /// + [HttpGet] + public async Task Find(int userId) + { + var userinfo = await _userService.GetUserInfoAsync(userId); + var res = new BaseResponse(userinfo); + return Ok(res); + } + /// + /// 用户名查询用户 + /// + /// + /// + [HttpGet] + public async Task FindByUsername(string username) + { + var userinfo = await _userService.GetUserInfoByUsernameAsync(username); + var res = new BaseResponse(userinfo); + return Ok(res); + } + /// + /// 重置用户密码 + /// + /// + /// + [HttpPost] + public async Task ResetPassword(PasswordResetDto dto) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + int userId = int.Parse(userIdStr); + await _userService.ResetPasswordAsync(userId, dto.OldPassword, dto.Password); + return Ok(new BaseResponse()); + } + /// + /// 设置在线状态 + /// + /// + /// + [HttpPost] + public async Task SetOnlineStatus(OnlineStatusSetDto dto) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + int userId = int.Parse(userIdStr); + await _userService.UpdateOlineStatusAsync(userId, dto.OnlineStatus); + return Ok(new BaseResponse()); + } + + [HttpPost] + [ProducesResponseType(typeof(BaseResponse>), StatusCodes.Status200OK)] + public async Task GetUserList([FromBody][Required]List ids) + { + var users = await _userService.GetUserInfoListAsync(ids); + var res = new BaseResponse>(users); + return Ok(res); + } + } +} diff --git a/backend/IM_API/Dockerfile b/backend/IM_API/Dockerfile index 3d03d53..06be2ad 100644 --- a/backend/IM_API/Dockerfile +++ b/backend/IM_API/Dockerfile @@ -1,30 +1,30 @@ -# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。 - -# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时 -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base -USER $APP_UID -WORKDIR /app -EXPOSE 8080 -EXPOSE 8081 - - -# 此阶段用于生成服务项目 -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build -ARG BUILD_CONFIGURATION=Release -WORKDIR /src -COPY ["IM_API.csproj", "."] -RUN dotnet restore "./IM_API.csproj" -COPY . . -WORKDIR "/src/." -RUN dotnet build "./IM_API.csproj" -c $BUILD_CONFIGURATION -o /app/build - -# 此阶段用于发布要复制到最终阶段的服务项目 -FROM build AS publish -ARG BUILD_CONFIGURATION=Release -RUN dotnet publish "./IM_API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false - -# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值) -FROM base AS final -WORKDIR /app -COPY --from=publish /app/publish . +# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。 + +# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时 +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +USER $APP_UID +WORKDIR /app +EXPOSE 8080 +EXPOSE 8081 + + +# 此阶段用于生成服务项目 +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["IM_API.csproj", "."] +RUN dotnet restore "./IM_API.csproj" +COPY . . +WORKDIR "/src/." +RUN dotnet build "./IM_API.csproj" -c $BUILD_CONFIGURATION -o /app/build + +# 此阶段用于发布要复制到最终阶段的服务项目 +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./IM_API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + +# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值) +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "IM_API.dll"] \ No newline at end of file diff --git a/backend/IM_API/Domain/Events/DomainEvent.cs b/backend/IM_API/Domain/Events/DomainEvent.cs index 3f2b8df..52ef606 100644 --- a/backend/IM_API/Domain/Events/DomainEvent.cs +++ b/backend/IM_API/Domain/Events/DomainEvent.cs @@ -1,13 +1,13 @@ -using IM_API.Domain.Interfaces; - -namespace IM_API.Domain.Events -{ - public abstract record DomainEvent: IEvent - { - public Guid EventId { get; init; } = Guid.NewGuid(); - public DateTimeOffset OccurredAt { get; init; } = DateTime.Now; - public long OperatorId { get; init; } - public string AggregateId { get; init; } = ""; - public abstract string EventType { get; } - } -} +using IM_API.Domain.Interfaces; + +namespace IM_API.Domain.Events +{ + public abstract record DomainEvent: IEvent + { + public Guid EventId { get; init; } = Guid.NewGuid(); + public DateTimeOffset OccurredAt { get; init; } = DateTime.Now; + public long OperatorId { get; init; } + public string AggregateId { get; init; } = ""; + public abstract string EventType { get; } + } +} diff --git a/backend/IM_API/Domain/Events/FriendAddEvent.cs b/backend/IM_API/Domain/Events/FriendAddEvent.cs index 6724f6c..cc834b1 100644 --- a/backend/IM_API/Domain/Events/FriendAddEvent.cs +++ b/backend/IM_API/Domain/Events/FriendAddEvent.cs @@ -1,25 +1,25 @@ -using IM_API.Dtos.Friend; - -namespace IM_API.Domain.Events -{ - public record FriendAddEvent:DomainEvent - { - public override string EventType => "IM.FRIENDS_FRIEND_ADD"; - /// - /// 发起请求用户 - /// - public int RequestUserId { get; init; } - public string? requestUserRemarkname { get; init; } - /// - /// 接受请求用户 - /// - public int ResponseUserId { get; init; } - - public FriendRequestDto RequestInfo { get; init; } - /// - /// 好友关系创建时间 - /// - public DateTimeOffset Created { get; init; } - - } -} +using IM_API.Dtos.Friend; + +namespace IM_API.Domain.Events +{ + public record FriendAddEvent:DomainEvent + { + public override string EventType => "IM.FRIENDS_FRIEND_ADD"; + /// + /// 发起请求用户 + /// + public int RequestUserId { get; init; } + public string? requestUserRemarkname { get; init; } + /// + /// 接受请求用户 + /// + public int ResponseUserId { get; init; } + + public FriendRequestDto RequestInfo { get; init; } + /// + /// 好友关系创建时间 + /// + public DateTimeOffset Created { get; init; } + + } +} diff --git a/backend/IM_API/Domain/Events/GroupInviteActionUpdateEvent.cs b/backend/IM_API/Domain/Events/GroupInviteActionUpdateEvent.cs index 3368dfe..1b1deac 100644 --- a/backend/IM_API/Domain/Events/GroupInviteActionUpdateEvent.cs +++ b/backend/IM_API/Domain/Events/GroupInviteActionUpdateEvent.cs @@ -1,14 +1,14 @@ -using IM_API.Models; - -namespace IM_API.Domain.Events -{ - public record GroupInviteActionUpdateEvent : DomainEvent - { - public override string EventType => "IM.GROUPS_INVITE_UPDATE"; - public int UserId { get; set; } - public int InviteUserId { get; set; } - public int InviteId { get; set; } - public int GroupId { get; set; } - public GroupInviteState Action { get; set; } - } -} +using IM_API.Models; + +namespace IM_API.Domain.Events +{ + public record GroupInviteActionUpdateEvent : DomainEvent + { + public override string EventType => "IM.GROUPS_INVITE_UPDATE"; + public int UserId { get; set; } + public int InviteUserId { get; set; } + public int InviteId { get; set; } + public int GroupId { get; set; } + public GroupInviteState Action { get; set; } + } +} diff --git a/backend/IM_API/Domain/Events/GroupInviteEvent.cs b/backend/IM_API/Domain/Events/GroupInviteEvent.cs index 3b2ebde..6822875 100644 --- a/backend/IM_API/Domain/Events/GroupInviteEvent.cs +++ b/backend/IM_API/Domain/Events/GroupInviteEvent.cs @@ -1,10 +1,10 @@ -namespace IM_API.Domain.Events -{ - public record GroupInviteEvent : DomainEvent - { - public override string EventType => "IM.GROUPS_INVITE_ADD"; - public required List Ids { get; init; } - public int GroupId { get; init; } - public int UserId { get; init; } - } -} +namespace IM_API.Domain.Events +{ + public record GroupInviteEvent : DomainEvent + { + public override string EventType => "IM.GROUPS_INVITE_ADD"; + public required List Ids { get; init; } + public int GroupId { get; init; } + public int UserId { get; init; } + } +} diff --git a/backend/IM_API/Domain/Events/GroupJoinEvent.cs b/backend/IM_API/Domain/Events/GroupJoinEvent.cs index a73cc3c..4358bb0 100644 --- a/backend/IM_API/Domain/Events/GroupJoinEvent.cs +++ b/backend/IM_API/Domain/Events/GroupJoinEvent.cs @@ -1,10 +1,10 @@ -namespace IM_API.Domain.Events -{ - public record GroupJoinEvent : DomainEvent - { - public override string EventType => "IM.GROUPS_MEMBER_ADD"; - public int UserId { get; set; } - public int GroupId { get; set; } - public bool IsCreated { get; set; } = false; - } -} +namespace IM_API.Domain.Events +{ + public record GroupJoinEvent : DomainEvent + { + public override string EventType => "IM.GROUPS_MEMBER_ADD"; + public int UserId { get; set; } + public int GroupId { get; set; } + public bool IsCreated { get; set; } = false; + } +} diff --git a/backend/IM_API/Domain/Events/GroupRequestEvent.cs b/backend/IM_API/Domain/Events/GroupRequestEvent.cs index ade919d..4ed97a7 100644 --- a/backend/IM_API/Domain/Events/GroupRequestEvent.cs +++ b/backend/IM_API/Domain/Events/GroupRequestEvent.cs @@ -1,15 +1,15 @@ -using IM_API.Dtos.Group; -using IM_API.Models; - -namespace IM_API.Domain.Events -{ - public record GroupRequestEvent : DomainEvent - { - public override string EventType => "IM.GROUPS_GROUP_REQUEST"; - public int GroupId { get; init; } - public int UserId { get; set; } - public string Description { get; set; } - public GroupRequestState Action { get; set; } - - } -} +using IM_API.Dtos.Group; +using IM_API.Models; + +namespace IM_API.Domain.Events +{ + public record GroupRequestEvent : DomainEvent + { + public override string EventType => "IM.GROUPS_GROUP_REQUEST"; + public int GroupId { get; init; } + public int UserId { get; set; } + public string Description { get; set; } + public GroupRequestState Action { get; set; } + + } +} diff --git a/backend/IM_API/Domain/Events/GroupRequestUpdateEvent.cs b/backend/IM_API/Domain/Events/GroupRequestUpdateEvent.cs index 579dbda..60d535b 100644 --- a/backend/IM_API/Domain/Events/GroupRequestUpdateEvent.cs +++ b/backend/IM_API/Domain/Events/GroupRequestUpdateEvent.cs @@ -1,14 +1,14 @@ -using IM_API.Models; - -namespace IM_API.Domain.Events -{ - public record GroupRequestUpdateEvent : DomainEvent - { - public override string EventType => "IM.GROUPS_REQUEST_UPDATE"; - public int UserId { get; set; } - public int GroupId { get; set; } - public int AdminUserId { get; set; } - public int RequestId { get; set; } - public GroupRequestState Action { get; set; } - } -} +using IM_API.Models; + +namespace IM_API.Domain.Events +{ + public record GroupRequestUpdateEvent : DomainEvent + { + public override string EventType => "IM.GROUPS_REQUEST_UPDATE"; + public int UserId { get; set; } + public int GroupId { get; set; } + public int AdminUserId { get; set; } + public int RequestId { get; set; } + public GroupRequestState Action { get; set; } + } +} diff --git a/backend/IM_API/Domain/Events/MessageCreatedEvent.cs b/backend/IM_API/Domain/Events/MessageCreatedEvent.cs index b35e1c0..d43c310 100644 --- a/backend/IM_API/Domain/Events/MessageCreatedEvent.cs +++ b/backend/IM_API/Domain/Events/MessageCreatedEvent.cs @@ -1,23 +1,23 @@ -using IM_API.Dtos; -using IM_API.Models; - -namespace IM_API.Domain.Events -{ - public record MessageCreatedEvent : DomainEvent - { - public override string EventType => "IM.MESSAGE.MESSAGE_CREATED"; - public ChatType ChatType { get; set; } - public MessageMsgType MessageMsgType { get; set; } - public long SequenceId { get; set; } - public string MessageContent { get; set; } - public int MsgSenderId { get; set; } - public int MsgRecipientId { get; set; } - public MessageState State { get; set; } - public DateTimeOffset MessageCreated { get; set; } - public string StreamKey { get; set; } - public Guid ClientMsgId { get; set; } - - - - } -} +using IM_API.Dtos; +using IM_API.Models; + +namespace IM_API.Domain.Events +{ + public record MessageCreatedEvent : DomainEvent + { + public override string EventType => "IM.MESSAGE.MESSAGE_CREATED"; + public ChatType ChatType { get; set; } + public MessageMsgType MessageMsgType { get; set; } + public long SequenceId { get; set; } + public string MessageContent { get; set; } + public int MsgSenderId { get; set; } + public int MsgRecipientId { get; set; } + public MessageState State { get; set; } + public DateTimeOffset MessageCreated { get; set; } + public string StreamKey { get; set; } + public Guid ClientMsgId { get; set; } + + + + } +} diff --git a/backend/IM_API/Domain/Events/RequestFriendEvent.cs b/backend/IM_API/Domain/Events/RequestFriendEvent.cs index 62a80ce..7f9f00c 100644 --- a/backend/IM_API/Domain/Events/RequestFriendEvent.cs +++ b/backend/IM_API/Domain/Events/RequestFriendEvent.cs @@ -1,10 +1,10 @@ -namespace IM_API.Domain.Events -{ - public record RequestFriendEvent : DomainEvent - { - public override string EventType => "IM.FRIENDS_FRIEND_REQUEST"; - public int FromUserId { get; init; } - public int ToUserId { get; init; } - public string Description { get; init; } - } -} +namespace IM_API.Domain.Events +{ + public record RequestFriendEvent : DomainEvent + { + public override string EventType => "IM.FRIENDS_FRIEND_REQUEST"; + public int FromUserId { get; init; } + public int ToUserId { get; init; } + public string Description { get; init; } + } +} diff --git a/backend/IM_API/Domain/Interfaces/IEvent.cs b/backend/IM_API/Domain/Interfaces/IEvent.cs index d3fc5a3..2f5a36b 100644 --- a/backend/IM_API/Domain/Interfaces/IEvent.cs +++ b/backend/IM_API/Domain/Interfaces/IEvent.cs @@ -1,6 +1,6 @@ -namespace IM_API.Domain.Interfaces -{ - public interface IEvent - { - } -} +namespace IM_API.Domain.Interfaces +{ + public interface IEvent + { + } +} diff --git a/backend/IM_API/Dtos/Auth/AuthDto.cs b/backend/IM_API/Dtos/Auth/AuthDto.cs index 27b95a7..41ba716 100644 --- a/backend/IM_API/Dtos/Auth/AuthDto.cs +++ b/backend/IM_API/Dtos/Auth/AuthDto.cs @@ -1,4 +1,4 @@ -namespace IM_API.Dtos.Auth -{ - public record RefreshDto(string refreshToken); -} +namespace IM_API.Dtos.Auth +{ + public record RefreshDto(string refreshToken); +} diff --git a/backend/IM_API/Dtos/Auth/LoginRequestDto.cs b/backend/IM_API/Dtos/Auth/LoginRequestDto.cs index f4d7e0f..a559737 100644 --- a/backend/IM_API/Dtos/Auth/LoginRequestDto.cs +++ b/backend/IM_API/Dtos/Auth/LoginRequestDto.cs @@ -1,17 +1,17 @@ -using IM_API.Tools; -using System.ComponentModel.DataAnnotations; - -namespace IM_API.Dtos.Auth -{ - public class LoginRequestDto - { - [Required(ErrorMessage = "用户名不能为空")] - [StringLength(20, ErrorMessage = "用户名不能超过20字符")] - [RegularExpression(@"^[A-Za-z0-9]+$",ErrorMessage = "用户名只能为英文或数字")] - public string Username { get; set; } - - [Required(ErrorMessage = "密码不能为空")] - [StringLength(50, ErrorMessage = "密码不能超过50字符")] - public string Password { get; set; } - } -} +using IM_API.Tools; +using System.ComponentModel.DataAnnotations; + +namespace IM_API.Dtos.Auth +{ + public class LoginRequestDto + { + [Required(ErrorMessage = "用户名不能为空")] + [StringLength(20, ErrorMessage = "用户名不能超过20字符")] + [RegularExpression(@"^[A-Za-z0-9]+$",ErrorMessage = "用户名只能为英文或数字")] + public string Username { get; set; } + + [Required(ErrorMessage = "密码不能为空")] + [StringLength(50, ErrorMessage = "密码不能超过50字符")] + public string Password { get; set; } + } +} diff --git a/backend/IM_API/Dtos/Auth/RegisterRequestDto.cs b/backend/IM_API/Dtos/Auth/RegisterRequestDto.cs index c32dd87..0499f1a 100644 --- a/backend/IM_API/Dtos/Auth/RegisterRequestDto.cs +++ b/backend/IM_API/Dtos/Auth/RegisterRequestDto.cs @@ -1,19 +1,19 @@ -using System.ComponentModel.DataAnnotations; - -namespace IM_API.Dtos.Auth -{ - public class RegisterRequestDto - { - [Required(ErrorMessage = "用户名不能为空")] - [MaxLength(20, ErrorMessage = "用户名不能超过20字符")] - [RegularExpression(@"^[A-Za-z0-9]+$", ErrorMessage = "用户名只能为英文或数字")] - public string Username { get; set; } - [Required(ErrorMessage = "密码不能为空")] - [MaxLength(50, ErrorMessage = "密码不能超过50字符")] - public string Password { get; set; } - [Required(ErrorMessage = "昵称不能为空")] - [MaxLength(20, ErrorMessage = "昵称不能超过20字符")] - - public string? NickName { get; set; } - } -} +using System.ComponentModel.DataAnnotations; + +namespace IM_API.Dtos.Auth +{ + public class RegisterRequestDto + { + [Required(ErrorMessage = "用户名不能为空")] + [MaxLength(20, ErrorMessage = "用户名不能超过20字符")] + [RegularExpression(@"^[A-Za-z0-9]+$", ErrorMessage = "用户名只能为英文或数字")] + public string Username { get; set; } + [Required(ErrorMessage = "密码不能为空")] + [MaxLength(50, ErrorMessage = "密码不能超过50字符")] + public string Password { get; set; } + [Required(ErrorMessage = "昵称不能为空")] + [MaxLength(20, ErrorMessage = "昵称不能超过20字符")] + + public string? NickName { get; set; } + } +} diff --git a/backend/IM_API/Dtos/BaseResponse.cs b/backend/IM_API/Dtos/BaseResponse.cs index fb34f0f..53fc5cd 100644 --- a/backend/IM_API/Dtos/BaseResponse.cs +++ b/backend/IM_API/Dtos/BaseResponse.cs @@ -1,82 +1,82 @@ -using IM_API.Tools; - -namespace IM_API.Dtos -{ - public class BaseResponse - { - //响应状态码 - public int Code { get; set; } - //响应消息 - public string Message { get; set; } - //响应数据 - public T? Data { get; set; } - /// - /// 默认成功响应返回 - /// - /// - /// - public BaseResponse(string msg,T data) - { - this.Code = 0; - this.Message = msg; - this.Data = data; - } - /// - /// 默认成功响应返回仅数据 - /// - /// - public BaseResponse(T data) - { - this.Code = CodeDefine.SUCCESS.Code; - this.Message = CodeDefine.SUCCESS.Message; - this.Data = data; - } - /// - /// 默认成功响应返回,不带数据 - /// - /// - /// - public BaseResponse(string msg) - { - this.Code = CodeDefine.SUCCESS.Code; - this.Message = msg; - } - /// - /// 非成功响应且带数据 - /// - /// - /// - /// - public BaseResponse(int code, string message, T? data) - { - Code = code; - Message = message; - Data = data; - } - /// - /// 非成功响应且不带数据 - /// - /// - /// - /// - public BaseResponse(int code, string message) - { - Code = code; - Message = message; - } - /// - /// 接受codedefine对象 - /// - /// - public BaseResponse(CodeDefine codeDefine) - { - this.Code = codeDefine.Code; - this.Message = codeDefine.Message; - } - public BaseResponse() - { - this.Code = CodeDefine.SUCCESS.Code; - this.Message = CodeDefine.SUCCESS.Message; - } - } -} +using IM_API.Tools; + +namespace IM_API.Dtos +{ + public class BaseResponse + { + //响应状态码 + public int Code { get; set; } + //响应消息 + public string Message { get; set; } + //响应数据 + public T? Data { get; set; } + /// + /// 默认成功响应返回 + /// + /// + /// + public BaseResponse(string msg,T data) + { + this.Code = 0; + this.Message = msg; + this.Data = data; + } + /// + /// 默认成功响应返回仅数据 + /// + /// + public BaseResponse(T data) + { + this.Code = CodeDefine.SUCCESS.Code; + this.Message = CodeDefine.SUCCESS.Message; + this.Data = data; + } + /// + /// 默认成功响应返回,不带数据 + /// + /// + /// + public BaseResponse(string msg) + { + this.Code = CodeDefine.SUCCESS.Code; + this.Message = msg; + } + /// + /// 非成功响应且带数据 + /// + /// + /// + /// + public BaseResponse(int code, string message, T? data) + { + Code = code; + Message = message; + Data = data; + } + /// + /// 非成功响应且不带数据 + /// + /// + /// + /// + public BaseResponse(int code, string message) + { + Code = code; + Message = message; + } + /// + /// 接受codedefine对象 + /// + /// + public BaseResponse(CodeDefine codeDefine) + { + this.Code = codeDefine.Code; + this.Message = codeDefine.Message; + } + public BaseResponse() + { + this.Code = CodeDefine.SUCCESS.Code; + this.Message = CodeDefine.SUCCESS.Message; + } + } +} diff --git a/backend/IM_API/Dtos/Conversation/ClearConversationsDto.cs b/backend/IM_API/Dtos/Conversation/ClearConversationsDto.cs index fe1067d..30ef2e0 100644 --- a/backend/IM_API/Dtos/Conversation/ClearConversationsDto.cs +++ b/backend/IM_API/Dtos/Conversation/ClearConversationsDto.cs @@ -1,26 +1,26 @@ -namespace IM_API.Dtos.Conversation -{ - public class ClearConversationsDto - { - public int UserId { get; set; } - /// - /// 聊天类型 - /// - public MsgChatType ChatType { get; set; } - /// - /// 目标ID,聊天类型为群则为群id,私聊为用户id - /// - public int TargetId { get; set; } - } - public enum MsgChatType - { - /// - /// 私聊 - /// - single = 0, - /// - /// 私聊 - /// - group = 1 - } -} +namespace IM_API.Dtos.Conversation +{ + public class ClearConversationsDto + { + public int UserId { get; set; } + /// + /// 聊天类型 + /// + public MsgChatType ChatType { get; set; } + /// + /// 目标ID,聊天类型为群则为群id,私聊为用户id + /// + public int TargetId { get; set; } + } + public enum MsgChatType + { + /// + /// 私聊 + /// + single = 0, + /// + /// 私聊 + /// + group = 1 + } +} diff --git a/backend/IM_API/Dtos/Conversation/UpdateConversationDto.cs b/backend/IM_API/Dtos/Conversation/UpdateConversationDto.cs index 8313a12..e4a740f 100644 --- a/backend/IM_API/Dtos/Conversation/UpdateConversationDto.cs +++ b/backend/IM_API/Dtos/Conversation/UpdateConversationDto.cs @@ -1,12 +1,12 @@ -namespace IM_API.Dtos.Conversation -{ - public class UpdateConversationDto - { - public string StreamKey { get; set; } - public int SenderId { get; set; } - public int ReceiptId { get; set; } - public string LastMessage { get; set; } - public long LastSequenceId { get; set; } - public DateTimeOffset DateTime { get; set; } - } -} +namespace IM_API.Dtos.Conversation +{ + public class UpdateConversationDto + { + public string StreamKey { get; set; } + public int SenderId { get; set; } + public int ReceiptId { get; set; } + public string LastMessage { get; set; } + public long LastSequenceId { get; set; } + public DateTimeOffset DateTime { get; set; } + } +} diff --git a/backend/IM_API/Dtos/Friend/FriendDto.cs b/backend/IM_API/Dtos/Friend/FriendDto.cs index f0d5269..3c9f476 100644 --- a/backend/IM_API/Dtos/Friend/FriendDto.cs +++ b/backend/IM_API/Dtos/Friend/FriendDto.cs @@ -1,33 +1,33 @@ -using IM_API.Dtos.User; -using IM_API.Models; -using System.ComponentModel.DataAnnotations; - -namespace IM_API.Dtos.Friend -{ - public record FriendInfoDto - { - public int Id { get; init; } - - public int UserId { get; init; } - - public int FriendId { get; init; } - - public FriendStatus StatusEnum { get; init; } - - public DateTimeOffset Created { get; init; } - - public string RemarkName { get; init; } = string.Empty; - - public string? Avatar { get; init; } - public UserInfoDto UserInfo { get; init; } - } - - public record FriendRequestHandleDto - { - [Required(ErrorMessage = "操作必填")] - public HandleFriendRequestAction Action { get; init; } - - [StringLength(20, ErrorMessage = "备注名最大20个字符")] - public string? RemarkName { get; init; } - } -} +using IM_API.Dtos.User; +using IM_API.Models; +using System.ComponentModel.DataAnnotations; + +namespace IM_API.Dtos.Friend +{ + public record FriendInfoDto + { + public int Id { get; init; } + + public int UserId { get; init; } + + public int FriendId { get; init; } + + public FriendStatus StatusEnum { get; init; } + + public DateTimeOffset Created { get; init; } + + public string RemarkName { get; init; } = string.Empty; + + public string? Avatar { get; init; } + public UserInfoDto UserInfo { get; init; } + } + + public record FriendRequestHandleDto + { + [Required(ErrorMessage = "操作必填")] + public HandleFriendRequestAction Action { get; init; } + + [StringLength(20, ErrorMessage = "备注名最大20个字符")] + public string? RemarkName { get; init; } + } +} diff --git a/backend/IM_API/Dtos/Friend/FriendRequestDto.cs b/backend/IM_API/Dtos/Friend/FriendRequestDto.cs index fdef132..e69db8d 100644 --- a/backend/IM_API/Dtos/Friend/FriendRequestDto.cs +++ b/backend/IM_API/Dtos/Friend/FriendRequestDto.cs @@ -1,15 +1,15 @@ -using System.ComponentModel.DataAnnotations; - -namespace IM_API.Dtos.Friend -{ - public class FriendRequestDto - { - public int? FromUserId { get; set; } - public int ToUserId { get; set; } - [Required(ErrorMessage = "备注名必填")] - [StringLength(20, ErrorMessage = "备注名不能超过20位字符")] - public string? RemarkName { get; set; } - [StringLength(50, ErrorMessage = "描述不能超过50字符")] - public string? Description { get; set; } - } -} +using System.ComponentModel.DataAnnotations; + +namespace IM_API.Dtos.Friend +{ + public class FriendRequestDto + { + public int? FromUserId { get; set; } + public int ToUserId { get; set; } + [Required(ErrorMessage = "备注名必填")] + [StringLength(20, ErrorMessage = "备注名不能超过20位字符")] + public string? RemarkName { get; set; } + [StringLength(50, ErrorMessage = "描述不能超过50字符")] + public string? Description { get; set; } + } +} diff --git a/backend/IM_API/Dtos/Friend/FriendRequestResDto.cs b/backend/IM_API/Dtos/Friend/FriendRequestResDto.cs index 6fcde65..4aeea3d 100644 --- a/backend/IM_API/Dtos/Friend/FriendRequestResDto.cs +++ b/backend/IM_API/Dtos/Friend/FriendRequestResDto.cs @@ -1,36 +1,36 @@ -using IM_API.Models; - -namespace IM_API.Dtos.Friend -{ - public class FriendRequestResDto - { - public int Id { get; set; } - - /// - /// 申请人 - /// - public int RequestUser { get; set; } - - /// - /// 被申请人 - /// - public int ResponseUser { get; set; } - public string Avatar { get; set; } - public string NickName { get; set; } - - /// - /// 申请时间 - /// - public DateTimeOffset Created { get; set; } - - /// - /// 申请附言 - /// - public string? Description { get; set; } - - /// - /// 申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) - /// - public FriendRequestState State { get; set; } - } -} +using IM_API.Models; + +namespace IM_API.Dtos.Friend +{ + public class FriendRequestResDto + { + public int Id { get; set; } + + /// + /// 申请人 + /// + public int RequestUser { get; set; } + + /// + /// 被申请人 + /// + public int ResponseUser { get; set; } + public string Avatar { get; set; } + public string NickName { get; set; } + + /// + /// 申请时间 + /// + public DateTimeOffset Created { get; set; } + + /// + /// 申请附言 + /// + public string? Description { get; set; } + + /// + /// 申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) + /// + public FriendRequestState State { get; set; } + } +} diff --git a/backend/IM_API/Dtos/Friend/HandleFriendRequestDto.cs b/backend/IM_API/Dtos/Friend/HandleFriendRequestDto.cs index afd2d00..cc1733e 100644 --- a/backend/IM_API/Dtos/Friend/HandleFriendRequestDto.cs +++ b/backend/IM_API/Dtos/Friend/HandleFriendRequestDto.cs @@ -1,29 +1,29 @@ -namespace IM_API.Dtos.Friend -{ - public class HandleFriendRequestDto - { - /// - /// 好友请求Id - /// - public int RequestId { get; set; } - /// - /// 处理操作 - /// - public HandleFriendRequestAction Action { get; set; } - /// - /// 好友备注名 - /// - public string? RemarkName { get; set; } - } - public enum HandleFriendRequestAction - { - /// - /// 同意 - /// - Accept = 0, - /// - /// 拒绝 - /// - Reject = 1 - } -} +namespace IM_API.Dtos.Friend +{ + public class HandleFriendRequestDto + { + /// + /// 好友请求Id + /// + public int RequestId { get; set; } + /// + /// 处理操作 + /// + public HandleFriendRequestAction Action { get; set; } + /// + /// 好友备注名 + /// + public string? RemarkName { get; set; } + } + public enum HandleFriendRequestAction + { + /// + /// 同意 + /// + Accept = 0, + /// + /// 拒绝 + /// + Reject = 1 + } +} diff --git a/backend/IM_API/Dtos/Group/GroupCreateDto.cs b/backend/IM_API/Dtos/Group/GroupCreateDto.cs index 32b2941..384cf8f 100644 --- a/backend/IM_API/Dtos/Group/GroupCreateDto.cs +++ b/backend/IM_API/Dtos/Group/GroupCreateDto.cs @@ -1,22 +1,22 @@ -using IM_API.Models; -using System.ComponentModel.DataAnnotations; - -namespace IM_API.Dtos.Group -{ - public class GroupCreateDto - { - /// - /// 群聊名称 - /// - [Required(ErrorMessage = "群名称必填")] - [MaxLength(20, ErrorMessage = "群名称不能大于20字符")] - public string Name { get; set; } = null!; - - /// - /// 群头像 - /// - [Required(ErrorMessage = "群头像必填")] - public string Avatar { get; set; } = null!; - public List? UserIDs { get; set; } - } -} +using IM_API.Models; +using System.ComponentModel.DataAnnotations; + +namespace IM_API.Dtos.Group +{ + public class GroupCreateDto + { + /// + /// 群聊名称 + /// + [Required(ErrorMessage = "群名称必填")] + [MaxLength(20, ErrorMessage = "群名称不能大于20字符")] + public string Name { get; set; } = null!; + + /// + /// 群头像 + /// + [Required(ErrorMessage = "群头像必填")] + public string Avatar { get; set; } = null!; + public List? UserIDs { get; set; } + } +} diff --git a/backend/IM_API/Dtos/Group/GroupInfoDto.cs b/backend/IM_API/Dtos/Group/GroupInfoDto.cs index 3265681..c8f53ec 100644 --- a/backend/IM_API/Dtos/Group/GroupInfoDto.cs +++ b/backend/IM_API/Dtos/Group/GroupInfoDto.cs @@ -1,51 +1,51 @@ -using IM_API.Models; - -namespace IM_API.Dtos.Group -{ - public class GroupInfoDto - { - public int Id { get; set; } - - /// - /// 群聊名称 - /// - public string Name { get; set; } = null!; - - /// - /// 群主 - /// - public int GroupMaster { get; set; } - - /// - /// 群权限 - /// (0:需管理员同意,1:任意人可加群,2:不允许任何人加入) - /// - public GroupAuhority Auhority { get; set; } - - /// - /// 全员禁言(0允许发言,2全员禁言) - /// - public GroupAllMembersBanned AllMembersBanned { get; set; } - - /// - /// 群聊状态 - /// (1:正常,2:封禁) - /// - public GroupStatus Status { get; set; } - - /// - /// 群公告 - /// - public string? Announcement { get; set; } - - /// - /// 群聊创建时间 - /// - public DateTimeOffset Created { get; set; } - - /// - /// 群头像 - /// - public string Avatar { get; set; } = null!; - } -} +using IM_API.Models; + +namespace IM_API.Dtos.Group +{ + public class GroupInfoDto + { + public int Id { get; set; } + + /// + /// 群聊名称 + /// + public string Name { get; set; } = null!; + + /// + /// 群主 + /// + public int GroupMaster { get; set; } + + /// + /// 群权限 + /// (0:需管理员同意,1:任意人可加群,2:不允许任何人加入) + /// + public GroupAuhority Auhority { get; set; } + + /// + /// 全员禁言(0允许发言,2全员禁言) + /// + public GroupAllMembersBanned AllMembersBanned { get; set; } + + /// + /// 群聊状态 + /// (1:正常,2:封禁) + /// + public GroupStatus Status { get; set; } + + /// + /// 群公告 + /// + public string? Announcement { get; set; } + + /// + /// 群聊创建时间 + /// + public DateTimeOffset Created { get; set; } + + /// + /// 群头像 + /// + public string Avatar { get; set; } = null!; + } +} diff --git a/backend/IM_API/Dtos/Group/GroupInviteUserDto.cs b/backend/IM_API/Dtos/Group/GroupInviteUserDto.cs index df1d926..ab15351 100644 --- a/backend/IM_API/Dtos/Group/GroupInviteUserDto.cs +++ b/backend/IM_API/Dtos/Group/GroupInviteUserDto.cs @@ -1,8 +1,8 @@ -namespace IM_API.Dtos.Group -{ - public class GroupInviteUserDto - { - public int GroupId { get; set; } - public List Ids { get; set; } - } -} +namespace IM_API.Dtos.Group +{ + public class GroupInviteUserDto + { + public int GroupId { get; set; } + public List Ids { get; set; } + } +} diff --git a/backend/IM_API/Dtos/Group/GroupUpdateConversationDto.cs b/backend/IM_API/Dtos/Group/GroupUpdateConversationDto.cs index c92dd9c..e327f4d 100644 --- a/backend/IM_API/Dtos/Group/GroupUpdateConversationDto.cs +++ b/backend/IM_API/Dtos/Group/GroupUpdateConversationDto.cs @@ -1,11 +1,11 @@ -namespace IM_API.Dtos.Group -{ - public class GroupUpdateConversationDto - { - public int GroupId { get; set; } - public long MaxSequenceId { get; set; } - public string LastMessage { get; set; } - public string LastSenderName { get; set; } - public DateTimeOffset LastUpdateTime { get; set; } - } -} +namespace IM_API.Dtos.Group +{ + public class GroupUpdateConversationDto + { + public int GroupId { get; set; } + public long MaxSequenceId { get; set; } + public string LastMessage { get; set; } + public string LastSenderName { get; set; } + public DateTimeOffset LastUpdateTime { get; set; } + } +} diff --git a/backend/IM_API/Dtos/Group/HandleGroupInviteDto.cs b/backend/IM_API/Dtos/Group/HandleGroupInviteDto.cs index 038a4bd..f9e359f 100644 --- a/backend/IM_API/Dtos/Group/HandleGroupInviteDto.cs +++ b/backend/IM_API/Dtos/Group/HandleGroupInviteDto.cs @@ -1,10 +1,10 @@ -using IM_API.Models; - -namespace IM_API.Dtos.Group -{ - public class HandleGroupInviteDto - { - public int InviteId { get; set; } - public GroupInviteState Action { get; set; } - } -} +using IM_API.Models; + +namespace IM_API.Dtos.Group +{ + public class HandleGroupInviteDto + { + public int InviteId { get; set; } + public GroupInviteState Action { get; set; } + } +} diff --git a/backend/IM_API/Dtos/Group/HandleGroupRequestDto.cs b/backend/IM_API/Dtos/Group/HandleGroupRequestDto.cs index 566739c..d4abbcd 100644 --- a/backend/IM_API/Dtos/Group/HandleGroupRequestDto.cs +++ b/backend/IM_API/Dtos/Group/HandleGroupRequestDto.cs @@ -1,10 +1,10 @@ -using IM_API.Models; - -namespace IM_API.Dtos.Group -{ - public class HandleGroupRequestDto - { - public int RequestId { get; set; } - public GroupRequestState Action { get; set; } - } -} +using IM_API.Models; + +namespace IM_API.Dtos.Group +{ + public class HandleGroupRequestDto + { + public int RequestId { get; set; } + public GroupRequestState Action { get; set; } + } +} diff --git a/backend/IM_API/Dtos/HubResponse.cs b/backend/IM_API/Dtos/HubResponse.cs index 18c2c0e..423cac4 100644 --- a/backend/IM_API/Dtos/HubResponse.cs +++ b/backend/IM_API/Dtos/HubResponse.cs @@ -1,49 +1,49 @@ -using IM_API.Tools; - -namespace IM_API.Dtos -{ - public class HubResponse - { - public int Code { get; init; } - public string Method { get; init; } - public HubResponseType Type { get; init; } - public string Message { get; init; } - public T? Data { get; init; } - public HubResponse(string method) - { - Code = CodeDefine.SUCCESS.Code; - Message = CodeDefine.SUCCESS.Message; - Type = HubResponseType.ActionStatus; - Method = method; - } - public HubResponse(string method,T data) - { - Code = CodeDefine.SUCCESS.Code; - Message = CodeDefine.SUCCESS.Message; - Type = HubResponseType.ActionStatus; - Data = data; - Method = method; - } - public HubResponse(CodeDefine codedefine,string method) - { - Code = codedefine.Code; - Method = method; - Message = codedefine.Message; - Type = HubResponseType.ActionStatus; - } - public HubResponse(CodeDefine codeDefine, string method, HubResponseType type, T? data) - { - Code = codeDefine.Code; - Method = method; - Type = type; - Message = codeDefine.Message; - Data = data; - } - } - public enum HubResponseType - { - ChatMsg = 1, // 聊天内容 - SystemNotice = 2, // 系统通知(如:申请好友成功) - ActionStatus = 3 // 状态变更(如:对方正在输入、已读回执) - } -} +using IM_API.Tools; + +namespace IM_API.Dtos +{ + public class HubResponse + { + public int Code { get; init; } + public string Method { get; init; } + public HubResponseType Type { get; init; } + public string Message { get; init; } + public T? Data { get; init; } + public HubResponse(string method) + { + Code = CodeDefine.SUCCESS.Code; + Message = CodeDefine.SUCCESS.Message; + Type = HubResponseType.ActionStatus; + Method = method; + } + public HubResponse(string method,T data) + { + Code = CodeDefine.SUCCESS.Code; + Message = CodeDefine.SUCCESS.Message; + Type = HubResponseType.ActionStatus; + Data = data; + Method = method; + } + public HubResponse(CodeDefine codedefine,string method) + { + Code = codedefine.Code; + Method = method; + Message = codedefine.Message; + Type = HubResponseType.ActionStatus; + } + public HubResponse(CodeDefine codeDefine, string method, HubResponseType type, T? data) + { + Code = codeDefine.Code; + Method = method; + Type = type; + Message = codeDefine.Message; + Data = data; + } + } + public enum HubResponseType + { + ChatMsg = 1, // 聊天内容 + SystemNotice = 2, // 系统通知(如:申请好友成功) + ActionStatus = 3 // 状态变更(如:对方正在输入、已读回执) + } +} diff --git a/backend/IM_API/Dtos/Message/MessageQueryDto.cs b/backend/IM_API/Dtos/Message/MessageQueryDto.cs index 607ec1f..f70c28b 100644 --- a/backend/IM_API/Dtos/Message/MessageQueryDto.cs +++ b/backend/IM_API/Dtos/Message/MessageQueryDto.cs @@ -1,18 +1,18 @@ -using System.ComponentModel.DataAnnotations; - -namespace IM_API.Dtos.Message -{ - public class MessageQueryDto - { - [Required(ErrorMessage = "会话ID必填")] - public int ConversationId { get; set; } - - // 锚点序号(如果为空,说明是第一次进聊天框,拉最新的) - public long? Cursor { get; set; } - - // 查询方向:0 - 查旧(Before), 1 - 查新(After) - public int Direction { get; set; } = 0; - - public int Limit { get; set; } = 20; - } -} +using System.ComponentModel.DataAnnotations; + +namespace IM_API.Dtos.Message +{ + public class MessageQueryDto + { + [Required(ErrorMessage = "会话ID必填")] + public int ConversationId { get; set; } + + // 锚点序号(如果为空,说明是第一次进聊天框,拉最新的) + public long? Cursor { get; set; } + + // 查询方向:0 - 查旧(Before), 1 - 查新(After) + public int Direction { get; set; } = 0; + + public int Limit { get; set; } = 20; + } +} diff --git a/backend/IM_API/Dtos/MessageDto.cs b/backend/IM_API/Dtos/MessageDto.cs index 3606c48..09d672e 100644 --- a/backend/IM_API/Dtos/MessageDto.cs +++ b/backend/IM_API/Dtos/MessageDto.cs @@ -1,17 +1,17 @@ -using IM_API.Models; - -namespace IM_API.Dtos -{ - public record MessageBaseDto - { - // 使用 { get; init; } 确保对象创建后不可修改,且支持无参构造 - public MessageMsgType Type { get; init; } = default!; - public ChatType ChatType { get; init; } = default!; - public Guid MsgId { get; init; } - public int SenderId { get; init; } - public int ReceiverId { get; init; } - public string Content { get; init; } = default!; - public DateTimeOffset TimeStamp { get; init; } - public MessageBaseDto() { } - } -} +using IM_API.Models; + +namespace IM_API.Dtos +{ + public record MessageBaseDto + { + // 使用 { get; init; } 确保对象创建后不可修改,且支持无参构造 + public MessageMsgType Type { get; init; } = default!; + public ChatType ChatType { get; init; } = default!; + public Guid MsgId { get; init; } + public int SenderId { get; init; } + public int ReceiverId { get; init; } + public string Content { get; init; } = default!; + public DateTimeOffset TimeStamp { get; init; } + public MessageBaseDto() { } + } +} diff --git a/backend/IM_API/Dtos/SignalRResponseDto.cs b/backend/IM_API/Dtos/SignalRResponseDto.cs index f34f09e..6c0eabb 100644 --- a/backend/IM_API/Dtos/SignalRResponseDto.cs +++ b/backend/IM_API/Dtos/SignalRResponseDto.cs @@ -1,66 +1,66 @@ -using IM_API.Tools; - -namespace IM_API.Dtos -{ - public class SignalRResponseDto - { - public string Type { get; set; } - public string Message { get; set; } - public int Code { get; set; } - public string Status { get; set; } - public SignalRResponseDto(SignalRResponseType type,CodeDefine codeDefine) - { - this.Type = type.ToString(); - this.Code = codeDefine.Code; - this.Message = codeDefine.Message; - this.Status = codeDefine.Message; - } - public SignalRResponseDto(SignalRResponseType type) - { - this.Type = type.ToString(); - this.Code = CodeDefine.SUCCESS.Code; - this.Message = CodeDefine.SUCCESS.Message; - this.Status = CodeDefine.SUCCESS.Message; - } - } - - public enum SignalRResponseType - { - /// - /// 消息 - /// - MESSAGE = 0, - /// - /// 鉴权 - /// - AUTH = 1, - /// - /// 心跳 - /// - HEARTBEAT = 2, - /// - /// 消息回执 - /// - MESSAGE_ACK = 3, - /// - /// 消息撤回 - /// - MESSAGE_RECALL = 4, - /// - /// 好友请求 - /// - FRIEND_REQUEST = 5, - /// - /// 群邀请 - /// - GROUP_INVITE = 6, - /// - /// 系统通知 - /// - SYSTEM_NOTICE = 7, - /// - /// 错误 - /// - ERROR = 8 - } -} +using IM_API.Tools; + +namespace IM_API.Dtos +{ + public class SignalRResponseDto + { + public string Type { get; set; } + public string Message { get; set; } + public int Code { get; set; } + public string Status { get; set; } + public SignalRResponseDto(SignalRResponseType type,CodeDefine codeDefine) + { + this.Type = type.ToString(); + this.Code = codeDefine.Code; + this.Message = codeDefine.Message; + this.Status = codeDefine.Message; + } + public SignalRResponseDto(SignalRResponseType type) + { + this.Type = type.ToString(); + this.Code = CodeDefine.SUCCESS.Code; + this.Message = CodeDefine.SUCCESS.Message; + this.Status = CodeDefine.SUCCESS.Message; + } + } + + public enum SignalRResponseType + { + /// + /// 消息 + /// + MESSAGE = 0, + /// + /// 鉴权 + /// + AUTH = 1, + /// + /// 心跳 + /// + HEARTBEAT = 2, + /// + /// 消息回执 + /// + MESSAGE_ACK = 3, + /// + /// 消息撤回 + /// + MESSAGE_RECALL = 4, + /// + /// 好友请求 + /// + FRIEND_REQUEST = 5, + /// + /// 群邀请 + /// + GROUP_INVITE = 6, + /// + /// 系统通知 + /// + SYSTEM_NOTICE = 7, + /// + /// 错误 + /// + ERROR = 8 + } +} diff --git a/backend/IM_API/Dtos/TestDto.cs b/backend/IM_API/Dtos/TestDto.cs index bd689d6..5447b72 100644 --- a/backend/IM_API/Dtos/TestDto.cs +++ b/backend/IM_API/Dtos/TestDto.cs @@ -1,8 +1,8 @@ -namespace IM_API.Dtos -{ - public class TestDto - { - public int Id { get; set; } - public string Name { get; set; } - } -} +namespace IM_API.Dtos +{ + public class TestDto + { + public int Id { get; set; } + public string Name { get; set; } + } +} diff --git a/backend/IM_API/Dtos/User/UpdateUserDto.cs b/backend/IM_API/Dtos/User/UpdateUserDto.cs index 4ac40f2..c48efa1 100644 --- a/backend/IM_API/Dtos/User/UpdateUserDto.cs +++ b/backend/IM_API/Dtos/User/UpdateUserDto.cs @@ -1,12 +1,12 @@ -using System.ComponentModel.DataAnnotations; - -namespace IM_API.Dtos.User -{ - public class UpdateUserDto - { - [MaxLength(20, ErrorMessage = "昵称不能超过50字符")] - public string? NickName { get; set; } - public string? Avatar { get; set; } - - } -} +using System.ComponentModel.DataAnnotations; + +namespace IM_API.Dtos.User +{ + public class UpdateUserDto + { + [MaxLength(20, ErrorMessage = "昵称不能超过50字符")] + public string? NickName { get; set; } + public string? Avatar { get; set; } + + } +} diff --git a/backend/IM_API/Dtos/User/UserDto.cs b/backend/IM_API/Dtos/User/UserDto.cs index d8a1a57..5191d8d 100644 --- a/backend/IM_API/Dtos/User/UserDto.cs +++ b/backend/IM_API/Dtos/User/UserDto.cs @@ -1,21 +1,21 @@ -using IM_API.Models; -using System.ComponentModel.DataAnnotations; - -namespace IM_API.Dtos.User -{ - public record PasswordResetDto - { - [Required(ErrorMessage = "旧密码不能为空")] - public string OldPassword { get; init; } - - [Required(ErrorMessage = "新密码不能为空")] - [MaxLength(50, ErrorMessage = "密码不能超过50个字符")] - public string Password { get; init; } - } - - public record OnlineStatusSetDto - { - [Required] - public UserOnlineStatus OnlineStatus { get; init; } - } -} +using IM_API.Models; +using System.ComponentModel.DataAnnotations; + +namespace IM_API.Dtos.User +{ + public record PasswordResetDto + { + [Required(ErrorMessage = "旧密码不能为空")] + public string OldPassword { get; init; } + + [Required(ErrorMessage = "新密码不能为空")] + [MaxLength(50, ErrorMessage = "密码不能超过50个字符")] + public string Password { get; init; } + } + + public record OnlineStatusSetDto + { + [Required] + public UserOnlineStatus OnlineStatus { get; init; } + } +} diff --git a/backend/IM_API/Dtos/User/UserInfoDto.cs b/backend/IM_API/Dtos/User/UserInfoDto.cs index e530be6..de64ab7 100644 --- a/backend/IM_API/Dtos/User/UserInfoDto.cs +++ b/backend/IM_API/Dtos/User/UserInfoDto.cs @@ -1,43 +1,43 @@ -using IM_API.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Dtos.User -{ - public class UserInfoDto - { - public int Id { get; set; } - - /// - /// 唯一用户名 - /// - public string Username { get; set; } - - /// - /// 用户昵称 - /// - public string NickName { get; set; } - /// - /// 用户头像 - /// - public string? Avatar { get; set; } - - /// - /// 用户在线状态 - /// 0(默认):不在线 - /// 1:在线 - /// - public UserOnlineStatus OnlineStatusEnum { get; set; } - - /// - /// 创建时间 - /// - public DateTimeOffset Created { get; set; } - - /// - /// 账户状态 - /// (0:未激活,1:正常,2:封禁) - /// - public UserStatus StatusEnum { get; set; } - } -} +using IM_API.Models; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Dtos.User +{ + public class UserInfoDto + { + public int Id { get; set; } + + /// + /// 唯一用户名 + /// + public string Username { get; set; } + + /// + /// 用户昵称 + /// + public string NickName { get; set; } + /// + /// 用户头像 + /// + public string? Avatar { get; set; } + + /// + /// 用户在线状态 + /// 0(默认):不在线 + /// 1:在线 + /// + public UserOnlineStatus OnlineStatusEnum { get; set; } + + /// + /// 创建时间 + /// + public DateTimeOffset Created { get; set; } + + /// + /// 账户状态 + /// (0:未激活,1:正常,2:封禁) + /// + public UserStatus StatusEnum { get; set; } + } +} diff --git a/backend/IM_API/Exceptions/BaseException.cs b/backend/IM_API/Exceptions/BaseException.cs index cafaf70..d828045 100644 --- a/backend/IM_API/Exceptions/BaseException.cs +++ b/backend/IM_API/Exceptions/BaseException.cs @@ -1,17 +1,17 @@ -using IM_API.Tools; - -namespace IM_API.Exceptions -{ - public class BaseException:Exception - { - public int Code { get; set; } - - public BaseException(int code,string message) : base(message) { - this.Code = code; - } - public BaseException(CodeDefine codeDefine) : base(codeDefine.Message) - { - this.Code = codeDefine.Code; - } - } -} +using IM_API.Tools; + +namespace IM_API.Exceptions +{ + public class BaseException:Exception + { + public int Code { get; set; } + + public BaseException(int code,string message) : base(message) { + this.Code = code; + } + public BaseException(CodeDefine codeDefine) : base(codeDefine.Message) + { + this.Code = codeDefine.Code; + } + } +} diff --git a/backend/IM_API/Filters/GlobalExceptionFilter.cs b/backend/IM_API/Filters/GlobalExceptionFilter.cs index e1af44e..d9718bd 100644 --- a/backend/IM_API/Filters/GlobalExceptionFilter.cs +++ b/backend/IM_API/Filters/GlobalExceptionFilter.cs @@ -1,39 +1,39 @@ -using IM_API.Dtos; -using IM_API.Exceptions; -using IM_API.Tools; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Filters; - -namespace IM_API.Filters -{ - public class GlobalExceptionFilter : IExceptionFilter - { - private readonly ILogger _logger; - public GlobalExceptionFilter(ILogger logger) - { - _logger = logger; - } - - public void OnException(ExceptionContext context) - { - if(context.Exception is BaseException) - { - _logger.LogWarning(context.Exception, context.Exception.Message); - var exception = (BaseException)context.Exception; - BaseResponse res = new BaseResponse( - code:exception.Code, - message: exception.Message, - data:null - ); - context.Result = new JsonResult(res); - } - else - { - _logger.LogError(context.Exception,context.Exception.Message); - BaseResponse res = new BaseResponse(CodeDefine.SYSTEM_ERROR); - context.Result = new JsonResult(res); - } - context.ExceptionHandled = true; - } - } -} +using IM_API.Dtos; +using IM_API.Exceptions; +using IM_API.Tools; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; + +namespace IM_API.Filters +{ + public class GlobalExceptionFilter : IExceptionFilter + { + private readonly ILogger _logger; + public GlobalExceptionFilter(ILogger logger) + { + _logger = logger; + } + + public void OnException(ExceptionContext context) + { + if(context.Exception is BaseException) + { + _logger.LogWarning(context.Exception, context.Exception.Message); + var exception = (BaseException)context.Exception; + BaseResponse res = new BaseResponse( + code:exception.Code, + message: exception.Message, + data:null + ); + context.Result = new JsonResult(res); + } + else + { + _logger.LogError(context.Exception,context.Exception.Message); + BaseResponse res = new BaseResponse(CodeDefine.SYSTEM_ERROR); + context.Result = new JsonResult(res); + } + context.ExceptionHandled = true; + } + } +} diff --git a/backend/IM_API/Hubs/ChatHub.cs b/backend/IM_API/Hubs/ChatHub.cs index 14bd2b8..f1e7f18 100644 --- a/backend/IM_API/Hubs/ChatHub.cs +++ b/backend/IM_API/Hubs/ChatHub.cs @@ -1,90 +1,90 @@ -using AutoMapper; -using IM_API.Application.Interfaces; -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Tools; -using IM_API.VOs.Message; -using Microsoft.AspNetCore.SignalR; -using StackExchange.Redis; -using System.Security.Claims; - -namespace IM_API.Hubs -{ - public class ChatHub:Hub - { - private IMessageSevice _messageService; - private readonly IConversationService _conversationService; - private readonly IDatabase _redis; - public ChatHub(IMessageSevice messageService, IConversationService conversationService, - IConnectionMultiplexer connectionMultiplexer) - { - _messageService = messageService; - _conversationService = conversationService; - _redis = connectionMultiplexer.GetDatabase(); - } - - public async override Task OnConnectedAsync() - { - if (!Context.User.Identity.IsAuthenticated) - { - Context.Abort(); - return; - } - - //将用户加入已加入聊天的会话组 - string userIdStr = Context.User.FindFirstValue(ClaimTypes.NameIdentifier); - var keys = await _conversationService.GetUserAllStreamKeyAsync(int.Parse(userIdStr)); - foreach (var key in keys) - { - await Groups.AddToGroupAsync(Context.ConnectionId, key); - } - //储存用户对应的连接id - await _redis.SetAddAsync(RedisKeys.GetConnectionIdKey(userIdStr), Context.ConnectionId); - await base.OnConnectedAsync(); - } - - public override async Task OnDisconnectedAsync(Exception? exception) - { - if (!Context.User.Identity.IsAuthenticated) - { - string useridStr = Context.User.FindFirstValue(ClaimTypes.NameIdentifier); - await _redis.SetRemoveAsync(RedisKeys.GetConnectionIdKey(useridStr), Context.ConnectionId); - } - await base.OnDisconnectedAsync(exception); - } - public async Task> SendMessage(MessageBaseDto dto) - { - if (!Context.User.Identity.IsAuthenticated) - { - await Clients.Caller.SendAsync("ReceiveMessage", new BaseResponse(CodeDefine.AUTH_FAILED)); - Context.Abort(); - return new HubResponse(CodeDefine.AUTH_FAILED, "SendMessage"); - } - var userIdStr = Context.User.FindFirstValue(ClaimTypes.NameIdentifier); - MessageBaseVo? msgInfo = null; - if(dto.ChatType == ChatType.PRIVATE) - { - msgInfo = await _messageService.SendPrivateMessageAsync(int.Parse(userIdStr), dto.ReceiverId, dto); - } - else - { - msgInfo = await _messageService.SendGroupMessageAsync(int.Parse(userIdStr), dto.ReceiverId, dto); - } - return new HubResponse("SendMessage", msgInfo); - } - public async Task> ClearUnreadCount(int conversationId) - { - if (!Context.User.Identity.IsAuthenticated) - { - await Clients.Caller.SendAsync("ReceiveMessage", new BaseResponse(CodeDefine.AUTH_FAILED)); - Context.Abort(); - return new HubResponse(CodeDefine.AUTH_FAILED, "ClearUnreadCount"); ; - } - var userIdStr = Context.User.FindFirstValue(ClaimTypes.NameIdentifier); - await _conversationService.ClearUnreadCountAsync(int.Parse(userIdStr), conversationId); - return new HubResponse("ClearUnreadCount"); - } - } -} +using AutoMapper; +using IM_API.Application.Interfaces; +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Tools; +using IM_API.VOs.Message; +using Microsoft.AspNetCore.SignalR; +using StackExchange.Redis; +using System.Security.Claims; + +namespace IM_API.Hubs +{ + public class ChatHub:Hub + { + private IMessageSevice _messageService; + private readonly IConversationService _conversationService; + private readonly IDatabase _redis; + public ChatHub(IMessageSevice messageService, IConversationService conversationService, + IConnectionMultiplexer connectionMultiplexer) + { + _messageService = messageService; + _conversationService = conversationService; + _redis = connectionMultiplexer.GetDatabase(); + } + + public async override Task OnConnectedAsync() + { + if (!Context.User.Identity.IsAuthenticated) + { + Context.Abort(); + return; + } + + //将用户加入已加入聊天的会话组 + string userIdStr = Context.User.FindFirstValue(ClaimTypes.NameIdentifier); + var keys = await _conversationService.GetUserAllStreamKeyAsync(int.Parse(userIdStr)); + foreach (var key in keys) + { + await Groups.AddToGroupAsync(Context.ConnectionId, key); + } + //储存用户对应的连接id + await _redis.SetAddAsync(RedisKeys.GetConnectionIdKey(userIdStr), Context.ConnectionId); + await base.OnConnectedAsync(); + } + + public override async Task OnDisconnectedAsync(Exception? exception) + { + if (!Context.User.Identity.IsAuthenticated) + { + string useridStr = Context.User.FindFirstValue(ClaimTypes.NameIdentifier); + await _redis.SetRemoveAsync(RedisKeys.GetConnectionIdKey(useridStr), Context.ConnectionId); + } + await base.OnDisconnectedAsync(exception); + } + public async Task> SendMessage(MessageBaseDto dto) + { + if (!Context.User.Identity.IsAuthenticated) + { + await Clients.Caller.SendAsync("ReceiveMessage", new BaseResponse(CodeDefine.AUTH_FAILED)); + Context.Abort(); + return new HubResponse(CodeDefine.AUTH_FAILED, "SendMessage"); + } + var userIdStr = Context.User.FindFirstValue(ClaimTypes.NameIdentifier); + MessageBaseVo? msgInfo = null; + if(dto.ChatType == ChatType.PRIVATE) + { + msgInfo = await _messageService.SendPrivateMessageAsync(int.Parse(userIdStr), dto.ReceiverId, dto); + } + else + { + msgInfo = await _messageService.SendGroupMessageAsync(int.Parse(userIdStr), dto.ReceiverId, dto); + } + return new HubResponse("SendMessage", msgInfo); + } + public async Task> ClearUnreadCount(int conversationId) + { + if (!Context.User.Identity.IsAuthenticated) + { + await Clients.Caller.SendAsync("ReceiveMessage", new BaseResponse(CodeDefine.AUTH_FAILED)); + Context.Abort(); + return new HubResponse(CodeDefine.AUTH_FAILED, "ClearUnreadCount"); ; + } + var userIdStr = Context.User.FindFirstValue(ClaimTypes.NameIdentifier); + await _conversationService.ClearUnreadCountAsync(int.Parse(userIdStr), conversationId); + return new HubResponse("ClearUnreadCount"); + } + } +} diff --git a/backend/IM_API/IM_API.csproj b/backend/IM_API/IM_API.csproj index 6361cdc..6e72693 100644 --- a/backend/IM_API/IM_API.csproj +++ b/backend/IM_API/IM_API.csproj @@ -1,36 +1,36 @@ - - - - net8.0 - enable - enable - 3f396849-59bd-435f-a0cb-351ec0559e70 - Linux - . - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - - - + + + + net8.0 + enable + enable + 3f396849-59bd-435f-a0cb-351ec0559e70 + Linux + . + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + diff --git a/backend/IM_API/IM_API.csproj.user b/backend/IM_API/IM_API.csproj.user index e5a2ec0..f53a82c 100644 --- a/backend/IM_API/IM_API.csproj.user +++ b/backend/IM_API/IM_API.csproj.user @@ -1,11 +1,11 @@ - - - - http - ApiControllerEmptyScaffolder - root/Common/Api - - - ProjectDebugger - + + + + http + ApiControllerEmptyScaffolder + root/Common/Api + + + ProjectDebugger + \ No newline at end of file diff --git a/backend/IM_API/IM_API.http b/backend/IM_API/IM_API.http index f9d5b75..fce8ec7 100644 --- a/backend/IM_API/IM_API.http +++ b/backend/IM_API/IM_API.http @@ -1,6 +1,6 @@ -@IM_API_HostAddress = http://localhost:5202 - -GET {{IM_API_HostAddress}}/weatherforecast/ -Accept: application/json - -### +@IM_API_HostAddress = http://localhost:5202 + +GET {{IM_API_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/backend/IM_API/IM_API.sln b/backend/IM_API/IM_API.sln index 7559338..a3c1a7b 100644 --- a/backend/IM_API/IM_API.sln +++ b/backend/IM_API/IM_API.sln @@ -1,31 +1,31 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.14.36408.4 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IM_API", "IM_API.csproj", "{F001642C-3E66-4C2C-9A25-1AE5EE76CE97}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IMTest", "..\IMTest\IMTest.csproj", "{9DB9D44A-2D86-45A2-B651-D976277CF324}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F001642C-3E66-4C2C-9A25-1AE5EE76CE97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F001642C-3E66-4C2C-9A25-1AE5EE76CE97}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F001642C-3E66-4C2C-9A25-1AE5EE76CE97}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F001642C-3E66-4C2C-9A25-1AE5EE76CE97}.Release|Any CPU.Build.0 = Release|Any CPU - {9DB9D44A-2D86-45A2-B651-D976277CF324}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9DB9D44A-2D86-45A2-B651-D976277CF324}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9DB9D44A-2D86-45A2-B651-D976277CF324}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9DB9D44A-2D86-45A2-B651-D976277CF324}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {EC36B0B9-6176-4BC7-BF88-33F923E3E777} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36408.4 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IM_API", "IM_API.csproj", "{F001642C-3E66-4C2C-9A25-1AE5EE76CE97}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IMTest", "..\IMTest\IMTest.csproj", "{9DB9D44A-2D86-45A2-B651-D976277CF324}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F001642C-3E66-4C2C-9A25-1AE5EE76CE97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F001642C-3E66-4C2C-9A25-1AE5EE76CE97}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F001642C-3E66-4C2C-9A25-1AE5EE76CE97}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F001642C-3E66-4C2C-9A25-1AE5EE76CE97}.Release|Any CPU.Build.0 = Release|Any CPU + {9DB9D44A-2D86-45A2-B651-D976277CF324}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DB9D44A-2D86-45A2-B651-D976277CF324}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DB9D44A-2D86-45A2-B651-D976277CF324}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9DB9D44A-2D86-45A2-B651-D976277CF324}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {EC36B0B9-6176-4BC7-BF88-33F923E3E777} + EndGlobalSection +EndGlobal diff --git a/backend/IM_API/Infrastructure/EventBus/InMemoryEventBus.cs b/backend/IM_API/Infrastructure/EventBus/InMemoryEventBus.cs index 45ed2b2..02be426 100644 --- a/backend/IM_API/Infrastructure/EventBus/InMemoryEventBus.cs +++ b/backend/IM_API/Infrastructure/EventBus/InMemoryEventBus.cs @@ -1,32 +1,32 @@ -using IM_API.Application.Interfaces; -using IM_API.Domain.Interfaces; - -namespace IM_API.Infrastructure.EventBus -{ - public class InMemoryEventBus : IEventBus - { - private IServiceProvider _serviceProvider; - private ILogger _logger; - public InMemoryEventBus(IServiceProvider serviceProvider, ILogger logger) - { - _serviceProvider = serviceProvider; - _logger = logger; - } - - public async Task PublishAsync(TEvent @event) where TEvent : IEvent - { - var handlers = _serviceProvider.GetServices>(); - foreach (var handler in handlers) - { - try - { - await handler.Handle(@event); - } - catch(Exception e) - { - _logger.LogError("EventHandler error:"+e.Message, e); - } - } - } - } -} +using IM_API.Application.Interfaces; +using IM_API.Domain.Interfaces; + +namespace IM_API.Infrastructure.EventBus +{ + public class InMemoryEventBus : IEventBus + { + private IServiceProvider _serviceProvider; + private ILogger _logger; + public InMemoryEventBus(IServiceProvider serviceProvider, ILogger logger) + { + _serviceProvider = serviceProvider; + _logger = logger; + } + + public async Task PublishAsync(TEvent @event) where TEvent : IEvent + { + var handlers = _serviceProvider.GetServices>(); + foreach (var handler in handlers) + { + try + { + await handler.Handle(@event); + } + catch(Exception e) + { + _logger.LogError("EventHandler error:"+e.Message, e); + } + } + } + } +} diff --git a/backend/IM_API/Interface/Services/IAuthService.cs b/backend/IM_API/Interface/Services/IAuthService.cs index be275d6..b67a758 100644 --- a/backend/IM_API/Interface/Services/IAuthService.cs +++ b/backend/IM_API/Interface/Services/IAuthService.cs @@ -1,22 +1,22 @@ -using IM_API.Dtos.Auth; -using IM_API.Dtos.User; -using IM_API.Models; - -namespace IM_API.Interface.Services -{ - public interface IAuthService - { - /// - /// 登录 - /// - /// - /// - Task LoginAsync(LoginRequestDto dto); - /// - /// 注册 - /// - /// - /// - Task RegisterAsync(RegisterRequestDto dto); - } -} +using IM_API.Dtos.Auth; +using IM_API.Dtos.User; +using IM_API.Models; + +namespace IM_API.Interface.Services +{ + public interface IAuthService + { + /// + /// 登录 + /// + /// + /// + Task LoginAsync(LoginRequestDto dto); + /// + /// 注册 + /// + /// + /// + Task RegisterAsync(RegisterRequestDto dto); + } +} diff --git a/backend/IM_API/Interface/Services/ICacheService.cs b/backend/IM_API/Interface/Services/ICacheService.cs index 436e606..7713067 100644 --- a/backend/IM_API/Interface/Services/ICacheService.cs +++ b/backend/IM_API/Interface/Services/ICacheService.cs @@ -1,49 +1,49 @@ -using IM_API.Models; - -namespace IM_API.Interface.Services -{ - public interface ICacheService - { - /// - /// 设置缓存 - /// - /// 缓存对象类型 - /// 缓存索引值 - /// 要缓存的对象 - /// 过期时间 - /// - Task SetAsync(string key, T value, TimeSpan? expiration = null); - /// - /// 获取缓存 - /// - /// - /// 缓存索引 - /// - Task GetAsync(string key); - /// - /// 删除缓存 - /// - /// 缓存索引 - /// - Task RemoveAsync(string key); - /// - /// 设置用户缓存 - /// - /// - /// - Task SetUserCacheAsync(User user); - /// - /// 通过用户名获取用户缓存 - /// - /// - /// - Task GetUserCacheAsync(string username); - /// - /// 删除用户缓存 - /// - /// - /// - /// - Task RemoveUserCacheAsync(string username); - } -} +using IM_API.Models; + +namespace IM_API.Interface.Services +{ + public interface ICacheService + { + /// + /// 设置缓存 + /// + /// 缓存对象类型 + /// 缓存索引值 + /// 要缓存的对象 + /// 过期时间 + /// + Task SetAsync(string key, T value, TimeSpan? expiration = null); + /// + /// 获取缓存 + /// + /// + /// 缓存索引 + /// + Task GetAsync(string key); + /// + /// 删除缓存 + /// + /// 缓存索引 + /// + Task RemoveAsync(string key); + /// + /// 设置用户缓存 + /// + /// + /// + Task SetUserCacheAsync(User user); + /// + /// 通过用户名获取用户缓存 + /// + /// + /// + Task GetUserCacheAsync(string username); + /// + /// 删除用户缓存 + /// + /// + /// + /// + Task RemoveUserCacheAsync(string username); + } +} diff --git a/backend/IM_API/Interface/Services/IConversationService.cs b/backend/IM_API/Interface/Services/IConversationService.cs index 5d24fa5..61be9c0 100644 --- a/backend/IM_API/Interface/Services/IConversationService.cs +++ b/backend/IM_API/Interface/Services/IConversationService.cs @@ -1,56 +1,56 @@ -using IM_API.Dtos.Conversation; -using IM_API.Models; -using IM_API.VOs.Conversation; - -namespace IM_API.Interface.Services -{ - public interface IConversationService - { - /// - /// 清除消息会话 - /// - /// - /// - Task ClearConversationsAsync(int userId); - /// - /// 删除单个聊天会话 - /// - /// - /// - Task DeleteConversationAsync(int conversationId); - /// - /// 获取用户当前消息会话 - /// - /// 用户id - /// - Task> GetConversationsAsync(int userId); - /// - /// 获取指定用户的所有推送标识符 - /// - /// - /// - Task> GetUserAllStreamKeyAsync(int userId); - /// - /// 获取单个conversation信息 - /// - /// - /// - Task GetConversationByIdAsync(int userId, int conversationId); - /// - /// 清空未读消息 - /// - /// - /// - /// - Task ClearUnreadCountAsync(int userId, int conversationId); - /// - /// 为用户创建会话 - /// - /// - /// - /// - /// - Task MakeConversationAsync(int userAId, int userBId, ChatType chatType); - Task UpdateConversationAfterSentAsync(UpdateConversationDto dto); - } -} +using IM_API.Dtos.Conversation; +using IM_API.Models; +using IM_API.VOs.Conversation; + +namespace IM_API.Interface.Services +{ + public interface IConversationService + { + /// + /// 清除消息会话 + /// + /// + /// + Task ClearConversationsAsync(int userId); + /// + /// 删除单个聊天会话 + /// + /// + /// + Task DeleteConversationAsync(int conversationId); + /// + /// 获取用户当前消息会话 + /// + /// 用户id + /// + Task> GetConversationsAsync(int userId); + /// + /// 获取指定用户的所有推送标识符 + /// + /// + /// + Task> GetUserAllStreamKeyAsync(int userId); + /// + /// 获取单个conversation信息 + /// + /// + /// + Task GetConversationByIdAsync(int userId, int conversationId); + /// + /// 清空未读消息 + /// + /// + /// + /// + Task ClearUnreadCountAsync(int userId, int conversationId); + /// + /// 为用户创建会话 + /// + /// + /// + /// + /// + Task MakeConversationAsync(int userAId, int userBId, ChatType chatType); + Task UpdateConversationAfterSentAsync(UpdateConversationDto dto); + } +} diff --git a/backend/IM_API/Interface/Services/IFriendSerivce.cs b/backend/IM_API/Interface/Services/IFriendSerivce.cs index b4e29d3..df6b023 100644 --- a/backend/IM_API/Interface/Services/IFriendSerivce.cs +++ b/backend/IM_API/Interface/Services/IFriendSerivce.cs @@ -1,71 +1,71 @@ -using IM_API.Dtos.Friend; -using IM_API.Models; - -namespace IM_API.Interface.Services -{ - public interface IFriendSerivce - { - /// - /// 获取好友列表 - /// - /// 指定用户 - /// 当前页 - /// 分页大小 - /// - Task> GetFriendListAsync(int userId,int page,int limit,bool desc); - /// - /// 新增好友请求 - /// - /// - /// - Task SendFriendRequestAsync(FriendRequestDto friendRequest); - /// - /// 获取好友请求 - /// - /// - /// 是否为接受请求方 - /// - /// - /// - Task> GetFriendRequestListAsync(int userId,int page,int limit, bool desc); - /// - /// 处理好友请求 - /// - /// - /// - Task HandleFriendRequestAsync(HandleFriendRequestDto requestDto); - /// - /// 通过用户Id删除好友关系 - /// - /// 操作用户Id - /// 被删除用户ID - /// - Task DeleteFriendByUserIdAsync(int userId,int toUserId); - /// - /// 通过好友关系Id删除好友关系 - /// - /// 好友关系id - /// - Task DeleteFriendAsync(int friendId); - /// - /// 通过用户Id拉黑好友关系 - /// - /// 操作用户Id - /// 被拉黑用户ID - /// - Task BlockFriendByUserIdAsync(int userId, int toUserId); - /// - /// 通过好友关系Id拉黑好友关系 - /// - /// 好友关系id - /// - Task BlockeFriendAsync(int friendId); - /// - /// 创建好友关系 - /// - /// - /// - /// - Task MakeFriendshipAsync(int userAId, int userBId, string? remarkName); - } -} +using IM_API.Dtos.Friend; +using IM_API.Models; + +namespace IM_API.Interface.Services +{ + public interface IFriendSerivce + { + /// + /// 获取好友列表 + /// + /// 指定用户 + /// 当前页 + /// 分页大小 + /// + Task> GetFriendListAsync(int userId,int page,int limit,bool desc); + /// + /// 新增好友请求 + /// + /// + /// + Task SendFriendRequestAsync(FriendRequestDto friendRequest); + /// + /// 获取好友请求 + /// + /// + /// 是否为接受请求方 + /// + /// + /// + Task> GetFriendRequestListAsync(int userId,int page,int limit, bool desc); + /// + /// 处理好友请求 + /// + /// + /// + Task HandleFriendRequestAsync(HandleFriendRequestDto requestDto); + /// + /// 通过用户Id删除好友关系 + /// + /// 操作用户Id + /// 被删除用户ID + /// + Task DeleteFriendByUserIdAsync(int userId,int toUserId); + /// + /// 通过好友关系Id删除好友关系 + /// + /// 好友关系id + /// + Task DeleteFriendAsync(int friendId); + /// + /// 通过用户Id拉黑好友关系 + /// + /// 操作用户Id + /// 被拉黑用户ID + /// + Task BlockFriendByUserIdAsync(int userId, int toUserId); + /// + /// 通过好友关系Id拉黑好友关系 + /// + /// 好友关系id + /// + Task BlockeFriendAsync(int friendId); + /// + /// 创建好友关系 + /// + /// + /// + /// + Task MakeFriendshipAsync(int userAId, int userBId, string? remarkName); + } +} diff --git a/backend/IM_API/Interface/Services/IGroupService.cs b/backend/IM_API/Interface/Services/IGroupService.cs index 1b80b62..ad788f5 100644 --- a/backend/IM_API/Interface/Services/IGroupService.cs +++ b/backend/IM_API/Interface/Services/IGroupService.cs @@ -1,55 +1,55 @@ -using IM_API.Dtos.Group; -using IM_API.Models; - -namespace IM_API.Interface.Services -{ - public interface IGroupService - { - /// - /// 邀请好友入群 - /// - /// 操作者ID - /// 群ID - /// 邀请的用户列表 - /// - Task InviteUsersAsync(int userId,int groupId, List userIds); - /// - /// 加入群聊 - /// - /// 操作者ID - /// 群ID - /// - Task JoinGroupAsync(int userId,int groupId); - /// - /// 创建群聊 - /// - /// 操作者ID - /// 群信息 - /// 邀请用户列表 - /// - Task CreateGroupAsync(int userId, GroupCreateDto groupCreateDto); - /// - /// 删除群 - /// - /// 操作者ID - /// 群ID - /// - Task DeleteGroupAsync(int userId, int groupId); - /// - /// 获取当前用户群列表 - /// - /// 操作者ID - /// - /// - /// - /// - Task> GetGroupListAsync(int userId, int page, int limit, bool desc); - - Task UpdateGroupConversationAsync(GroupUpdateConversationDto dto); - - Task HandleGroupInviteAsync(int userid, HandleGroupInviteDto dto); - Task HandleGroupRequestAsync(int userid, HandleGroupRequestDto dto); - Task MakeGroupRequestAsync(int userId,int? adminUserId,int groupId); - Task MakeGroupMemberAsync(int userId, int groupId, GroupMemberRole? role); - } -} +using IM_API.Dtos.Group; +using IM_API.Models; + +namespace IM_API.Interface.Services +{ + public interface IGroupService + { + /// + /// 邀请好友入群 + /// + /// 操作者ID + /// 群ID + /// 邀请的用户列表 + /// + Task InviteUsersAsync(int userId,int groupId, List userIds); + /// + /// 加入群聊 + /// + /// 操作者ID + /// 群ID + /// + Task JoinGroupAsync(int userId,int groupId); + /// + /// 创建群聊 + /// + /// 操作者ID + /// 群信息 + /// 邀请用户列表 + /// + Task CreateGroupAsync(int userId, GroupCreateDto groupCreateDto); + /// + /// 删除群 + /// + /// 操作者ID + /// 群ID + /// + Task DeleteGroupAsync(int userId, int groupId); + /// + /// 获取当前用户群列表 + /// + /// 操作者ID + /// + /// + /// + /// + Task> GetGroupListAsync(int userId, int page, int limit, bool desc); + + Task UpdateGroupConversationAsync(GroupUpdateConversationDto dto); + + Task HandleGroupInviteAsync(int userid, HandleGroupInviteDto dto); + Task HandleGroupRequestAsync(int userid, HandleGroupRequestDto dto); + Task MakeGroupRequestAsync(int userId,int? adminUserId,int groupId); + Task MakeGroupMemberAsync(int userId, int groupId, GroupMemberRole? role); + } +} diff --git a/backend/IM_API/Interface/Services/IJWTService.cs b/backend/IM_API/Interface/Services/IJWTService.cs index 202d444..2211e62 100644 --- a/backend/IM_API/Interface/Services/IJWTService.cs +++ b/backend/IM_API/Interface/Services/IJWTService.cs @@ -1,21 +1,21 @@ -using System.Security.Claims; - -namespace IM_API.Interface.Services -{ - public interface IJWTService - { - /// - /// 生成用户凭证 - /// - /// 负载 - /// 过期时间 - /// - string GenerateAccessToken(IEnumerable claims, DateTime expiresAt); - /// - /// 创建用户凭证 - /// - /// - /// - (string token, DateTime expiresAt) CreateAccessTokenForUser(int userId,string username,string role); - } -} +using System.Security.Claims; + +namespace IM_API.Interface.Services +{ + public interface IJWTService + { + /// + /// 生成用户凭证 + /// + /// 负载 + /// 过期时间 + /// + string GenerateAccessToken(IEnumerable claims, DateTime expiresAt); + /// + /// 创建用户凭证 + /// + /// + /// + (string token, DateTime expiresAt) CreateAccessTokenForUser(int userId,string username,string role); + } +} diff --git a/backend/IM_API/Interface/Services/IMessageSevice.cs b/backend/IM_API/Interface/Services/IMessageSevice.cs index 3f82049..d9f6978 100644 --- a/backend/IM_API/Interface/Services/IMessageSevice.cs +++ b/backend/IM_API/Interface/Services/IMessageSevice.cs @@ -1,53 +1,53 @@ -using IM_API.Dtos; -using IM_API.Dtos.Message; -using IM_API.Models; -using IM_API.VOs.Message; - -namespace IM_API.Interface.Services -{ - public interface IMessageSevice - { - /// - /// 发送私聊消息 - /// - /// 发送人id - /// 接收人 - /// - /// - Task SendPrivateMessageAsync(int senderId,int receiverId,MessageBaseDto dto); - /// - /// 发送群聊消息 - /// - /// 发送人id - /// 接收群id - /// - /// - Task SendGroupMessageAsync(int senderId,int groupId,MessageBaseDto dto); - /// - /// 消息入库 - /// - /// - /// - Task MakeMessageAsync(Message message); - /// - /// 获取历史消息列表 - /// - /// 会话id(用于获取指定用户间聊天消息) - /// 消息id - /// 获取消息数量 - /// - Task> GetMessagesAsync(int userId,MessageQueryDto dto); - /// - /// 获取未读消息数 - /// - /// - /// - Task GetUnreadCountAsync(int userId); - Task> GetUnreadMessagesAsync(int userId); - Task MarkAsReadAsync(int userId,long messageId); - Task MarkConversationAsReadAsync(int userId,int? userBId,int? groupId); - Task RecallMessageAsync(int userId,int messageId); - - - } -} +using IM_API.Dtos; +using IM_API.Dtos.Message; +using IM_API.Models; +using IM_API.VOs.Message; + +namespace IM_API.Interface.Services +{ + public interface IMessageSevice + { + /// + /// 发送私聊消息 + /// + /// 发送人id + /// 接收人 + /// + /// + Task SendPrivateMessageAsync(int senderId,int receiverId,MessageBaseDto dto); + /// + /// 发送群聊消息 + /// + /// 发送人id + /// 接收群id + /// + /// + Task SendGroupMessageAsync(int senderId,int groupId,MessageBaseDto dto); + /// + /// 消息入库 + /// + /// + /// + Task MakeMessageAsync(Message message); + /// + /// 获取历史消息列表 + /// + /// 会话id(用于获取指定用户间聊天消息) + /// 消息id + /// 获取消息数量 + /// + Task> GetMessagesAsync(int userId,MessageQueryDto dto); + /// + /// 获取未读消息数 + /// + /// + /// + Task GetUnreadCountAsync(int userId); + Task> GetUnreadMessagesAsync(int userId); + Task MarkAsReadAsync(int userId,long messageId); + Task MarkConversationAsReadAsync(int userId,int? userBId,int? groupId); + Task RecallMessageAsync(int userId,int messageId); + + + } +} diff --git a/backend/IM_API/Interface/Services/IRefreshTokenService.cs b/backend/IM_API/Interface/Services/IRefreshTokenService.cs index 3133fc9..b544dd6 100644 --- a/backend/IM_API/Interface/Services/IRefreshTokenService.cs +++ b/backend/IM_API/Interface/Services/IRefreshTokenService.cs @@ -1,27 +1,27 @@ -namespace IM_API.Interface.Services -{ - public interface IRefreshTokenService - { - /// - /// 创建刷新令牌 - /// - /// - /// - /// - Task CreateRefreshTokenAsync(int userId, CancellationToken ct = default); - /// - /// 验证刷新令牌 - /// - /// 刷新令牌 - /// - /// - Task<(bool ok, int userId)> ValidateRefreshTokenAsync(string token, CancellationToken ct = default); - /// - /// 删除更新令牌 - /// - /// 刷新令牌 - /// - /// - Task RevokeRefreshTokenAsync(string token, CancellationToken ct = default); - } -} +namespace IM_API.Interface.Services +{ + public interface IRefreshTokenService + { + /// + /// 创建刷新令牌 + /// + /// + /// + /// + Task CreateRefreshTokenAsync(int userId, CancellationToken ct = default); + /// + /// 验证刷新令牌 + /// + /// 刷新令牌 + /// + /// + Task<(bool ok, int userId)> ValidateRefreshTokenAsync(string token, CancellationToken ct = default); + /// + /// 删除更新令牌 + /// + /// 刷新令牌 + /// + /// + Task RevokeRefreshTokenAsync(string token, CancellationToken ct = default); + } +} diff --git a/backend/IM_API/Interface/Services/ISequenceIdService.cs b/backend/IM_API/Interface/Services/ISequenceIdService.cs index f18fe58..5360d0e 100644 --- a/backend/IM_API/Interface/Services/ISequenceIdService.cs +++ b/backend/IM_API/Interface/Services/ISequenceIdService.cs @@ -1,12 +1,12 @@ -namespace IM_API.Interface.Services -{ - public interface ISequenceIdService - { - /// - /// 创建消息序号 - /// - /// 聊天唯一标识/param> - /// - Task GetNextSquenceIdAsync(string streamKey); - } -} +namespace IM_API.Interface.Services +{ + public interface ISequenceIdService + { + /// + /// 创建消息序号 + /// + /// 聊天唯一标识/param> + /// + Task GetNextSquenceIdAsync(string streamKey); + } +} diff --git a/backend/IM_API/Interface/Services/IUserService.cs b/backend/IM_API/Interface/Services/IUserService.cs index 68a5d38..065a226 100644 --- a/backend/IM_API/Interface/Services/IUserService.cs +++ b/backend/IM_API/Interface/Services/IUserService.cs @@ -1,45 +1,45 @@ -using IM_API.Dtos.User; -using IM_API.Models; - -namespace IM_API.Interface.Services -{ - public interface IUserService - { - /// - /// 获取用户信息 - /// - /// - /// - Task GetUserInfoAsync(int userId); - /// - /// 用户名查找用户 - /// - /// - /// - Task GetUserInfoByUsernameAsync(string username); - /// - /// 更新用户信息 - /// - /// - /// - Task UpdateUserAsync(int userId, UpdateUserDto dto); - /// - /// 重置用户密码 - /// - /// - /// - Task ResetPasswordAsync(int userId, string oldPassword, string password); - /// - /// 更新用户在线状态 - /// - /// - /// - Task UpdateOlineStatusAsync(int userId, UserOnlineStatus onlineStatus); - /// - /// 批量获取用户信息 - /// - /// 用户id列表 - /// - Task> GetUserInfoListAsync(List ids); - } -} +using IM_API.Dtos.User; +using IM_API.Models; + +namespace IM_API.Interface.Services +{ + public interface IUserService + { + /// + /// 获取用户信息 + /// + /// + /// + Task GetUserInfoAsync(int userId); + /// + /// 用户名查找用户 + /// + /// + /// + Task GetUserInfoByUsernameAsync(string username); + /// + /// 更新用户信息 + /// + /// + /// + Task UpdateUserAsync(int userId, UpdateUserDto dto); + /// + /// 重置用户密码 + /// + /// + /// + Task ResetPasswordAsync(int userId, string oldPassword, string password); + /// + /// 更新用户在线状态 + /// + /// + /// + Task UpdateOlineStatusAsync(int userId, UserOnlineStatus onlineStatus); + /// + /// 批量获取用户信息 + /// + /// 用户id列表 + /// + Task> GetUserInfoListAsync(List ids); + } +} diff --git a/backend/IM_API/Migrations/20260204140029_InitialCreate.Designer.cs b/backend/IM_API/Migrations/20260204140029_InitialCreate.Designer.cs index 387b874..00654b7 100644 --- a/backend/IM_API/Migrations/20260204140029_InitialCreate.Designer.cs +++ b/backend/IM_API/Migrations/20260204140029_InitialCreate.Designer.cs @@ -1,1094 +1,1094 @@ -// -using System; -using IM_API.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IM_API.Migrations -{ - [DbContext(typeof(ImContext))] - [Migration("20260204140029_InitialCreate")] - partial class InitialCreate - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .UseCollation("latin1_swedish_ci") - .HasAnnotation("ProductVersion", "8.0.21") - .HasAnnotation("Relational:MaxIdentifierLength", 64); - - MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); - MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("状态(0:正常,2:封禁) "); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("更新时间 "); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RoleId" }, "RoleId"); - - b.ToTable("admins", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("int(11)"); - - b.Property("LastMessage") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("最后一条最新消息"); - - b.Property("LastMessageTime") - .HasColumnType("datetime") - .HasComment("最后一条消息发送时间"); - - b.Property("LastReadMessageId") - .HasColumnType("int(11)") - .HasColumnName("lastReadMessageId") - .HasComment("最后一条未读消息ID "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.Property("TargetId") - .HasColumnType("int(11)") - .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); - - b.Property("UnreadCount") - .HasColumnType("int(11)") - .HasComment("未读消息数 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid"); - - b.HasIndex(new[] { "LastReadMessageId" }, "lastMessageId"); - - b.ToTable("conversations", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); - - b.Property("LastLogin") - .HasColumnType("datetime") - .HasComment("最后一次登录 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("设备所属用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid") - .HasDatabaseName("Userid1"); - - b.ToTable("devices", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("MessageId") - .HasColumnType("int(11)") - .HasComment("关联消息ID "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("文件名 "); - - b.Property("Size") - .HasColumnType("int(11)") - .HasComment("文件大小(单位:KB) "); - - b.Property("Type") - .IsRequired() - .HasMaxLength(10) - .HasColumnType("varchar(10)") - .HasComment("文件类型 "); - - b.Property("Url") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("varchar(100)") - .HasColumnName("URL") - .HasComment("文件储存URL "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "MessageId" }, "Messageld"); - - b.ToTable("files", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("好友头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("好友关系创建时间"); - - b.Property("FriendId") - .HasColumnType("int(11)") - .HasComment("用户2ID"); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("好友备注名"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户ID"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID"); - - b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); - - b.HasIndex(new[] { "FriendId" }, "用户2id"); - - b.ToTable("friends", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("申请时间 "); - - b.Property("Description") - .HasColumnType("text") - .HasComment("申请附言 "); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("备注"); - - b.Property("RequestUser") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.Property("ResponseUser") - .HasColumnType("int(11)") - .HasComment("被申请人 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RequestUser" }, "RequestUser"); - - b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); - - b.ToTable("friend_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("AllMembersBanned") - .HasColumnType("tinyint(4)") - .HasComment("全员禁言(0允许发言,2全员禁言)"); - - b.Property("Announcement") - .HasColumnType("text") - .HasComment("群公告"); - - b.Property("Auhority") - .HasColumnType("tinyint(4)") - .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); - - b.Property("Avatar") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("群头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("群聊创建时间"); - - b.Property("GroupMaster") - .HasColumnType("int(11)") - .HasComment("群主"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("群聊名称"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("群聊状态\r\n(1:正常,2:封禁)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID1"); - - b.ToTable("groups", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("InviteUser") - .HasColumnType("int(11)") - .HasComment("邀请用户"); - - b.Property("InvitedUser") - .HasColumnType("int(11)") - .HasComment("被邀请用户"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId"); - - b.HasIndex(new[] { "InviteUser" }, "InviteUser"); - - b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); - - b.ToTable("group_invite", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("加入群聊时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("Role") - .HasColumnType("tinyint(4)") - .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户编号"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "Groupld"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID2"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld1"); - - b.ToTable("group_member", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("入群附言"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号\r\n"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId") - .HasDatabaseName("GroupId1"); - - b.ToTable("group_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(通Devices/DType) "); - - b.Property("Logined") - .HasColumnType("datetime") - .HasComment("登录时间 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("登录用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld2"); - - b.ToTable("login_log", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("tinyint(4)") - .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("消息内容 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("发送时间 "); - - b.Property("GroupMemberId") - .HasColumnType("int(11)") - .HasComment("若为群消息则表示具体的成员id"); - - b.Property("MsgType") - .HasColumnType("tinyint(4)") - .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); - - b.Property("Recipient") - .HasColumnType("int(11)") - .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); - - b.Property("Sender") - .HasColumnType("int(11)") - .HasComment("发送者 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("消息状态(0:已发送,1:已撤回) "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Sender" }, "Sender"); - - b.ToTable("messages", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("通知内容"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Ntype") - .HasColumnType("tinyint(4)") - .HasColumnName("NType") - .HasComment("通知类型(0:文本)"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(40) - .HasColumnType("varchar(40)") - .HasComment("通知标题"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("接收人(为空为全体通知)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld3"); - - b.ToTable("notifications", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Code") - .HasColumnType("int(11)") - .HasComment("权限编码 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("权限名称 "); - - b.Property("Ptype") - .HasColumnType("int(11)") - .HasColumnName("PType") - .HasComment("权限类型(0:增,1:删,2:改,3:查) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("permissions", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.Property("Id") - .HasColumnType("int(11)") - .HasColumnName("ID"); - - b.Property("PermissionId") - .HasColumnType("int(11)") - .HasComment("权限 "); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "PermissionId" }, "Permissionld"); - - b.HasIndex(new[] { "RoleId" }, "Roleld"); - - b.ToTable("permissionarole", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("角色描述 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("角色名称 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("roles", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("用户头像链接"); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("创建时间"); - - b.Property("IsDeleted") - .HasColumnType("tinyint(4)") - .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); - - b.Property("NickName") - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户昵称"); - - b.Property("OnlineStatus") - .HasColumnType("tinyint(4)") - .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("Status") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(4)") - .HasDefaultValueSql("'1'") - .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("修改时间"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("唯一用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID3"); - - b.HasIndex(new[] { "Username" }, "Username") - .IsUnique(); - - b.ToTable("users", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Admins") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("admins_ibfk_1"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.HasOne("IM_API.Models.Message", "LastReadMessage") - .WithMany("Conversations") - .HasForeignKey("LastReadMessageId") - .HasConstraintName("conversations_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("Conversations") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("conversations_ibfk_1"); - - b.Navigation("LastReadMessage"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Devices") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("devices_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.HasOne("IM_API.Models.Message", "Message") - .WithMany("Files") - .HasForeignKey("MessageId") - .IsRequired() - .HasConstraintName("files_ibfk_1"); - - b.Navigation("Message"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.HasOne("IM_API.Models.User", "FriendNavigation") - .WithMany("FriendFriendNavigations") - .HasForeignKey("FriendId") - .IsRequired() - .HasConstraintName("用户2id"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("FriendUsers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("用户id"); - - b.Navigation("FriendNavigation"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.HasOne("IM_API.Models.User", "RequestUserNavigation") - .WithMany("FriendRequestRequestUserNavigations") - .HasForeignKey("RequestUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "ResponseUserNavigation") - .WithMany("FriendRequestResponseUserNavigations") - .HasForeignKey("ResponseUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_2"); - - b.Navigation("RequestUserNavigation"); - - b.Navigation("ResponseUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.HasOne("IM_API.Models.User", "GroupMasterNavigation") - .WithMany("Groups") - .HasForeignKey("GroupMaster") - .IsRequired() - .HasConstraintName("groups_ibfk_1"); - - b.Navigation("GroupMasterNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupInvites") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_invite_ibfk_2"); - - b.HasOne("IM_API.Models.User", "InviteUserNavigation") - .WithMany("GroupInviteInviteUserNavigations") - .HasForeignKey("InviteUser") - .HasConstraintName("group_invite_ibfk_1"); - - b.HasOne("IM_API.Models.User", "InvitedUserNavigation") - .WithMany("GroupInviteInvitedUserNavigations") - .HasForeignKey("InvitedUser") - .HasConstraintName("group_invite_ibfk_3"); - - b.Navigation("Group"); - - b.Navigation("InviteUserNavigation"); - - b.Navigation("InvitedUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupMembers") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_member_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupMembers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_member_ibfk_1"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "GroupNavigation") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_2"); - - b.Navigation("Group"); - - b.Navigation("GroupNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("LoginLogs") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("login_log_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.HasOne("IM_API.Models.User", "SenderNavigation") - .WithMany("Messages") - .HasForeignKey("Sender") - .IsRequired() - .HasConstraintName("messages_ibfk_1"); - - b.Navigation("SenderNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Notifications") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("notifications_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.HasOne("IM_API.Models.Permission", "Permission") - .WithMany("Permissionaroles") - .HasForeignKey("PermissionId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_2"); - - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Permissionaroles") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_1"); - - b.Navigation("Permission"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Navigation("GroupInvites"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Navigation("Conversations"); - - b.Navigation("Files"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Navigation("Admins"); - - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Navigation("Conversations"); - - b.Navigation("Devices"); - - b.Navigation("FriendFriendNavigations"); - - b.Navigation("FriendRequestRequestUserNavigations"); - - b.Navigation("FriendRequestResponseUserNavigations"); - - b.Navigation("FriendUsers"); - - b.Navigation("GroupInviteInviteUserNavigations"); - - b.Navigation("GroupInviteInvitedUserNavigations"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - - b.Navigation("Groups"); - - b.Navigation("LoginLogs"); - - b.Navigation("Messages"); - - b.Navigation("Notifications"); - }); -#pragma warning restore 612, 618 - } - } -} +// +using System; +using IM_API.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IM_API.Migrations +{ + [DbContext(typeof(ImContext))] + [Migration("20260204140029_InitialCreate")] + partial class InitialCreate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasAnnotation("ProductVersion", "8.0.21") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("状态(0:正常,2:封禁) "); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("更新时间 "); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RoleId" }, "RoleId"); + + b.ToTable("admins", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("int(11)"); + + b.Property("LastMessage") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("最后一条最新消息"); + + b.Property("LastMessageTime") + .HasColumnType("datetime") + .HasComment("最后一条消息发送时间"); + + b.Property("LastReadMessageId") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId") + .HasComment("最后一条未读消息ID "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.Property("TargetId") + .HasColumnType("int(11)") + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); + + b.Property("UnreadCount") + .HasColumnType("int(11)") + .HasComment("未读消息数 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid"); + + b.HasIndex(new[] { "LastReadMessageId" }, "lastMessageId"); + + b.ToTable("conversations", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); + + b.Property("LastLogin") + .HasColumnType("datetime") + .HasComment("最后一次登录 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("设备所属用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid") + .HasDatabaseName("Userid1"); + + b.ToTable("devices", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("MessageId") + .HasColumnType("int(11)") + .HasComment("关联消息ID "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("文件名 "); + + b.Property("Size") + .HasColumnType("int(11)") + .HasComment("文件大小(单位:KB) "); + + b.Property("Type") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("文件类型 "); + + b.Property("Url") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("URL") + .HasComment("文件储存URL "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "MessageId" }, "Messageld"); + + b.ToTable("files", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("好友头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("好友关系创建时间"); + + b.Property("FriendId") + .HasColumnType("int(11)") + .HasComment("用户2ID"); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("好友备注名"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户ID"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID"); + + b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); + + b.HasIndex(new[] { "FriendId" }, "用户2id"); + + b.ToTable("friends", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("申请时间 "); + + b.Property("Description") + .HasColumnType("text") + .HasComment("申请附言 "); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("备注"); + + b.Property("RequestUser") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.Property("ResponseUser") + .HasColumnType("int(11)") + .HasComment("被申请人 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RequestUser" }, "RequestUser"); + + b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); + + b.ToTable("friend_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllMembersBanned") + .HasColumnType("tinyint(4)") + .HasComment("全员禁言(0允许发言,2全员禁言)"); + + b.Property("Announcement") + .HasColumnType("text") + .HasComment("群公告"); + + b.Property("Auhority") + .HasColumnType("tinyint(4)") + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); + + b.Property("Avatar") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("群头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("群聊创建时间"); + + b.Property("GroupMaster") + .HasColumnType("int(11)") + .HasComment("群主"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("群聊名称"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("群聊状态\r\n(1:正常,2:封禁)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID1"); + + b.ToTable("groups", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("InviteUser") + .HasColumnType("int(11)") + .HasComment("邀请用户"); + + b.Property("InvitedUser") + .HasColumnType("int(11)") + .HasComment("被邀请用户"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId"); + + b.HasIndex(new[] { "InviteUser" }, "InviteUser"); + + b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); + + b.ToTable("group_invite", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("Role") + .HasColumnType("tinyint(4)") + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户编号"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "Groupld"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID2"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld1"); + + b.ToTable("group_member", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("入群附言"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号\r\n"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId") + .HasDatabaseName("GroupId1"); + + b.ToTable("group_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(通Devices/DType) "); + + b.Property("Logined") + .HasColumnType("datetime") + .HasComment("登录时间 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("登录用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld2"); + + b.ToTable("login_log", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("tinyint(4)") + .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("消息内容 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("发送时间 "); + + b.Property("GroupMemberId") + .HasColumnType("int(11)") + .HasComment("若为群消息则表示具体的成员id"); + + b.Property("MsgType") + .HasColumnType("tinyint(4)") + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); + + b.Property("Recipient") + .HasColumnType("int(11)") + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); + + b.Property("Sender") + .HasColumnType("int(11)") + .HasComment("发送者 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("消息状态(0:已发送,1:已撤回) "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Sender" }, "Sender"); + + b.ToTable("messages", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("通知内容"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Ntype") + .HasColumnType("tinyint(4)") + .HasColumnName("NType") + .HasComment("通知类型(0:文本)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("通知标题"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("接收人(为空为全体通知)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld3"); + + b.ToTable("notifications", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("int(11)") + .HasComment("权限编码 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("权限名称 "); + + b.Property("Ptype") + .HasColumnType("int(11)") + .HasColumnName("PType") + .HasComment("权限类型(0:增,1:删,2:改,3:查) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("permissions", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.Property("Id") + .HasColumnType("int(11)") + .HasColumnName("ID"); + + b.Property("PermissionId") + .HasColumnType("int(11)") + .HasComment("权限 "); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "PermissionId" }, "Permissionld"); + + b.HasIndex(new[] { "RoleId" }, "Roleld"); + + b.ToTable("permissionarole", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("角色描述 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("角色名称 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("roles", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("用户头像链接"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(4)") + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); + + b.Property("NickName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户昵称"); + + b.Property("OnlineStatus") + .HasColumnType("tinyint(4)") + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(4)") + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("修改时间"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("唯一用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID3"); + + b.HasIndex(new[] { "Username" }, "Username") + .IsUnique(); + + b.ToTable("users", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Admins") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("admins_ibfk_1"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.HasOne("IM_API.Models.Message", "LastReadMessage") + .WithMany("Conversations") + .HasForeignKey("LastReadMessageId") + .HasConstraintName("conversations_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("Conversations") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("conversations_ibfk_1"); + + b.Navigation("LastReadMessage"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Devices") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("devices_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.HasOne("IM_API.Models.Message", "Message") + .WithMany("Files") + .HasForeignKey("MessageId") + .IsRequired() + .HasConstraintName("files_ibfk_1"); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.HasOne("IM_API.Models.User", "FriendNavigation") + .WithMany("FriendFriendNavigations") + .HasForeignKey("FriendId") + .IsRequired() + .HasConstraintName("用户2id"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("FriendUsers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("用户id"); + + b.Navigation("FriendNavigation"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.HasOne("IM_API.Models.User", "RequestUserNavigation") + .WithMany("FriendRequestRequestUserNavigations") + .HasForeignKey("RequestUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "ResponseUserNavigation") + .WithMany("FriendRequestResponseUserNavigations") + .HasForeignKey("ResponseUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_2"); + + b.Navigation("RequestUserNavigation"); + + b.Navigation("ResponseUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.HasOne("IM_API.Models.User", "GroupMasterNavigation") + .WithMany("Groups") + .HasForeignKey("GroupMaster") + .IsRequired() + .HasConstraintName("groups_ibfk_1"); + + b.Navigation("GroupMasterNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupInvites") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_invite_ibfk_2"); + + b.HasOne("IM_API.Models.User", "InviteUserNavigation") + .WithMany("GroupInviteInviteUserNavigations") + .HasForeignKey("InviteUser") + .HasConstraintName("group_invite_ibfk_1"); + + b.HasOne("IM_API.Models.User", "InvitedUserNavigation") + .WithMany("GroupInviteInvitedUserNavigations") + .HasForeignKey("InvitedUser") + .HasConstraintName("group_invite_ibfk_3"); + + b.Navigation("Group"); + + b.Navigation("InviteUserNavigation"); + + b.Navigation("InvitedUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupMembers") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_member_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupMembers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_member_ibfk_1"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "GroupNavigation") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_2"); + + b.Navigation("Group"); + + b.Navigation("GroupNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("LoginLogs") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("login_log_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.HasOne("IM_API.Models.User", "SenderNavigation") + .WithMany("Messages") + .HasForeignKey("Sender") + .IsRequired() + .HasConstraintName("messages_ibfk_1"); + + b.Navigation("SenderNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Notifications") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("notifications_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.HasOne("IM_API.Models.Permission", "Permission") + .WithMany("Permissionaroles") + .HasForeignKey("PermissionId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_2"); + + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Permissionaroles") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_1"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Navigation("GroupInvites"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Navigation("Conversations"); + + b.Navigation("Files"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Navigation("Admins"); + + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Navigation("Conversations"); + + b.Navigation("Devices"); + + b.Navigation("FriendFriendNavigations"); + + b.Navigation("FriendRequestRequestUserNavigations"); + + b.Navigation("FriendRequestResponseUserNavigations"); + + b.Navigation("FriendUsers"); + + b.Navigation("GroupInviteInviteUserNavigations"); + + b.Navigation("GroupInviteInvitedUserNavigations"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + + b.Navigation("Groups"); + + b.Navigation("LoginLogs"); + + b.Navigation("Messages"); + + b.Navigation("Notifications"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/IM_API/Migrations/20260204140029_InitialCreate.cs b/backend/IM_API/Migrations/20260204140029_InitialCreate.cs index 2ba062e..0782db0 100644 --- a/backend/IM_API/Migrations/20260204140029_InitialCreate.cs +++ b/backend/IM_API/Migrations/20260204140029_InitialCreate.cs @@ -1,73 +1,73 @@ -using System; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace IM_API.Migrations -{ - /// - public partial class InitialCreate : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "admins"); - - migrationBuilder.DropTable( - name: "conversations"); - - migrationBuilder.DropTable( - name: "devices"); - - migrationBuilder.DropTable( - name: "files"); - - migrationBuilder.DropTable( - name: "friend_request"); - - migrationBuilder.DropTable( - name: "friends"); - - migrationBuilder.DropTable( - name: "group_invite"); - - migrationBuilder.DropTable( - name: "group_member"); - - migrationBuilder.DropTable( - name: "group_request"); - - migrationBuilder.DropTable( - name: "login_log"); - - migrationBuilder.DropTable( - name: "notifications"); - - migrationBuilder.DropTable( - name: "permissionarole"); - - migrationBuilder.DropTable( - name: "messages"); - - migrationBuilder.DropTable( - name: "groups"); - - migrationBuilder.DropTable( - name: "roles"); - - migrationBuilder.DropTable( - name: "permissions"); - - migrationBuilder.DropTable( - name: "users"); - } - } -} +using System; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IM_API.Migrations +{ + /// + public partial class InitialCreate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "admins"); + + migrationBuilder.DropTable( + name: "conversations"); + + migrationBuilder.DropTable( + name: "devices"); + + migrationBuilder.DropTable( + name: "files"); + + migrationBuilder.DropTable( + name: "friend_request"); + + migrationBuilder.DropTable( + name: "friends"); + + migrationBuilder.DropTable( + name: "group_invite"); + + migrationBuilder.DropTable( + name: "group_member"); + + migrationBuilder.DropTable( + name: "group_request"); + + migrationBuilder.DropTable( + name: "login_log"); + + migrationBuilder.DropTable( + name: "notifications"); + + migrationBuilder.DropTable( + name: "permissionarole"); + + migrationBuilder.DropTable( + name: "messages"); + + migrationBuilder.DropTable( + name: "groups"); + + migrationBuilder.DropTable( + name: "roles"); + + migrationBuilder.DropTable( + name: "permissions"); + + migrationBuilder.DropTable( + name: "users"); + } + } +} diff --git a/backend/IM_API/Migrations/20260204140708_change_file.Designer.cs b/backend/IM_API/Migrations/20260204140708_change_file.Designer.cs index 608a65f..3a369c7 100644 --- a/backend/IM_API/Migrations/20260204140708_change_file.Designer.cs +++ b/backend/IM_API/Migrations/20260204140708_change_file.Designer.cs @@ -1,1094 +1,1094 @@ -// -using System; -using IM_API.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IM_API.Migrations -{ - [DbContext(typeof(ImContext))] - [Migration("20260204140708_change_file")] - partial class change_file - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .UseCollation("latin1_swedish_ci") - .HasAnnotation("ProductVersion", "8.0.21") - .HasAnnotation("Relational:MaxIdentifierLength", 64); - - MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); - MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("状态(0:正常,2:封禁) "); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("更新时间 "); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RoleId" }, "RoleId"); - - b.ToTable("admins", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("int(11)"); - - b.Property("LastMessage") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("最后一条最新消息"); - - b.Property("LastMessageTime") - .HasColumnType("datetime") - .HasComment("最后一条消息发送时间"); - - b.Property("LastReadMessageId") - .HasColumnType("int(11)") - .HasColumnName("lastReadMessageId") - .HasComment("最后一条未读消息ID "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.Property("TargetId") - .HasColumnType("int(11)") - .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); - - b.Property("UnreadCount") - .HasColumnType("int(11)") - .HasComment("未读消息数 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid"); - - b.HasIndex(new[] { "LastReadMessageId" }, "lastMessageId"); - - b.ToTable("conversations", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); - - b.Property("LastLogin") - .HasColumnType("datetime") - .HasComment("最后一次登录 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("设备所属用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid") - .HasDatabaseName("Userid1"); - - b.ToTable("devices", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("FileType") - .IsRequired() - .HasMaxLength(10) - .HasColumnType("varchar(10)") - .HasComment("文件类型 "); - - b.Property("MessageId") - .HasColumnType("int(11)") - .HasComment("关联消息ID "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("文件名 "); - - b.Property("Size") - .HasColumnType("int(11)") - .HasComment("文件大小(单位:KB) "); - - b.Property("Url") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("varchar(100)") - .HasColumnName("URL") - .HasComment("文件储存URL "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "MessageId" }, "Messageld"); - - b.ToTable("files", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("好友头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("好友关系创建时间"); - - b.Property("FriendId") - .HasColumnType("int(11)") - .HasComment("用户2ID"); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("好友备注名"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户ID"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID"); - - b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); - - b.HasIndex(new[] { "FriendId" }, "用户2id"); - - b.ToTable("friends", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("申请时间 "); - - b.Property("Description") - .HasColumnType("text") - .HasComment("申请附言 "); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("备注"); - - b.Property("RequestUser") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.Property("ResponseUser") - .HasColumnType("int(11)") - .HasComment("被申请人 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RequestUser" }, "RequestUser"); - - b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); - - b.ToTable("friend_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("AllMembersBanned") - .HasColumnType("tinyint(4)") - .HasComment("全员禁言(0允许发言,2全员禁言)"); - - b.Property("Announcement") - .HasColumnType("text") - .HasComment("群公告"); - - b.Property("Auhority") - .HasColumnType("tinyint(4)") - .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); - - b.Property("Avatar") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("群头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("群聊创建时间"); - - b.Property("GroupMaster") - .HasColumnType("int(11)") - .HasComment("群主"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("群聊名称"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("群聊状态\r\n(1:正常,2:封禁)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID1"); - - b.ToTable("groups", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("InviteUser") - .HasColumnType("int(11)") - .HasComment("邀请用户"); - - b.Property("InvitedUser") - .HasColumnType("int(11)") - .HasComment("被邀请用户"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId"); - - b.HasIndex(new[] { "InviteUser" }, "InviteUser"); - - b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); - - b.ToTable("group_invite", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("加入群聊时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("Role") - .HasColumnType("tinyint(4)") - .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户编号"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "Groupld"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID2"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld1"); - - b.ToTable("group_member", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("入群附言"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号\r\n"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId") - .HasDatabaseName("GroupId1"); - - b.ToTable("group_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(通Devices/DType) "); - - b.Property("Logined") - .HasColumnType("datetime") - .HasComment("登录时间 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("登录用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld2"); - - b.ToTable("login_log", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("tinyint(4)") - .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("消息内容 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("发送时间 "); - - b.Property("GroupMemberId") - .HasColumnType("int(11)") - .HasComment("若为群消息则表示具体的成员id"); - - b.Property("MsgType") - .HasColumnType("tinyint(4)") - .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); - - b.Property("Recipient") - .HasColumnType("int(11)") - .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); - - b.Property("Sender") - .HasColumnType("int(11)") - .HasComment("发送者 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("消息状态(0:已发送,1:已撤回) "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Sender" }, "Sender"); - - b.ToTable("messages", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("通知内容"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Ntype") - .HasColumnType("tinyint(4)") - .HasColumnName("NType") - .HasComment("通知类型(0:文本)"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(40) - .HasColumnType("varchar(40)") - .HasComment("通知标题"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("接收人(为空为全体通知)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld3"); - - b.ToTable("notifications", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Code") - .HasColumnType("int(11)") - .HasComment("权限编码 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("权限名称 "); - - b.Property("Ptype") - .HasColumnType("int(11)") - .HasColumnName("PType") - .HasComment("权限类型(0:增,1:删,2:改,3:查) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("permissions", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.Property("Id") - .HasColumnType("int(11)") - .HasColumnName("ID"); - - b.Property("PermissionId") - .HasColumnType("int(11)") - .HasComment("权限 "); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "PermissionId" }, "Permissionld"); - - b.HasIndex(new[] { "RoleId" }, "Roleld"); - - b.ToTable("permissionarole", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("角色描述 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("角色名称 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("roles", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("用户头像链接"); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("创建时间"); - - b.Property("IsDeleted") - .HasColumnType("tinyint(4)") - .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); - - b.Property("NickName") - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户昵称"); - - b.Property("OnlineStatus") - .HasColumnType("tinyint(4)") - .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("Status") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(4)") - .HasDefaultValueSql("'1'") - .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("修改时间"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("唯一用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID3"); - - b.HasIndex(new[] { "Username" }, "Username") - .IsUnique(); - - b.ToTable("users", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Admins") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("admins_ibfk_1"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.HasOne("IM_API.Models.Message", "LastReadMessage") - .WithMany("Conversations") - .HasForeignKey("LastReadMessageId") - .HasConstraintName("conversations_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("Conversations") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("conversations_ibfk_1"); - - b.Navigation("LastReadMessage"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Devices") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("devices_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.HasOne("IM_API.Models.Message", "Message") - .WithMany("Files") - .HasForeignKey("MessageId") - .IsRequired() - .HasConstraintName("files_ibfk_1"); - - b.Navigation("Message"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.HasOne("IM_API.Models.User", "FriendNavigation") - .WithMany("FriendFriendNavigations") - .HasForeignKey("FriendId") - .IsRequired() - .HasConstraintName("用户2id"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("FriendUsers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("用户id"); - - b.Navigation("FriendNavigation"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.HasOne("IM_API.Models.User", "RequestUserNavigation") - .WithMany("FriendRequestRequestUserNavigations") - .HasForeignKey("RequestUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "ResponseUserNavigation") - .WithMany("FriendRequestResponseUserNavigations") - .HasForeignKey("ResponseUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_2"); - - b.Navigation("RequestUserNavigation"); - - b.Navigation("ResponseUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.HasOne("IM_API.Models.User", "GroupMasterNavigation") - .WithMany("Groups") - .HasForeignKey("GroupMaster") - .IsRequired() - .HasConstraintName("groups_ibfk_1"); - - b.Navigation("GroupMasterNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupInvites") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_invite_ibfk_2"); - - b.HasOne("IM_API.Models.User", "InviteUserNavigation") - .WithMany("GroupInviteInviteUserNavigations") - .HasForeignKey("InviteUser") - .HasConstraintName("group_invite_ibfk_1"); - - b.HasOne("IM_API.Models.User", "InvitedUserNavigation") - .WithMany("GroupInviteInvitedUserNavigations") - .HasForeignKey("InvitedUser") - .HasConstraintName("group_invite_ibfk_3"); - - b.Navigation("Group"); - - b.Navigation("InviteUserNavigation"); - - b.Navigation("InvitedUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupMembers") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_member_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupMembers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_member_ibfk_1"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "GroupNavigation") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_2"); - - b.Navigation("Group"); - - b.Navigation("GroupNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("LoginLogs") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("login_log_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.HasOne("IM_API.Models.User", "SenderNavigation") - .WithMany("Messages") - .HasForeignKey("Sender") - .IsRequired() - .HasConstraintName("messages_ibfk_1"); - - b.Navigation("SenderNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Notifications") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("notifications_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.HasOne("IM_API.Models.Permission", "Permission") - .WithMany("Permissionaroles") - .HasForeignKey("PermissionId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_2"); - - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Permissionaroles") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_1"); - - b.Navigation("Permission"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Navigation("GroupInvites"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Navigation("Conversations"); - - b.Navigation("Files"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Navigation("Admins"); - - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Navigation("Conversations"); - - b.Navigation("Devices"); - - b.Navigation("FriendFriendNavigations"); - - b.Navigation("FriendRequestRequestUserNavigations"); - - b.Navigation("FriendRequestResponseUserNavigations"); - - b.Navigation("FriendUsers"); - - b.Navigation("GroupInviteInviteUserNavigations"); - - b.Navigation("GroupInviteInvitedUserNavigations"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - - b.Navigation("Groups"); - - b.Navigation("LoginLogs"); - - b.Navigation("Messages"); - - b.Navigation("Notifications"); - }); -#pragma warning restore 612, 618 - } - } -} +// +using System; +using IM_API.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IM_API.Migrations +{ + [DbContext(typeof(ImContext))] + [Migration("20260204140708_change_file")] + partial class change_file + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasAnnotation("ProductVersion", "8.0.21") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("状态(0:正常,2:封禁) "); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("更新时间 "); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RoleId" }, "RoleId"); + + b.ToTable("admins", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("int(11)"); + + b.Property("LastMessage") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("最后一条最新消息"); + + b.Property("LastMessageTime") + .HasColumnType("datetime") + .HasComment("最后一条消息发送时间"); + + b.Property("LastReadMessageId") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId") + .HasComment("最后一条未读消息ID "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.Property("TargetId") + .HasColumnType("int(11)") + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); + + b.Property("UnreadCount") + .HasColumnType("int(11)") + .HasComment("未读消息数 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid"); + + b.HasIndex(new[] { "LastReadMessageId" }, "lastMessageId"); + + b.ToTable("conversations", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); + + b.Property("LastLogin") + .HasColumnType("datetime") + .HasComment("最后一次登录 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("设备所属用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid") + .HasDatabaseName("Userid1"); + + b.ToTable("devices", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("FileType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("文件类型 "); + + b.Property("MessageId") + .HasColumnType("int(11)") + .HasComment("关联消息ID "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("文件名 "); + + b.Property("Size") + .HasColumnType("int(11)") + .HasComment("文件大小(单位:KB) "); + + b.Property("Url") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("URL") + .HasComment("文件储存URL "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "MessageId" }, "Messageld"); + + b.ToTable("files", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("好友头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("好友关系创建时间"); + + b.Property("FriendId") + .HasColumnType("int(11)") + .HasComment("用户2ID"); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("好友备注名"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户ID"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID"); + + b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); + + b.HasIndex(new[] { "FriendId" }, "用户2id"); + + b.ToTable("friends", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("申请时间 "); + + b.Property("Description") + .HasColumnType("text") + .HasComment("申请附言 "); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("备注"); + + b.Property("RequestUser") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.Property("ResponseUser") + .HasColumnType("int(11)") + .HasComment("被申请人 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RequestUser" }, "RequestUser"); + + b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); + + b.ToTable("friend_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllMembersBanned") + .HasColumnType("tinyint(4)") + .HasComment("全员禁言(0允许发言,2全员禁言)"); + + b.Property("Announcement") + .HasColumnType("text") + .HasComment("群公告"); + + b.Property("Auhority") + .HasColumnType("tinyint(4)") + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); + + b.Property("Avatar") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("群头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("群聊创建时间"); + + b.Property("GroupMaster") + .HasColumnType("int(11)") + .HasComment("群主"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("群聊名称"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("群聊状态\r\n(1:正常,2:封禁)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID1"); + + b.ToTable("groups", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("InviteUser") + .HasColumnType("int(11)") + .HasComment("邀请用户"); + + b.Property("InvitedUser") + .HasColumnType("int(11)") + .HasComment("被邀请用户"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId"); + + b.HasIndex(new[] { "InviteUser" }, "InviteUser"); + + b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); + + b.ToTable("group_invite", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("Role") + .HasColumnType("tinyint(4)") + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户编号"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "Groupld"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID2"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld1"); + + b.ToTable("group_member", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("入群附言"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号\r\n"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId") + .HasDatabaseName("GroupId1"); + + b.ToTable("group_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(通Devices/DType) "); + + b.Property("Logined") + .HasColumnType("datetime") + .HasComment("登录时间 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("登录用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld2"); + + b.ToTable("login_log", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("tinyint(4)") + .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("消息内容 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("发送时间 "); + + b.Property("GroupMemberId") + .HasColumnType("int(11)") + .HasComment("若为群消息则表示具体的成员id"); + + b.Property("MsgType") + .HasColumnType("tinyint(4)") + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); + + b.Property("Recipient") + .HasColumnType("int(11)") + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); + + b.Property("Sender") + .HasColumnType("int(11)") + .HasComment("发送者 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("消息状态(0:已发送,1:已撤回) "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Sender" }, "Sender"); + + b.ToTable("messages", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("通知内容"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Ntype") + .HasColumnType("tinyint(4)") + .HasColumnName("NType") + .HasComment("通知类型(0:文本)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("通知标题"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("接收人(为空为全体通知)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld3"); + + b.ToTable("notifications", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("int(11)") + .HasComment("权限编码 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("权限名称 "); + + b.Property("Ptype") + .HasColumnType("int(11)") + .HasColumnName("PType") + .HasComment("权限类型(0:增,1:删,2:改,3:查) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("permissions", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.Property("Id") + .HasColumnType("int(11)") + .HasColumnName("ID"); + + b.Property("PermissionId") + .HasColumnType("int(11)") + .HasComment("权限 "); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "PermissionId" }, "Permissionld"); + + b.HasIndex(new[] { "RoleId" }, "Roleld"); + + b.ToTable("permissionarole", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("角色描述 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("角色名称 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("roles", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("用户头像链接"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(4)") + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); + + b.Property("NickName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户昵称"); + + b.Property("OnlineStatus") + .HasColumnType("tinyint(4)") + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(4)") + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("修改时间"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("唯一用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID3"); + + b.HasIndex(new[] { "Username" }, "Username") + .IsUnique(); + + b.ToTable("users", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Admins") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("admins_ibfk_1"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.HasOne("IM_API.Models.Message", "LastReadMessage") + .WithMany("Conversations") + .HasForeignKey("LastReadMessageId") + .HasConstraintName("conversations_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("Conversations") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("conversations_ibfk_1"); + + b.Navigation("LastReadMessage"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Devices") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("devices_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.HasOne("IM_API.Models.Message", "Message") + .WithMany("Files") + .HasForeignKey("MessageId") + .IsRequired() + .HasConstraintName("files_ibfk_1"); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.HasOne("IM_API.Models.User", "FriendNavigation") + .WithMany("FriendFriendNavigations") + .HasForeignKey("FriendId") + .IsRequired() + .HasConstraintName("用户2id"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("FriendUsers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("用户id"); + + b.Navigation("FriendNavigation"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.HasOne("IM_API.Models.User", "RequestUserNavigation") + .WithMany("FriendRequestRequestUserNavigations") + .HasForeignKey("RequestUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "ResponseUserNavigation") + .WithMany("FriendRequestResponseUserNavigations") + .HasForeignKey("ResponseUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_2"); + + b.Navigation("RequestUserNavigation"); + + b.Navigation("ResponseUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.HasOne("IM_API.Models.User", "GroupMasterNavigation") + .WithMany("Groups") + .HasForeignKey("GroupMaster") + .IsRequired() + .HasConstraintName("groups_ibfk_1"); + + b.Navigation("GroupMasterNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupInvites") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_invite_ibfk_2"); + + b.HasOne("IM_API.Models.User", "InviteUserNavigation") + .WithMany("GroupInviteInviteUserNavigations") + .HasForeignKey("InviteUser") + .HasConstraintName("group_invite_ibfk_1"); + + b.HasOne("IM_API.Models.User", "InvitedUserNavigation") + .WithMany("GroupInviteInvitedUserNavigations") + .HasForeignKey("InvitedUser") + .HasConstraintName("group_invite_ibfk_3"); + + b.Navigation("Group"); + + b.Navigation("InviteUserNavigation"); + + b.Navigation("InvitedUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupMembers") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_member_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupMembers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_member_ibfk_1"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "GroupNavigation") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_2"); + + b.Navigation("Group"); + + b.Navigation("GroupNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("LoginLogs") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("login_log_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.HasOne("IM_API.Models.User", "SenderNavigation") + .WithMany("Messages") + .HasForeignKey("Sender") + .IsRequired() + .HasConstraintName("messages_ibfk_1"); + + b.Navigation("SenderNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Notifications") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("notifications_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.HasOne("IM_API.Models.Permission", "Permission") + .WithMany("Permissionaroles") + .HasForeignKey("PermissionId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_2"); + + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Permissionaroles") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_1"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Navigation("GroupInvites"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Navigation("Conversations"); + + b.Navigation("Files"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Navigation("Admins"); + + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Navigation("Conversations"); + + b.Navigation("Devices"); + + b.Navigation("FriendFriendNavigations"); + + b.Navigation("FriendRequestRequestUserNavigations"); + + b.Navigation("FriendRequestResponseUserNavigations"); + + b.Navigation("FriendUsers"); + + b.Navigation("GroupInviteInviteUserNavigations"); + + b.Navigation("GroupInviteInvitedUserNavigations"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + + b.Navigation("Groups"); + + b.Navigation("LoginLogs"); + + b.Navigation("Messages"); + + b.Navigation("Notifications"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/IM_API/Migrations/20260204140708_change_file.cs b/backend/IM_API/Migrations/20260204140708_change_file.cs index 90bc8f7..6da08cd 100644 --- a/backend/IM_API/Migrations/20260204140708_change_file.cs +++ b/backend/IM_API/Migrations/20260204140708_change_file.cs @@ -1,28 +1,28 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace IM_API.Migrations -{ - /// - public partial class change_file : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.RenameColumn( - name: "Type", - table: "files", - newName: "FileType"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.RenameColumn( - name: "FileType", - table: "files", - newName: "Type"); - } - } -} +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IM_API.Migrations +{ + /// + public partial class change_file : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "Type", + table: "files", + newName: "FileType"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "FileType", + table: "files", + newName: "Type"); + } + } +} diff --git a/backend/IM_API/Migrations/20260204150644_add-SequenceId.Designer.cs b/backend/IM_API/Migrations/20260204150644_add-SequenceId.Designer.cs index 7c6b3e6..526236e 100644 --- a/backend/IM_API/Migrations/20260204150644_add-SequenceId.Designer.cs +++ b/backend/IM_API/Migrations/20260204150644_add-SequenceId.Designer.cs @@ -1,1093 +1,1093 @@ -// -using System; -using IM_API.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IM_API.Migrations -{ - [DbContext(typeof(ImContext))] - [Migration("20260204150644_add-SequenceId")] - partial class addSequenceId - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .UseCollation("latin1_swedish_ci") - .HasAnnotation("ProductVersion", "8.0.21") - .HasAnnotation("Relational:MaxIdentifierLength", 64); - - MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); - MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("状态(0:正常,2:封禁) "); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("更新时间 "); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RoleId" }, "RoleId"); - - b.ToTable("admins", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("int(11)"); - - b.Property("LastMessage") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("最后一条最新消息"); - - b.Property("LastMessageTime") - .HasColumnType("datetime") - .HasComment("最后一条消息发送时间"); - - b.Property("LastReadMessageId") - .HasColumnType("int(11)") - .HasColumnName("lastReadMessageId") - .HasComment("最后一条未读消息ID "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.Property("TargetId") - .HasColumnType("int(11)") - .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); - - b.Property("UnreadCount") - .HasColumnType("int(11)") - .HasComment("未读消息数 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid"); - - b.HasIndex(new[] { "LastReadMessageId" }, "lastMessageId"); - - b.ToTable("conversations", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); - - b.Property("LastLogin") - .HasColumnType("datetime") - .HasComment("最后一次登录 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("设备所属用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid") - .HasDatabaseName("Userid1"); - - b.ToTable("devices", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("FileType") - .IsRequired() - .HasMaxLength(10) - .HasColumnType("varchar(10)") - .HasComment("文件类型 "); - - b.Property("MessageId") - .HasColumnType("int(11)") - .HasComment("关联消息ID "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("文件名 "); - - b.Property("Size") - .HasColumnType("int(11)") - .HasComment("文件大小(单位:KB) "); - - b.Property("Url") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("varchar(100)") - .HasColumnName("URL") - .HasComment("文件储存URL "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "MessageId" }, "Messageld"); - - b.ToTable("files", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("好友头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("好友关系创建时间"); - - b.Property("FriendId") - .HasColumnType("int(11)") - .HasComment("用户2ID"); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("好友备注名"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户ID"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID"); - - b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); - - b.HasIndex(new[] { "FriendId" }, "用户2id"); - - b.ToTable("friends", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("申请时间 "); - - b.Property("Description") - .HasColumnType("text") - .HasComment("申请附言 "); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("备注"); - - b.Property("RequestUser") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.Property("ResponseUser") - .HasColumnType("int(11)") - .HasComment("被申请人 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RequestUser" }, "RequestUser"); - - b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); - - b.ToTable("friend_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("AllMembersBanned") - .HasColumnType("tinyint(4)") - .HasComment("全员禁言(0允许发言,2全员禁言)"); - - b.Property("Announcement") - .HasColumnType("text") - .HasComment("群公告"); - - b.Property("Auhority") - .HasColumnType("tinyint(4)") - .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); - - b.Property("Avatar") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("群头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("群聊创建时间"); - - b.Property("GroupMaster") - .HasColumnType("int(11)") - .HasComment("群主"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("群聊名称"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("群聊状态\r\n(1:正常,2:封禁)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID1"); - - b.ToTable("groups", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("InviteUser") - .HasColumnType("int(11)") - .HasComment("邀请用户"); - - b.Property("InvitedUser") - .HasColumnType("int(11)") - .HasComment("被邀请用户"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId"); - - b.HasIndex(new[] { "InviteUser" }, "InviteUser"); - - b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); - - b.ToTable("group_invite", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("加入群聊时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("Role") - .HasColumnType("tinyint(4)") - .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户编号"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "Groupld"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID2"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld1"); - - b.ToTable("group_member", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("入群附言"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号\r\n"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId") - .HasDatabaseName("GroupId1"); - - b.ToTable("group_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(通Devices/DType) "); - - b.Property("Logined") - .HasColumnType("datetime") - .HasComment("登录时间 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("登录用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld2"); - - b.ToTable("login_log", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("tinyint(4)") - .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("消息内容 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("发送时间 "); - - b.Property("MsgType") - .HasColumnType("tinyint(4)") - .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); - - b.Property("Recipient") - .HasColumnType("int(11)") - .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); - - b.Property("Sender") - .HasColumnType("int(11)") - .HasComment("发送者 "); - - b.Property("SequenceId") - .HasColumnType("bigint"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("消息状态(0:已发送,1:已撤回) "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Sender" }, "Sender"); - - b.ToTable("messages", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("通知内容"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Ntype") - .HasColumnType("tinyint(4)") - .HasColumnName("NType") - .HasComment("通知类型(0:文本)"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(40) - .HasColumnType("varchar(40)") - .HasComment("通知标题"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("接收人(为空为全体通知)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld3"); - - b.ToTable("notifications", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Code") - .HasColumnType("int(11)") - .HasComment("权限编码 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("权限名称 "); - - b.Property("Ptype") - .HasColumnType("int(11)") - .HasColumnName("PType") - .HasComment("权限类型(0:增,1:删,2:改,3:查) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("permissions", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.Property("Id") - .HasColumnType("int(11)") - .HasColumnName("ID"); - - b.Property("PermissionId") - .HasColumnType("int(11)") - .HasComment("权限 "); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "PermissionId" }, "Permissionld"); - - b.HasIndex(new[] { "RoleId" }, "Roleld"); - - b.ToTable("permissionarole", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("角色描述 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("角色名称 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("roles", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("用户头像链接"); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("创建时间"); - - b.Property("IsDeleted") - .HasColumnType("tinyint(4)") - .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); - - b.Property("NickName") - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户昵称"); - - b.Property("OnlineStatus") - .HasColumnType("tinyint(4)") - .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("Status") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(4)") - .HasDefaultValueSql("'1'") - .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("修改时间"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("唯一用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID3"); - - b.HasIndex(new[] { "Username" }, "Username") - .IsUnique(); - - b.ToTable("users", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Admins") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("admins_ibfk_1"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.HasOne("IM_API.Models.Message", "LastReadMessage") - .WithMany("Conversations") - .HasForeignKey("LastReadMessageId") - .HasConstraintName("conversations_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("Conversations") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("conversations_ibfk_1"); - - b.Navigation("LastReadMessage"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Devices") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("devices_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.HasOne("IM_API.Models.Message", "Message") - .WithMany("Files") - .HasForeignKey("MessageId") - .IsRequired() - .HasConstraintName("files_ibfk_1"); - - b.Navigation("Message"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.HasOne("IM_API.Models.User", "FriendNavigation") - .WithMany("FriendFriendNavigations") - .HasForeignKey("FriendId") - .IsRequired() - .HasConstraintName("用户2id"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("FriendUsers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("用户id"); - - b.Navigation("FriendNavigation"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.HasOne("IM_API.Models.User", "RequestUserNavigation") - .WithMany("FriendRequestRequestUserNavigations") - .HasForeignKey("RequestUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "ResponseUserNavigation") - .WithMany("FriendRequestResponseUserNavigations") - .HasForeignKey("ResponseUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_2"); - - b.Navigation("RequestUserNavigation"); - - b.Navigation("ResponseUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.HasOne("IM_API.Models.User", "GroupMasterNavigation") - .WithMany("Groups") - .HasForeignKey("GroupMaster") - .IsRequired() - .HasConstraintName("groups_ibfk_1"); - - b.Navigation("GroupMasterNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupInvites") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_invite_ibfk_2"); - - b.HasOne("IM_API.Models.User", "InviteUserNavigation") - .WithMany("GroupInviteInviteUserNavigations") - .HasForeignKey("InviteUser") - .HasConstraintName("group_invite_ibfk_1"); - - b.HasOne("IM_API.Models.User", "InvitedUserNavigation") - .WithMany("GroupInviteInvitedUserNavigations") - .HasForeignKey("InvitedUser") - .HasConstraintName("group_invite_ibfk_3"); - - b.Navigation("Group"); - - b.Navigation("InviteUserNavigation"); - - b.Navigation("InvitedUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupMembers") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_member_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupMembers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_member_ibfk_1"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "GroupNavigation") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_2"); - - b.Navigation("Group"); - - b.Navigation("GroupNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("LoginLogs") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("login_log_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.HasOne("IM_API.Models.User", "SenderNavigation") - .WithMany("Messages") - .HasForeignKey("Sender") - .IsRequired() - .HasConstraintName("messages_ibfk_1"); - - b.Navigation("SenderNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Notifications") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("notifications_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.HasOne("IM_API.Models.Permission", "Permission") - .WithMany("Permissionaroles") - .HasForeignKey("PermissionId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_2"); - - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Permissionaroles") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_1"); - - b.Navigation("Permission"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Navigation("GroupInvites"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Navigation("Conversations"); - - b.Navigation("Files"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Navigation("Admins"); - - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Navigation("Conversations"); - - b.Navigation("Devices"); - - b.Navigation("FriendFriendNavigations"); - - b.Navigation("FriendRequestRequestUserNavigations"); - - b.Navigation("FriendRequestResponseUserNavigations"); - - b.Navigation("FriendUsers"); - - b.Navigation("GroupInviteInviteUserNavigations"); - - b.Navigation("GroupInviteInvitedUserNavigations"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - - b.Navigation("Groups"); - - b.Navigation("LoginLogs"); - - b.Navigation("Messages"); - - b.Navigation("Notifications"); - }); -#pragma warning restore 612, 618 - } - } -} +// +using System; +using IM_API.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IM_API.Migrations +{ + [DbContext(typeof(ImContext))] + [Migration("20260204150644_add-SequenceId")] + partial class addSequenceId + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasAnnotation("ProductVersion", "8.0.21") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("状态(0:正常,2:封禁) "); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("更新时间 "); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RoleId" }, "RoleId"); + + b.ToTable("admins", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("int(11)"); + + b.Property("LastMessage") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("最后一条最新消息"); + + b.Property("LastMessageTime") + .HasColumnType("datetime") + .HasComment("最后一条消息发送时间"); + + b.Property("LastReadMessageId") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId") + .HasComment("最后一条未读消息ID "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.Property("TargetId") + .HasColumnType("int(11)") + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); + + b.Property("UnreadCount") + .HasColumnType("int(11)") + .HasComment("未读消息数 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid"); + + b.HasIndex(new[] { "LastReadMessageId" }, "lastMessageId"); + + b.ToTable("conversations", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); + + b.Property("LastLogin") + .HasColumnType("datetime") + .HasComment("最后一次登录 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("设备所属用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid") + .HasDatabaseName("Userid1"); + + b.ToTable("devices", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("FileType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("文件类型 "); + + b.Property("MessageId") + .HasColumnType("int(11)") + .HasComment("关联消息ID "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("文件名 "); + + b.Property("Size") + .HasColumnType("int(11)") + .HasComment("文件大小(单位:KB) "); + + b.Property("Url") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("URL") + .HasComment("文件储存URL "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "MessageId" }, "Messageld"); + + b.ToTable("files", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("好友头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("好友关系创建时间"); + + b.Property("FriendId") + .HasColumnType("int(11)") + .HasComment("用户2ID"); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("好友备注名"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户ID"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID"); + + b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); + + b.HasIndex(new[] { "FriendId" }, "用户2id"); + + b.ToTable("friends", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("申请时间 "); + + b.Property("Description") + .HasColumnType("text") + .HasComment("申请附言 "); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("备注"); + + b.Property("RequestUser") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.Property("ResponseUser") + .HasColumnType("int(11)") + .HasComment("被申请人 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RequestUser" }, "RequestUser"); + + b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); + + b.ToTable("friend_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllMembersBanned") + .HasColumnType("tinyint(4)") + .HasComment("全员禁言(0允许发言,2全员禁言)"); + + b.Property("Announcement") + .HasColumnType("text") + .HasComment("群公告"); + + b.Property("Auhority") + .HasColumnType("tinyint(4)") + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); + + b.Property("Avatar") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("群头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("群聊创建时间"); + + b.Property("GroupMaster") + .HasColumnType("int(11)") + .HasComment("群主"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("群聊名称"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("群聊状态\r\n(1:正常,2:封禁)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID1"); + + b.ToTable("groups", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("InviteUser") + .HasColumnType("int(11)") + .HasComment("邀请用户"); + + b.Property("InvitedUser") + .HasColumnType("int(11)") + .HasComment("被邀请用户"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId"); + + b.HasIndex(new[] { "InviteUser" }, "InviteUser"); + + b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); + + b.ToTable("group_invite", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("Role") + .HasColumnType("tinyint(4)") + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户编号"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "Groupld"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID2"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld1"); + + b.ToTable("group_member", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("入群附言"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号\r\n"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId") + .HasDatabaseName("GroupId1"); + + b.ToTable("group_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(通Devices/DType) "); + + b.Property("Logined") + .HasColumnType("datetime") + .HasComment("登录时间 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("登录用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld2"); + + b.ToTable("login_log", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("tinyint(4)") + .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("消息内容 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("发送时间 "); + + b.Property("MsgType") + .HasColumnType("tinyint(4)") + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); + + b.Property("Recipient") + .HasColumnType("int(11)") + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); + + b.Property("Sender") + .HasColumnType("int(11)") + .HasComment("发送者 "); + + b.Property("SequenceId") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("消息状态(0:已发送,1:已撤回) "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Sender" }, "Sender"); + + b.ToTable("messages", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("通知内容"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Ntype") + .HasColumnType("tinyint(4)") + .HasColumnName("NType") + .HasComment("通知类型(0:文本)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("通知标题"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("接收人(为空为全体通知)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld3"); + + b.ToTable("notifications", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("int(11)") + .HasComment("权限编码 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("权限名称 "); + + b.Property("Ptype") + .HasColumnType("int(11)") + .HasColumnName("PType") + .HasComment("权限类型(0:增,1:删,2:改,3:查) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("permissions", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.Property("Id") + .HasColumnType("int(11)") + .HasColumnName("ID"); + + b.Property("PermissionId") + .HasColumnType("int(11)") + .HasComment("权限 "); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "PermissionId" }, "Permissionld"); + + b.HasIndex(new[] { "RoleId" }, "Roleld"); + + b.ToTable("permissionarole", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("角色描述 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("角色名称 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("roles", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("用户头像链接"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(4)") + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); + + b.Property("NickName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户昵称"); + + b.Property("OnlineStatus") + .HasColumnType("tinyint(4)") + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(4)") + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("修改时间"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("唯一用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID3"); + + b.HasIndex(new[] { "Username" }, "Username") + .IsUnique(); + + b.ToTable("users", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Admins") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("admins_ibfk_1"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.HasOne("IM_API.Models.Message", "LastReadMessage") + .WithMany("Conversations") + .HasForeignKey("LastReadMessageId") + .HasConstraintName("conversations_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("Conversations") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("conversations_ibfk_1"); + + b.Navigation("LastReadMessage"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Devices") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("devices_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.HasOne("IM_API.Models.Message", "Message") + .WithMany("Files") + .HasForeignKey("MessageId") + .IsRequired() + .HasConstraintName("files_ibfk_1"); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.HasOne("IM_API.Models.User", "FriendNavigation") + .WithMany("FriendFriendNavigations") + .HasForeignKey("FriendId") + .IsRequired() + .HasConstraintName("用户2id"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("FriendUsers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("用户id"); + + b.Navigation("FriendNavigation"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.HasOne("IM_API.Models.User", "RequestUserNavigation") + .WithMany("FriendRequestRequestUserNavigations") + .HasForeignKey("RequestUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "ResponseUserNavigation") + .WithMany("FriendRequestResponseUserNavigations") + .HasForeignKey("ResponseUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_2"); + + b.Navigation("RequestUserNavigation"); + + b.Navigation("ResponseUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.HasOne("IM_API.Models.User", "GroupMasterNavigation") + .WithMany("Groups") + .HasForeignKey("GroupMaster") + .IsRequired() + .HasConstraintName("groups_ibfk_1"); + + b.Navigation("GroupMasterNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupInvites") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_invite_ibfk_2"); + + b.HasOne("IM_API.Models.User", "InviteUserNavigation") + .WithMany("GroupInviteInviteUserNavigations") + .HasForeignKey("InviteUser") + .HasConstraintName("group_invite_ibfk_1"); + + b.HasOne("IM_API.Models.User", "InvitedUserNavigation") + .WithMany("GroupInviteInvitedUserNavigations") + .HasForeignKey("InvitedUser") + .HasConstraintName("group_invite_ibfk_3"); + + b.Navigation("Group"); + + b.Navigation("InviteUserNavigation"); + + b.Navigation("InvitedUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupMembers") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_member_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupMembers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_member_ibfk_1"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "GroupNavigation") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_2"); + + b.Navigation("Group"); + + b.Navigation("GroupNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("LoginLogs") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("login_log_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.HasOne("IM_API.Models.User", "SenderNavigation") + .WithMany("Messages") + .HasForeignKey("Sender") + .IsRequired() + .HasConstraintName("messages_ibfk_1"); + + b.Navigation("SenderNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Notifications") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("notifications_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.HasOne("IM_API.Models.Permission", "Permission") + .WithMany("Permissionaroles") + .HasForeignKey("PermissionId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_2"); + + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Permissionaroles") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_1"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Navigation("GroupInvites"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Navigation("Conversations"); + + b.Navigation("Files"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Navigation("Admins"); + + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Navigation("Conversations"); + + b.Navigation("Devices"); + + b.Navigation("FriendFriendNavigations"); + + b.Navigation("FriendRequestRequestUserNavigations"); + + b.Navigation("FriendRequestResponseUserNavigations"); + + b.Navigation("FriendUsers"); + + b.Navigation("GroupInviteInviteUserNavigations"); + + b.Navigation("GroupInviteInvitedUserNavigations"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + + b.Navigation("Groups"); + + b.Navigation("LoginLogs"); + + b.Navigation("Messages"); + + b.Navigation("Notifications"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/IM_API/Migrations/20260204150644_add-SequenceId.cs b/backend/IM_API/Migrations/20260204150644_add-SequenceId.cs index 4940eda..6e40327 100644 --- a/backend/IM_API/Migrations/20260204150644_add-SequenceId.cs +++ b/backend/IM_API/Migrations/20260204150644_add-SequenceId.cs @@ -1,40 +1,40 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace IM_API.Migrations -{ - /// - public partial class addSequenceId : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "GroupMemberId", - table: "messages"); - - migrationBuilder.AddColumn( - name: "SequenceId", - table: "messages", - type: "bigint", - nullable: false, - defaultValue: 0L); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "SequenceId", - table: "messages"); - - migrationBuilder.AddColumn( - name: "GroupMemberId", - table: "messages", - type: "int(11)", - nullable: true, - comment: "若为群消息则表示具体的成员id"); - } - } -} +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IM_API.Migrations +{ + /// + public partial class addSequenceId : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "GroupMemberId", + table: "messages"); + + migrationBuilder.AddColumn( + name: "SequenceId", + table: "messages", + type: "bigint", + nullable: false, + defaultValue: 0L); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "SequenceId", + table: "messages"); + + migrationBuilder.AddColumn( + name: "GroupMemberId", + table: "messages", + type: "int(11)", + nullable: true, + comment: "若为群消息则表示具体的成员id"); + } + } +} diff --git a/backend/IM_API/Migrations/20260204151306_update-conversation-lastreadmessageid.Designer.cs b/backend/IM_API/Migrations/20260204151306_update-conversation-lastreadmessageid.Designer.cs index 463cba6..e43a946 100644 --- a/backend/IM_API/Migrations/20260204151306_update-conversation-lastreadmessageid.Designer.cs +++ b/backend/IM_API/Migrations/20260204151306_update-conversation-lastreadmessageid.Designer.cs @@ -1,1094 +1,1094 @@ -// -using System; -using IM_API.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IM_API.Migrations -{ - [DbContext(typeof(ImContext))] - [Migration("20260204151306_update-conversation-lastreadmessageid")] - partial class updateconversationlastreadmessageid - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .UseCollation("latin1_swedish_ci") - .HasAnnotation("ProductVersion", "8.0.21") - .HasAnnotation("Relational:MaxIdentifierLength", 64); - - MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); - MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("状态(0:正常,2:封禁) "); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("更新时间 "); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RoleId" }, "RoleId"); - - b.ToTable("admins", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("int(11)"); - - b.Property("LastMessage") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("最后一条最新消息"); - - b.Property("LastMessageTime") - .HasColumnType("datetime") - .HasComment("最后一条消息发送时间"); - - b.Property("LastReadMessageId") - .HasColumnType("int(11)") - .HasColumnName("lastReadMessageId") - .HasComment("最后一条未读消息ID "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.Property("TargetId") - .HasColumnType("int(11)") - .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); - - b.Property("UnreadCount") - .HasColumnType("int(11)") - .HasComment("未读消息数 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid"); - - b.HasIndex(new[] { "LastReadMessageId" }, "lastMessageId"); - - b.ToTable("conversations", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); - - b.Property("LastLogin") - .HasColumnType("datetime") - .HasComment("最后一次登录 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("设备所属用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid") - .HasDatabaseName("Userid1"); - - b.ToTable("devices", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("FileType") - .IsRequired() - .HasMaxLength(10) - .HasColumnType("varchar(10)") - .HasComment("文件类型 "); - - b.Property("MessageId") - .HasColumnType("int(11)") - .HasComment("关联消息ID "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("文件名 "); - - b.Property("Size") - .HasColumnType("int(11)") - .HasComment("文件大小(单位:KB) "); - - b.Property("Url") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("varchar(100)") - .HasColumnName("URL") - .HasComment("文件储存URL "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "MessageId" }, "Messageld"); - - b.ToTable("files", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("好友头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("好友关系创建时间"); - - b.Property("FriendId") - .HasColumnType("int(11)") - .HasComment("用户2ID"); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("好友备注名"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户ID"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID"); - - b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); - - b.HasIndex(new[] { "FriendId" }, "用户2id"); - - b.ToTable("friends", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("申请时间 "); - - b.Property("Description") - .HasColumnType("text") - .HasComment("申请附言 "); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("备注"); - - b.Property("RequestUser") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.Property("ResponseUser") - .HasColumnType("int(11)") - .HasComment("被申请人 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RequestUser" }, "RequestUser"); - - b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); - - b.ToTable("friend_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("AllMembersBanned") - .HasColumnType("tinyint(4)") - .HasComment("全员禁言(0允许发言,2全员禁言)"); - - b.Property("Announcement") - .HasColumnType("text") - .HasComment("群公告"); - - b.Property("Auhority") - .HasColumnType("tinyint(4)") - .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); - - b.Property("Avatar") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("群头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("群聊创建时间"); - - b.Property("GroupMaster") - .HasColumnType("int(11)") - .HasComment("群主"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("群聊名称"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("群聊状态\r\n(1:正常,2:封禁)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID1"); - - b.ToTable("groups", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("InviteUser") - .HasColumnType("int(11)") - .HasComment("邀请用户"); - - b.Property("InvitedUser") - .HasColumnType("int(11)") - .HasComment("被邀请用户"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId"); - - b.HasIndex(new[] { "InviteUser" }, "InviteUser"); - - b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); - - b.ToTable("group_invite", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("加入群聊时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("Role") - .HasColumnType("tinyint(4)") - .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户编号"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "Groupld"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID2"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld1"); - - b.ToTable("group_member", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("入群附言"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号\r\n"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId") - .HasDatabaseName("GroupId1"); - - b.ToTable("group_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(通Devices/DType) "); - - b.Property("Logined") - .HasColumnType("datetime") - .HasComment("登录时间 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("登录用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld2"); - - b.ToTable("login_log", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("tinyint(4)") - .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("消息内容 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("发送时间 "); - - b.Property("MsgType") - .HasColumnType("tinyint(4)") - .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); - - b.Property("Recipient") - .HasColumnType("int(11)") - .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); - - b.Property("Sender") - .HasColumnType("int(11)") - .HasComment("发送者 "); - - b.Property("SequenceId") - .HasColumnType("bigint"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("消息状态(0:已发送,1:已撤回) "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Sender" }, "Sender"); - - b.ToTable("messages", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("通知内容"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Ntype") - .HasColumnType("tinyint(4)") - .HasColumnName("NType") - .HasComment("通知类型(0:文本)"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(40) - .HasColumnType("varchar(40)") - .HasComment("通知标题"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("接收人(为空为全体通知)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld3"); - - b.ToTable("notifications", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Code") - .HasColumnType("int(11)") - .HasComment("权限编码 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("权限名称 "); - - b.Property("Ptype") - .HasColumnType("int(11)") - .HasColumnName("PType") - .HasComment("权限类型(0:增,1:删,2:改,3:查) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("permissions", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.Property("Id") - .HasColumnType("int(11)") - .HasColumnName("ID"); - - b.Property("PermissionId") - .HasColumnType("int(11)") - .HasComment("权限 "); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "PermissionId" }, "Permissionld"); - - b.HasIndex(new[] { "RoleId" }, "Roleld"); - - b.ToTable("permissionarole", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("角色描述 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("角色名称 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("roles", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("用户头像链接"); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("创建时间"); - - b.Property("IsDeleted") - .HasColumnType("tinyint(4)") - .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); - - b.Property("NickName") - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户昵称"); - - b.Property("OnlineStatus") - .HasColumnType("tinyint(4)") - .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("Status") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(4)") - .HasDefaultValueSql("'1'") - .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("修改时间"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("唯一用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID3"); - - b.HasIndex(new[] { "Username" }, "Username") - .IsUnique(); - - b.ToTable("users", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Admins") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("admins_ibfk_1"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.HasOne("IM_API.Models.Message", "LastReadMessage") - .WithMany("Conversations") - .HasForeignKey("LastReadMessageId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("conversations_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("Conversations") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("conversations_ibfk_1"); - - b.Navigation("LastReadMessage"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Devices") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("devices_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.HasOne("IM_API.Models.Message", "Message") - .WithMany("Files") - .HasForeignKey("MessageId") - .IsRequired() - .HasConstraintName("files_ibfk_1"); - - b.Navigation("Message"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.HasOne("IM_API.Models.User", "FriendNavigation") - .WithMany("FriendFriendNavigations") - .HasForeignKey("FriendId") - .IsRequired() - .HasConstraintName("用户2id"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("FriendUsers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("用户id"); - - b.Navigation("FriendNavigation"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.HasOne("IM_API.Models.User", "RequestUserNavigation") - .WithMany("FriendRequestRequestUserNavigations") - .HasForeignKey("RequestUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "ResponseUserNavigation") - .WithMany("FriendRequestResponseUserNavigations") - .HasForeignKey("ResponseUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_2"); - - b.Navigation("RequestUserNavigation"); - - b.Navigation("ResponseUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.HasOne("IM_API.Models.User", "GroupMasterNavigation") - .WithMany("Groups") - .HasForeignKey("GroupMaster") - .IsRequired() - .HasConstraintName("groups_ibfk_1"); - - b.Navigation("GroupMasterNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupInvites") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_invite_ibfk_2"); - - b.HasOne("IM_API.Models.User", "InviteUserNavigation") - .WithMany("GroupInviteInviteUserNavigations") - .HasForeignKey("InviteUser") - .HasConstraintName("group_invite_ibfk_1"); - - b.HasOne("IM_API.Models.User", "InvitedUserNavigation") - .WithMany("GroupInviteInvitedUserNavigations") - .HasForeignKey("InvitedUser") - .HasConstraintName("group_invite_ibfk_3"); - - b.Navigation("Group"); - - b.Navigation("InviteUserNavigation"); - - b.Navigation("InvitedUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupMembers") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_member_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupMembers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_member_ibfk_1"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "GroupNavigation") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_2"); - - b.Navigation("Group"); - - b.Navigation("GroupNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("LoginLogs") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("login_log_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.HasOne("IM_API.Models.User", "SenderNavigation") - .WithMany("Messages") - .HasForeignKey("Sender") - .IsRequired() - .HasConstraintName("messages_ibfk_1"); - - b.Navigation("SenderNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Notifications") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("notifications_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.HasOne("IM_API.Models.Permission", "Permission") - .WithMany("Permissionaroles") - .HasForeignKey("PermissionId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_2"); - - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Permissionaroles") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_1"); - - b.Navigation("Permission"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Navigation("GroupInvites"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Navigation("Conversations"); - - b.Navigation("Files"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Navigation("Admins"); - - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Navigation("Conversations"); - - b.Navigation("Devices"); - - b.Navigation("FriendFriendNavigations"); - - b.Navigation("FriendRequestRequestUserNavigations"); - - b.Navigation("FriendRequestResponseUserNavigations"); - - b.Navigation("FriendUsers"); - - b.Navigation("GroupInviteInviteUserNavigations"); - - b.Navigation("GroupInviteInvitedUserNavigations"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - - b.Navigation("Groups"); - - b.Navigation("LoginLogs"); - - b.Navigation("Messages"); - - b.Navigation("Notifications"); - }); -#pragma warning restore 612, 618 - } - } -} +// +using System; +using IM_API.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IM_API.Migrations +{ + [DbContext(typeof(ImContext))] + [Migration("20260204151306_update-conversation-lastreadmessageid")] + partial class updateconversationlastreadmessageid + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasAnnotation("ProductVersion", "8.0.21") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("状态(0:正常,2:封禁) "); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("更新时间 "); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RoleId" }, "RoleId"); + + b.ToTable("admins", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("int(11)"); + + b.Property("LastMessage") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("最后一条最新消息"); + + b.Property("LastMessageTime") + .HasColumnType("datetime") + .HasComment("最后一条消息发送时间"); + + b.Property("LastReadMessageId") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId") + .HasComment("最后一条未读消息ID "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.Property("TargetId") + .HasColumnType("int(11)") + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); + + b.Property("UnreadCount") + .HasColumnType("int(11)") + .HasComment("未读消息数 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid"); + + b.HasIndex(new[] { "LastReadMessageId" }, "lastMessageId"); + + b.ToTable("conversations", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); + + b.Property("LastLogin") + .HasColumnType("datetime") + .HasComment("最后一次登录 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("设备所属用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid") + .HasDatabaseName("Userid1"); + + b.ToTable("devices", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("FileType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("文件类型 "); + + b.Property("MessageId") + .HasColumnType("int(11)") + .HasComment("关联消息ID "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("文件名 "); + + b.Property("Size") + .HasColumnType("int(11)") + .HasComment("文件大小(单位:KB) "); + + b.Property("Url") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("URL") + .HasComment("文件储存URL "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "MessageId" }, "Messageld"); + + b.ToTable("files", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("好友头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("好友关系创建时间"); + + b.Property("FriendId") + .HasColumnType("int(11)") + .HasComment("用户2ID"); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("好友备注名"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户ID"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID"); + + b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); + + b.HasIndex(new[] { "FriendId" }, "用户2id"); + + b.ToTable("friends", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("申请时间 "); + + b.Property("Description") + .HasColumnType("text") + .HasComment("申请附言 "); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("备注"); + + b.Property("RequestUser") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.Property("ResponseUser") + .HasColumnType("int(11)") + .HasComment("被申请人 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RequestUser" }, "RequestUser"); + + b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); + + b.ToTable("friend_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllMembersBanned") + .HasColumnType("tinyint(4)") + .HasComment("全员禁言(0允许发言,2全员禁言)"); + + b.Property("Announcement") + .HasColumnType("text") + .HasComment("群公告"); + + b.Property("Auhority") + .HasColumnType("tinyint(4)") + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); + + b.Property("Avatar") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("群头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("群聊创建时间"); + + b.Property("GroupMaster") + .HasColumnType("int(11)") + .HasComment("群主"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("群聊名称"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("群聊状态\r\n(1:正常,2:封禁)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID1"); + + b.ToTable("groups", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("InviteUser") + .HasColumnType("int(11)") + .HasComment("邀请用户"); + + b.Property("InvitedUser") + .HasColumnType("int(11)") + .HasComment("被邀请用户"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId"); + + b.HasIndex(new[] { "InviteUser" }, "InviteUser"); + + b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); + + b.ToTable("group_invite", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("Role") + .HasColumnType("tinyint(4)") + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户编号"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "Groupld"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID2"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld1"); + + b.ToTable("group_member", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("入群附言"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号\r\n"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId") + .HasDatabaseName("GroupId1"); + + b.ToTable("group_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(通Devices/DType) "); + + b.Property("Logined") + .HasColumnType("datetime") + .HasComment("登录时间 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("登录用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld2"); + + b.ToTable("login_log", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("tinyint(4)") + .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("消息内容 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("发送时间 "); + + b.Property("MsgType") + .HasColumnType("tinyint(4)") + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); + + b.Property("Recipient") + .HasColumnType("int(11)") + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); + + b.Property("Sender") + .HasColumnType("int(11)") + .HasComment("发送者 "); + + b.Property("SequenceId") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("消息状态(0:已发送,1:已撤回) "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Sender" }, "Sender"); + + b.ToTable("messages", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("通知内容"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Ntype") + .HasColumnType("tinyint(4)") + .HasColumnName("NType") + .HasComment("通知类型(0:文本)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("通知标题"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("接收人(为空为全体通知)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld3"); + + b.ToTable("notifications", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("int(11)") + .HasComment("权限编码 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("权限名称 "); + + b.Property("Ptype") + .HasColumnType("int(11)") + .HasColumnName("PType") + .HasComment("权限类型(0:增,1:删,2:改,3:查) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("permissions", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.Property("Id") + .HasColumnType("int(11)") + .HasColumnName("ID"); + + b.Property("PermissionId") + .HasColumnType("int(11)") + .HasComment("权限 "); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "PermissionId" }, "Permissionld"); + + b.HasIndex(new[] { "RoleId" }, "Roleld"); + + b.ToTable("permissionarole", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("角色描述 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("角色名称 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("roles", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("用户头像链接"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(4)") + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); + + b.Property("NickName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户昵称"); + + b.Property("OnlineStatus") + .HasColumnType("tinyint(4)") + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(4)") + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("修改时间"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("唯一用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID3"); + + b.HasIndex(new[] { "Username" }, "Username") + .IsUnique(); + + b.ToTable("users", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Admins") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("admins_ibfk_1"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.HasOne("IM_API.Models.Message", "LastReadMessage") + .WithMany("Conversations") + .HasForeignKey("LastReadMessageId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("conversations_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("Conversations") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("conversations_ibfk_1"); + + b.Navigation("LastReadMessage"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Devices") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("devices_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.HasOne("IM_API.Models.Message", "Message") + .WithMany("Files") + .HasForeignKey("MessageId") + .IsRequired() + .HasConstraintName("files_ibfk_1"); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.HasOne("IM_API.Models.User", "FriendNavigation") + .WithMany("FriendFriendNavigations") + .HasForeignKey("FriendId") + .IsRequired() + .HasConstraintName("用户2id"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("FriendUsers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("用户id"); + + b.Navigation("FriendNavigation"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.HasOne("IM_API.Models.User", "RequestUserNavigation") + .WithMany("FriendRequestRequestUserNavigations") + .HasForeignKey("RequestUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "ResponseUserNavigation") + .WithMany("FriendRequestResponseUserNavigations") + .HasForeignKey("ResponseUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_2"); + + b.Navigation("RequestUserNavigation"); + + b.Navigation("ResponseUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.HasOne("IM_API.Models.User", "GroupMasterNavigation") + .WithMany("Groups") + .HasForeignKey("GroupMaster") + .IsRequired() + .HasConstraintName("groups_ibfk_1"); + + b.Navigation("GroupMasterNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupInvites") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_invite_ibfk_2"); + + b.HasOne("IM_API.Models.User", "InviteUserNavigation") + .WithMany("GroupInviteInviteUserNavigations") + .HasForeignKey("InviteUser") + .HasConstraintName("group_invite_ibfk_1"); + + b.HasOne("IM_API.Models.User", "InvitedUserNavigation") + .WithMany("GroupInviteInvitedUserNavigations") + .HasForeignKey("InvitedUser") + .HasConstraintName("group_invite_ibfk_3"); + + b.Navigation("Group"); + + b.Navigation("InviteUserNavigation"); + + b.Navigation("InvitedUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupMembers") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_member_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupMembers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_member_ibfk_1"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "GroupNavigation") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_2"); + + b.Navigation("Group"); + + b.Navigation("GroupNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("LoginLogs") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("login_log_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.HasOne("IM_API.Models.User", "SenderNavigation") + .WithMany("Messages") + .HasForeignKey("Sender") + .IsRequired() + .HasConstraintName("messages_ibfk_1"); + + b.Navigation("SenderNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Notifications") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("notifications_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.HasOne("IM_API.Models.Permission", "Permission") + .WithMany("Permissionaroles") + .HasForeignKey("PermissionId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_2"); + + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Permissionaroles") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_1"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Navigation("GroupInvites"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Navigation("Conversations"); + + b.Navigation("Files"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Navigation("Admins"); + + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Navigation("Conversations"); + + b.Navigation("Devices"); + + b.Navigation("FriendFriendNavigations"); + + b.Navigation("FriendRequestRequestUserNavigations"); + + b.Navigation("FriendRequestResponseUserNavigations"); + + b.Navigation("FriendUsers"); + + b.Navigation("GroupInviteInviteUserNavigations"); + + b.Navigation("GroupInviteInvitedUserNavigations"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + + b.Navigation("Groups"); + + b.Navigation("LoginLogs"); + + b.Navigation("Messages"); + + b.Navigation("Notifications"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/IM_API/Migrations/20260204151306_update-conversation-lastreadmessageid.cs b/backend/IM_API/Migrations/20260204151306_update-conversation-lastreadmessageid.cs index 70dc218..bf4e83c 100644 --- a/backend/IM_API/Migrations/20260204151306_update-conversation-lastreadmessageid.cs +++ b/backend/IM_API/Migrations/20260204151306_update-conversation-lastreadmessageid.cs @@ -1,41 +1,41 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace IM_API.Migrations -{ - /// - public partial class updateconversationlastreadmessageid : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "conversations_ibfk_2", - table: "conversations"); - - migrationBuilder.AddForeignKey( - name: "conversations_ibfk_2", - table: "conversations", - column: "lastReadMessageId", - principalTable: "messages", - principalColumn: "ID", - onDelete: ReferentialAction.SetNull); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "conversations_ibfk_2", - table: "conversations"); - - migrationBuilder.AddForeignKey( - name: "conversations_ibfk_2", - table: "conversations", - column: "lastReadMessageId", - principalTable: "messages", - principalColumn: "ID"); - } - } -} +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IM_API.Migrations +{ + /// + public partial class updateconversationlastreadmessageid : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "conversations_ibfk_2", + table: "conversations"); + + migrationBuilder.AddForeignKey( + name: "conversations_ibfk_2", + table: "conversations", + column: "lastReadMessageId", + principalTable: "messages", + principalColumn: "ID", + onDelete: ReferentialAction.SetNull); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "conversations_ibfk_2", + table: "conversations"); + + migrationBuilder.AddForeignKey( + name: "conversations_ibfk_2", + table: "conversations", + column: "lastReadMessageId", + principalTable: "messages", + principalColumn: "ID"); + } + } +} diff --git a/backend/IM_API/Migrations/20260205132459_update-message.Designer.cs b/backend/IM_API/Migrations/20260205132459_update-message.Designer.cs index 2b1f3d6..f70d1e7 100644 --- a/backend/IM_API/Migrations/20260205132459_update-message.Designer.cs +++ b/backend/IM_API/Migrations/20260205132459_update-message.Designer.cs @@ -1,1101 +1,1101 @@ -// -using System; -using IM_API.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IM_API.Migrations -{ - [DbContext(typeof(ImContext))] - [Migration("20260205132459_update-message")] - partial class updatemessage - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .UseCollation("latin1_swedish_ci") - .HasAnnotation("ProductVersion", "8.0.21") - .HasAnnotation("Relational:MaxIdentifierLength", 64); - - MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); - MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("状态(0:正常,2:封禁) "); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("更新时间 "); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RoleId" }, "RoleId"); - - b.ToTable("admins", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("int(11)"); - - b.Property("LastMessage") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("最后一条最新消息"); - - b.Property("LastMessageTime") - .HasColumnType("datetime") - .HasComment("最后一条消息发送时间"); - - b.Property("LastReadSequenceId") - .HasColumnType("int(11)") - .HasColumnName("lastReadMessageId") - .HasComment("最后一条未读消息ID "); - - b.Property("MessageId") - .HasColumnType("int(11)"); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.Property("TargetId") - .HasColumnType("int(11)") - .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); - - b.Property("UnreadCount") - .HasColumnType("int(11)") - .HasComment("未读消息数 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("MessageId"); - - b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); - - b.HasIndex(new[] { "UserId" }, "Userid"); - - b.ToTable("conversations", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); - - b.Property("LastLogin") - .HasColumnType("datetime") - .HasComment("最后一次登录 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("设备所属用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid") - .HasDatabaseName("Userid1"); - - b.ToTable("devices", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("FileType") - .IsRequired() - .HasMaxLength(10) - .HasColumnType("varchar(10)") - .HasComment("文件类型 "); - - b.Property("MessageId") - .HasColumnType("int(11)") - .HasComment("关联消息ID "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("文件名 "); - - b.Property("Size") - .HasColumnType("int(11)") - .HasComment("文件大小(单位:KB) "); - - b.Property("Url") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("varchar(100)") - .HasColumnName("URL") - .HasComment("文件储存URL "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "MessageId" }, "Messageld"); - - b.ToTable("files", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("好友头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("好友关系创建时间"); - - b.Property("FriendId") - .HasColumnType("int(11)") - .HasComment("用户2ID"); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("好友备注名"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户ID"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID"); - - b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); - - b.HasIndex(new[] { "FriendId" }, "用户2id"); - - b.ToTable("friends", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("申请时间 "); - - b.Property("Description") - .HasColumnType("text") - .HasComment("申请附言 "); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("备注"); - - b.Property("RequestUser") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.Property("ResponseUser") - .HasColumnType("int(11)") - .HasComment("被申请人 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RequestUser" }, "RequestUser"); - - b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); - - b.ToTable("friend_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("AllMembersBanned") - .HasColumnType("tinyint(4)") - .HasComment("全员禁言(0允许发言,2全员禁言)"); - - b.Property("Announcement") - .HasColumnType("text") - .HasComment("群公告"); - - b.Property("Auhority") - .HasColumnType("tinyint(4)") - .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); - - b.Property("Avatar") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("群头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("群聊创建时间"); - - b.Property("GroupMaster") - .HasColumnType("int(11)") - .HasComment("群主"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("群聊名称"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("群聊状态\r\n(1:正常,2:封禁)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID1"); - - b.ToTable("groups", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("InviteUser") - .HasColumnType("int(11)") - .HasComment("邀请用户"); - - b.Property("InvitedUser") - .HasColumnType("int(11)") - .HasComment("被邀请用户"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId"); - - b.HasIndex(new[] { "InviteUser" }, "InviteUser"); - - b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); - - b.ToTable("group_invite", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("加入群聊时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("Role") - .HasColumnType("tinyint(4)") - .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户编号"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "Groupld"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID2"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld1"); - - b.ToTable("group_member", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("入群附言"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号\r\n"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId") - .HasDatabaseName("GroupId1"); - - b.ToTable("group_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(通Devices/DType) "); - - b.Property("Logined") - .HasColumnType("datetime") - .HasComment("登录时间 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("登录用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld2"); - - b.ToTable("login_log", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("tinyint(4)") - .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); - - b.Property("ClientMsgId") - .HasColumnType("char(36)"); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("消息内容 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("发送时间 "); - - b.Property("MsgType") - .HasColumnType("tinyint(4)") - .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); - - b.Property("Recipient") - .HasColumnType("int(11)") - .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); - - b.Property("Sender") - .HasColumnType("int(11)") - .HasComment("发送者 "); - - b.Property("SequenceId") - .HasColumnType("bigint"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("消息状态(0:已发送,1:已撤回) "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("SequenceId", "StreamKey") - .IsUnique(); - - b.HasIndex(new[] { "Sender" }, "Sender"); - - b.ToTable("messages", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("通知内容"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Ntype") - .HasColumnType("tinyint(4)") - .HasColumnName("NType") - .HasComment("通知类型(0:文本)"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(40) - .HasColumnType("varchar(40)") - .HasComment("通知标题"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("接收人(为空为全体通知)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld3"); - - b.ToTable("notifications", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Code") - .HasColumnType("int(11)") - .HasComment("权限编码 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("权限名称 "); - - b.Property("Ptype") - .HasColumnType("int(11)") - .HasColumnName("PType") - .HasComment("权限类型(0:增,1:删,2:改,3:查) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("permissions", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.Property("Id") - .HasColumnType("int(11)") - .HasColumnName("ID"); - - b.Property("PermissionId") - .HasColumnType("int(11)") - .HasComment("权限 "); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "PermissionId" }, "Permissionld"); - - b.HasIndex(new[] { "RoleId" }, "Roleld"); - - b.ToTable("permissionarole", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("角色描述 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("角色名称 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("roles", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("用户头像链接"); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("创建时间"); - - b.Property("IsDeleted") - .HasColumnType("tinyint(4)") - .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); - - b.Property("NickName") - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户昵称"); - - b.Property("OnlineStatus") - .HasColumnType("tinyint(4)") - .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("Status") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(4)") - .HasDefaultValueSql("'1'") - .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("修改时间"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("唯一用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID3"); - - b.HasIndex(new[] { "Username" }, "Username") - .IsUnique(); - - b.ToTable("users", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Admins") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("admins_ibfk_1"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.HasOne("IM_API.Models.Message", null) - .WithMany("Conversations") - .HasForeignKey("MessageId"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("Conversations") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("conversations_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Devices") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("devices_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.HasOne("IM_API.Models.Message", "Message") - .WithMany("Files") - .HasForeignKey("MessageId") - .IsRequired() - .HasConstraintName("files_ibfk_1"); - - b.Navigation("Message"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.HasOne("IM_API.Models.User", "FriendNavigation") - .WithMany("FriendFriendNavigations") - .HasForeignKey("FriendId") - .IsRequired() - .HasConstraintName("用户2id"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("FriendUsers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("用户id"); - - b.Navigation("FriendNavigation"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.HasOne("IM_API.Models.User", "RequestUserNavigation") - .WithMany("FriendRequestRequestUserNavigations") - .HasForeignKey("RequestUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "ResponseUserNavigation") - .WithMany("FriendRequestResponseUserNavigations") - .HasForeignKey("ResponseUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_2"); - - b.Navigation("RequestUserNavigation"); - - b.Navigation("ResponseUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.HasOne("IM_API.Models.User", "GroupMasterNavigation") - .WithMany("Groups") - .HasForeignKey("GroupMaster") - .IsRequired() - .HasConstraintName("groups_ibfk_1"); - - b.Navigation("GroupMasterNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupInvites") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_invite_ibfk_2"); - - b.HasOne("IM_API.Models.User", "InviteUserNavigation") - .WithMany("GroupInviteInviteUserNavigations") - .HasForeignKey("InviteUser") - .HasConstraintName("group_invite_ibfk_1"); - - b.HasOne("IM_API.Models.User", "InvitedUserNavigation") - .WithMany("GroupInviteInvitedUserNavigations") - .HasForeignKey("InvitedUser") - .HasConstraintName("group_invite_ibfk_3"); - - b.Navigation("Group"); - - b.Navigation("InviteUserNavigation"); - - b.Navigation("InvitedUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupMembers") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_member_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupMembers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_member_ibfk_1"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "GroupNavigation") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_2"); - - b.Navigation("Group"); - - b.Navigation("GroupNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("LoginLogs") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("login_log_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.HasOne("IM_API.Models.User", "SenderNavigation") - .WithMany("Messages") - .HasForeignKey("Sender") - .IsRequired() - .HasConstraintName("messages_ibfk_1"); - - b.Navigation("SenderNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Notifications") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("notifications_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.HasOne("IM_API.Models.Permission", "Permission") - .WithMany("Permissionaroles") - .HasForeignKey("PermissionId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_2"); - - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Permissionaroles") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_1"); - - b.Navigation("Permission"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Navigation("GroupInvites"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Navigation("Conversations"); - - b.Navigation("Files"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Navigation("Admins"); - - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Navigation("Conversations"); - - b.Navigation("Devices"); - - b.Navigation("FriendFriendNavigations"); - - b.Navigation("FriendRequestRequestUserNavigations"); - - b.Navigation("FriendRequestResponseUserNavigations"); - - b.Navigation("FriendUsers"); - - b.Navigation("GroupInviteInviteUserNavigations"); - - b.Navigation("GroupInviteInvitedUserNavigations"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - - b.Navigation("Groups"); - - b.Navigation("LoginLogs"); - - b.Navigation("Messages"); - - b.Navigation("Notifications"); - }); -#pragma warning restore 612, 618 - } - } -} +// +using System; +using IM_API.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IM_API.Migrations +{ + [DbContext(typeof(ImContext))] + [Migration("20260205132459_update-message")] + partial class updatemessage + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasAnnotation("ProductVersion", "8.0.21") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("状态(0:正常,2:封禁) "); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("更新时间 "); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RoleId" }, "RoleId"); + + b.ToTable("admins", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("int(11)"); + + b.Property("LastMessage") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("最后一条最新消息"); + + b.Property("LastMessageTime") + .HasColumnType("datetime") + .HasComment("最后一条消息发送时间"); + + b.Property("LastReadSequenceId") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId") + .HasComment("最后一条未读消息ID "); + + b.Property("MessageId") + .HasColumnType("int(11)"); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.Property("TargetId") + .HasColumnType("int(11)") + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); + + b.Property("UnreadCount") + .HasColumnType("int(11)") + .HasComment("未读消息数 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("MessageId"); + + b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); + + b.HasIndex(new[] { "UserId" }, "Userid"); + + b.ToTable("conversations", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); + + b.Property("LastLogin") + .HasColumnType("datetime") + .HasComment("最后一次登录 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("设备所属用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid") + .HasDatabaseName("Userid1"); + + b.ToTable("devices", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("FileType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("文件类型 "); + + b.Property("MessageId") + .HasColumnType("int(11)") + .HasComment("关联消息ID "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("文件名 "); + + b.Property("Size") + .HasColumnType("int(11)") + .HasComment("文件大小(单位:KB) "); + + b.Property("Url") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("URL") + .HasComment("文件储存URL "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "MessageId" }, "Messageld"); + + b.ToTable("files", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("好友头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("好友关系创建时间"); + + b.Property("FriendId") + .HasColumnType("int(11)") + .HasComment("用户2ID"); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("好友备注名"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户ID"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID"); + + b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); + + b.HasIndex(new[] { "FriendId" }, "用户2id"); + + b.ToTable("friends", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("申请时间 "); + + b.Property("Description") + .HasColumnType("text") + .HasComment("申请附言 "); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("备注"); + + b.Property("RequestUser") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.Property("ResponseUser") + .HasColumnType("int(11)") + .HasComment("被申请人 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RequestUser" }, "RequestUser"); + + b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); + + b.ToTable("friend_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllMembersBanned") + .HasColumnType("tinyint(4)") + .HasComment("全员禁言(0允许发言,2全员禁言)"); + + b.Property("Announcement") + .HasColumnType("text") + .HasComment("群公告"); + + b.Property("Auhority") + .HasColumnType("tinyint(4)") + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); + + b.Property("Avatar") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("群头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("群聊创建时间"); + + b.Property("GroupMaster") + .HasColumnType("int(11)") + .HasComment("群主"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("群聊名称"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("群聊状态\r\n(1:正常,2:封禁)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID1"); + + b.ToTable("groups", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("InviteUser") + .HasColumnType("int(11)") + .HasComment("邀请用户"); + + b.Property("InvitedUser") + .HasColumnType("int(11)") + .HasComment("被邀请用户"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId"); + + b.HasIndex(new[] { "InviteUser" }, "InviteUser"); + + b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); + + b.ToTable("group_invite", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("Role") + .HasColumnType("tinyint(4)") + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户编号"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "Groupld"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID2"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld1"); + + b.ToTable("group_member", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("入群附言"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号\r\n"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId") + .HasDatabaseName("GroupId1"); + + b.ToTable("group_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(通Devices/DType) "); + + b.Property("Logined") + .HasColumnType("datetime") + .HasComment("登录时间 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("登录用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld2"); + + b.ToTable("login_log", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("tinyint(4)") + .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); + + b.Property("ClientMsgId") + .HasColumnType("char(36)"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("消息内容 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("发送时间 "); + + b.Property("MsgType") + .HasColumnType("tinyint(4)") + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); + + b.Property("Recipient") + .HasColumnType("int(11)") + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); + + b.Property("Sender") + .HasColumnType("int(11)") + .HasComment("发送者 "); + + b.Property("SequenceId") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("消息状态(0:已发送,1:已撤回) "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("SequenceId", "StreamKey") + .IsUnique(); + + b.HasIndex(new[] { "Sender" }, "Sender"); + + b.ToTable("messages", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("通知内容"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Ntype") + .HasColumnType("tinyint(4)") + .HasColumnName("NType") + .HasComment("通知类型(0:文本)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("通知标题"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("接收人(为空为全体通知)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld3"); + + b.ToTable("notifications", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("int(11)") + .HasComment("权限编码 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("权限名称 "); + + b.Property("Ptype") + .HasColumnType("int(11)") + .HasColumnName("PType") + .HasComment("权限类型(0:增,1:删,2:改,3:查) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("permissions", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.Property("Id") + .HasColumnType("int(11)") + .HasColumnName("ID"); + + b.Property("PermissionId") + .HasColumnType("int(11)") + .HasComment("权限 "); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "PermissionId" }, "Permissionld"); + + b.HasIndex(new[] { "RoleId" }, "Roleld"); + + b.ToTable("permissionarole", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("角色描述 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("角色名称 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("roles", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("用户头像链接"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(4)") + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); + + b.Property("NickName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户昵称"); + + b.Property("OnlineStatus") + .HasColumnType("tinyint(4)") + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(4)") + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("修改时间"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("唯一用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID3"); + + b.HasIndex(new[] { "Username" }, "Username") + .IsUnique(); + + b.ToTable("users", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Admins") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("admins_ibfk_1"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.HasOne("IM_API.Models.Message", null) + .WithMany("Conversations") + .HasForeignKey("MessageId"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("Conversations") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("conversations_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Devices") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("devices_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.HasOne("IM_API.Models.Message", "Message") + .WithMany("Files") + .HasForeignKey("MessageId") + .IsRequired() + .HasConstraintName("files_ibfk_1"); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.HasOne("IM_API.Models.User", "FriendNavigation") + .WithMany("FriendFriendNavigations") + .HasForeignKey("FriendId") + .IsRequired() + .HasConstraintName("用户2id"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("FriendUsers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("用户id"); + + b.Navigation("FriendNavigation"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.HasOne("IM_API.Models.User", "RequestUserNavigation") + .WithMany("FriendRequestRequestUserNavigations") + .HasForeignKey("RequestUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "ResponseUserNavigation") + .WithMany("FriendRequestResponseUserNavigations") + .HasForeignKey("ResponseUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_2"); + + b.Navigation("RequestUserNavigation"); + + b.Navigation("ResponseUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.HasOne("IM_API.Models.User", "GroupMasterNavigation") + .WithMany("Groups") + .HasForeignKey("GroupMaster") + .IsRequired() + .HasConstraintName("groups_ibfk_1"); + + b.Navigation("GroupMasterNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupInvites") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_invite_ibfk_2"); + + b.HasOne("IM_API.Models.User", "InviteUserNavigation") + .WithMany("GroupInviteInviteUserNavigations") + .HasForeignKey("InviteUser") + .HasConstraintName("group_invite_ibfk_1"); + + b.HasOne("IM_API.Models.User", "InvitedUserNavigation") + .WithMany("GroupInviteInvitedUserNavigations") + .HasForeignKey("InvitedUser") + .HasConstraintName("group_invite_ibfk_3"); + + b.Navigation("Group"); + + b.Navigation("InviteUserNavigation"); + + b.Navigation("InvitedUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupMembers") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_member_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupMembers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_member_ibfk_1"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "GroupNavigation") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_2"); + + b.Navigation("Group"); + + b.Navigation("GroupNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("LoginLogs") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("login_log_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.HasOne("IM_API.Models.User", "SenderNavigation") + .WithMany("Messages") + .HasForeignKey("Sender") + .IsRequired() + .HasConstraintName("messages_ibfk_1"); + + b.Navigation("SenderNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Notifications") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("notifications_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.HasOne("IM_API.Models.Permission", "Permission") + .WithMany("Permissionaroles") + .HasForeignKey("PermissionId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_2"); + + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Permissionaroles") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_1"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Navigation("GroupInvites"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Navigation("Conversations"); + + b.Navigation("Files"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Navigation("Admins"); + + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Navigation("Conversations"); + + b.Navigation("Devices"); + + b.Navigation("FriendFriendNavigations"); + + b.Navigation("FriendRequestRequestUserNavigations"); + + b.Navigation("FriendRequestResponseUserNavigations"); + + b.Navigation("FriendUsers"); + + b.Navigation("GroupInviteInviteUserNavigations"); + + b.Navigation("GroupInviteInvitedUserNavigations"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + + b.Navigation("Groups"); + + b.Navigation("LoginLogs"); + + b.Navigation("Messages"); + + b.Navigation("Notifications"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/IM_API/Migrations/20260205132459_update-message.cs b/backend/IM_API/Migrations/20260205132459_update-message.cs index 6ff456a..91d42b7 100644 --- a/backend/IM_API/Migrations/20260205132459_update-message.cs +++ b/backend/IM_API/Migrations/20260205132459_update-message.cs @@ -1,93 +1,93 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace IM_API.Migrations -{ - /// - public partial class updatemessage : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "conversations_ibfk_2", - table: "conversations"); - - migrationBuilder.RenameIndex( - name: "lastMessageId", - table: "conversations", - newName: "LastReadSequenceId"); - - migrationBuilder.AddColumn( - name: "ClientMsgId", - table: "messages", - type: "char(36)", - nullable: false, - defaultValue: new Guid("00000000-0000-0000-0000-000000000000"), - collation: "ascii_general_ci"); - - migrationBuilder.AddColumn( - name: "MessageId", - table: "conversations", - type: "int(11)", - nullable: true); - - migrationBuilder.CreateIndex( - name: "IX_messages_SequenceId_StreamKey", - table: "messages", - columns: new[] { "SequenceId", "StreamKey" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_conversations_MessageId", - table: "conversations", - column: "MessageId"); - - migrationBuilder.AddForeignKey( - name: "FK_conversations_messages_MessageId", - table: "conversations", - column: "MessageId", - principalTable: "messages", - principalColumn: "ID"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_conversations_messages_MessageId", - table: "conversations"); - - migrationBuilder.DropIndex( - name: "IX_messages_SequenceId_StreamKey", - table: "messages"); - - migrationBuilder.DropIndex( - name: "IX_conversations_MessageId", - table: "conversations"); - - migrationBuilder.DropColumn( - name: "ClientMsgId", - table: "messages"); - - migrationBuilder.DropColumn( - name: "MessageId", - table: "conversations"); - - migrationBuilder.RenameIndex( - name: "LastReadSequenceId", - table: "conversations", - newName: "lastMessageId"); - - migrationBuilder.AddForeignKey( - name: "conversations_ibfk_2", - table: "conversations", - column: "lastReadMessageId", - principalTable: "messages", - principalColumn: "ID", - onDelete: ReferentialAction.SetNull); - } - } -} +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IM_API.Migrations +{ + /// + public partial class updatemessage : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "conversations_ibfk_2", + table: "conversations"); + + migrationBuilder.RenameIndex( + name: "lastMessageId", + table: "conversations", + newName: "LastReadSequenceId"); + + migrationBuilder.AddColumn( + name: "ClientMsgId", + table: "messages", + type: "char(36)", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000"), + collation: "ascii_general_ci"); + + migrationBuilder.AddColumn( + name: "MessageId", + table: "conversations", + type: "int(11)", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_messages_SequenceId_StreamKey", + table: "messages", + columns: new[] { "SequenceId", "StreamKey" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_conversations_MessageId", + table: "conversations", + column: "MessageId"); + + migrationBuilder.AddForeignKey( + name: "FK_conversations_messages_MessageId", + table: "conversations", + column: "MessageId", + principalTable: "messages", + principalColumn: "ID"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_conversations_messages_MessageId", + table: "conversations"); + + migrationBuilder.DropIndex( + name: "IX_messages_SequenceId_StreamKey", + table: "messages"); + + migrationBuilder.DropIndex( + name: "IX_conversations_MessageId", + table: "conversations"); + + migrationBuilder.DropColumn( + name: "ClientMsgId", + table: "messages"); + + migrationBuilder.DropColumn( + name: "MessageId", + table: "conversations"); + + migrationBuilder.RenameIndex( + name: "LastReadSequenceId", + table: "conversations", + newName: "lastMessageId"); + + migrationBuilder.AddForeignKey( + name: "conversations_ibfk_2", + table: "conversations", + column: "lastReadMessageId", + principalTable: "messages", + principalColumn: "ID", + onDelete: ReferentialAction.SetNull); + } + } +} diff --git a/backend/IM_API/Migrations/20260207121713_update-datetimeToDateTimeOffset.Designer.cs b/backend/IM_API/Migrations/20260207121713_update-datetimeToDateTimeOffset.Designer.cs index 18d1abd..d29477f 100644 --- a/backend/IM_API/Migrations/20260207121713_update-datetimeToDateTimeOffset.Designer.cs +++ b/backend/IM_API/Migrations/20260207121713_update-datetimeToDateTimeOffset.Designer.cs @@ -1,1101 +1,1101 @@ -// -using System; -using IM_API.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IM_API.Migrations -{ - [DbContext(typeof(ImContext))] - [Migration("20260207121713_update-datetimeToDateTimeOffset")] - partial class updatedatetimeToDateTimeOffset - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .UseCollation("latin1_swedish_ci") - .HasAnnotation("ProductVersion", "8.0.21") - .HasAnnotation("Relational:MaxIdentifierLength", 64); - - MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); - MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("状态(0:正常,2:封禁) "); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("更新时间 "); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RoleId" }, "RoleId"); - - b.ToTable("admins", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("int(11)"); - - b.Property("LastMessage") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("最后一条最新消息"); - - b.Property("LastMessageTime") - .HasColumnType("datetime") - .HasComment("最后一条消息发送时间"); - - b.Property("LastReadSequenceId") - .HasColumnType("int(11)") - .HasColumnName("lastReadMessageId") - .HasComment("最后一条未读消息ID "); - - b.Property("MessageId") - .HasColumnType("int(11)"); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.Property("TargetId") - .HasColumnType("int(11)") - .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); - - b.Property("UnreadCount") - .HasColumnType("int(11)") - .HasComment("未读消息数 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("MessageId"); - - b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); - - b.HasIndex(new[] { "UserId" }, "Userid"); - - b.ToTable("conversations", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); - - b.Property("LastLogin") - .HasColumnType("datetime") - .HasComment("最后一次登录 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("设备所属用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid") - .HasDatabaseName("Userid1"); - - b.ToTable("devices", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("FileType") - .IsRequired() - .HasMaxLength(10) - .HasColumnType("varchar(10)") - .HasComment("文件类型 "); - - b.Property("MessageId") - .HasColumnType("int(11)") - .HasComment("关联消息ID "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("文件名 "); - - b.Property("Size") - .HasColumnType("int(11)") - .HasComment("文件大小(单位:KB) "); - - b.Property("Url") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("varchar(100)") - .HasColumnName("URL") - .HasComment("文件储存URL "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "MessageId" }, "Messageld"); - - b.ToTable("files", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("好友头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("好友关系创建时间"); - - b.Property("FriendId") - .HasColumnType("int(11)") - .HasComment("用户2ID"); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("好友备注名"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户ID"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID"); - - b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); - - b.HasIndex(new[] { "FriendId" }, "用户2id"); - - b.ToTable("friends", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("申请时间 "); - - b.Property("Description") - .HasColumnType("text") - .HasComment("申请附言 "); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("备注"); - - b.Property("RequestUser") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.Property("ResponseUser") - .HasColumnType("int(11)") - .HasComment("被申请人 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RequestUser" }, "RequestUser"); - - b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); - - b.ToTable("friend_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("AllMembersBanned") - .HasColumnType("tinyint(4)") - .HasComment("全员禁言(0允许发言,2全员禁言)"); - - b.Property("Announcement") - .HasColumnType("text") - .HasComment("群公告"); - - b.Property("Auhority") - .HasColumnType("tinyint(4)") - .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); - - b.Property("Avatar") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("群头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("群聊创建时间"); - - b.Property("GroupMaster") - .HasColumnType("int(11)") - .HasComment("群主"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("群聊名称"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("群聊状态\r\n(1:正常,2:封禁)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID1"); - - b.ToTable("groups", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("InviteUser") - .HasColumnType("int(11)") - .HasComment("邀请用户"); - - b.Property("InvitedUser") - .HasColumnType("int(11)") - .HasComment("被邀请用户"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId"); - - b.HasIndex(new[] { "InviteUser" }, "InviteUser"); - - b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); - - b.ToTable("group_invite", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("加入群聊时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("Role") - .HasColumnType("tinyint(4)") - .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户编号"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "Groupld"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID2"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld1"); - - b.ToTable("group_member", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("入群附言"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号\r\n"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId") - .HasDatabaseName("GroupId1"); - - b.ToTable("group_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(通Devices/DType) "); - - b.Property("Logined") - .HasColumnType("datetime") - .HasComment("登录时间 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("登录用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld2"); - - b.ToTable("login_log", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("tinyint(4)") - .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); - - b.Property("ClientMsgId") - .HasColumnType("char(36)"); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("消息内容 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("发送时间 "); - - b.Property("MsgType") - .HasColumnType("tinyint(4)") - .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); - - b.Property("Recipient") - .HasColumnType("int(11)") - .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); - - b.Property("Sender") - .HasColumnType("int(11)") - .HasComment("发送者 "); - - b.Property("SequenceId") - .HasColumnType("bigint"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("消息状态(0:已发送,1:已撤回) "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("SequenceId", "StreamKey") - .IsUnique(); - - b.HasIndex(new[] { "Sender" }, "Sender"); - - b.ToTable("messages", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("通知内容"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Ntype") - .HasColumnType("tinyint(4)") - .HasColumnName("NType") - .HasComment("通知类型(0:文本)"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(40) - .HasColumnType("varchar(40)") - .HasComment("通知标题"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("接收人(为空为全体通知)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld3"); - - b.ToTable("notifications", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Code") - .HasColumnType("int(11)") - .HasComment("权限编码 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("权限名称 "); - - b.Property("Ptype") - .HasColumnType("int(11)") - .HasColumnName("PType") - .HasComment("权限类型(0:增,1:删,2:改,3:查) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("permissions", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.Property("Id") - .HasColumnType("int(11)") - .HasColumnName("ID"); - - b.Property("PermissionId") - .HasColumnType("int(11)") - .HasComment("权限 "); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "PermissionId" }, "Permissionld"); - - b.HasIndex(new[] { "RoleId" }, "Roleld"); - - b.ToTable("permissionarole", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("角色描述 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("角色名称 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("roles", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("用户头像链接"); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("创建时间"); - - b.Property("IsDeleted") - .HasColumnType("tinyint(4)") - .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); - - b.Property("NickName") - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户昵称"); - - b.Property("OnlineStatus") - .HasColumnType("tinyint(4)") - .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("Status") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(4)") - .HasDefaultValueSql("'1'") - .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("修改时间"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("唯一用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID3"); - - b.HasIndex(new[] { "Username" }, "Username") - .IsUnique(); - - b.ToTable("users", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Admins") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("admins_ibfk_1"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.HasOne("IM_API.Models.Message", null) - .WithMany("Conversations") - .HasForeignKey("MessageId"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("Conversations") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("conversations_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Devices") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("devices_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.HasOne("IM_API.Models.Message", "Message") - .WithMany("Files") - .HasForeignKey("MessageId") - .IsRequired() - .HasConstraintName("files_ibfk_1"); - - b.Navigation("Message"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.HasOne("IM_API.Models.User", "FriendNavigation") - .WithMany("FriendFriendNavigations") - .HasForeignKey("FriendId") - .IsRequired() - .HasConstraintName("用户2id"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("FriendUsers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("用户id"); - - b.Navigation("FriendNavigation"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.HasOne("IM_API.Models.User", "RequestUserNavigation") - .WithMany("FriendRequestRequestUserNavigations") - .HasForeignKey("RequestUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "ResponseUserNavigation") - .WithMany("FriendRequestResponseUserNavigations") - .HasForeignKey("ResponseUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_2"); - - b.Navigation("RequestUserNavigation"); - - b.Navigation("ResponseUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.HasOne("IM_API.Models.User", "GroupMasterNavigation") - .WithMany("Groups") - .HasForeignKey("GroupMaster") - .IsRequired() - .HasConstraintName("groups_ibfk_1"); - - b.Navigation("GroupMasterNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupInvites") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_invite_ibfk_2"); - - b.HasOne("IM_API.Models.User", "InviteUserNavigation") - .WithMany("GroupInviteInviteUserNavigations") - .HasForeignKey("InviteUser") - .HasConstraintName("group_invite_ibfk_1"); - - b.HasOne("IM_API.Models.User", "InvitedUserNavigation") - .WithMany("GroupInviteInvitedUserNavigations") - .HasForeignKey("InvitedUser") - .HasConstraintName("group_invite_ibfk_3"); - - b.Navigation("Group"); - - b.Navigation("InviteUserNavigation"); - - b.Navigation("InvitedUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupMembers") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_member_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupMembers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_member_ibfk_1"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "GroupNavigation") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_2"); - - b.Navigation("Group"); - - b.Navigation("GroupNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("LoginLogs") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("login_log_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.HasOne("IM_API.Models.User", "SenderNavigation") - .WithMany("Messages") - .HasForeignKey("Sender") - .IsRequired() - .HasConstraintName("messages_ibfk_1"); - - b.Navigation("SenderNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Notifications") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("notifications_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.HasOne("IM_API.Models.Permission", "Permission") - .WithMany("Permissionaroles") - .HasForeignKey("PermissionId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_2"); - - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Permissionaroles") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_1"); - - b.Navigation("Permission"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Navigation("GroupInvites"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Navigation("Conversations"); - - b.Navigation("Files"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Navigation("Admins"); - - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Navigation("Conversations"); - - b.Navigation("Devices"); - - b.Navigation("FriendFriendNavigations"); - - b.Navigation("FriendRequestRequestUserNavigations"); - - b.Navigation("FriendRequestResponseUserNavigations"); - - b.Navigation("FriendUsers"); - - b.Navigation("GroupInviteInviteUserNavigations"); - - b.Navigation("GroupInviteInvitedUserNavigations"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - - b.Navigation("Groups"); - - b.Navigation("LoginLogs"); - - b.Navigation("Messages"); - - b.Navigation("Notifications"); - }); -#pragma warning restore 612, 618 - } - } -} +// +using System; +using IM_API.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IM_API.Migrations +{ + [DbContext(typeof(ImContext))] + [Migration("20260207121713_update-datetimeToDateTimeOffset")] + partial class updatedatetimeToDateTimeOffset + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasAnnotation("ProductVersion", "8.0.21") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("状态(0:正常,2:封禁) "); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("更新时间 "); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RoleId" }, "RoleId"); + + b.ToTable("admins", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("int(11)"); + + b.Property("LastMessage") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("最后一条最新消息"); + + b.Property("LastMessageTime") + .HasColumnType("datetime") + .HasComment("最后一条消息发送时间"); + + b.Property("LastReadSequenceId") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId") + .HasComment("最后一条未读消息ID "); + + b.Property("MessageId") + .HasColumnType("int(11)"); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.Property("TargetId") + .HasColumnType("int(11)") + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); + + b.Property("UnreadCount") + .HasColumnType("int(11)") + .HasComment("未读消息数 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("MessageId"); + + b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); + + b.HasIndex(new[] { "UserId" }, "Userid"); + + b.ToTable("conversations", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); + + b.Property("LastLogin") + .HasColumnType("datetime") + .HasComment("最后一次登录 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("设备所属用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid") + .HasDatabaseName("Userid1"); + + b.ToTable("devices", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("FileType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("文件类型 "); + + b.Property("MessageId") + .HasColumnType("int(11)") + .HasComment("关联消息ID "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("文件名 "); + + b.Property("Size") + .HasColumnType("int(11)") + .HasComment("文件大小(单位:KB) "); + + b.Property("Url") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("URL") + .HasComment("文件储存URL "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "MessageId" }, "Messageld"); + + b.ToTable("files", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("好友头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("好友关系创建时间"); + + b.Property("FriendId") + .HasColumnType("int(11)") + .HasComment("用户2ID"); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("好友备注名"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户ID"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID"); + + b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); + + b.HasIndex(new[] { "FriendId" }, "用户2id"); + + b.ToTable("friends", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("申请时间 "); + + b.Property("Description") + .HasColumnType("text") + .HasComment("申请附言 "); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("备注"); + + b.Property("RequestUser") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.Property("ResponseUser") + .HasColumnType("int(11)") + .HasComment("被申请人 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RequestUser" }, "RequestUser"); + + b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); + + b.ToTable("friend_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllMembersBanned") + .HasColumnType("tinyint(4)") + .HasComment("全员禁言(0允许发言,2全员禁言)"); + + b.Property("Announcement") + .HasColumnType("text") + .HasComment("群公告"); + + b.Property("Auhority") + .HasColumnType("tinyint(4)") + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); + + b.Property("Avatar") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("群头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("群聊创建时间"); + + b.Property("GroupMaster") + .HasColumnType("int(11)") + .HasComment("群主"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("群聊名称"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("群聊状态\r\n(1:正常,2:封禁)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID1"); + + b.ToTable("groups", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("InviteUser") + .HasColumnType("int(11)") + .HasComment("邀请用户"); + + b.Property("InvitedUser") + .HasColumnType("int(11)") + .HasComment("被邀请用户"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId"); + + b.HasIndex(new[] { "InviteUser" }, "InviteUser"); + + b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); + + b.ToTable("group_invite", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("Role") + .HasColumnType("tinyint(4)") + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户编号"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "Groupld"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID2"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld1"); + + b.ToTable("group_member", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("入群附言"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号\r\n"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId") + .HasDatabaseName("GroupId1"); + + b.ToTable("group_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(通Devices/DType) "); + + b.Property("Logined") + .HasColumnType("datetime") + .HasComment("登录时间 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("登录用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld2"); + + b.ToTable("login_log", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("tinyint(4)") + .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); + + b.Property("ClientMsgId") + .HasColumnType("char(36)"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("消息内容 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("发送时间 "); + + b.Property("MsgType") + .HasColumnType("tinyint(4)") + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); + + b.Property("Recipient") + .HasColumnType("int(11)") + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); + + b.Property("Sender") + .HasColumnType("int(11)") + .HasComment("发送者 "); + + b.Property("SequenceId") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("消息状态(0:已发送,1:已撤回) "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("SequenceId", "StreamKey") + .IsUnique(); + + b.HasIndex(new[] { "Sender" }, "Sender"); + + b.ToTable("messages", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("通知内容"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Ntype") + .HasColumnType("tinyint(4)") + .HasColumnName("NType") + .HasComment("通知类型(0:文本)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("通知标题"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("接收人(为空为全体通知)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld3"); + + b.ToTable("notifications", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("int(11)") + .HasComment("权限编码 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("权限名称 "); + + b.Property("Ptype") + .HasColumnType("int(11)") + .HasColumnName("PType") + .HasComment("权限类型(0:增,1:删,2:改,3:查) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("permissions", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.Property("Id") + .HasColumnType("int(11)") + .HasColumnName("ID"); + + b.Property("PermissionId") + .HasColumnType("int(11)") + .HasComment("权限 "); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "PermissionId" }, "Permissionld"); + + b.HasIndex(new[] { "RoleId" }, "Roleld"); + + b.ToTable("permissionarole", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("角色描述 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("角色名称 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("roles", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("用户头像链接"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(4)") + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); + + b.Property("NickName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户昵称"); + + b.Property("OnlineStatus") + .HasColumnType("tinyint(4)") + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(4)") + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("修改时间"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("唯一用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID3"); + + b.HasIndex(new[] { "Username" }, "Username") + .IsUnique(); + + b.ToTable("users", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Admins") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("admins_ibfk_1"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.HasOne("IM_API.Models.Message", null) + .WithMany("Conversations") + .HasForeignKey("MessageId"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("Conversations") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("conversations_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Devices") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("devices_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.HasOne("IM_API.Models.Message", "Message") + .WithMany("Files") + .HasForeignKey("MessageId") + .IsRequired() + .HasConstraintName("files_ibfk_1"); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.HasOne("IM_API.Models.User", "FriendNavigation") + .WithMany("FriendFriendNavigations") + .HasForeignKey("FriendId") + .IsRequired() + .HasConstraintName("用户2id"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("FriendUsers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("用户id"); + + b.Navigation("FriendNavigation"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.HasOne("IM_API.Models.User", "RequestUserNavigation") + .WithMany("FriendRequestRequestUserNavigations") + .HasForeignKey("RequestUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "ResponseUserNavigation") + .WithMany("FriendRequestResponseUserNavigations") + .HasForeignKey("ResponseUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_2"); + + b.Navigation("RequestUserNavigation"); + + b.Navigation("ResponseUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.HasOne("IM_API.Models.User", "GroupMasterNavigation") + .WithMany("Groups") + .HasForeignKey("GroupMaster") + .IsRequired() + .HasConstraintName("groups_ibfk_1"); + + b.Navigation("GroupMasterNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupInvites") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_invite_ibfk_2"); + + b.HasOne("IM_API.Models.User", "InviteUserNavigation") + .WithMany("GroupInviteInviteUserNavigations") + .HasForeignKey("InviteUser") + .HasConstraintName("group_invite_ibfk_1"); + + b.HasOne("IM_API.Models.User", "InvitedUserNavigation") + .WithMany("GroupInviteInvitedUserNavigations") + .HasForeignKey("InvitedUser") + .HasConstraintName("group_invite_ibfk_3"); + + b.Navigation("Group"); + + b.Navigation("InviteUserNavigation"); + + b.Navigation("InvitedUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupMembers") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_member_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupMembers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_member_ibfk_1"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "GroupNavigation") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_2"); + + b.Navigation("Group"); + + b.Navigation("GroupNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("LoginLogs") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("login_log_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.HasOne("IM_API.Models.User", "SenderNavigation") + .WithMany("Messages") + .HasForeignKey("Sender") + .IsRequired() + .HasConstraintName("messages_ibfk_1"); + + b.Navigation("SenderNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Notifications") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("notifications_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.HasOne("IM_API.Models.Permission", "Permission") + .WithMany("Permissionaroles") + .HasForeignKey("PermissionId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_2"); + + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Permissionaroles") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_1"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Navigation("GroupInvites"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Navigation("Conversations"); + + b.Navigation("Files"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Navigation("Admins"); + + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Navigation("Conversations"); + + b.Navigation("Devices"); + + b.Navigation("FriendFriendNavigations"); + + b.Navigation("FriendRequestRequestUserNavigations"); + + b.Navigation("FriendRequestResponseUserNavigations"); + + b.Navigation("FriendUsers"); + + b.Navigation("GroupInviteInviteUserNavigations"); + + b.Navigation("GroupInviteInvitedUserNavigations"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + + b.Navigation("Groups"); + + b.Navigation("LoginLogs"); + + b.Navigation("Messages"); + + b.Navigation("Notifications"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/IM_API/Migrations/20260207121713_update-datetimeToDateTimeOffset.cs b/backend/IM_API/Migrations/20260207121713_update-datetimeToDateTimeOffset.cs index 15b2ed4..22b00b8 100644 --- a/backend/IM_API/Migrations/20260207121713_update-datetimeToDateTimeOffset.cs +++ b/backend/IM_API/Migrations/20260207121713_update-datetimeToDateTimeOffset.cs @@ -1,22 +1,22 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace IM_API.Migrations -{ - /// - public partial class updatedatetimeToDateTimeOffset : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IM_API.Migrations +{ + /// + public partial class updatedatetimeToDateTimeOffset : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/backend/IM_API/Migrations/20260207122338_update-DateTimeOffset-type.Designer.cs b/backend/IM_API/Migrations/20260207122338_update-DateTimeOffset-type.Designer.cs index 06934ee..0554479 100644 --- a/backend/IM_API/Migrations/20260207122338_update-DateTimeOffset-type.Designer.cs +++ b/backend/IM_API/Migrations/20260207122338_update-DateTimeOffset-type.Designer.cs @@ -1,1101 +1,1101 @@ -// -using System; -using IM_API.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IM_API.Migrations -{ - [DbContext(typeof(ImContext))] - [Migration("20260207122338_update-DateTimeOffset-type")] - partial class updateDateTimeOffsettype - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .UseCollation("latin1_swedish_ci") - .HasAnnotation("ProductVersion", "8.0.21") - .HasAnnotation("Relational:MaxIdentifierLength", 64); - - MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); - MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("状态(0:正常,2:封禁) "); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("更新时间 "); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RoleId" }, "RoleId"); - - b.ToTable("admins", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("int(11)"); - - b.Property("LastMessage") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("最后一条最新消息"); - - b.Property("LastMessageTime") - .HasColumnType("datetime") - .HasComment("最后一条消息发送时间"); - - b.Property("LastReadSequenceId") - .HasColumnType("int(11)") - .HasColumnName("lastReadMessageId") - .HasComment("最后一条未读消息ID "); - - b.Property("MessageId") - .HasColumnType("int(11)"); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.Property("TargetId") - .HasColumnType("int(11)") - .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); - - b.Property("UnreadCount") - .HasColumnType("int(11)") - .HasComment("未读消息数 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("MessageId"); - - b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); - - b.HasIndex(new[] { "UserId" }, "Userid"); - - b.ToTable("conversations", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); - - b.Property("LastLogin") - .HasColumnType("datetime") - .HasComment("最后一次登录 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("设备所属用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid") - .HasDatabaseName("Userid1"); - - b.ToTable("devices", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("FileType") - .IsRequired() - .HasMaxLength(10) - .HasColumnType("varchar(10)") - .HasComment("文件类型 "); - - b.Property("MessageId") - .HasColumnType("int(11)") - .HasComment("关联消息ID "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("文件名 "); - - b.Property("Size") - .HasColumnType("int(11)") - .HasComment("文件大小(单位:KB) "); - - b.Property("Url") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("varchar(100)") - .HasColumnName("URL") - .HasComment("文件储存URL "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "MessageId" }, "Messageld"); - - b.ToTable("files", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("好友头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("好友关系创建时间"); - - b.Property("FriendId") - .HasColumnType("int(11)") - .HasComment("用户2ID"); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("好友备注名"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户ID"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID"); - - b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); - - b.HasIndex(new[] { "FriendId" }, "用户2id"); - - b.ToTable("friends", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("申请时间 "); - - b.Property("Description") - .HasColumnType("text") - .HasComment("申请附言 "); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("备注"); - - b.Property("RequestUser") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.Property("ResponseUser") - .HasColumnType("int(11)") - .HasComment("被申请人 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RequestUser" }, "RequestUser"); - - b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); - - b.ToTable("friend_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("AllMembersBanned") - .HasColumnType("tinyint(4)") - .HasComment("全员禁言(0允许发言,2全员禁言)"); - - b.Property("Announcement") - .HasColumnType("text") - .HasComment("群公告"); - - b.Property("Auhority") - .HasColumnType("tinyint(4)") - .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); - - b.Property("Avatar") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("群头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("群聊创建时间"); - - b.Property("GroupMaster") - .HasColumnType("int(11)") - .HasComment("群主"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("群聊名称"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("群聊状态\r\n(1:正常,2:封禁)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID1"); - - b.ToTable("groups", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("InviteUser") - .HasColumnType("int(11)") - .HasComment("邀请用户"); - - b.Property("InvitedUser") - .HasColumnType("int(11)") - .HasComment("被邀请用户"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId"); - - b.HasIndex(new[] { "InviteUser" }, "InviteUser"); - - b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); - - b.ToTable("group_invite", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("加入群聊时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("Role") - .HasColumnType("tinyint(4)") - .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户编号"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "Groupld"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID2"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld1"); - - b.ToTable("group_member", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("入群附言"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号\r\n"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId") - .HasDatabaseName("GroupId1"); - - b.ToTable("group_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(通Devices/DType) "); - - b.Property("Logined") - .HasColumnType("datetime") - .HasComment("登录时间 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("登录用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld2"); - - b.ToTable("login_log", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("tinyint(4)") - .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); - - b.Property("ClientMsgId") - .HasColumnType("char(36)"); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("消息内容 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("发送时间 "); - - b.Property("MsgType") - .HasColumnType("tinyint(4)") - .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); - - b.Property("Recipient") - .HasColumnType("int(11)") - .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); - - b.Property("Sender") - .HasColumnType("int(11)") - .HasComment("发送者 "); - - b.Property("SequenceId") - .HasColumnType("bigint"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("消息状态(0:已发送,1:已撤回) "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("SequenceId", "StreamKey") - .IsUnique(); - - b.HasIndex(new[] { "Sender" }, "Sender"); - - b.ToTable("messages", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("通知内容"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Ntype") - .HasColumnType("tinyint(4)") - .HasColumnName("NType") - .HasComment("通知类型(0:文本)"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(40) - .HasColumnType("varchar(40)") - .HasComment("通知标题"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("接收人(为空为全体通知)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld3"); - - b.ToTable("notifications", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Code") - .HasColumnType("int(11)") - .HasComment("权限编码 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("权限名称 "); - - b.Property("Ptype") - .HasColumnType("int(11)") - .HasColumnName("PType") - .HasComment("权限类型(0:增,1:删,2:改,3:查) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("permissions", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.Property("Id") - .HasColumnType("int(11)") - .HasColumnName("ID"); - - b.Property("PermissionId") - .HasColumnType("int(11)") - .HasComment("权限 "); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "PermissionId" }, "Permissionld"); - - b.HasIndex(new[] { "RoleId" }, "Roleld"); - - b.ToTable("permissionarole", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("角色描述 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("角色名称 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("roles", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("用户头像链接"); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("创建时间"); - - b.Property("IsDeleted") - .HasColumnType("tinyint(4)") - .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); - - b.Property("NickName") - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户昵称"); - - b.Property("OnlineStatus") - .HasColumnType("tinyint(4)") - .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("Status") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(4)") - .HasDefaultValueSql("'1'") - .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("修改时间"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("唯一用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID3"); - - b.HasIndex(new[] { "Username" }, "Username") - .IsUnique(); - - b.ToTable("users", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Admins") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("admins_ibfk_1"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.HasOne("IM_API.Models.Message", null) - .WithMany("Conversations") - .HasForeignKey("MessageId"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("Conversations") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("conversations_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Devices") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("devices_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.HasOne("IM_API.Models.Message", "Message") - .WithMany("Files") - .HasForeignKey("MessageId") - .IsRequired() - .HasConstraintName("files_ibfk_1"); - - b.Navigation("Message"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.HasOne("IM_API.Models.User", "FriendNavigation") - .WithMany("FriendFriendNavigations") - .HasForeignKey("FriendId") - .IsRequired() - .HasConstraintName("用户2id"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("FriendUsers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("用户id"); - - b.Navigation("FriendNavigation"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.HasOne("IM_API.Models.User", "RequestUserNavigation") - .WithMany("FriendRequestRequestUserNavigations") - .HasForeignKey("RequestUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "ResponseUserNavigation") - .WithMany("FriendRequestResponseUserNavigations") - .HasForeignKey("ResponseUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_2"); - - b.Navigation("RequestUserNavigation"); - - b.Navigation("ResponseUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.HasOne("IM_API.Models.User", "GroupMasterNavigation") - .WithMany("Groups") - .HasForeignKey("GroupMaster") - .IsRequired() - .HasConstraintName("groups_ibfk_1"); - - b.Navigation("GroupMasterNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupInvites") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_invite_ibfk_2"); - - b.HasOne("IM_API.Models.User", "InviteUserNavigation") - .WithMany("GroupInviteInviteUserNavigations") - .HasForeignKey("InviteUser") - .HasConstraintName("group_invite_ibfk_1"); - - b.HasOne("IM_API.Models.User", "InvitedUserNavigation") - .WithMany("GroupInviteInvitedUserNavigations") - .HasForeignKey("InvitedUser") - .HasConstraintName("group_invite_ibfk_3"); - - b.Navigation("Group"); - - b.Navigation("InviteUserNavigation"); - - b.Navigation("InvitedUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupMembers") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_member_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupMembers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_member_ibfk_1"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "GroupNavigation") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_2"); - - b.Navigation("Group"); - - b.Navigation("GroupNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("LoginLogs") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("login_log_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.HasOne("IM_API.Models.User", "SenderNavigation") - .WithMany("Messages") - .HasForeignKey("Sender") - .IsRequired() - .HasConstraintName("messages_ibfk_1"); - - b.Navigation("SenderNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Notifications") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("notifications_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.HasOne("IM_API.Models.Permission", "Permission") - .WithMany("Permissionaroles") - .HasForeignKey("PermissionId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_2"); - - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Permissionaroles") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_1"); - - b.Navigation("Permission"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Navigation("GroupInvites"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Navigation("Conversations"); - - b.Navigation("Files"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Navigation("Admins"); - - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Navigation("Conversations"); - - b.Navigation("Devices"); - - b.Navigation("FriendFriendNavigations"); - - b.Navigation("FriendRequestRequestUserNavigations"); - - b.Navigation("FriendRequestResponseUserNavigations"); - - b.Navigation("FriendUsers"); - - b.Navigation("GroupInviteInviteUserNavigations"); - - b.Navigation("GroupInviteInvitedUserNavigations"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - - b.Navigation("Groups"); - - b.Navigation("LoginLogs"); - - b.Navigation("Messages"); - - b.Navigation("Notifications"); - }); -#pragma warning restore 612, 618 - } - } -} +// +using System; +using IM_API.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IM_API.Migrations +{ + [DbContext(typeof(ImContext))] + [Migration("20260207122338_update-DateTimeOffset-type")] + partial class updateDateTimeOffsettype + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasAnnotation("ProductVersion", "8.0.21") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("状态(0:正常,2:封禁) "); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("更新时间 "); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RoleId" }, "RoleId"); + + b.ToTable("admins", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("int(11)"); + + b.Property("LastMessage") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("最后一条最新消息"); + + b.Property("LastMessageTime") + .HasColumnType("datetime") + .HasComment("最后一条消息发送时间"); + + b.Property("LastReadSequenceId") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId") + .HasComment("最后一条未读消息ID "); + + b.Property("MessageId") + .HasColumnType("int(11)"); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.Property("TargetId") + .HasColumnType("int(11)") + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); + + b.Property("UnreadCount") + .HasColumnType("int(11)") + .HasComment("未读消息数 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("MessageId"); + + b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); + + b.HasIndex(new[] { "UserId" }, "Userid"); + + b.ToTable("conversations", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); + + b.Property("LastLogin") + .HasColumnType("datetime") + .HasComment("最后一次登录 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("设备所属用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid") + .HasDatabaseName("Userid1"); + + b.ToTable("devices", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("FileType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("文件类型 "); + + b.Property("MessageId") + .HasColumnType("int(11)") + .HasComment("关联消息ID "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("文件名 "); + + b.Property("Size") + .HasColumnType("int(11)") + .HasComment("文件大小(单位:KB) "); + + b.Property("Url") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("URL") + .HasComment("文件储存URL "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "MessageId" }, "Messageld"); + + b.ToTable("files", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("好友头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("好友关系创建时间"); + + b.Property("FriendId") + .HasColumnType("int(11)") + .HasComment("用户2ID"); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("好友备注名"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户ID"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID"); + + b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); + + b.HasIndex(new[] { "FriendId" }, "用户2id"); + + b.ToTable("friends", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("申请时间 "); + + b.Property("Description") + .HasColumnType("text") + .HasComment("申请附言 "); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("备注"); + + b.Property("RequestUser") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.Property("ResponseUser") + .HasColumnType("int(11)") + .HasComment("被申请人 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RequestUser" }, "RequestUser"); + + b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); + + b.ToTable("friend_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllMembersBanned") + .HasColumnType("tinyint(4)") + .HasComment("全员禁言(0允许发言,2全员禁言)"); + + b.Property("Announcement") + .HasColumnType("text") + .HasComment("群公告"); + + b.Property("Auhority") + .HasColumnType("tinyint(4)") + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); + + b.Property("Avatar") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("群头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("群聊创建时间"); + + b.Property("GroupMaster") + .HasColumnType("int(11)") + .HasComment("群主"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("群聊名称"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("群聊状态\r\n(1:正常,2:封禁)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID1"); + + b.ToTable("groups", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("InviteUser") + .HasColumnType("int(11)") + .HasComment("邀请用户"); + + b.Property("InvitedUser") + .HasColumnType("int(11)") + .HasComment("被邀请用户"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId"); + + b.HasIndex(new[] { "InviteUser" }, "InviteUser"); + + b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); + + b.ToTable("group_invite", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("Role") + .HasColumnType("tinyint(4)") + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户编号"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "Groupld"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID2"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld1"); + + b.ToTable("group_member", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("入群附言"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号\r\n"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId") + .HasDatabaseName("GroupId1"); + + b.ToTable("group_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(通Devices/DType) "); + + b.Property("Logined") + .HasColumnType("datetime") + .HasComment("登录时间 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("登录用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld2"); + + b.ToTable("login_log", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("tinyint(4)") + .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); + + b.Property("ClientMsgId") + .HasColumnType("char(36)"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("消息内容 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("发送时间 "); + + b.Property("MsgType") + .HasColumnType("tinyint(4)") + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); + + b.Property("Recipient") + .HasColumnType("int(11)") + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); + + b.Property("Sender") + .HasColumnType("int(11)") + .HasComment("发送者 "); + + b.Property("SequenceId") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("消息状态(0:已发送,1:已撤回) "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("SequenceId", "StreamKey") + .IsUnique(); + + b.HasIndex(new[] { "Sender" }, "Sender"); + + b.ToTable("messages", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("通知内容"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Ntype") + .HasColumnType("tinyint(4)") + .HasColumnName("NType") + .HasComment("通知类型(0:文本)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("通知标题"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("接收人(为空为全体通知)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld3"); + + b.ToTable("notifications", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("int(11)") + .HasComment("权限编码 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("权限名称 "); + + b.Property("Ptype") + .HasColumnType("int(11)") + .HasColumnName("PType") + .HasComment("权限类型(0:增,1:删,2:改,3:查) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("permissions", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.Property("Id") + .HasColumnType("int(11)") + .HasColumnName("ID"); + + b.Property("PermissionId") + .HasColumnType("int(11)") + .HasComment("权限 "); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "PermissionId" }, "Permissionld"); + + b.HasIndex(new[] { "RoleId" }, "Roleld"); + + b.ToTable("permissionarole", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("角色描述 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("角色名称 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("roles", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("用户头像链接"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(4)") + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); + + b.Property("NickName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户昵称"); + + b.Property("OnlineStatus") + .HasColumnType("tinyint(4)") + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(4)") + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("修改时间"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("唯一用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID3"); + + b.HasIndex(new[] { "Username" }, "Username") + .IsUnique(); + + b.ToTable("users", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Admins") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("admins_ibfk_1"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.HasOne("IM_API.Models.Message", null) + .WithMany("Conversations") + .HasForeignKey("MessageId"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("Conversations") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("conversations_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Devices") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("devices_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.HasOne("IM_API.Models.Message", "Message") + .WithMany("Files") + .HasForeignKey("MessageId") + .IsRequired() + .HasConstraintName("files_ibfk_1"); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.HasOne("IM_API.Models.User", "FriendNavigation") + .WithMany("FriendFriendNavigations") + .HasForeignKey("FriendId") + .IsRequired() + .HasConstraintName("用户2id"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("FriendUsers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("用户id"); + + b.Navigation("FriendNavigation"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.HasOne("IM_API.Models.User", "RequestUserNavigation") + .WithMany("FriendRequestRequestUserNavigations") + .HasForeignKey("RequestUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "ResponseUserNavigation") + .WithMany("FriendRequestResponseUserNavigations") + .HasForeignKey("ResponseUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_2"); + + b.Navigation("RequestUserNavigation"); + + b.Navigation("ResponseUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.HasOne("IM_API.Models.User", "GroupMasterNavigation") + .WithMany("Groups") + .HasForeignKey("GroupMaster") + .IsRequired() + .HasConstraintName("groups_ibfk_1"); + + b.Navigation("GroupMasterNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupInvites") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_invite_ibfk_2"); + + b.HasOne("IM_API.Models.User", "InviteUserNavigation") + .WithMany("GroupInviteInviteUserNavigations") + .HasForeignKey("InviteUser") + .HasConstraintName("group_invite_ibfk_1"); + + b.HasOne("IM_API.Models.User", "InvitedUserNavigation") + .WithMany("GroupInviteInvitedUserNavigations") + .HasForeignKey("InvitedUser") + .HasConstraintName("group_invite_ibfk_3"); + + b.Navigation("Group"); + + b.Navigation("InviteUserNavigation"); + + b.Navigation("InvitedUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupMembers") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_member_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupMembers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_member_ibfk_1"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "GroupNavigation") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_2"); + + b.Navigation("Group"); + + b.Navigation("GroupNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("LoginLogs") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("login_log_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.HasOne("IM_API.Models.User", "SenderNavigation") + .WithMany("Messages") + .HasForeignKey("Sender") + .IsRequired() + .HasConstraintName("messages_ibfk_1"); + + b.Navigation("SenderNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Notifications") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("notifications_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.HasOne("IM_API.Models.Permission", "Permission") + .WithMany("Permissionaroles") + .HasForeignKey("PermissionId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_2"); + + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Permissionaroles") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_1"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Navigation("GroupInvites"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Navigation("Conversations"); + + b.Navigation("Files"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Navigation("Admins"); + + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Navigation("Conversations"); + + b.Navigation("Devices"); + + b.Navigation("FriendFriendNavigations"); + + b.Navigation("FriendRequestRequestUserNavigations"); + + b.Navigation("FriendRequestResponseUserNavigations"); + + b.Navigation("FriendUsers"); + + b.Navigation("GroupInviteInviteUserNavigations"); + + b.Navigation("GroupInviteInvitedUserNavigations"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + + b.Navigation("Groups"); + + b.Navigation("LoginLogs"); + + b.Navigation("Messages"); + + b.Navigation("Notifications"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/IM_API/Migrations/20260207122338_update-DateTimeOffset-type.cs b/backend/IM_API/Migrations/20260207122338_update-DateTimeOffset-type.cs index 50750a3..92f641f 100644 --- a/backend/IM_API/Migrations/20260207122338_update-DateTimeOffset-type.cs +++ b/backend/IM_API/Migrations/20260207122338_update-DateTimeOffset-type.cs @@ -1,22 +1,22 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace IM_API.Migrations -{ - /// - public partial class updateDateTimeOffsettype : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IM_API.Migrations +{ + /// + public partial class updateDateTimeOffsettype : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/backend/IM_API/Migrations/20260208124430_update-group.Designer.cs b/backend/IM_API/Migrations/20260208124430_update-group.Designer.cs index 3dddeea..48ad47e 100644 --- a/backend/IM_API/Migrations/20260208124430_update-group.Designer.cs +++ b/backend/IM_API/Migrations/20260208124430_update-group.Designer.cs @@ -1,1115 +1,1115 @@ -// -using System; -using IM_API.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IM_API.Migrations -{ - [DbContext(typeof(ImContext))] - [Migration("20260208124430_update-group")] - partial class updategroup - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .UseCollation("latin1_swedish_ci") - .HasAnnotation("ProductVersion", "8.0.21") - .HasAnnotation("Relational:MaxIdentifierLength", 64); - - MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); - MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("状态(0:正常,2:封禁) "); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("更新时间 "); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RoleId" }, "RoleId"); - - b.ToTable("admins", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("int(11)"); - - b.Property("LastMessage") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("最后一条最新消息"); - - b.Property("LastMessageTime") - .HasColumnType("datetime") - .HasComment("最后一条消息发送时间"); - - b.Property("LastReadSequenceId") - .HasColumnType("int(11)") - .HasColumnName("lastReadMessageId") - .HasComment("最后一条未读消息ID "); - - b.Property("MessageId") - .HasColumnType("int(11)"); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.Property("TargetId") - .HasColumnType("int(11)") - .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); - - b.Property("UnreadCount") - .HasColumnType("int(11)") - .HasComment("未读消息数 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("MessageId"); - - b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); - - b.HasIndex(new[] { "UserId" }, "Userid"); - - b.ToTable("conversations", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); - - b.Property("LastLogin") - .HasColumnType("datetime") - .HasComment("最后一次登录 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("设备所属用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid") - .HasDatabaseName("Userid1"); - - b.ToTable("devices", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("FileType") - .IsRequired() - .HasMaxLength(10) - .HasColumnType("varchar(10)") - .HasComment("文件类型 "); - - b.Property("MessageId") - .HasColumnType("int(11)") - .HasComment("关联消息ID "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("文件名 "); - - b.Property("Size") - .HasColumnType("int(11)") - .HasComment("文件大小(单位:KB) "); - - b.Property("Url") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("varchar(100)") - .HasColumnName("URL") - .HasComment("文件储存URL "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "MessageId" }, "Messageld"); - - b.ToTable("files", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("好友头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("好友关系创建时间"); - - b.Property("FriendId") - .HasColumnType("int(11)") - .HasComment("用户2ID"); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("好友备注名"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户ID"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID"); - - b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); - - b.HasIndex(new[] { "FriendId" }, "用户2id"); - - b.ToTable("friends", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("申请时间 "); - - b.Property("Description") - .HasColumnType("text") - .HasComment("申请附言 "); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("备注"); - - b.Property("RequestUser") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.Property("ResponseUser") - .HasColumnType("int(11)") - .HasComment("被申请人 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RequestUser" }, "RequestUser"); - - b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); - - b.ToTable("friend_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("AllMembersBanned") - .HasColumnType("tinyint(4)") - .HasComment("全员禁言(0允许发言,2全员禁言)"); - - b.Property("Announcement") - .HasColumnType("text") - .HasComment("群公告"); - - b.Property("Auhority") - .HasColumnType("tinyint(4)") - .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); - - b.Property("Avatar") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("群头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("群聊创建时间"); - - b.Property("GroupMaster") - .HasColumnType("int(11)") - .HasComment("群主"); - - b.Property("LastMessage") - .IsRequired() - .HasColumnType("longtext"); - - b.Property("LastSenderName") - .IsRequired() - .HasColumnType("longtext"); - - b.Property("LastUpdateTime") - .HasColumnType("datetime(6)"); - - b.Property("MaxSequenceId") - .HasColumnType("bigint"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("群聊名称"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("群聊状态\r\n(1:正常,2:封禁)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID1"); - - b.ToTable("groups", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("InviteUser") - .HasColumnType("int(11)") - .HasComment("邀请用户"); - - b.Property("InvitedUser") - .HasColumnType("int(11)") - .HasComment("被邀请用户"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId"); - - b.HasIndex(new[] { "InviteUser" }, "InviteUser"); - - b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); - - b.ToTable("group_invite", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("加入群聊时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("Role") - .HasColumnType("tinyint(4)") - .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户编号"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "Groupld"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID2"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld1"); - - b.ToTable("group_member", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("入群附言"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号\r\n"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId") - .HasDatabaseName("GroupId1"); - - b.ToTable("group_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(通Devices/DType) "); - - b.Property("Logined") - .HasColumnType("datetime") - .HasComment("登录时间 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("登录用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld2"); - - b.ToTable("login_log", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("tinyint(4)") - .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); - - b.Property("ClientMsgId") - .HasColumnType("char(36)"); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("消息内容 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("发送时间 "); - - b.Property("MsgType") - .HasColumnType("tinyint(4)") - .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); - - b.Property("Recipient") - .HasColumnType("int(11)") - .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); - - b.Property("Sender") - .HasColumnType("int(11)") - .HasComment("发送者 "); - - b.Property("SequenceId") - .HasColumnType("bigint"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("消息状态(0:已发送,1:已撤回) "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("SequenceId", "StreamKey") - .IsUnique(); - - b.HasIndex(new[] { "Sender" }, "Sender"); - - b.ToTable("messages", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("通知内容"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Ntype") - .HasColumnType("tinyint(4)") - .HasColumnName("NType") - .HasComment("通知类型(0:文本)"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(40) - .HasColumnType("varchar(40)") - .HasComment("通知标题"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("接收人(为空为全体通知)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld3"); - - b.ToTable("notifications", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Code") - .HasColumnType("int(11)") - .HasComment("权限编码 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("权限名称 "); - - b.Property("Ptype") - .HasColumnType("int(11)") - .HasColumnName("PType") - .HasComment("权限类型(0:增,1:删,2:改,3:查) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("permissions", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.Property("Id") - .HasColumnType("int(11)") - .HasColumnName("ID"); - - b.Property("PermissionId") - .HasColumnType("int(11)") - .HasComment("权限 "); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "PermissionId" }, "Permissionld"); - - b.HasIndex(new[] { "RoleId" }, "Roleld"); - - b.ToTable("permissionarole", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("角色描述 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("角色名称 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("roles", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("用户头像链接"); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("创建时间"); - - b.Property("IsDeleted") - .HasColumnType("tinyint(4)") - .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); - - b.Property("NickName") - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户昵称"); - - b.Property("OnlineStatus") - .HasColumnType("tinyint(4)") - .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("Status") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(4)") - .HasDefaultValueSql("'1'") - .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("修改时间"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("唯一用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID3"); - - b.HasIndex(new[] { "Username" }, "Username") - .IsUnique(); - - b.ToTable("users", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Admins") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("admins_ibfk_1"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.HasOne("IM_API.Models.Message", null) - .WithMany("Conversations") - .HasForeignKey("MessageId"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("Conversations") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("conversations_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Devices") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("devices_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.HasOne("IM_API.Models.Message", "Message") - .WithMany("Files") - .HasForeignKey("MessageId") - .IsRequired() - .HasConstraintName("files_ibfk_1"); - - b.Navigation("Message"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.HasOne("IM_API.Models.User", "FriendNavigation") - .WithMany("FriendFriendNavigations") - .HasForeignKey("FriendId") - .IsRequired() - .HasConstraintName("用户2id"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("FriendUsers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("用户id"); - - b.Navigation("FriendNavigation"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.HasOne("IM_API.Models.User", "RequestUserNavigation") - .WithMany("FriendRequestRequestUserNavigations") - .HasForeignKey("RequestUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "ResponseUserNavigation") - .WithMany("FriendRequestResponseUserNavigations") - .HasForeignKey("ResponseUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_2"); - - b.Navigation("RequestUserNavigation"); - - b.Navigation("ResponseUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.HasOne("IM_API.Models.User", "GroupMasterNavigation") - .WithMany("Groups") - .HasForeignKey("GroupMaster") - .IsRequired() - .HasConstraintName("groups_ibfk_1"); - - b.Navigation("GroupMasterNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupInvites") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_invite_ibfk_2"); - - b.HasOne("IM_API.Models.User", "InviteUserNavigation") - .WithMany("GroupInviteInviteUserNavigations") - .HasForeignKey("InviteUser") - .HasConstraintName("group_invite_ibfk_1"); - - b.HasOne("IM_API.Models.User", "InvitedUserNavigation") - .WithMany("GroupInviteInvitedUserNavigations") - .HasForeignKey("InvitedUser") - .HasConstraintName("group_invite_ibfk_3"); - - b.Navigation("Group"); - - b.Navigation("InviteUserNavigation"); - - b.Navigation("InvitedUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupMembers") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_member_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupMembers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_member_ibfk_1"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "GroupNavigation") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_2"); - - b.Navigation("Group"); - - b.Navigation("GroupNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("LoginLogs") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("login_log_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.HasOne("IM_API.Models.User", "SenderNavigation") - .WithMany("Messages") - .HasForeignKey("Sender") - .IsRequired() - .HasConstraintName("messages_ibfk_1"); - - b.Navigation("SenderNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Notifications") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("notifications_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.HasOne("IM_API.Models.Permission", "Permission") - .WithMany("Permissionaroles") - .HasForeignKey("PermissionId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_2"); - - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Permissionaroles") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_1"); - - b.Navigation("Permission"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Navigation("GroupInvites"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Navigation("Conversations"); - - b.Navigation("Files"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Navigation("Admins"); - - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Navigation("Conversations"); - - b.Navigation("Devices"); - - b.Navigation("FriendFriendNavigations"); - - b.Navigation("FriendRequestRequestUserNavigations"); - - b.Navigation("FriendRequestResponseUserNavigations"); - - b.Navigation("FriendUsers"); - - b.Navigation("GroupInviteInviteUserNavigations"); - - b.Navigation("GroupInviteInvitedUserNavigations"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - - b.Navigation("Groups"); - - b.Navigation("LoginLogs"); - - b.Navigation("Messages"); - - b.Navigation("Notifications"); - }); -#pragma warning restore 612, 618 - } - } -} +// +using System; +using IM_API.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IM_API.Migrations +{ + [DbContext(typeof(ImContext))] + [Migration("20260208124430_update-group")] + partial class updategroup + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasAnnotation("ProductVersion", "8.0.21") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("状态(0:正常,2:封禁) "); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("更新时间 "); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RoleId" }, "RoleId"); + + b.ToTable("admins", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("int(11)"); + + b.Property("LastMessage") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("最后一条最新消息"); + + b.Property("LastMessageTime") + .HasColumnType("datetime") + .HasComment("最后一条消息发送时间"); + + b.Property("LastReadSequenceId") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId") + .HasComment("最后一条未读消息ID "); + + b.Property("MessageId") + .HasColumnType("int(11)"); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.Property("TargetId") + .HasColumnType("int(11)") + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); + + b.Property("UnreadCount") + .HasColumnType("int(11)") + .HasComment("未读消息数 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("MessageId"); + + b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); + + b.HasIndex(new[] { "UserId" }, "Userid"); + + b.ToTable("conversations", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); + + b.Property("LastLogin") + .HasColumnType("datetime") + .HasComment("最后一次登录 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("设备所属用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid") + .HasDatabaseName("Userid1"); + + b.ToTable("devices", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("FileType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("文件类型 "); + + b.Property("MessageId") + .HasColumnType("int(11)") + .HasComment("关联消息ID "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("文件名 "); + + b.Property("Size") + .HasColumnType("int(11)") + .HasComment("文件大小(单位:KB) "); + + b.Property("Url") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("URL") + .HasComment("文件储存URL "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "MessageId" }, "Messageld"); + + b.ToTable("files", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("好友头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("好友关系创建时间"); + + b.Property("FriendId") + .HasColumnType("int(11)") + .HasComment("用户2ID"); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("好友备注名"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户ID"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID"); + + b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); + + b.HasIndex(new[] { "FriendId" }, "用户2id"); + + b.ToTable("friends", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("申请时间 "); + + b.Property("Description") + .HasColumnType("text") + .HasComment("申请附言 "); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("备注"); + + b.Property("RequestUser") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.Property("ResponseUser") + .HasColumnType("int(11)") + .HasComment("被申请人 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RequestUser" }, "RequestUser"); + + b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); + + b.ToTable("friend_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllMembersBanned") + .HasColumnType("tinyint(4)") + .HasComment("全员禁言(0允许发言,2全员禁言)"); + + b.Property("Announcement") + .HasColumnType("text") + .HasComment("群公告"); + + b.Property("Auhority") + .HasColumnType("tinyint(4)") + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); + + b.Property("Avatar") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("群头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("群聊创建时间"); + + b.Property("GroupMaster") + .HasColumnType("int(11)") + .HasComment("群主"); + + b.Property("LastMessage") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LastSenderName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LastUpdateTime") + .HasColumnType("datetime(6)"); + + b.Property("MaxSequenceId") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("群聊名称"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("群聊状态\r\n(1:正常,2:封禁)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID1"); + + b.ToTable("groups", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("InviteUser") + .HasColumnType("int(11)") + .HasComment("邀请用户"); + + b.Property("InvitedUser") + .HasColumnType("int(11)") + .HasComment("被邀请用户"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId"); + + b.HasIndex(new[] { "InviteUser" }, "InviteUser"); + + b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); + + b.ToTable("group_invite", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("Role") + .HasColumnType("tinyint(4)") + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户编号"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "Groupld"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID2"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld1"); + + b.ToTable("group_member", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("入群附言"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号\r\n"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId") + .HasDatabaseName("GroupId1"); + + b.ToTable("group_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(通Devices/DType) "); + + b.Property("Logined") + .HasColumnType("datetime") + .HasComment("登录时间 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("登录用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld2"); + + b.ToTable("login_log", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("tinyint(4)") + .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); + + b.Property("ClientMsgId") + .HasColumnType("char(36)"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("消息内容 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("发送时间 "); + + b.Property("MsgType") + .HasColumnType("tinyint(4)") + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); + + b.Property("Recipient") + .HasColumnType("int(11)") + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); + + b.Property("Sender") + .HasColumnType("int(11)") + .HasComment("发送者 "); + + b.Property("SequenceId") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("消息状态(0:已发送,1:已撤回) "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("SequenceId", "StreamKey") + .IsUnique(); + + b.HasIndex(new[] { "Sender" }, "Sender"); + + b.ToTable("messages", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("通知内容"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Ntype") + .HasColumnType("tinyint(4)") + .HasColumnName("NType") + .HasComment("通知类型(0:文本)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("通知标题"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("接收人(为空为全体通知)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld3"); + + b.ToTable("notifications", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("int(11)") + .HasComment("权限编码 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("权限名称 "); + + b.Property("Ptype") + .HasColumnType("int(11)") + .HasColumnName("PType") + .HasComment("权限类型(0:增,1:删,2:改,3:查) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("permissions", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.Property("Id") + .HasColumnType("int(11)") + .HasColumnName("ID"); + + b.Property("PermissionId") + .HasColumnType("int(11)") + .HasComment("权限 "); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "PermissionId" }, "Permissionld"); + + b.HasIndex(new[] { "RoleId" }, "Roleld"); + + b.ToTable("permissionarole", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("角色描述 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("角色名称 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("roles", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("用户头像链接"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(4)") + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); + + b.Property("NickName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户昵称"); + + b.Property("OnlineStatus") + .HasColumnType("tinyint(4)") + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(4)") + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("修改时间"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("唯一用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID3"); + + b.HasIndex(new[] { "Username" }, "Username") + .IsUnique(); + + b.ToTable("users", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Admins") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("admins_ibfk_1"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.HasOne("IM_API.Models.Message", null) + .WithMany("Conversations") + .HasForeignKey("MessageId"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("Conversations") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("conversations_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Devices") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("devices_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.HasOne("IM_API.Models.Message", "Message") + .WithMany("Files") + .HasForeignKey("MessageId") + .IsRequired() + .HasConstraintName("files_ibfk_1"); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.HasOne("IM_API.Models.User", "FriendNavigation") + .WithMany("FriendFriendNavigations") + .HasForeignKey("FriendId") + .IsRequired() + .HasConstraintName("用户2id"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("FriendUsers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("用户id"); + + b.Navigation("FriendNavigation"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.HasOne("IM_API.Models.User", "RequestUserNavigation") + .WithMany("FriendRequestRequestUserNavigations") + .HasForeignKey("RequestUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "ResponseUserNavigation") + .WithMany("FriendRequestResponseUserNavigations") + .HasForeignKey("ResponseUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_2"); + + b.Navigation("RequestUserNavigation"); + + b.Navigation("ResponseUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.HasOne("IM_API.Models.User", "GroupMasterNavigation") + .WithMany("Groups") + .HasForeignKey("GroupMaster") + .IsRequired() + .HasConstraintName("groups_ibfk_1"); + + b.Navigation("GroupMasterNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupInvites") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_invite_ibfk_2"); + + b.HasOne("IM_API.Models.User", "InviteUserNavigation") + .WithMany("GroupInviteInviteUserNavigations") + .HasForeignKey("InviteUser") + .HasConstraintName("group_invite_ibfk_1"); + + b.HasOne("IM_API.Models.User", "InvitedUserNavigation") + .WithMany("GroupInviteInvitedUserNavigations") + .HasForeignKey("InvitedUser") + .HasConstraintName("group_invite_ibfk_3"); + + b.Navigation("Group"); + + b.Navigation("InviteUserNavigation"); + + b.Navigation("InvitedUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupMembers") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_member_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupMembers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_member_ibfk_1"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "GroupNavigation") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_2"); + + b.Navigation("Group"); + + b.Navigation("GroupNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("LoginLogs") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("login_log_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.HasOne("IM_API.Models.User", "SenderNavigation") + .WithMany("Messages") + .HasForeignKey("Sender") + .IsRequired() + .HasConstraintName("messages_ibfk_1"); + + b.Navigation("SenderNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Notifications") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("notifications_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.HasOne("IM_API.Models.Permission", "Permission") + .WithMany("Permissionaroles") + .HasForeignKey("PermissionId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_2"); + + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Permissionaroles") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_1"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Navigation("GroupInvites"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Navigation("Conversations"); + + b.Navigation("Files"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Navigation("Admins"); + + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Navigation("Conversations"); + + b.Navigation("Devices"); + + b.Navigation("FriendFriendNavigations"); + + b.Navigation("FriendRequestRequestUserNavigations"); + + b.Navigation("FriendRequestResponseUserNavigations"); + + b.Navigation("FriendUsers"); + + b.Navigation("GroupInviteInviteUserNavigations"); + + b.Navigation("GroupInviteInvitedUserNavigations"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + + b.Navigation("Groups"); + + b.Navigation("LoginLogs"); + + b.Navigation("Messages"); + + b.Navigation("Notifications"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/IM_API/Migrations/20260208124430_update-group.cs b/backend/IM_API/Migrations/20260208124430_update-group.cs index 337e334..1e830d1 100644 --- a/backend/IM_API/Migrations/20260208124430_update-group.cs +++ b/backend/IM_API/Migrations/20260208124430_update-group.cs @@ -1,65 +1,65 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace IM_API.Migrations -{ - /// - public partial class updategroup : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "LastMessage", - table: "groups", - type: "longtext", - nullable: false, - collation: "utf8mb4_general_ci") - .Annotation("MySql:CharSet", "utf8mb4"); - - migrationBuilder.AddColumn( - name: "LastSenderName", - table: "groups", - type: "longtext", - nullable: false, - collation: "utf8mb4_general_ci") - .Annotation("MySql:CharSet", "utf8mb4"); - - migrationBuilder.AddColumn( - name: "LastUpdateTime", - table: "groups", - type: "datetime(6)", - nullable: false, - defaultValue: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0))); - - migrationBuilder.AddColumn( - name: "MaxSequenceId", - table: "groups", - type: "bigint", - nullable: false, - defaultValue: 0L); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "LastMessage", - table: "groups"); - - migrationBuilder.DropColumn( - name: "LastSenderName", - table: "groups"); - - migrationBuilder.DropColumn( - name: "LastUpdateTime", - table: "groups"); - - migrationBuilder.DropColumn( - name: "MaxSequenceId", - table: "groups"); - } - } -} +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IM_API.Migrations +{ + /// + public partial class updategroup : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "LastMessage", + table: "groups", + type: "longtext", + nullable: false, + collation: "utf8mb4_general_ci") + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "LastSenderName", + table: "groups", + type: "longtext", + nullable: false, + collation: "utf8mb4_general_ci") + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "LastUpdateTime", + table: "groups", + type: "datetime(6)", + nullable: false, + defaultValue: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0))); + + migrationBuilder.AddColumn( + name: "MaxSequenceId", + table: "groups", + type: "bigint", + nullable: false, + defaultValue: 0L); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "LastMessage", + table: "groups"); + + migrationBuilder.DropColumn( + name: "LastSenderName", + table: "groups"); + + migrationBuilder.DropColumn( + name: "LastUpdateTime", + table: "groups"); + + migrationBuilder.DropColumn( + name: "MaxSequenceId", + table: "groups"); + } + } +} diff --git a/backend/IM_API/Migrations/20260211065853_update-group-groupid-userid.Designer.cs b/backend/IM_API/Migrations/20260211065853_update-group-groupid-userid.Designer.cs index 866d3ee..109b170 100644 --- a/backend/IM_API/Migrations/20260211065853_update-group-groupid-userid.Designer.cs +++ b/backend/IM_API/Migrations/20260211065853_update-group-groupid-userid.Designer.cs @@ -1,1117 +1,1117 @@ -// -using System; -using IM_API.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IM_API.Migrations -{ - [DbContext(typeof(ImContext))] - [Migration("20260211065853_update-group-groupid-userid")] - partial class updategroupgroupiduserid - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .UseCollation("latin1_swedish_ci") - .HasAnnotation("ProductVersion", "8.0.21") - .HasAnnotation("Relational:MaxIdentifierLength", 64); - - MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); - MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("状态(0:正常,2:封禁) "); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("更新时间 "); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RoleId" }, "RoleId"); - - b.ToTable("admins", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("int(11)"); - - b.Property("LastMessage") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("最后一条最新消息"); - - b.Property("LastMessageTime") - .HasColumnType("datetime") - .HasComment("最后一条消息发送时间"); - - b.Property("LastReadSequenceId") - .HasColumnType("int(11)") - .HasColumnName("lastReadMessageId") - .HasComment("最后一条未读消息ID "); - - b.Property("MessageId") - .HasColumnType("int(11)"); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.Property("TargetId") - .HasColumnType("int(11)") - .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); - - b.Property("UnreadCount") - .HasColumnType("int(11)") - .HasComment("未读消息数 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("MessageId"); - - b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); - - b.HasIndex(new[] { "UserId" }, "Userid"); - - b.ToTable("conversations", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); - - b.Property("LastLogin") - .HasColumnType("datetime") - .HasComment("最后一次登录 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("设备所属用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid") - .HasDatabaseName("Userid1"); - - b.ToTable("devices", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("FileType") - .IsRequired() - .HasMaxLength(10) - .HasColumnType("varchar(10)") - .HasComment("文件类型 "); - - b.Property("MessageId") - .HasColumnType("int(11)") - .HasComment("关联消息ID "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("文件名 "); - - b.Property("Size") - .HasColumnType("int(11)") - .HasComment("文件大小(单位:KB) "); - - b.Property("Url") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("varchar(100)") - .HasColumnName("URL") - .HasComment("文件储存URL "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "MessageId" }, "Messageld"); - - b.ToTable("files", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("好友头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("好友关系创建时间"); - - b.Property("FriendId") - .HasColumnType("int(11)") - .HasComment("用户2ID"); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("好友备注名"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户ID"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID"); - - b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); - - b.HasIndex(new[] { "FriendId" }, "用户2id"); - - b.ToTable("friends", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("申请时间 "); - - b.Property("Description") - .HasColumnType("text") - .HasComment("申请附言 "); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("备注"); - - b.Property("RequestUser") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.Property("ResponseUser") - .HasColumnType("int(11)") - .HasComment("被申请人 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RequestUser" }, "RequestUser"); - - b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); - - b.ToTable("friend_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("AllMembersBanned") - .HasColumnType("tinyint(4)") - .HasComment("全员禁言(0允许发言,2全员禁言)"); - - b.Property("Announcement") - .HasColumnType("text") - .HasComment("群公告"); - - b.Property("Auhority") - .HasColumnType("tinyint(4)") - .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); - - b.Property("Avatar") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("群头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("群聊创建时间"); - - b.Property("GroupMaster") - .HasColumnType("int(11)") - .HasComment("群主"); - - b.Property("LastMessage") - .IsRequired() - .HasColumnType("longtext"); - - b.Property("LastSenderName") - .IsRequired() - .HasColumnType("longtext"); - - b.Property("LastUpdateTime") - .HasColumnType("datetime(6)"); - - b.Property("MaxSequenceId") - .HasColumnType("bigint"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("群聊名称"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("群聊状态\r\n(1:正常,2:封禁)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID1"); - - b.ToTable("groups", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("InviteUser") - .HasColumnType("int(11)") - .HasComment("邀请用户"); - - b.Property("InvitedUser") - .HasColumnType("int(11)") - .HasComment("被邀请用户"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId"); - - b.HasIndex(new[] { "InviteUser" }, "InviteUser"); - - b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); - - b.ToTable("group_invite", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("加入群聊时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("Role") - .HasColumnType("tinyint(4)") - .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户编号"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "Groupld"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID2"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld1"); - - b.ToTable("group_member", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("入群附言"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号\r\n"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("UserId"); - - b.HasIndex(new[] { "GroupId" }, "GroupId") - .HasDatabaseName("GroupId1"); - - b.ToTable("group_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(通Devices/DType) "); - - b.Property("Logined") - .HasColumnType("datetime") - .HasComment("登录时间 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("登录用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld2"); - - b.ToTable("login_log", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("tinyint(4)") - .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); - - b.Property("ClientMsgId") - .HasColumnType("char(36)"); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("消息内容 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("发送时间 "); - - b.Property("MsgType") - .HasColumnType("tinyint(4)") - .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); - - b.Property("Recipient") - .HasColumnType("int(11)") - .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); - - b.Property("Sender") - .HasColumnType("int(11)") - .HasComment("发送者 "); - - b.Property("SequenceId") - .HasColumnType("bigint"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("消息状态(0:已发送,1:已撤回) "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("SequenceId", "StreamKey") - .IsUnique(); - - b.HasIndex(new[] { "Sender" }, "Sender"); - - b.ToTable("messages", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("通知内容"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Ntype") - .HasColumnType("tinyint(4)") - .HasColumnName("NType") - .HasComment("通知类型(0:文本)"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(40) - .HasColumnType("varchar(40)") - .HasComment("通知标题"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("接收人(为空为全体通知)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld3"); - - b.ToTable("notifications", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Code") - .HasColumnType("int(11)") - .HasComment("权限编码 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("权限名称 "); - - b.Property("Ptype") - .HasColumnType("int(11)") - .HasColumnName("PType") - .HasComment("权限类型(0:增,1:删,2:改,3:查) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("permissions", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.Property("Id") - .HasColumnType("int(11)") - .HasColumnName("ID"); - - b.Property("PermissionId") - .HasColumnType("int(11)") - .HasComment("权限 "); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "PermissionId" }, "Permissionld"); - - b.HasIndex(new[] { "RoleId" }, "Roleld"); - - b.ToTable("permissionarole", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("角色描述 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("角色名称 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("roles", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("用户头像链接"); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("创建时间"); - - b.Property("IsDeleted") - .HasColumnType("tinyint(4)") - .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); - - b.Property("NickName") - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户昵称"); - - b.Property("OnlineStatus") - .HasColumnType("tinyint(4)") - .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("Status") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(4)") - .HasDefaultValueSql("'1'") - .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("修改时间"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("唯一用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID3"); - - b.HasIndex(new[] { "Username" }, "Username") - .IsUnique(); - - b.ToTable("users", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Admins") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("admins_ibfk_1"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.HasOne("IM_API.Models.Message", null) - .WithMany("Conversations") - .HasForeignKey("MessageId"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("Conversations") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("conversations_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Devices") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("devices_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.HasOne("IM_API.Models.Message", "Message") - .WithMany("Files") - .HasForeignKey("MessageId") - .IsRequired() - .HasConstraintName("files_ibfk_1"); - - b.Navigation("Message"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.HasOne("IM_API.Models.User", "FriendNavigation") - .WithMany("FriendFriendNavigations") - .HasForeignKey("FriendId") - .IsRequired() - .HasConstraintName("用户2id"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("FriendUsers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("用户id"); - - b.Navigation("FriendNavigation"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.HasOne("IM_API.Models.User", "RequestUserNavigation") - .WithMany("FriendRequestRequestUserNavigations") - .HasForeignKey("RequestUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "ResponseUserNavigation") - .WithMany("FriendRequestResponseUserNavigations") - .HasForeignKey("ResponseUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_2"); - - b.Navigation("RequestUserNavigation"); - - b.Navigation("ResponseUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.HasOne("IM_API.Models.User", "GroupMasterNavigation") - .WithMany("Groups") - .HasForeignKey("GroupMaster") - .IsRequired() - .HasConstraintName("groups_ibfk_1"); - - b.Navigation("GroupMasterNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupInvites") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_invite_ibfk_2"); - - b.HasOne("IM_API.Models.User", "InviteUserNavigation") - .WithMany("GroupInviteInviteUserNavigations") - .HasForeignKey("InviteUser") - .HasConstraintName("group_invite_ibfk_1"); - - b.HasOne("IM_API.Models.User", "InvitedUserNavigation") - .WithMany("GroupInviteInvitedUserNavigations") - .HasForeignKey("InvitedUser") - .HasConstraintName("group_invite_ibfk_3"); - - b.Navigation("Group"); - - b.Navigation("InviteUserNavigation"); - - b.Navigation("InvitedUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupMembers") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_member_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupMembers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_member_ibfk_1"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupRequests") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_request_ibfk_2"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("LoginLogs") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("login_log_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.HasOne("IM_API.Models.User", "SenderNavigation") - .WithMany("Messages") - .HasForeignKey("Sender") - .IsRequired() - .HasConstraintName("messages_ibfk_1"); - - b.Navigation("SenderNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Notifications") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("notifications_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.HasOne("IM_API.Models.Permission", "Permission") - .WithMany("Permissionaroles") - .HasForeignKey("PermissionId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_2"); - - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Permissionaroles") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_1"); - - b.Navigation("Permission"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Navigation("GroupInvites"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Navigation("Conversations"); - - b.Navigation("Files"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Navigation("Admins"); - - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Navigation("Conversations"); - - b.Navigation("Devices"); - - b.Navigation("FriendFriendNavigations"); - - b.Navigation("FriendRequestRequestUserNavigations"); - - b.Navigation("FriendRequestResponseUserNavigations"); - - b.Navigation("FriendUsers"); - - b.Navigation("GroupInviteInviteUserNavigations"); - - b.Navigation("GroupInviteInvitedUserNavigations"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - - b.Navigation("Groups"); - - b.Navigation("LoginLogs"); - - b.Navigation("Messages"); - - b.Navigation("Notifications"); - }); -#pragma warning restore 612, 618 - } - } -} +// +using System; +using IM_API.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IM_API.Migrations +{ + [DbContext(typeof(ImContext))] + [Migration("20260211065853_update-group-groupid-userid")] + partial class updategroupgroupiduserid + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasAnnotation("ProductVersion", "8.0.21") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("状态(0:正常,2:封禁) "); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("更新时间 "); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RoleId" }, "RoleId"); + + b.ToTable("admins", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("int(11)"); + + b.Property("LastMessage") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("最后一条最新消息"); + + b.Property("LastMessageTime") + .HasColumnType("datetime") + .HasComment("最后一条消息发送时间"); + + b.Property("LastReadSequenceId") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId") + .HasComment("最后一条未读消息ID "); + + b.Property("MessageId") + .HasColumnType("int(11)"); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.Property("TargetId") + .HasColumnType("int(11)") + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); + + b.Property("UnreadCount") + .HasColumnType("int(11)") + .HasComment("未读消息数 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("MessageId"); + + b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); + + b.HasIndex(new[] { "UserId" }, "Userid"); + + b.ToTable("conversations", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); + + b.Property("LastLogin") + .HasColumnType("datetime") + .HasComment("最后一次登录 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("设备所属用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid") + .HasDatabaseName("Userid1"); + + b.ToTable("devices", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("FileType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("文件类型 "); + + b.Property("MessageId") + .HasColumnType("int(11)") + .HasComment("关联消息ID "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("文件名 "); + + b.Property("Size") + .HasColumnType("int(11)") + .HasComment("文件大小(单位:KB) "); + + b.Property("Url") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("URL") + .HasComment("文件储存URL "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "MessageId" }, "Messageld"); + + b.ToTable("files", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("好友头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("好友关系创建时间"); + + b.Property("FriendId") + .HasColumnType("int(11)") + .HasComment("用户2ID"); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("好友备注名"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户ID"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID"); + + b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); + + b.HasIndex(new[] { "FriendId" }, "用户2id"); + + b.ToTable("friends", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("申请时间 "); + + b.Property("Description") + .HasColumnType("text") + .HasComment("申请附言 "); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("备注"); + + b.Property("RequestUser") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.Property("ResponseUser") + .HasColumnType("int(11)") + .HasComment("被申请人 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RequestUser" }, "RequestUser"); + + b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); + + b.ToTable("friend_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllMembersBanned") + .HasColumnType("tinyint(4)") + .HasComment("全员禁言(0允许发言,2全员禁言)"); + + b.Property("Announcement") + .HasColumnType("text") + .HasComment("群公告"); + + b.Property("Auhority") + .HasColumnType("tinyint(4)") + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); + + b.Property("Avatar") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("群头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("群聊创建时间"); + + b.Property("GroupMaster") + .HasColumnType("int(11)") + .HasComment("群主"); + + b.Property("LastMessage") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LastSenderName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LastUpdateTime") + .HasColumnType("datetime(6)"); + + b.Property("MaxSequenceId") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("群聊名称"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("群聊状态\r\n(1:正常,2:封禁)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID1"); + + b.ToTable("groups", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("InviteUser") + .HasColumnType("int(11)") + .HasComment("邀请用户"); + + b.Property("InvitedUser") + .HasColumnType("int(11)") + .HasComment("被邀请用户"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId"); + + b.HasIndex(new[] { "InviteUser" }, "InviteUser"); + + b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); + + b.ToTable("group_invite", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("Role") + .HasColumnType("tinyint(4)") + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户编号"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "Groupld"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID2"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld1"); + + b.ToTable("group_member", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("入群附言"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号\r\n"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("UserId"); + + b.HasIndex(new[] { "GroupId" }, "GroupId") + .HasDatabaseName("GroupId1"); + + b.ToTable("group_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(通Devices/DType) "); + + b.Property("Logined") + .HasColumnType("datetime") + .HasComment("登录时间 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("登录用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld2"); + + b.ToTable("login_log", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("tinyint(4)") + .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); + + b.Property("ClientMsgId") + .HasColumnType("char(36)"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("消息内容 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("发送时间 "); + + b.Property("MsgType") + .HasColumnType("tinyint(4)") + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); + + b.Property("Recipient") + .HasColumnType("int(11)") + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); + + b.Property("Sender") + .HasColumnType("int(11)") + .HasComment("发送者 "); + + b.Property("SequenceId") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("消息状态(0:已发送,1:已撤回) "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("SequenceId", "StreamKey") + .IsUnique(); + + b.HasIndex(new[] { "Sender" }, "Sender"); + + b.ToTable("messages", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("通知内容"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Ntype") + .HasColumnType("tinyint(4)") + .HasColumnName("NType") + .HasComment("通知类型(0:文本)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("通知标题"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("接收人(为空为全体通知)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld3"); + + b.ToTable("notifications", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("int(11)") + .HasComment("权限编码 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("权限名称 "); + + b.Property("Ptype") + .HasColumnType("int(11)") + .HasColumnName("PType") + .HasComment("权限类型(0:增,1:删,2:改,3:查) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("permissions", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.Property("Id") + .HasColumnType("int(11)") + .HasColumnName("ID"); + + b.Property("PermissionId") + .HasColumnType("int(11)") + .HasComment("权限 "); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "PermissionId" }, "Permissionld"); + + b.HasIndex(new[] { "RoleId" }, "Roleld"); + + b.ToTable("permissionarole", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("角色描述 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("角色名称 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("roles", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("用户头像链接"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(4)") + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); + + b.Property("NickName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户昵称"); + + b.Property("OnlineStatus") + .HasColumnType("tinyint(4)") + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(4)") + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("修改时间"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("唯一用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID3"); + + b.HasIndex(new[] { "Username" }, "Username") + .IsUnique(); + + b.ToTable("users", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Admins") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("admins_ibfk_1"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.HasOne("IM_API.Models.Message", null) + .WithMany("Conversations") + .HasForeignKey("MessageId"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("Conversations") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("conversations_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Devices") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("devices_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.HasOne("IM_API.Models.Message", "Message") + .WithMany("Files") + .HasForeignKey("MessageId") + .IsRequired() + .HasConstraintName("files_ibfk_1"); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.HasOne("IM_API.Models.User", "FriendNavigation") + .WithMany("FriendFriendNavigations") + .HasForeignKey("FriendId") + .IsRequired() + .HasConstraintName("用户2id"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("FriendUsers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("用户id"); + + b.Navigation("FriendNavigation"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.HasOne("IM_API.Models.User", "RequestUserNavigation") + .WithMany("FriendRequestRequestUserNavigations") + .HasForeignKey("RequestUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "ResponseUserNavigation") + .WithMany("FriendRequestResponseUserNavigations") + .HasForeignKey("ResponseUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_2"); + + b.Navigation("RequestUserNavigation"); + + b.Navigation("ResponseUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.HasOne("IM_API.Models.User", "GroupMasterNavigation") + .WithMany("Groups") + .HasForeignKey("GroupMaster") + .IsRequired() + .HasConstraintName("groups_ibfk_1"); + + b.Navigation("GroupMasterNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupInvites") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_invite_ibfk_2"); + + b.HasOne("IM_API.Models.User", "InviteUserNavigation") + .WithMany("GroupInviteInviteUserNavigations") + .HasForeignKey("InviteUser") + .HasConstraintName("group_invite_ibfk_1"); + + b.HasOne("IM_API.Models.User", "InvitedUserNavigation") + .WithMany("GroupInviteInvitedUserNavigations") + .HasForeignKey("InvitedUser") + .HasConstraintName("group_invite_ibfk_3"); + + b.Navigation("Group"); + + b.Navigation("InviteUserNavigation"); + + b.Navigation("InvitedUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupMembers") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_member_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupMembers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_member_ibfk_1"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupRequests") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_request_ibfk_2"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("LoginLogs") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("login_log_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.HasOne("IM_API.Models.User", "SenderNavigation") + .WithMany("Messages") + .HasForeignKey("Sender") + .IsRequired() + .HasConstraintName("messages_ibfk_1"); + + b.Navigation("SenderNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Notifications") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("notifications_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.HasOne("IM_API.Models.Permission", "Permission") + .WithMany("Permissionaroles") + .HasForeignKey("PermissionId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_2"); + + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Permissionaroles") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_1"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Navigation("GroupInvites"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Navigation("Conversations"); + + b.Navigation("Files"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Navigation("Admins"); + + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Navigation("Conversations"); + + b.Navigation("Devices"); + + b.Navigation("FriendFriendNavigations"); + + b.Navigation("FriendRequestRequestUserNavigations"); + + b.Navigation("FriendRequestResponseUserNavigations"); + + b.Navigation("FriendUsers"); + + b.Navigation("GroupInviteInviteUserNavigations"); + + b.Navigation("GroupInviteInvitedUserNavigations"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + + b.Navigation("Groups"); + + b.Navigation("LoginLogs"); + + b.Navigation("Messages"); + + b.Navigation("Notifications"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/IM_API/Migrations/20260211065853_update-group-groupid-userid.cs b/backend/IM_API/Migrations/20260211065853_update-group-groupid-userid.cs index 018a446..cbdc606 100644 --- a/backend/IM_API/Migrations/20260211065853_update-group-groupid-userid.cs +++ b/backend/IM_API/Migrations/20260211065853_update-group-groupid-userid.cs @@ -1,49 +1,49 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace IM_API.Migrations -{ - /// - public partial class updategroupgroupiduserid : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "group_request_ibfk_2", - table: "group_request"); - - migrationBuilder.CreateIndex( - name: "IX_group_request_UserId", - table: "group_request", - column: "UserId"); - - migrationBuilder.AddForeignKey( - name: "group_request_ibfk_2", - table: "group_request", - column: "UserId", - principalTable: "users", - principalColumn: "ID"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "group_request_ibfk_2", - table: "group_request"); - - migrationBuilder.DropIndex( - name: "IX_group_request_UserId", - table: "group_request"); - - migrationBuilder.AddForeignKey( - name: "group_request_ibfk_2", - table: "group_request", - column: "GroupId", - principalTable: "users", - principalColumn: "ID"); - } - } -} +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IM_API.Migrations +{ + /// + public partial class updategroupgroupiduserid : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "group_request_ibfk_2", + table: "group_request"); + + migrationBuilder.CreateIndex( + name: "IX_group_request_UserId", + table: "group_request", + column: "UserId"); + + migrationBuilder.AddForeignKey( + name: "group_request_ibfk_2", + table: "group_request", + column: "UserId", + principalTable: "users", + principalColumn: "ID"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "group_request_ibfk_2", + table: "group_request"); + + migrationBuilder.DropIndex( + name: "IX_group_request_UserId", + table: "group_request"); + + migrationBuilder.AddForeignKey( + name: "group_request_ibfk_2", + table: "group_request", + column: "GroupId", + principalTable: "users", + principalColumn: "ID"); + } + } +} diff --git a/backend/IM_API/Migrations/ImContextModelSnapshot.cs b/backend/IM_API/Migrations/ImContextModelSnapshot.cs index 8159df8..232195b 100644 --- a/backend/IM_API/Migrations/ImContextModelSnapshot.cs +++ b/backend/IM_API/Migrations/ImContextModelSnapshot.cs @@ -1,1114 +1,1114 @@ -// -using System; -using IM_API.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace IM_API.Migrations -{ - [DbContext(typeof(ImContext))] - partial class ImContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .UseCollation("latin1_swedish_ci") - .HasAnnotation("ProductVersion", "8.0.21") - .HasAnnotation("Relational:MaxIdentifierLength", 64); - - MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); - MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("状态(0:正常,2:封禁) "); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("更新时间 "); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RoleId" }, "RoleId"); - - b.ToTable("admins", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("int(11)"); - - b.Property("LastMessage") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("最后一条最新消息"); - - b.Property("LastMessageTime") - .HasColumnType("datetime") - .HasComment("最后一条消息发送时间"); - - b.Property("LastReadSequenceId") - .HasColumnType("int(11)") - .HasColumnName("lastReadMessageId") - .HasComment("最后一条未读消息ID "); - - b.Property("MessageId") - .HasColumnType("int(11)"); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.Property("TargetId") - .HasColumnType("int(11)") - .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); - - b.Property("UnreadCount") - .HasColumnType("int(11)") - .HasComment("未读消息数 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("MessageId"); - - b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); - - b.HasIndex(new[] { "UserId" }, "Userid"); - - b.ToTable("conversations", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); - - b.Property("LastLogin") - .HasColumnType("datetime") - .HasComment("最后一次登录 "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("设备所属用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userid") - .HasDatabaseName("Userid1"); - - b.ToTable("devices", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("FileType") - .IsRequired() - .HasMaxLength(10) - .HasColumnType("varchar(10)") - .HasComment("文件类型 "); - - b.Property("MessageId") - .HasColumnType("int(11)") - .HasComment("关联消息ID "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("文件名 "); - - b.Property("Size") - .HasColumnType("int(11)") - .HasComment("文件大小(单位:KB) "); - - b.Property("Url") - .IsRequired() - .HasMaxLength(100) - .HasColumnType("varchar(100)") - .HasColumnName("URL") - .HasComment("文件储存URL "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "MessageId" }, "Messageld"); - - b.ToTable("files", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("好友头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("好友关系创建时间"); - - b.Property("FriendId") - .HasColumnType("int(11)") - .HasComment("用户2ID"); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("好友备注名"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户ID"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID"); - - b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); - - b.HasIndex(new[] { "FriendId" }, "用户2id"); - - b.ToTable("friends", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("申请时间 "); - - b.Property("Description") - .HasColumnType("text") - .HasComment("申请附言 "); - - b.Property("RemarkName") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("备注"); - - b.Property("RequestUser") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.Property("ResponseUser") - .HasColumnType("int(11)") - .HasComment("被申请人 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "RequestUser" }, "RequestUser"); - - b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); - - b.ToTable("friend_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("AllMembersBanned") - .HasColumnType("tinyint(4)") - .HasComment("全员禁言(0允许发言,2全员禁言)"); - - b.Property("Announcement") - .HasColumnType("text") - .HasComment("群公告"); - - b.Property("Auhority") - .HasColumnType("tinyint(4)") - .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); - - b.Property("Avatar") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("群头像"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("群聊创建时间"); - - b.Property("GroupMaster") - .HasColumnType("int(11)") - .HasComment("群主"); - - b.Property("LastMessage") - .IsRequired() - .HasColumnType("longtext"); - - b.Property("LastSenderName") - .IsRequired() - .HasColumnType("longtext"); - - b.Property("LastUpdateTime") - .HasColumnType("datetime(6)"); - - b.Property("MaxSequenceId") - .HasColumnType("bigint"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("群聊名称"); - - b.Property("Status") - .HasColumnType("tinyint(4)") - .HasComment("群聊状态\r\n(1:正常,2:封禁)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID1"); - - b.ToTable("groups", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("InviteUser") - .HasColumnType("int(11)") - .HasComment("邀请用户"); - - b.Property("InvitedUser") - .HasColumnType("int(11)") - .HasComment("被邀请用户"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "GroupId"); - - b.HasIndex(new[] { "InviteUser" }, "InviteUser"); - - b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); - - b.ToTable("group_invite", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("加入群聊时间"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号"); - - b.Property("Role") - .HasColumnType("tinyint(4)") - .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("用户编号"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "GroupId" }, "Groupld"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID2"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld1"); - - b.ToTable("group_member", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("入群附言"); - - b.Property("GroupId") - .HasColumnType("int(11)") - .HasComment("群聊编号\r\n"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("申请人 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("UserId"); - - b.HasIndex(new[] { "GroupId" }, "GroupId") - .HasDatabaseName("GroupId1"); - - b.ToTable("group_request", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Dtype") - .HasColumnType("tinyint(4)") - .HasColumnName("DType") - .HasComment("设备类型(通Devices/DType) "); - - b.Property("Logined") - .HasColumnType("datetime") - .HasComment("登录时间 "); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("登录用户 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld2"); - - b.ToTable("login_log", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("ChatType") - .HasColumnType("tinyint(4)") - .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); - - b.Property("ClientMsgId") - .HasColumnType("char(36)"); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("消息内容 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("发送时间 "); - - b.Property("MsgType") - .HasColumnType("tinyint(4)") - .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); - - b.Property("Recipient") - .HasColumnType("int(11)") - .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); - - b.Property("Sender") - .HasColumnType("int(11)") - .HasComment("发送者 "); - - b.Property("SequenceId") - .HasColumnType("bigint"); - - b.Property("State") - .HasColumnType("tinyint(4)") - .HasComment("消息状态(0:已发送,1:已撤回) "); - - b.Property("StreamKey") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("消息推送唯一标识符"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex("SequenceId", "StreamKey") - .IsUnique(); - - b.HasIndex(new[] { "Sender" }, "Sender"); - - b.ToTable("messages", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Content") - .IsRequired() - .HasColumnType("text") - .HasComment("通知内容"); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间"); - - b.Property("Ntype") - .HasColumnType("tinyint(4)") - .HasColumnName("NType") - .HasComment("通知类型(0:文本)"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(40) - .HasColumnType("varchar(40)") - .HasComment("通知标题"); - - b.Property("UserId") - .HasColumnType("int(11)") - .HasComment("接收人(为空为全体通知)"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "UserId" }, "Userld") - .HasDatabaseName("Userld3"); - - b.ToTable("notifications", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Code") - .HasColumnType("int(11)") - .HasComment("权限编码 "); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("权限名称 "); - - b.Property("Ptype") - .HasColumnType("int(11)") - .HasColumnName("PType") - .HasComment("权限类型(0:增,1:删,2:改,3:查) "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("permissions", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.Property("Id") - .HasColumnType("int(11)") - .HasColumnName("ID"); - - b.Property("PermissionId") - .HasColumnType("int(11)") - .HasComment("权限 "); - - b.Property("RoleId") - .HasColumnType("int(11)") - .HasComment("角色 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "PermissionId" }, "Permissionld"); - - b.HasIndex(new[] { "RoleId" }, "Roleld"); - - b.ToTable("permissionarole", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Created") - .HasColumnType("datetime") - .HasComment("创建时间 "); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasComment("角色描述 "); - - b.Property("Name") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("varchar(20)") - .HasComment("角色名称 "); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.ToTable("roles", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int(11)") - .HasColumnName("ID"); - - MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); - - b.Property("Avatar") - .HasMaxLength(255) - .HasColumnType("varchar(255)") - .HasComment("用户头像链接"); - - b.Property("Created") - .ValueGeneratedOnAdd() - .HasColumnType("datetime") - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("创建时间"); - - b.Property("IsDeleted") - .HasColumnType("tinyint(4)") - .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); - - b.Property("NickName") - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("用户昵称"); - - b.Property("OnlineStatus") - .HasColumnType("tinyint(4)") - .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); - - b.Property("Password") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("密码"); - - b.Property("Status") - .ValueGeneratedOnAdd() - .HasColumnType("tinyint(4)") - .HasDefaultValueSql("'1'") - .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); - - b.Property("Updated") - .HasColumnType("datetime") - .HasComment("修改时间"); - - b.Property("Username") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("varchar(50)") - .HasComment("唯一用户名"); - - b.HasKey("Id") - .HasName("PRIMARY"); - - b.HasIndex(new[] { "Id" }, "ID") - .HasDatabaseName("ID3"); - - b.HasIndex(new[] { "Username" }, "Username") - .IsUnique(); - - b.ToTable("users", (string)null); - - MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); - MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); - }); - - modelBuilder.Entity("IM_API.Models.Admin", b => - { - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Admins") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("admins_ibfk_1"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Conversation", b => - { - b.HasOne("IM_API.Models.Message", null) - .WithMany("Conversations") - .HasForeignKey("MessageId"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("Conversations") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("conversations_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Device", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Devices") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("devices_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.File", b => - { - b.HasOne("IM_API.Models.Message", "Message") - .WithMany("Files") - .HasForeignKey("MessageId") - .IsRequired() - .HasConstraintName("files_ibfk_1"); - - b.Navigation("Message"); - }); - - modelBuilder.Entity("IM_API.Models.Friend", b => - { - b.HasOne("IM_API.Models.User", "FriendNavigation") - .WithMany("FriendFriendNavigations") - .HasForeignKey("FriendId") - .IsRequired() - .HasConstraintName("用户2id"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("FriendUsers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("用户id"); - - b.Navigation("FriendNavigation"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.FriendRequest", b => - { - b.HasOne("IM_API.Models.User", "RequestUserNavigation") - .WithMany("FriendRequestRequestUserNavigations") - .HasForeignKey("RequestUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "ResponseUserNavigation") - .WithMany("FriendRequestResponseUserNavigations") - .HasForeignKey("ResponseUser") - .IsRequired() - .HasConstraintName("friend_request_ibfk_2"); - - b.Navigation("RequestUserNavigation"); - - b.Navigation("ResponseUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.HasOne("IM_API.Models.User", "GroupMasterNavigation") - .WithMany("Groups") - .HasForeignKey("GroupMaster") - .IsRequired() - .HasConstraintName("groups_ibfk_1"); - - b.Navigation("GroupMasterNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupInvite", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupInvites") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_invite_ibfk_2"); - - b.HasOne("IM_API.Models.User", "InviteUserNavigation") - .WithMany("GroupInviteInviteUserNavigations") - .HasForeignKey("InviteUser") - .HasConstraintName("group_invite_ibfk_1"); - - b.HasOne("IM_API.Models.User", "InvitedUserNavigation") - .WithMany("GroupInviteInvitedUserNavigations") - .HasForeignKey("InvitedUser") - .HasConstraintName("group_invite_ibfk_3"); - - b.Navigation("Group"); - - b.Navigation("InviteUserNavigation"); - - b.Navigation("InvitedUserNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.GroupMember", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupMembers") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_member_ibfk_2"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupMembers") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_member_ibfk_1"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.GroupRequest", b => - { - b.HasOne("IM_API.Models.Group", "Group") - .WithMany("GroupRequests") - .HasForeignKey("GroupId") - .IsRequired() - .HasConstraintName("group_request_ibfk_1"); - - b.HasOne("IM_API.Models.User", "User") - .WithMany("GroupRequests") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("group_request_ibfk_2"); - - b.Navigation("Group"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.LoginLog", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("LoginLogs") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("login_log_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.HasOne("IM_API.Models.User", "SenderNavigation") - .WithMany("Messages") - .HasForeignKey("Sender") - .IsRequired() - .HasConstraintName("messages_ibfk_1"); - - b.Navigation("SenderNavigation"); - }); - - modelBuilder.Entity("IM_API.Models.Notification", b => - { - b.HasOne("IM_API.Models.User", "User") - .WithMany("Notifications") - .HasForeignKey("UserId") - .IsRequired() - .HasConstraintName("notifications_ibfk_1"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("IM_API.Models.Permissionarole", b => - { - b.HasOne("IM_API.Models.Permission", "Permission") - .WithMany("Permissionaroles") - .HasForeignKey("PermissionId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_2"); - - b.HasOne("IM_API.Models.Role", "Role") - .WithMany("Permissionaroles") - .HasForeignKey("RoleId") - .IsRequired() - .HasConstraintName("permissionarole_ibfk_1"); - - b.Navigation("Permission"); - - b.Navigation("Role"); - }); - - modelBuilder.Entity("IM_API.Models.Group", b => - { - b.Navigation("GroupInvites"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - }); - - modelBuilder.Entity("IM_API.Models.Message", b => - { - b.Navigation("Conversations"); - - b.Navigation("Files"); - }); - - modelBuilder.Entity("IM_API.Models.Permission", b => - { - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.Role", b => - { - b.Navigation("Admins"); - - b.Navigation("Permissionaroles"); - }); - - modelBuilder.Entity("IM_API.Models.User", b => - { - b.Navigation("Conversations"); - - b.Navigation("Devices"); - - b.Navigation("FriendFriendNavigations"); - - b.Navigation("FriendRequestRequestUserNavigations"); - - b.Navigation("FriendRequestResponseUserNavigations"); - - b.Navigation("FriendUsers"); - - b.Navigation("GroupInviteInviteUserNavigations"); - - b.Navigation("GroupInviteInvitedUserNavigations"); - - b.Navigation("GroupMembers"); - - b.Navigation("GroupRequests"); - - b.Navigation("Groups"); - - b.Navigation("LoginLogs"); - - b.Navigation("Messages"); - - b.Navigation("Notifications"); - }); -#pragma warning restore 612, 618 - } - } -} +// +using System; +using IM_API.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IM_API.Migrations +{ + [DbContext(typeof(ImContext))] + partial class ImContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasAnnotation("ProductVersion", "8.0.21") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("状态(0:正常,2:封禁) "); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("更新时间 "); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RoleId" }, "RoleId"); + + b.ToTable("admins", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("int(11)"); + + b.Property("LastMessage") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("最后一条最新消息"); + + b.Property("LastMessageTime") + .HasColumnType("datetime") + .HasComment("最后一条消息发送时间"); + + b.Property("LastReadSequenceId") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId") + .HasComment("最后一条未读消息ID "); + + b.Property("MessageId") + .HasColumnType("int(11)"); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.Property("TargetId") + .HasColumnType("int(11)") + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); + + b.Property("UnreadCount") + .HasColumnType("int(11)") + .HasComment("未读消息数 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("MessageId"); + + b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); + + b.HasIndex(new[] { "UserId" }, "Userid"); + + b.ToTable("conversations", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); + + b.Property("LastLogin") + .HasColumnType("datetime") + .HasComment("最后一次登录 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("设备所属用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid") + .HasDatabaseName("Userid1"); + + b.ToTable("devices", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("FileType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("文件类型 "); + + b.Property("MessageId") + .HasColumnType("int(11)") + .HasComment("关联消息ID "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("文件名 "); + + b.Property("Size") + .HasColumnType("int(11)") + .HasComment("文件大小(单位:KB) "); + + b.Property("Url") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("URL") + .HasComment("文件储存URL "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "MessageId" }, "Messageld"); + + b.ToTable("files", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("好友头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("好友关系创建时间"); + + b.Property("FriendId") + .HasColumnType("int(11)") + .HasComment("用户2ID"); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("好友备注名"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户ID"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID"); + + b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); + + b.HasIndex(new[] { "FriendId" }, "用户2id"); + + b.ToTable("friends", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("申请时间 "); + + b.Property("Description") + .HasColumnType("text") + .HasComment("申请附言 "); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("备注"); + + b.Property("RequestUser") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.Property("ResponseUser") + .HasColumnType("int(11)") + .HasComment("被申请人 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RequestUser" }, "RequestUser"); + + b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); + + b.ToTable("friend_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllMembersBanned") + .HasColumnType("tinyint(4)") + .HasComment("全员禁言(0允许发言,2全员禁言)"); + + b.Property("Announcement") + .HasColumnType("text") + .HasComment("群公告"); + + b.Property("Auhority") + .HasColumnType("tinyint(4)") + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); + + b.Property("Avatar") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("群头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("群聊创建时间"); + + b.Property("GroupMaster") + .HasColumnType("int(11)") + .HasComment("群主"); + + b.Property("LastMessage") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LastSenderName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LastUpdateTime") + .HasColumnType("datetime(6)"); + + b.Property("MaxSequenceId") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("群聊名称"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("群聊状态\r\n(1:正常,2:封禁)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID1"); + + b.ToTable("groups", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("InviteUser") + .HasColumnType("int(11)") + .HasComment("邀请用户"); + + b.Property("InvitedUser") + .HasColumnType("int(11)") + .HasComment("被邀请用户"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId"); + + b.HasIndex(new[] { "InviteUser" }, "InviteUser"); + + b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); + + b.ToTable("group_invite", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("Role") + .HasColumnType("tinyint(4)") + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户编号"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "Groupld"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID2"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld1"); + + b.ToTable("group_member", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("入群附言"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号\r\n"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("UserId"); + + b.HasIndex(new[] { "GroupId" }, "GroupId") + .HasDatabaseName("GroupId1"); + + b.ToTable("group_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(通Devices/DType) "); + + b.Property("Logined") + .HasColumnType("datetime") + .HasComment("登录时间 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("登录用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld2"); + + b.ToTable("login_log", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("tinyint(4)") + .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); + + b.Property("ClientMsgId") + .HasColumnType("char(36)"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("消息内容 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("发送时间 "); + + b.Property("MsgType") + .HasColumnType("tinyint(4)") + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); + + b.Property("Recipient") + .HasColumnType("int(11)") + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); + + b.Property("Sender") + .HasColumnType("int(11)") + .HasComment("发送者 "); + + b.Property("SequenceId") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("消息状态(0:已发送,1:已撤回) "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("SequenceId", "StreamKey") + .IsUnique(); + + b.HasIndex(new[] { "Sender" }, "Sender"); + + b.ToTable("messages", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("通知内容"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Ntype") + .HasColumnType("tinyint(4)") + .HasColumnName("NType") + .HasComment("通知类型(0:文本)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("通知标题"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("接收人(为空为全体通知)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld3"); + + b.ToTable("notifications", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("int(11)") + .HasComment("权限编码 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("权限名称 "); + + b.Property("Ptype") + .HasColumnType("int(11)") + .HasColumnName("PType") + .HasComment("权限类型(0:增,1:删,2:改,3:查) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("permissions", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.Property("Id") + .HasColumnType("int(11)") + .HasColumnName("ID"); + + b.Property("PermissionId") + .HasColumnType("int(11)") + .HasComment("权限 "); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "PermissionId" }, "Permissionld"); + + b.HasIndex(new[] { "RoleId" }, "Roleld"); + + b.ToTable("permissionarole", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("角色描述 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("角色名称 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("roles", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("用户头像链接"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(4)") + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); + + b.Property("NickName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户昵称"); + + b.Property("OnlineStatus") + .HasColumnType("tinyint(4)") + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(4)") + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("修改时间"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("唯一用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID3"); + + b.HasIndex(new[] { "Username" }, "Username") + .IsUnique(); + + b.ToTable("users", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Admins") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("admins_ibfk_1"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.HasOne("IM_API.Models.Message", null) + .WithMany("Conversations") + .HasForeignKey("MessageId"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("Conversations") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("conversations_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Devices") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("devices_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.HasOne("IM_API.Models.Message", "Message") + .WithMany("Files") + .HasForeignKey("MessageId") + .IsRequired() + .HasConstraintName("files_ibfk_1"); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.HasOne("IM_API.Models.User", "FriendNavigation") + .WithMany("FriendFriendNavigations") + .HasForeignKey("FriendId") + .IsRequired() + .HasConstraintName("用户2id"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("FriendUsers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("用户id"); + + b.Navigation("FriendNavigation"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.HasOne("IM_API.Models.User", "RequestUserNavigation") + .WithMany("FriendRequestRequestUserNavigations") + .HasForeignKey("RequestUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "ResponseUserNavigation") + .WithMany("FriendRequestResponseUserNavigations") + .HasForeignKey("ResponseUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_2"); + + b.Navigation("RequestUserNavigation"); + + b.Navigation("ResponseUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.HasOne("IM_API.Models.User", "GroupMasterNavigation") + .WithMany("Groups") + .HasForeignKey("GroupMaster") + .IsRequired() + .HasConstraintName("groups_ibfk_1"); + + b.Navigation("GroupMasterNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupInvites") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_invite_ibfk_2"); + + b.HasOne("IM_API.Models.User", "InviteUserNavigation") + .WithMany("GroupInviteInviteUserNavigations") + .HasForeignKey("InviteUser") + .HasConstraintName("group_invite_ibfk_1"); + + b.HasOne("IM_API.Models.User", "InvitedUserNavigation") + .WithMany("GroupInviteInvitedUserNavigations") + .HasForeignKey("InvitedUser") + .HasConstraintName("group_invite_ibfk_3"); + + b.Navigation("Group"); + + b.Navigation("InviteUserNavigation"); + + b.Navigation("InvitedUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupMembers") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_member_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupMembers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_member_ibfk_1"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupRequests") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_request_ibfk_2"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("LoginLogs") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("login_log_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.HasOne("IM_API.Models.User", "SenderNavigation") + .WithMany("Messages") + .HasForeignKey("Sender") + .IsRequired() + .HasConstraintName("messages_ibfk_1"); + + b.Navigation("SenderNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Notifications") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("notifications_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.HasOne("IM_API.Models.Permission", "Permission") + .WithMany("Permissionaroles") + .HasForeignKey("PermissionId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_2"); + + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Permissionaroles") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_1"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Navigation("GroupInvites"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Navigation("Conversations"); + + b.Navigation("Files"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Navigation("Admins"); + + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Navigation("Conversations"); + + b.Navigation("Devices"); + + b.Navigation("FriendFriendNavigations"); + + b.Navigation("FriendRequestRequestUserNavigations"); + + b.Navigation("FriendRequestResponseUserNavigations"); + + b.Navigation("FriendUsers"); + + b.Navigation("GroupInviteInviteUserNavigations"); + + b.Navigation("GroupInviteInvitedUserNavigations"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + + b.Navigation("Groups"); + + b.Navigation("LoginLogs"); + + b.Navigation("Messages"); + + b.Navigation("Notifications"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/IM_API/Models/Admin.cs b/backend/IM_API/Models/Admin.cs index 0da0856..6989c34 100644 --- a/backend/IM_API/Models/Admin.cs +++ b/backend/IM_API/Models/Admin.cs @@ -1,41 +1,41 @@ -using System; -using System.Collections.Generic; - -namespace IM_API.Models; - -public partial class Admin -{ - public int Id { get; set; } - - /// - /// 用户名 - /// - public string Username { get; set; } = null!; - - /// - /// 密码 - /// - public string Password { get; set; } = null!; - - /// - /// 角色 - /// - public int RoleId { get; set; } - - /// - /// 状态(0:正常,2:封禁) - /// - public sbyte State { get; set; } - - /// - /// 创建时间 - /// - public DateTimeOffset Created { get; set; } - - /// - /// 更新时间 - /// - public DateTimeOffset Updated { get; set; } - - public virtual Role Role { get; set; } = null!; -} +using System; +using System.Collections.Generic; + +namespace IM_API.Models; + +public partial class Admin +{ + public int Id { get; set; } + + /// + /// 用户名 + /// + public string Username { get; set; } = null!; + + /// + /// 密码 + /// + public string Password { get; set; } = null!; + + /// + /// 角色 + /// + public int RoleId { get; set; } + + /// + /// 状态(0:正常,2:封禁) + /// + public sbyte State { get; set; } + + /// + /// 创建时间 + /// + public DateTimeOffset Created { get; set; } + + /// + /// 更新时间 + /// + public DateTimeOffset Updated { get; set; } + + public virtual Role Role { get; set; } = null!; +} diff --git a/backend/IM_API/Models/AdminExt.cs b/backend/IM_API/Models/AdminExt.cs index 70b2a96..2917946 100644 --- a/backend/IM_API/Models/AdminExt.cs +++ b/backend/IM_API/Models/AdminExt.cs @@ -1,11 +1,11 @@ -namespace IM_API.Models -{ - public partial class Admin - { - public AdminState StateEnum - { - get => (AdminState)State; - set => State = (sbyte)value; - } - } -} +namespace IM_API.Models +{ + public partial class Admin + { + public AdminState StateEnum + { + get => (AdminState)State; + set => State = (sbyte)value; + } + } +} diff --git a/backend/IM_API/Models/AdminState.cs b/backend/IM_API/Models/AdminState.cs index ca160b9..94e407d 100644 --- a/backend/IM_API/Models/AdminState.cs +++ b/backend/IM_API/Models/AdminState.cs @@ -1,8 +1,8 @@ -namespace IM_API.Models -{ - public enum AdminState - { - Normal = 0, - Blocked = 2 - } -} +namespace IM_API.Models +{ + public enum AdminState + { + Normal = 0, + Blocked = 2 + } +} diff --git a/backend/IM_API/Models/ChatType.cs b/backend/IM_API/Models/ChatType.cs index 6a85a7e..fbfa45f 100644 --- a/backend/IM_API/Models/ChatType.cs +++ b/backend/IM_API/Models/ChatType.cs @@ -1,8 +1,8 @@ -namespace IM_API.Models -{ - public enum ChatType - { - PRIVATE = 0, - GROUP = 1 - } -} +namespace IM_API.Models +{ + public enum ChatType + { + PRIVATE = 0, + GROUP = 1 + } +} diff --git a/backend/IM_API/Models/Conversation.cs b/backend/IM_API/Models/Conversation.cs index eec14a6..ace5802 100644 --- a/backend/IM_API/Models/Conversation.cs +++ b/backend/IM_API/Models/Conversation.cs @@ -1,51 +1,51 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class Conversation -{ - public int Id { get; set; } - - /// - /// 用户 - /// - public int UserId { get; set; } - - /// - /// 对方ID(群聊为群聊ID,单聊为单聊ID) - /// - public int TargetId { get; set; } - - /// - /// 最后一条未读消息ID - /// - public long? LastReadSequenceId { get; set; } - - /// - /// 未读消息数 - /// - public int UnreadCount { get; set; } - - public ChatType ChatType { get; set; } - - /// - /// 消息推送唯一标识符 - /// - public string StreamKey { get; set; } = null!; - - /// - /// 最后一条最新消息 - /// - public string LastMessage { get; set; } = null!; - - /// - /// 最后一条消息发送时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset LastMessageTime { get; set; } - - - public virtual User User { get; set; } = null!; -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class Conversation +{ + public int Id { get; set; } + + /// + /// 用户 + /// + public int UserId { get; set; } + + /// + /// 对方ID(群聊为群聊ID,单聊为单聊ID) + /// + public int TargetId { get; set; } + + /// + /// 最后一条未读消息ID + /// + public long? LastReadSequenceId { get; set; } + + /// + /// 未读消息数 + /// + public int UnreadCount { get; set; } + + public ChatType ChatType { get; set; } + + /// + /// 消息推送唯一标识符 + /// + public string StreamKey { get; set; } = null!; + + /// + /// 最后一条最新消息 + /// + public string LastMessage { get; set; } = null!; + + /// + /// 最后一条消息发送时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset LastMessageTime { get; set; } + + + public virtual User User { get; set; } = null!; +} diff --git a/backend/IM_API/Models/ConversationExt.cs b/backend/IM_API/Models/ConversationExt.cs index 816e812..a38e4d1 100644 --- a/backend/IM_API/Models/ConversationExt.cs +++ b/backend/IM_API/Models/ConversationExt.cs @@ -1,18 +1,18 @@ -using IM_API.Dtos.Conversation; - -namespace IM_API.Models -{ - public partial class Conversation - { - public ChatType ChatTypeEnum { - get - { - return ChatType; - } - set - { - ChatType = value; - } - } - } -} +using IM_API.Dtos.Conversation; + +namespace IM_API.Models +{ + public partial class Conversation + { + public ChatType ChatTypeEnum { + get + { + return ChatType; + } + set + { + ChatType = value; + } + } + } +} diff --git a/backend/IM_API/Models/Device.cs b/backend/IM_API/Models/Device.cs index 4bfbbb8..a500ed7 100644 --- a/backend/IM_API/Models/Device.cs +++ b/backend/IM_API/Models/Device.cs @@ -1,29 +1,29 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class Device -{ - public int Id { get; set; } - - /// - /// 设备所属用户 - /// - public int UserId { get; set; } - - /// - /// 设备类型( - /// 0:Android,1:Ios,2:PC,3:Pad,4:未知) - /// - public sbyte Dtype { get; set; } - - /// - /// 最后一次登录 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset LastLogin { get; set; } - - public virtual User User { get; set; } = null!; -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class Device +{ + public int Id { get; set; } + + /// + /// 设备所属用户 + /// + public int UserId { get; set; } + + /// + /// 设备类型( + /// 0:Android,1:Ios,2:PC,3:Pad,4:未知) + /// + public sbyte Dtype { get; set; } + + /// + /// 最后一次登录 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset LastLogin { get; set; } + + public virtual User User { get; set; } = null!; +} diff --git a/backend/IM_API/Models/DeviceDtype.cs b/backend/IM_API/Models/DeviceDtype.cs index 117a96c..5dcfb7e 100644 --- a/backend/IM_API/Models/DeviceDtype.cs +++ b/backend/IM_API/Models/DeviceDtype.cs @@ -1,26 +1,26 @@ -namespace IM_API.Models -{ - /// - /// 设备类型枚举 - /// - public enum DeviceDtype - { - /// - /// 安卓端 - /// - ANDROID = 0, - /// - /// IOS端 - /// - IOS = 1, - /// - /// PC - /// - PC = 2, - PAD = 3, - /// - /// 未知端 - /// - OTHER = 4 - } -} +namespace IM_API.Models +{ + /// + /// 设备类型枚举 + /// + public enum DeviceDtype + { + /// + /// 安卓端 + /// + ANDROID = 0, + /// + /// IOS端 + /// + IOS = 1, + /// + /// PC + /// + PC = 2, + PAD = 3, + /// + /// 未知端 + /// + OTHER = 4 + } +} diff --git a/backend/IM_API/Models/DeviceExt.cs b/backend/IM_API/Models/DeviceExt.cs index 162b007..7f08ced 100644 --- a/backend/IM_API/Models/DeviceExt.cs +++ b/backend/IM_API/Models/DeviceExt.cs @@ -1,11 +1,11 @@ -namespace IM_API.Models -{ - public partial class Device - { - public DeviceDtype DtypeEnum - { - get => (DeviceDtype)Dtype; - set => Dtype = (sbyte)value; - } - } -} +namespace IM_API.Models +{ + public partial class Device + { + public DeviceDtype DtypeEnum + { + get => (DeviceDtype)Dtype; + set => Dtype = (sbyte)value; + } + } +} diff --git a/backend/IM_API/Models/File.cs b/backend/IM_API/Models/File.cs index 5acf177..31de38e 100644 --- a/backend/IM_API/Models/File.cs +++ b/backend/IM_API/Models/File.cs @@ -1,43 +1,43 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class File -{ - public int Id { get; set; } - - /// - /// 文件名 - /// - public string Name { get; set; } = null!; - - /// - /// 文件储存URL - /// - public string Url { get; set; } = null!; - - /// - /// 文件大小(单位:KB) - /// - public int Size { get; set; } - - /// - /// 文件类型 - /// - public string FileType { get; set; } = null!; - - /// - /// 关联消息ID - /// - public int MessageId { get; set; } - - /// - /// 创建时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset Created { get; set; } - - public virtual Message Message { get; set; } = null!; -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class File +{ + public int Id { get; set; } + + /// + /// 文件名 + /// + public string Name { get; set; } = null!; + + /// + /// 文件储存URL + /// + public string Url { get; set; } = null!; + + /// + /// 文件大小(单位:KB) + /// + public int Size { get; set; } + + /// + /// 文件类型 + /// + public string FileType { get; set; } = null!; + + /// + /// 关联消息ID + /// + public int MessageId { get; set; } + + /// + /// 创建时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset Created { get; set; } + + public virtual Message Message { get; set; } = null!; +} diff --git a/backend/IM_API/Models/Friend.cs b/backend/IM_API/Models/Friend.cs index 92fc208..7763caa 100644 --- a/backend/IM_API/Models/Friend.cs +++ b/backend/IM_API/Models/Friend.cs @@ -1,46 +1,46 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class Friend -{ - public int Id { get; set; } - - /// - /// 用户ID - /// - public int UserId { get; set; } - - /// - /// 用户2ID - /// - public int FriendId { get; set; } - - /// - /// 当前好友关系状态 - /// (0:待通过,1:已添加,2:已拒绝,3:已拉黑) - /// - public sbyte Status { get; set; } - - /// - /// 好友关系创建时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset Created { get; set; } - - /// - /// 好友备注名 - /// - public string RemarkName { get; set; } = null!; - - /// - /// 好友头像 - /// - public string? Avatar { get; set; } - - public virtual User FriendNavigation { get; set; } = null!; - - public virtual User User { get; set; } = null!; -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class Friend +{ + public int Id { get; set; } + + /// + /// 用户ID + /// + public int UserId { get; set; } + + /// + /// 用户2ID + /// + public int FriendId { get; set; } + + /// + /// 当前好友关系状态 + /// (0:待通过,1:已添加,2:已拒绝,3:已拉黑) + /// + public sbyte Status { get; set; } + + /// + /// 好友关系创建时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset Created { get; set; } + + /// + /// 好友备注名 + /// + public string RemarkName { get; set; } = null!; + + /// + /// 好友头像 + /// + public string? Avatar { get; set; } + + public virtual User FriendNavigation { get; set; } = null!; + + public virtual User User { get; set; } = null!; +} diff --git a/backend/IM_API/Models/FriendExt.cs b/backend/IM_API/Models/FriendExt.cs index cc9e250..f81bf0c 100644 --- a/backend/IM_API/Models/FriendExt.cs +++ b/backend/IM_API/Models/FriendExt.cs @@ -1,11 +1,11 @@ -namespace IM_API.Models -{ - public partial class Friend - { - public FriendStatus StatusEnum - { - get => (FriendStatus)Status; - set => Status = (sbyte)value; - } - } -} +namespace IM_API.Models +{ + public partial class Friend + { + public FriendStatus StatusEnum + { + get => (FriendStatus)Status; + set => Status = (sbyte)value; + } + } +} diff --git a/backend/IM_API/Models/FriendRequestExt.cs b/backend/IM_API/Models/FriendRequestExt.cs index 0deaddb..ea367db 100644 --- a/backend/IM_API/Models/FriendRequestExt.cs +++ b/backend/IM_API/Models/FriendRequestExt.cs @@ -1,11 +1,11 @@ -namespace IM_API.Models -{ - public partial class FriendRequest - { - public FriendRequestState StateEnum - { - get => (FriendRequestState)State; - set => State = (sbyte)value; - } - } -} +namespace IM_API.Models +{ + public partial class FriendRequest + { + public FriendRequestState StateEnum + { + get => (FriendRequestState)State; + set => State = (sbyte)value; + } + } +} diff --git a/backend/IM_API/Models/FriendRequestState.cs b/backend/IM_API/Models/FriendRequestState.cs index e9eb8d2..91e7e56 100644 --- a/backend/IM_API/Models/FriendRequestState.cs +++ b/backend/IM_API/Models/FriendRequestState.cs @@ -1,25 +1,25 @@ -namespace IM_API.Models -{ - /// - /// 好友请求状态 - /// - public enum FriendRequestState - { - /// - /// 待处理 - /// - Pending = 0, - /// - /// 已通过 - /// - Passed = 2, - /// - /// 已拒绝 - /// - Declined = 1, - /// - /// 拉黑 - /// - Blocked = 3 - } -} +namespace IM_API.Models +{ + /// + /// 好友请求状态 + /// + public enum FriendRequestState + { + /// + /// 待处理 + /// + Pending = 0, + /// + /// 已通过 + /// + Passed = 2, + /// + /// 已拒绝 + /// + Declined = 1, + /// + /// 拉黑 + /// + Blocked = 3 + } +} diff --git a/backend/IM_API/Models/FriendStatus.cs b/backend/IM_API/Models/FriendStatus.cs index eb7c049..b7cfaf6 100644 --- a/backend/IM_API/Models/FriendStatus.cs +++ b/backend/IM_API/Models/FriendStatus.cs @@ -1,25 +1,25 @@ -namespace IM_API.Models -{ - /// - /// 好友关系状态 - /// - public enum FriendStatus:SByte - { - /// - /// 待处理 - /// - Pending = 0, - /// - /// 已添加 - /// - Added = 1, - /// - /// 已拒绝 - /// - Declined = 2, - /// - /// 已拉黑 - /// - Blocked = 3 - } -} +namespace IM_API.Models +{ + /// + /// 好友关系状态 + /// + public enum FriendStatus:SByte + { + /// + /// 待处理 + /// + Pending = 0, + /// + /// 已添加 + /// + Added = 1, + /// + /// 已拒绝 + /// + Declined = 2, + /// + /// 已拉黑 + /// + Blocked = 3 + } +} diff --git a/backend/IM_API/Models/Friendrequest.cs b/backend/IM_API/Models/Friendrequest.cs index 410ee9d..e98e23b 100644 --- a/backend/IM_API/Models/Friendrequest.cs +++ b/backend/IM_API/Models/Friendrequest.cs @@ -1,45 +1,45 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class FriendRequest -{ - public int Id { get; set; } - - /// - /// 申请人 - /// - public int RequestUser { get; set; } - - /// - /// 被申请人 - /// - public int ResponseUser { get; set; } - - /// - /// 申请时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset Created { get; set; } - - /// - /// 申请附言 - /// - public string? Description { get; set; } - - /// - /// 申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) - /// - public sbyte State { get; set; } - - /// - /// 备注 - /// - public string RemarkName { get; set; } = null!; - - public virtual User RequestUserNavigation { get; set; } = null!; - - public virtual User ResponseUserNavigation { get; set; } = null!; -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class FriendRequest +{ + public int Id { get; set; } + + /// + /// 申请人 + /// + public int RequestUser { get; set; } + + /// + /// 被申请人 + /// + public int ResponseUser { get; set; } + + /// + /// 申请时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset Created { get; set; } + + /// + /// 申请附言 + /// + public string? Description { get; set; } + + /// + /// 申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) + /// + public sbyte State { get; set; } + + /// + /// 备注 + /// + public string RemarkName { get; set; } = null!; + + public virtual User RequestUserNavigation { get; set; } = null!; + + public virtual User ResponseUserNavigation { get; set; } = null!; +} diff --git a/backend/IM_API/Models/Group.cs b/backend/IM_API/Models/Group.cs index 8d06fee..b439250 100644 --- a/backend/IM_API/Models/Group.cs +++ b/backend/IM_API/Models/Group.cs @@ -1,66 +1,66 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class Group -{ - public int Id { get; set; } - - /// - /// 群聊名称 - /// - public string Name { get; set; } = null!; - - /// - /// 群主 - /// - public int GroupMaster { get; set; } - - /// - /// 群权限 - /// (0:需管理员同意,1:任意人可加群,2:不允许任何人加入) - /// - public sbyte Auhority { get; set; } - - /// - /// 全员禁言(0允许发言,2全员禁言) - /// - public sbyte AllMembersBanned { get; set; } - - /// - /// 群聊状态 - /// (1:正常,2:封禁) - /// - public sbyte Status { get; set; } - - /// - /// 群公告 - /// - public string? Announcement { get; set; } - - /// - /// 群聊创建时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset Created { get; set; } - - /// - /// 群头像 - /// - public string Avatar { get; set; } = null!; - public long MaxSequenceId { get; set; } = 0; - public string LastMessage { get; set; } = string.Empty; - public string LastSenderName { get; set; } = string.Empty; - public DateTimeOffset LastUpdateTime { get; set; } = DateTime.UtcNow; - - - public virtual ICollection GroupInvites { get; set; } = new List(); - - public virtual User GroupMasterNavigation { get; set; } = null!; - - public virtual ICollection GroupMembers { get; set; } = new List(); - - public virtual ICollection GroupRequests { get; set; } = new List(); -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class Group +{ + public int Id { get; set; } + + /// + /// 群聊名称 + /// + public string Name { get; set; } = null!; + + /// + /// 群主 + /// + public int GroupMaster { get; set; } + + /// + /// 群权限 + /// (0:需管理员同意,1:任意人可加群,2:不允许任何人加入) + /// + public sbyte Auhority { get; set; } + + /// + /// 全员禁言(0允许发言,2全员禁言) + /// + public sbyte AllMembersBanned { get; set; } + + /// + /// 群聊状态 + /// (1:正常,2:封禁) + /// + public sbyte Status { get; set; } + + /// + /// 群公告 + /// + public string? Announcement { get; set; } + + /// + /// 群聊创建时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset Created { get; set; } + + /// + /// 群头像 + /// + public string Avatar { get; set; } = null!; + public long MaxSequenceId { get; set; } = 0; + public string LastMessage { get; set; } = string.Empty; + public string LastSenderName { get; set; } = string.Empty; + public DateTimeOffset LastUpdateTime { get; set; } = DateTime.UtcNow; + + + public virtual ICollection GroupInvites { get; set; } = new List(); + + public virtual User GroupMasterNavigation { get; set; } = null!; + + public virtual ICollection GroupMembers { get; set; } = new List(); + + public virtual ICollection GroupRequests { get; set; } = new List(); +} diff --git a/backend/IM_API/Models/GroupAllMembersBanned.cs b/backend/IM_API/Models/GroupAllMembersBanned.cs index 10e253f..bc6ed66 100644 --- a/backend/IM_API/Models/GroupAllMembersBanned.cs +++ b/backend/IM_API/Models/GroupAllMembersBanned.cs @@ -1,14 +1,14 @@ -namespace IM_API.Models -{ - public enum GroupAllMembersBanned - { - /// - /// 可发言 - /// - ALLOWED = 0, - /// - /// 全员禁言 - /// - BANNED = 2 - } -} +namespace IM_API.Models +{ + public enum GroupAllMembersBanned + { + /// + /// 可发言 + /// + ALLOWED = 0, + /// + /// 全员禁言 + /// + BANNED = 2 + } +} diff --git a/backend/IM_API/Models/GroupAuhority.cs b/backend/IM_API/Models/GroupAuhority.cs index c7b70c0..254c48f 100644 --- a/backend/IM_API/Models/GroupAuhority.cs +++ b/backend/IM_API/Models/GroupAuhority.cs @@ -1,22 +1,22 @@ -namespace IM_API.Models -{ - /// - /// 群加入权限 - /// - public enum GroupAuhority - { - /// - /// 需管理员同意 - /// - REQUIRE_CONSENT = 0, - /// - /// 任何人可加入 - /// - ANYONE_CAN_JOIN = 1, - /// - /// 不允许加入 - /// - NOT_ALLOWED_TO_JOIN = 2 - - } -} +namespace IM_API.Models +{ + /// + /// 群加入权限 + /// + public enum GroupAuhority + { + /// + /// 需管理员同意 + /// + REQUIRE_CONSENT = 0, + /// + /// 任何人可加入 + /// + ANYONE_CAN_JOIN = 1, + /// + /// 不允许加入 + /// + NOT_ALLOWED_TO_JOIN = 2 + + } +} diff --git a/backend/IM_API/Models/GroupExt.cs b/backend/IM_API/Models/GroupExt.cs index d9e2610..221ff15 100644 --- a/backend/IM_API/Models/GroupExt.cs +++ b/backend/IM_API/Models/GroupExt.cs @@ -1,21 +1,21 @@ -namespace IM_API.Models -{ - public partial class Group - { - public GroupAuhority AuhorityEnum - { - get => (GroupAuhority)Auhority; - set => Auhority = (sbyte) value; - } - public GroupAllMembersBanned AllMembersBannedEnum - { - get => (GroupAllMembersBanned)AllMembersBanned; - set => AllMembersBanned = (sbyte)value; - } - public GroupStatus StatusEnum - { - get => (GroupStatus)Status; - set => Status = (sbyte)value; - } - } -} +namespace IM_API.Models +{ + public partial class Group + { + public GroupAuhority AuhorityEnum + { + get => (GroupAuhority)Auhority; + set => Auhority = (sbyte) value; + } + public GroupAllMembersBanned AllMembersBannedEnum + { + get => (GroupAllMembersBanned)AllMembersBanned; + set => AllMembersBanned = (sbyte)value; + } + public GroupStatus StatusEnum + { + get => (GroupStatus)Status; + set => Status = (sbyte)value; + } + } +} diff --git a/backend/IM_API/Models/GroupInviteExt.cs b/backend/IM_API/Models/GroupInviteExt.cs index 1202368..02d9166 100644 --- a/backend/IM_API/Models/GroupInviteExt.cs +++ b/backend/IM_API/Models/GroupInviteExt.cs @@ -1,11 +1,11 @@ -namespace IM_API.Models -{ - public partial class GroupInvite - { - public GroupInviteState StateEnum - { - get => (GroupInviteState)State; - set => State = (sbyte)value; - } - } -} +namespace IM_API.Models +{ + public partial class GroupInvite + { + public GroupInviteState StateEnum + { + get => (GroupInviteState)State; + set => State = (sbyte)value; + } + } +} diff --git a/backend/IM_API/Models/GroupInviteState.cs b/backend/IM_API/Models/GroupInviteState.cs index 0a69d35..bd3d7f8 100644 --- a/backend/IM_API/Models/GroupInviteState.cs +++ b/backend/IM_API/Models/GroupInviteState.cs @@ -1,17 +1,17 @@ -namespace IM_API.Models -{ - /// - /// 群邀请状态 - /// - public enum GroupInviteState - { - /// - /// 待处理 - /// - Pending = 0, - /// - /// 已同意 - /// - Passed = 1 - } -} +namespace IM_API.Models +{ + /// + /// 群邀请状态 + /// + public enum GroupInviteState + { + /// + /// 待处理 + /// + Pending = 0, + /// + /// 已同意 + /// + Passed = 1 + } +} diff --git a/backend/IM_API/Models/GroupMemberExt.cs b/backend/IM_API/Models/GroupMemberExt.cs index 5c47caa..f39d0f2 100644 --- a/backend/IM_API/Models/GroupMemberExt.cs +++ b/backend/IM_API/Models/GroupMemberExt.cs @@ -1,11 +1,11 @@ -namespace IM_API.Models -{ - public partial class GroupMember - { - public GroupMemberRole RoleEnum - { - get => (GroupMemberRole)Role; - set => Role = (sbyte)value; - } - } -} +namespace IM_API.Models +{ + public partial class GroupMember + { + public GroupMemberRole RoleEnum + { + get => (GroupMemberRole)Role; + set => Role = (sbyte)value; + } + } +} diff --git a/backend/IM_API/Models/GroupMemberRole.cs b/backend/IM_API/Models/GroupMemberRole.cs index 6129e77..fc1aeba 100644 --- a/backend/IM_API/Models/GroupMemberRole.cs +++ b/backend/IM_API/Models/GroupMemberRole.cs @@ -1,18 +1,18 @@ -namespace IM_API.Models -{ - public enum GroupMemberRole - { - /// - /// 普通成员 - /// - Normal = 0, - /// - /// 管理员 - /// - Administrator = 1, - /// - /// 群主 - /// - Master = 2 - } -} +namespace IM_API.Models +{ + public enum GroupMemberRole + { + /// + /// 普通成员 + /// + Normal = 0, + /// + /// 管理员 + /// + Administrator = 1, + /// + /// 群主 + /// + Master = 2 + } +} diff --git a/backend/IM_API/Models/GroupRequestExt.cs b/backend/IM_API/Models/GroupRequestExt.cs index be685ee..96b3cb0 100644 --- a/backend/IM_API/Models/GroupRequestExt.cs +++ b/backend/IM_API/Models/GroupRequestExt.cs @@ -1,11 +1,11 @@ -namespace IM_API.Models -{ - public partial class GroupRequest - { - public GroupRequestState StateEnum - { - get => (GroupRequestState)State; - set => State = (sbyte)value; - } - } -} +namespace IM_API.Models +{ + public partial class GroupRequest + { + public GroupRequestState StateEnum + { + get => (GroupRequestState)State; + set => State = (sbyte)value; + } + } +} diff --git a/backend/IM_API/Models/GroupRequestState.cs b/backend/IM_API/Models/GroupRequestState.cs index ccc0d94..977a3b5 100644 --- a/backend/IM_API/Models/GroupRequestState.cs +++ b/backend/IM_API/Models/GroupRequestState.cs @@ -1,18 +1,18 @@ -namespace IM_API.Models -{ - public enum GroupRequestState - { - /// - /// 待管理员处理 - /// - Pending = 0, - /// - /// 已拒绝 - /// - Declined = 1, - /// - /// 已同意 - /// - Passed = 2 - } -} +namespace IM_API.Models +{ + public enum GroupRequestState + { + /// + /// 待管理员处理 + /// + Pending = 0, + /// + /// 已拒绝 + /// + Declined = 1, + /// + /// 已同意 + /// + Passed = 2 + } +} diff --git a/backend/IM_API/Models/GroupStatus.cs b/backend/IM_API/Models/GroupStatus.cs index a2d331e..175fefd 100644 --- a/backend/IM_API/Models/GroupStatus.cs +++ b/backend/IM_API/Models/GroupStatus.cs @@ -1,14 +1,14 @@ -namespace IM_API.Models -{ - public enum GroupStatus - { - /// - /// 正常 - /// - Normal = 1, - /// - /// 封禁 - /// - Blocked = 2 - } -} +namespace IM_API.Models +{ + public enum GroupStatus + { + /// + /// 正常 + /// + Normal = 1, + /// + /// 封禁 + /// + Blocked = 2 + } +} diff --git a/backend/IM_API/Models/Groupinvite.cs b/backend/IM_API/Models/Groupinvite.cs index cca0ad9..f3f71d4 100644 --- a/backend/IM_API/Models/Groupinvite.cs +++ b/backend/IM_API/Models/Groupinvite.cs @@ -1,41 +1,41 @@ -using System; -using System.Collections.Generic; - -namespace IM_API.Models; - -public partial class GroupInvite -{ - public int Id { get; set; } - - /// - /// 群聊编号 - /// - public int GroupId { get; set; } - - /// - /// 被邀请用户 - /// - public int? InvitedUser { get; set; } - - /// - /// 邀请用户 - /// - public int? InviteUser { get; set; } - - /// - /// 当前状态(0:待被邀请人同意 - /// 1:被邀请人已同意) - /// - public sbyte? State { get; set; } - - /// - /// 创建时间 - /// - public DateTimeOffset? Created { get; set; } - - public virtual Group Group { get; set; } = null!; - - public virtual User? InviteUserNavigation { get; set; } - - public virtual User? InvitedUserNavigation { get; set; } -} +using System; +using System.Collections.Generic; + +namespace IM_API.Models; + +public partial class GroupInvite +{ + public int Id { get; set; } + + /// + /// 群聊编号 + /// + public int GroupId { get; set; } + + /// + /// 被邀请用户 + /// + public int? InvitedUser { get; set; } + + /// + /// 邀请用户 + /// + public int? InviteUser { get; set; } + + /// + /// 当前状态(0:待被邀请人同意 + /// 1:被邀请人已同意) + /// + public sbyte? State { get; set; } + + /// + /// 创建时间 + /// + public DateTimeOffset? Created { get; set; } + + public virtual Group Group { get; set; } = null!; + + public virtual User? InviteUserNavigation { get; set; } + + public virtual User? InvitedUserNavigation { get; set; } +} diff --git a/backend/IM_API/Models/Groupmember.cs b/backend/IM_API/Models/Groupmember.cs index f3add73..ae2e28f 100644 --- a/backend/IM_API/Models/Groupmember.cs +++ b/backend/IM_API/Models/Groupmember.cs @@ -1,35 +1,35 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class GroupMember -{ - public int Id { get; set; } - - /// - /// 用户编号 - /// - public int UserId { get; set; } - - /// - /// 群聊编号 - /// - public int GroupId { get; set; } - - /// - /// 成员角色(0:普通成员,1:管理员,2:群主) - /// - public sbyte Role { get; set; } - - /// - /// 加入群聊时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset Created { get; set; } - - public virtual Group Group { get; set; } = null!; - - public virtual User User { get; set; } = null!; -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class GroupMember +{ + public int Id { get; set; } + + /// + /// 用户编号 + /// + public int UserId { get; set; } + + /// + /// 群聊编号 + /// + public int GroupId { get; set; } + + /// + /// 成员角色(0:普通成员,1:管理员,2:群主) + /// + public sbyte Role { get; set; } + + /// + /// 加入群聊时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset Created { get; set; } + + public virtual Group Group { get; set; } = null!; + + public virtual User User { get; set; } = null!; +} diff --git a/backend/IM_API/Models/Grouprequest.cs b/backend/IM_API/Models/Grouprequest.cs index a372610..f781481 100644 --- a/backend/IM_API/Models/Grouprequest.cs +++ b/backend/IM_API/Models/Grouprequest.cs @@ -1,41 +1,41 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class GroupRequest -{ - public int Id { get; set; } - - /// - /// 群聊编号 - /// - /// - public int GroupId { get; set; } - - /// - /// 申请人 - /// - public int UserId { get; set; } - - /// - /// 申请状态(0:待管理员同意,1:已拒绝,2:已同意) - /// - public sbyte State { get; set; } - - /// - /// 入群附言 - /// - public string Description { get; set; } = null!; - - /// - /// 创建时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset Created { get; set; } - - public virtual Group Group { get; set; } = null!; - - public virtual User User { get; set; } = null!; -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class GroupRequest +{ + public int Id { get; set; } + + /// + /// 群聊编号 + /// + /// + public int GroupId { get; set; } + + /// + /// 申请人 + /// + public int UserId { get; set; } + + /// + /// 申请状态(0:待管理员同意,1:已拒绝,2:已同意) + /// + public sbyte State { get; set; } + + /// + /// 入群附言 + /// + public string Description { get; set; } = null!; + + /// + /// 创建时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset Created { get; set; } + + public virtual Group Group { get; set; } = null!; + + public virtual User User { get; set; } = null!; +} diff --git a/backend/IM_API/Models/ImContext.Custom.cs b/backend/IM_API/Models/ImContext.Custom.cs index d02529d..9f6673d 100644 --- a/backend/IM_API/Models/ImContext.Custom.cs +++ b/backend/IM_API/Models/ImContext.Custom.cs @@ -1,100 +1,100 @@ -using Microsoft.EntityFrameworkCore; - -namespace IM_API.Models -{ - public partial class ImContext - { - partial void OnModelCreatingPartial(ModelBuilder modelBuilder) - { - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.StateEnum); - }); - - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.OnlineStatusEnum); - entity.Ignore(e => e.StatusEnum); - entity.HasQueryFilter(e => e.IsDeleted == 0); - }); - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.ChatTypeEnum); - }); - - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.DtypeEnum); - }); - - modelBuilder.Entity(entity => - { - - }); - - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.StatusEnum); - }); - - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.StateEnum); - }); - - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.StatusEnum); - entity.Ignore(e => e.AllMembersBannedEnum); - entity.Ignore(e => e.AuhorityEnum); - }); - - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.StateEnum); - }); - - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.RoleEnum); - }); - - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.StateEnum); - }); - - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.StateEnum); - }); - - modelBuilder.Entity(entity => - { - entity.Ignore(e => e.StateEnum); - entity.Ignore(e => e.MsgTypeEnum); - entity.Ignore(e => e.ChatTypeEnum); - }); - - modelBuilder.Entity(entity => - { - - }); - - modelBuilder.Entity(entity => - { - - }); - - modelBuilder.Entity(entity => - { - - }); - - modelBuilder.Entity(entity => - { - - }); - } - } -} +using Microsoft.EntityFrameworkCore; + +namespace IM_API.Models +{ + public partial class ImContext + { + partial void OnModelCreatingPartial(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.StateEnum); + }); + + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.OnlineStatusEnum); + entity.Ignore(e => e.StatusEnum); + entity.HasQueryFilter(e => e.IsDeleted == 0); + }); + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.ChatTypeEnum); + }); + + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.DtypeEnum); + }); + + modelBuilder.Entity(entity => + { + + }); + + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.StatusEnum); + }); + + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.StateEnum); + }); + + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.StatusEnum); + entity.Ignore(e => e.AllMembersBannedEnum); + entity.Ignore(e => e.AuhorityEnum); + }); + + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.StateEnum); + }); + + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.RoleEnum); + }); + + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.StateEnum); + }); + + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.StateEnum); + }); + + modelBuilder.Entity(entity => + { + entity.Ignore(e => e.StateEnum); + entity.Ignore(e => e.MsgTypeEnum); + entity.Ignore(e => e.ChatTypeEnum); + }); + + modelBuilder.Entity(entity => + { + + }); + + modelBuilder.Entity(entity => + { + + }); + + modelBuilder.Entity(entity => + { + + }); + + modelBuilder.Entity(entity => + { + + }); + } + } +} diff --git a/backend/IM_API/Models/ImContext.cs b/backend/IM_API/Models/ImContext.cs index e09154c..1bea25b 100644 --- a/backend/IM_API/Models/ImContext.cs +++ b/backend/IM_API/Models/ImContext.cs @@ -1,741 +1,741 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore; - -namespace IM_API.Models; - -public partial class ImContext : DbContext -{ - public ImContext(DbContextOptions options) - : base(options) - { - } - - public virtual DbSet Admins { get; set; } - - public virtual DbSet Conversations { get; set; } - - public virtual DbSet Devices { get; set; } - - public virtual DbSet Files { get; set; } - - public virtual DbSet Friends { get; set; } - - public virtual DbSet FriendRequests { get; set; } - - public virtual DbSet Groups { get; set; } - - public virtual DbSet GroupInvites { get; set; } - - public virtual DbSet GroupMembers { get; set; } - - public virtual DbSet GroupRequests { get; set; } - - public virtual DbSet LoginLogs { get; set; } - - public virtual DbSet Messages { get; set; } - - public virtual DbSet Notifications { get; set; } - - public virtual DbSet Permissions { get; set; } - - public virtual DbSet Permissionaroles { get; set; } - - public virtual DbSet Roles { get; set; } - - public virtual DbSet Users { get; set; } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - modelBuilder - .UseCollation("latin1_swedish_ci") - .HasCharSet("latin1"); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("admins") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.RoleId, "RoleId"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Created) - .HasComment("创建时间 ") - .HasColumnType("datetime"); - entity.Property(e => e.Password) - .HasMaxLength(50) - .HasComment("密码"); - entity.Property(e => e.RoleId) - .HasComment("角色") - .HasColumnType("int(11)"); - entity.Property(e => e.State) - .HasComment("状态(0:正常,2:封禁) ") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.Updated) - .HasComment("更新时间 ") - .HasColumnType("datetime"); - entity.Property(e => e.Username) - .HasMaxLength(50) - .HasComment("用户名"); - - entity.HasOne(d => d.Role).WithMany(p => p.Admins) - .HasForeignKey(d => d.RoleId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("admins_ibfk_1"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("conversations") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.UserId, "Userid"); - - entity.HasIndex(e => e.LastReadSequenceId, "LastReadSequenceId"); - - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.ChatType).HasColumnType("int(11)"); - entity.Property(e => e.LastMessage) - .HasMaxLength(255) - .HasComment("最后一条最新消息"); - entity.Property(e => e.LastMessageTime) - .HasComment("最后一条消息发送时间") - .HasColumnType("datetime"); - entity.Property(e => e.LastReadSequenceId) - .HasComment("最后一条未读消息ID ") - .HasColumnType("int(11)") - .HasColumnName("lastReadMessageId"); - entity.Property(e => e.StreamKey) - .HasMaxLength(255) - .HasComment("消息推送唯一标识符"); - entity.Property(e => e.TargetId) - .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) ") - .HasColumnType("int(11)"); - entity.Property(e => e.UnreadCount) - .HasComment("未读消息数 ") - .HasColumnType("int(11)"); - entity.Property(e => e.UserId) - .HasComment("用户") - .HasColumnType("int(11)"); - - entity.HasOne(d => d.User).WithMany(p => p.Conversations) - .HasForeignKey(d => d.UserId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("conversations_ibfk_1"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("devices") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.UserId, "Userid"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Dtype) - .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)") - .HasColumnType("tinyint(4)") - .HasColumnName("DType"); - entity.Property(e => e.LastLogin) - .HasComment("最后一次登录 ") - .HasColumnType("datetime"); - entity.Property(e => e.UserId) - .HasComment("设备所属用户 ") - .HasColumnType("int(11)"); - - entity.HasOne(d => d.User).WithMany(p => p.Devices) - .HasForeignKey(d => d.UserId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("devices_ibfk_1"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("files") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.MessageId, "Messageld"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Created) - .HasComment("创建时间 ") - .HasColumnType("datetime"); - entity.Property(e => e.MessageId) - .HasComment("关联消息ID ") - .HasColumnType("int(11)"); - entity.Property(e => e.Name) - .HasMaxLength(50) - .HasComment("文件名 "); - entity.Property(e => e.Size) - .HasComment("文件大小(单位:KB) ") - .HasColumnType("int(11)"); - entity.Property(e => e.FileType) - .HasMaxLength(10) - .HasComment("文件类型 "); - entity.Property(e => e.Url) - .HasMaxLength(100) - .HasComment("文件储存URL ") - .HasColumnName("URL"); - - entity.HasOne(d => d.Message).WithMany(p => p.Files) - .HasForeignKey(d => d.MessageId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("files_ibfk_1"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("friends") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.Id, "ID"); - - entity.HasIndex(e => new { e.UserId, e.FriendId }, "Userld"); - - entity.HasIndex(e => e.FriendId, "用户2id"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Avatar) - .HasMaxLength(255) - .HasComment("好友头像"); - entity.Property(e => e.Created) - .HasComment("好友关系创建时间") - .HasColumnType("datetime"); - entity.Property(e => e.FriendId) - .HasComment("用户2ID") - .HasColumnType("int(11)"); - entity.Property(e => e.RemarkName) - .HasMaxLength(20) - .HasComment("好友备注名"); - entity.Property(e => e.Status) - .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.UserId) - .HasComment("用户ID") - .HasColumnType("int(11)"); - - entity.HasOne(d => d.FriendNavigation).WithMany(p => p.FriendFriendNavigations) - .HasForeignKey(d => d.FriendId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("用户2id"); - - entity.HasOne(d => d.User).WithMany(p => p.FriendUsers) - .HasForeignKey(d => d.UserId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("用户id"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("friend_request") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.RequestUser, "RequestUser"); - - entity.HasIndex(e => e.ResponseUser, "ResponseUser"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Created) - .HasComment("申请时间 ") - .HasColumnType("datetime"); - entity.Property(e => e.Description) - .HasComment("申请附言 ") - .HasColumnType("text"); - entity.Property(e => e.RemarkName) - .HasMaxLength(20) - .HasComment("备注"); - entity.Property(e => e.RequestUser) - .HasComment("申请人 ") - .HasColumnType("int(11)"); - entity.Property(e => e.ResponseUser) - .HasComment("被申请人 ") - .HasColumnType("int(11)"); - entity.Property(e => e.State) - .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) ") - .HasColumnType("tinyint(4)"); - - entity.HasOne(d => d.RequestUserNavigation).WithMany(p => p.FriendRequestRequestUserNavigations) - .HasForeignKey(d => d.RequestUser) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("friend_request_ibfk_1"); - - entity.HasOne(d => d.ResponseUserNavigation).WithMany(p => p.FriendRequestResponseUserNavigations) - .HasForeignKey(d => d.ResponseUser) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("friend_request_ibfk_2"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("groups") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.GroupMaster, "GroupMaster"); - - entity.HasIndex(e => e.Id, "ID"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.AllMembersBanned) - .HasComment("全员禁言(0允许发言,2全员禁言)") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.Announcement) - .HasComment("群公告") - .HasColumnType("text"); - entity.Property(e => e.Auhority) - .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.Avatar) - .HasMaxLength(255) - .HasComment("群头像"); - entity.Property(e => e.Created) - .HasComment("群聊创建时间") - .HasColumnType("datetime"); - entity.Property(e => e.GroupMaster) - .HasComment("群主") - .HasColumnType("int(11)"); - entity.Property(e => e.Name) - .HasMaxLength(20) - .HasComment("群聊名称"); - entity.Property(e => e.Status) - .HasComment("群聊状态\r\n(1:正常,2:封禁)") - .HasColumnType("tinyint(4)"); - - entity.HasOne(d => d.GroupMasterNavigation).WithMany(p => p.Groups) - .HasForeignKey(d => d.GroupMaster) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("groups_ibfk_1"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("group_invite") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.GroupId, "GroupId"); - - entity.HasIndex(e => e.InviteUser, "InviteUser"); - - entity.HasIndex(e => e.InvitedUser, "InvitedUser"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Created) - .HasComment("创建时间") - .HasColumnType("datetime"); - entity.Property(e => e.GroupId) - .HasComment("群聊编号") - .HasColumnType("int(11)"); - entity.Property(e => e.InviteUser) - .HasComment("邀请用户") - .HasColumnType("int(11)"); - entity.Property(e => e.InvitedUser) - .HasComment("被邀请用户") - .HasColumnType("int(11)"); - entity.Property(e => e.State) - .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)") - .HasColumnType("tinyint(4)"); - - entity.HasOne(d => d.Group).WithMany(p => p.GroupInvites) - .HasForeignKey(d => d.GroupId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("group_invite_ibfk_2"); - - entity.HasOne(d => d.InviteUserNavigation).WithMany(p => p.GroupInviteInviteUserNavigations) - .HasForeignKey(d => d.InviteUser) - .HasConstraintName("group_invite_ibfk_1"); - - entity.HasOne(d => d.InvitedUserNavigation).WithMany(p => p.GroupInviteInvitedUserNavigations) - .HasForeignKey(d => d.InvitedUser) - .HasConstraintName("group_invite_ibfk_3"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("group_member") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.GroupId, "Groupld"); - - entity.HasIndex(e => e.Id, "ID"); - - entity.HasIndex(e => e.UserId, "Userld"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Created) - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("加入群聊时间") - .HasColumnType("datetime"); - entity.Property(e => e.GroupId) - .HasComment("群聊编号") - .HasColumnType("int(11)"); - entity.Property(e => e.Role) - .HasComment("成员角色(0:普通成员,1:管理员,2:群主)") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.UserId) - .HasComment("用户编号") - .HasColumnType("int(11)"); - - entity.HasOne(d => d.Group).WithMany(p => p.GroupMembers) - .HasForeignKey(d => d.GroupId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("group_member_ibfk_2"); - - entity.HasOne(d => d.User).WithMany(p => p.GroupMembers) - .HasForeignKey(d => d.UserId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("group_member_ibfk_1"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("group_request") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.GroupId, "GroupId"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Created) - .HasComment("创建时间") - .HasColumnType("datetime"); - entity.Property(e => e.Description) - .HasComment("入群附言") - .HasColumnType("text"); - entity.Property(e => e.GroupId) - .HasComment("群聊编号\r\n") - .HasColumnType("int(11)"); - entity.Property(e => e.State) - .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.UserId) - .HasComment("申请人 ") - .HasColumnType("int(11)"); - - entity.HasOne(d => d.Group).WithMany(p => p.GroupRequests) - .HasForeignKey(d => d.GroupId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("group_request_ibfk_1"); - - entity.HasOne(d => d.User).WithMany(p => p.GroupRequests) - .HasForeignKey(d => d.UserId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("group_request_ibfk_2"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("login_log") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.UserId, "Userld"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Dtype) - .HasComment("设备类型(通Devices/DType) ") - .HasColumnType("tinyint(4)") - .HasColumnName("DType"); - entity.Property(e => e.Logined) - .HasComment("登录时间 ") - .HasColumnType("datetime"); - entity.Property(e => e.State) - .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) ") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.UserId) - .HasComment("登录用户 ") - .HasColumnType("int(11)"); - - entity.HasOne(d => d.User).WithMany(p => p.LoginLogs) - .HasForeignKey(d => d.UserId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("login_log_ibfk_1"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("messages") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.Sender, "Sender"); - - - //设置联合唯一索引 - entity.HasIndex(e => new { e.SequenceId, e.StreamKey }) - .IsUnique(); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.ChatType) - .HasComment("聊天类型\r\n(0:私聊,1:群聊)") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.Content) - .HasComment("消息内容 ") - .HasColumnType("text"); - entity.Property(e => e.Created) - .HasComment("发送时间 ") - .HasColumnType("datetime"); - entity.Property(e => e.MsgType) - .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.Recipient) - .HasComment("接收者(私聊为用户ID,群聊为群聊ID) ") - .HasColumnType("int(11)"); - entity.Property(e => e.Sender) - .HasComment("发送者 ") - .HasColumnType("int(11)"); - entity.Property(e => e.State) - .HasComment("消息状态(0:已发送,1:已撤回) ") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.StreamKey) - .HasMaxLength(255) - .HasComment("消息推送唯一标识符"); - - entity.HasOne(d => d.SenderNavigation).WithMany(p => p.Messages) - .HasForeignKey(d => d.Sender) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("messages_ibfk_1"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("notifications") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.UserId, "Userld"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Content) - .HasComment("通知内容") - .HasColumnType("text"); - entity.Property(e => e.Created) - .HasComment("创建时间") - .HasColumnType("datetime"); - entity.Property(e => e.Ntype) - .HasComment("通知类型(0:文本)") - .HasColumnType("tinyint(4)") - .HasColumnName("NType"); - entity.Property(e => e.Title) - .HasMaxLength(40) - .HasComment("通知标题"); - entity.Property(e => e.UserId) - .HasComment("接收人(为空为全体通知)") - .HasColumnType("int(11)"); - - entity.HasOne(d => d.User).WithMany(p => p.Notifications) - .HasForeignKey(d => d.UserId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("notifications_ibfk_1"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("permissions") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Code) - .HasComment("权限编码 ") - .HasColumnType("int(11)"); - entity.Property(e => e.Created) - .HasComment("创建时间 ") - .HasColumnType("datetime"); - entity.Property(e => e.Name) - .HasMaxLength(50) - .HasComment("权限名称 "); - entity.Property(e => e.Ptype) - .HasComment("权限类型(0:增,1:删,2:改,3:查) ") - .HasColumnType("int(11)") - .HasColumnName("PType"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("permissionarole") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.PermissionId, "Permissionld"); - - entity.HasIndex(e => e.RoleId, "Roleld"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.PermissionId) - .HasComment("权限 ") - .HasColumnType("int(11)"); - entity.Property(e => e.RoleId) - .HasComment("角色 ") - .HasColumnType("int(11)"); - - entity.HasOne(d => d.Permission).WithMany(p => p.Permissionaroles) - .HasForeignKey(d => d.PermissionId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("permissionarole_ibfk_2"); - - entity.HasOne(d => d.Role).WithMany(p => p.Permissionaroles) - .HasForeignKey(d => d.RoleId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("permissionarole_ibfk_1"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("roles") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Created) - .HasComment("创建时间 ") - .HasColumnType("datetime"); - entity.Property(e => e.Description) - .HasComment("角色描述 ") - .HasColumnType("text"); - entity.Property(e => e.Name) - .HasMaxLength(20) - .HasComment("角色名称 "); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("PRIMARY"); - - entity - .ToTable("users") - .HasCharSet("utf8mb4") - .UseCollation("utf8mb4_general_ci"); - - entity.HasIndex(e => e.Id, "ID"); - - entity.HasIndex(e => e.Username, "Username").IsUnique(); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.Avatar) - .HasMaxLength(255) - .HasComment("用户头像链接"); - entity.Property(e => e.Created) - .HasDefaultValueSql("'1970-01-01 00:00:00'") - .HasComment("创建时间") - .HasColumnType("datetime"); - entity.Property(e => e.IsDeleted) - .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.NickName) - .HasMaxLength(50) - .HasComment("用户昵称"); - entity.Property(e => e.OnlineStatus) - .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.Password) - .HasMaxLength(50) - .HasComment("密码"); - entity.Property(e => e.Status) - .HasDefaultValueSql("'1'") - .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)") - .HasColumnType("tinyint(4)"); - entity.Property(e => e.Updated) - .HasComment("修改时间") - .HasColumnType("datetime"); - entity.Property(e => e.Username) - .HasMaxLength(50) - .HasComment("唯一用户名"); - }); - - OnModelCreatingPartial(modelBuilder); - } - - partial void OnModelCreatingPartial(ModelBuilder modelBuilder); -} +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore; + +namespace IM_API.Models; + +public partial class ImContext : DbContext +{ + public ImContext(DbContextOptions options) + : base(options) + { + } + + public virtual DbSet Admins { get; set; } + + public virtual DbSet Conversations { get; set; } + + public virtual DbSet Devices { get; set; } + + public virtual DbSet Files { get; set; } + + public virtual DbSet Friends { get; set; } + + public virtual DbSet FriendRequests { get; set; } + + public virtual DbSet Groups { get; set; } + + public virtual DbSet GroupInvites { get; set; } + + public virtual DbSet GroupMembers { get; set; } + + public virtual DbSet GroupRequests { get; set; } + + public virtual DbSet LoginLogs { get; set; } + + public virtual DbSet Messages { get; set; } + + public virtual DbSet Notifications { get; set; } + + public virtual DbSet Permissions { get; set; } + + public virtual DbSet Permissionaroles { get; set; } + + public virtual DbSet Roles { get; set; } + + public virtual DbSet Users { get; set; } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasCharSet("latin1"); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("admins") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.RoleId, "RoleId"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Created) + .HasComment("创建时间 ") + .HasColumnType("datetime"); + entity.Property(e => e.Password) + .HasMaxLength(50) + .HasComment("密码"); + entity.Property(e => e.RoleId) + .HasComment("角色") + .HasColumnType("int(11)"); + entity.Property(e => e.State) + .HasComment("状态(0:正常,2:封禁) ") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.Updated) + .HasComment("更新时间 ") + .HasColumnType("datetime"); + entity.Property(e => e.Username) + .HasMaxLength(50) + .HasComment("用户名"); + + entity.HasOne(d => d.Role).WithMany(p => p.Admins) + .HasForeignKey(d => d.RoleId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("admins_ibfk_1"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("conversations") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.UserId, "Userid"); + + entity.HasIndex(e => e.LastReadSequenceId, "LastReadSequenceId"); + + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.ChatType).HasColumnType("int(11)"); + entity.Property(e => e.LastMessage) + .HasMaxLength(255) + .HasComment("最后一条最新消息"); + entity.Property(e => e.LastMessageTime) + .HasComment("最后一条消息发送时间") + .HasColumnType("datetime"); + entity.Property(e => e.LastReadSequenceId) + .HasComment("最后一条未读消息ID ") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId"); + entity.Property(e => e.StreamKey) + .HasMaxLength(255) + .HasComment("消息推送唯一标识符"); + entity.Property(e => e.TargetId) + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) ") + .HasColumnType("int(11)"); + entity.Property(e => e.UnreadCount) + .HasComment("未读消息数 ") + .HasColumnType("int(11)"); + entity.Property(e => e.UserId) + .HasComment("用户") + .HasColumnType("int(11)"); + + entity.HasOne(d => d.User).WithMany(p => p.Conversations) + .HasForeignKey(d => d.UserId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("conversations_ibfk_1"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("devices") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.UserId, "Userid"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Dtype) + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)") + .HasColumnType("tinyint(4)") + .HasColumnName("DType"); + entity.Property(e => e.LastLogin) + .HasComment("最后一次登录 ") + .HasColumnType("datetime"); + entity.Property(e => e.UserId) + .HasComment("设备所属用户 ") + .HasColumnType("int(11)"); + + entity.HasOne(d => d.User).WithMany(p => p.Devices) + .HasForeignKey(d => d.UserId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("devices_ibfk_1"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("files") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.MessageId, "Messageld"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Created) + .HasComment("创建时间 ") + .HasColumnType("datetime"); + entity.Property(e => e.MessageId) + .HasComment("关联消息ID ") + .HasColumnType("int(11)"); + entity.Property(e => e.Name) + .HasMaxLength(50) + .HasComment("文件名 "); + entity.Property(e => e.Size) + .HasComment("文件大小(单位:KB) ") + .HasColumnType("int(11)"); + entity.Property(e => e.FileType) + .HasMaxLength(10) + .HasComment("文件类型 "); + entity.Property(e => e.Url) + .HasMaxLength(100) + .HasComment("文件储存URL ") + .HasColumnName("URL"); + + entity.HasOne(d => d.Message).WithMany(p => p.Files) + .HasForeignKey(d => d.MessageId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("files_ibfk_1"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("friends") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.Id, "ID"); + + entity.HasIndex(e => new { e.UserId, e.FriendId }, "Userld"); + + entity.HasIndex(e => e.FriendId, "用户2id"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Avatar) + .HasMaxLength(255) + .HasComment("好友头像"); + entity.Property(e => e.Created) + .HasComment("好友关系创建时间") + .HasColumnType("datetime"); + entity.Property(e => e.FriendId) + .HasComment("用户2ID") + .HasColumnType("int(11)"); + entity.Property(e => e.RemarkName) + .HasMaxLength(20) + .HasComment("好友备注名"); + entity.Property(e => e.Status) + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.UserId) + .HasComment("用户ID") + .HasColumnType("int(11)"); + + entity.HasOne(d => d.FriendNavigation).WithMany(p => p.FriendFriendNavigations) + .HasForeignKey(d => d.FriendId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("用户2id"); + + entity.HasOne(d => d.User).WithMany(p => p.FriendUsers) + .HasForeignKey(d => d.UserId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("用户id"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("friend_request") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.RequestUser, "RequestUser"); + + entity.HasIndex(e => e.ResponseUser, "ResponseUser"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Created) + .HasComment("申请时间 ") + .HasColumnType("datetime"); + entity.Property(e => e.Description) + .HasComment("申请附言 ") + .HasColumnType("text"); + entity.Property(e => e.RemarkName) + .HasMaxLength(20) + .HasComment("备注"); + entity.Property(e => e.RequestUser) + .HasComment("申请人 ") + .HasColumnType("int(11)"); + entity.Property(e => e.ResponseUser) + .HasComment("被申请人 ") + .HasColumnType("int(11)"); + entity.Property(e => e.State) + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) ") + .HasColumnType("tinyint(4)"); + + entity.HasOne(d => d.RequestUserNavigation).WithMany(p => p.FriendRequestRequestUserNavigations) + .HasForeignKey(d => d.RequestUser) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("friend_request_ibfk_1"); + + entity.HasOne(d => d.ResponseUserNavigation).WithMany(p => p.FriendRequestResponseUserNavigations) + .HasForeignKey(d => d.ResponseUser) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("friend_request_ibfk_2"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("groups") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.GroupMaster, "GroupMaster"); + + entity.HasIndex(e => e.Id, "ID"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.AllMembersBanned) + .HasComment("全员禁言(0允许发言,2全员禁言)") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.Announcement) + .HasComment("群公告") + .HasColumnType("text"); + entity.Property(e => e.Auhority) + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.Avatar) + .HasMaxLength(255) + .HasComment("群头像"); + entity.Property(e => e.Created) + .HasComment("群聊创建时间") + .HasColumnType("datetime"); + entity.Property(e => e.GroupMaster) + .HasComment("群主") + .HasColumnType("int(11)"); + entity.Property(e => e.Name) + .HasMaxLength(20) + .HasComment("群聊名称"); + entity.Property(e => e.Status) + .HasComment("群聊状态\r\n(1:正常,2:封禁)") + .HasColumnType("tinyint(4)"); + + entity.HasOne(d => d.GroupMasterNavigation).WithMany(p => p.Groups) + .HasForeignKey(d => d.GroupMaster) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("groups_ibfk_1"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("group_invite") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.GroupId, "GroupId"); + + entity.HasIndex(e => e.InviteUser, "InviteUser"); + + entity.HasIndex(e => e.InvitedUser, "InvitedUser"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Created) + .HasComment("创建时间") + .HasColumnType("datetime"); + entity.Property(e => e.GroupId) + .HasComment("群聊编号") + .HasColumnType("int(11)"); + entity.Property(e => e.InviteUser) + .HasComment("邀请用户") + .HasColumnType("int(11)"); + entity.Property(e => e.InvitedUser) + .HasComment("被邀请用户") + .HasColumnType("int(11)"); + entity.Property(e => e.State) + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)") + .HasColumnType("tinyint(4)"); + + entity.HasOne(d => d.Group).WithMany(p => p.GroupInvites) + .HasForeignKey(d => d.GroupId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("group_invite_ibfk_2"); + + entity.HasOne(d => d.InviteUserNavigation).WithMany(p => p.GroupInviteInviteUserNavigations) + .HasForeignKey(d => d.InviteUser) + .HasConstraintName("group_invite_ibfk_1"); + + entity.HasOne(d => d.InvitedUserNavigation).WithMany(p => p.GroupInviteInvitedUserNavigations) + .HasForeignKey(d => d.InvitedUser) + .HasConstraintName("group_invite_ibfk_3"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("group_member") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.GroupId, "Groupld"); + + entity.HasIndex(e => e.Id, "ID"); + + entity.HasIndex(e => e.UserId, "Userld"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Created) + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间") + .HasColumnType("datetime"); + entity.Property(e => e.GroupId) + .HasComment("群聊编号") + .HasColumnType("int(11)"); + entity.Property(e => e.Role) + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.UserId) + .HasComment("用户编号") + .HasColumnType("int(11)"); + + entity.HasOne(d => d.Group).WithMany(p => p.GroupMembers) + .HasForeignKey(d => d.GroupId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("group_member_ibfk_2"); + + entity.HasOne(d => d.User).WithMany(p => p.GroupMembers) + .HasForeignKey(d => d.UserId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("group_member_ibfk_1"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("group_request") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.GroupId, "GroupId"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Created) + .HasComment("创建时间") + .HasColumnType("datetime"); + entity.Property(e => e.Description) + .HasComment("入群附言") + .HasColumnType("text"); + entity.Property(e => e.GroupId) + .HasComment("群聊编号\r\n") + .HasColumnType("int(11)"); + entity.Property(e => e.State) + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.UserId) + .HasComment("申请人 ") + .HasColumnType("int(11)"); + + entity.HasOne(d => d.Group).WithMany(p => p.GroupRequests) + .HasForeignKey(d => d.GroupId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("group_request_ibfk_1"); + + entity.HasOne(d => d.User).WithMany(p => p.GroupRequests) + .HasForeignKey(d => d.UserId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("group_request_ibfk_2"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("login_log") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.UserId, "Userld"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Dtype) + .HasComment("设备类型(通Devices/DType) ") + .HasColumnType("tinyint(4)") + .HasColumnName("DType"); + entity.Property(e => e.Logined) + .HasComment("登录时间 ") + .HasColumnType("datetime"); + entity.Property(e => e.State) + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) ") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.UserId) + .HasComment("登录用户 ") + .HasColumnType("int(11)"); + + entity.HasOne(d => d.User).WithMany(p => p.LoginLogs) + .HasForeignKey(d => d.UserId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("login_log_ibfk_1"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("messages") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.Sender, "Sender"); + + + //设置联合唯一索引 + entity.HasIndex(e => new { e.SequenceId, e.StreamKey }) + .IsUnique(); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.ChatType) + .HasComment("聊天类型\r\n(0:私聊,1:群聊)") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.Content) + .HasComment("消息内容 ") + .HasColumnType("text"); + entity.Property(e => e.Created) + .HasComment("发送时间 ") + .HasColumnType("datetime"); + entity.Property(e => e.MsgType) + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.Recipient) + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) ") + .HasColumnType("int(11)"); + entity.Property(e => e.Sender) + .HasComment("发送者 ") + .HasColumnType("int(11)"); + entity.Property(e => e.State) + .HasComment("消息状态(0:已发送,1:已撤回) ") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.StreamKey) + .HasMaxLength(255) + .HasComment("消息推送唯一标识符"); + + entity.HasOne(d => d.SenderNavigation).WithMany(p => p.Messages) + .HasForeignKey(d => d.Sender) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("messages_ibfk_1"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("notifications") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.UserId, "Userld"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Content) + .HasComment("通知内容") + .HasColumnType("text"); + entity.Property(e => e.Created) + .HasComment("创建时间") + .HasColumnType("datetime"); + entity.Property(e => e.Ntype) + .HasComment("通知类型(0:文本)") + .HasColumnType("tinyint(4)") + .HasColumnName("NType"); + entity.Property(e => e.Title) + .HasMaxLength(40) + .HasComment("通知标题"); + entity.Property(e => e.UserId) + .HasComment("接收人(为空为全体通知)") + .HasColumnType("int(11)"); + + entity.HasOne(d => d.User).WithMany(p => p.Notifications) + .HasForeignKey(d => d.UserId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("notifications_ibfk_1"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("permissions") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Code) + .HasComment("权限编码 ") + .HasColumnType("int(11)"); + entity.Property(e => e.Created) + .HasComment("创建时间 ") + .HasColumnType("datetime"); + entity.Property(e => e.Name) + .HasMaxLength(50) + .HasComment("权限名称 "); + entity.Property(e => e.Ptype) + .HasComment("权限类型(0:增,1:删,2:改,3:查) ") + .HasColumnType("int(11)") + .HasColumnName("PType"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("permissionarole") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.PermissionId, "Permissionld"); + + entity.HasIndex(e => e.RoleId, "Roleld"); + + entity.Property(e => e.Id) + .ValueGeneratedNever() + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.PermissionId) + .HasComment("权限 ") + .HasColumnType("int(11)"); + entity.Property(e => e.RoleId) + .HasComment("角色 ") + .HasColumnType("int(11)"); + + entity.HasOne(d => d.Permission).WithMany(p => p.Permissionaroles) + .HasForeignKey(d => d.PermissionId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("permissionarole_ibfk_2"); + + entity.HasOne(d => d.Role).WithMany(p => p.Permissionaroles) + .HasForeignKey(d => d.RoleId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("permissionarole_ibfk_1"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("roles") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Created) + .HasComment("创建时间 ") + .HasColumnType("datetime"); + entity.Property(e => e.Description) + .HasComment("角色描述 ") + .HasColumnType("text"); + entity.Property(e => e.Name) + .HasMaxLength(20) + .HasComment("角色名称 "); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id).HasName("PRIMARY"); + + entity + .ToTable("users") + .HasCharSet("utf8mb4") + .UseCollation("utf8mb4_general_ci"); + + entity.HasIndex(e => e.Id, "ID"); + + entity.HasIndex(e => e.Username, "Username").IsUnique(); + + entity.Property(e => e.Id) + .HasColumnType("int(11)") + .HasColumnName("ID"); + entity.Property(e => e.Avatar) + .HasMaxLength(255) + .HasComment("用户头像链接"); + entity.Property(e => e.Created) + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间") + .HasColumnType("datetime"); + entity.Property(e => e.IsDeleted) + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.NickName) + .HasMaxLength(50) + .HasComment("用户昵称"); + entity.Property(e => e.OnlineStatus) + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.Password) + .HasMaxLength(50) + .HasComment("密码"); + entity.Property(e => e.Status) + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)") + .HasColumnType("tinyint(4)"); + entity.Property(e => e.Updated) + .HasComment("修改时间") + .HasColumnType("datetime"); + entity.Property(e => e.Username) + .HasMaxLength(50) + .HasComment("唯一用户名"); + }); + + OnModelCreatingPartial(modelBuilder); + } + + partial void OnModelCreatingPartial(ModelBuilder modelBuilder); +} diff --git a/backend/IM_API/Models/LoginLog.cs b/backend/IM_API/Models/LoginLog.cs index 1a71b72..5448de8 100644 --- a/backend/IM_API/Models/LoginLog.cs +++ b/backend/IM_API/Models/LoginLog.cs @@ -1,33 +1,33 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class LoginLog -{ - public int Id { get; set; } - - /// - /// 设备类型(通Devices/DType) - /// - public sbyte Dtype { get; set; } - - /// - /// 登录时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset Logined { get; set; } - - /// - /// 登录用户 - /// - public int UserId { get; set; } - - /// - /// 登录状态(0:登陆成功,1:未验证,2:已被拒绝) - /// - public sbyte State { get; set; } - - public virtual User User { get; set; } = null!; -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class LoginLog +{ + public int Id { get; set; } + + /// + /// 设备类型(通Devices/DType) + /// + public sbyte Dtype { get; set; } + + /// + /// 登录时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset Logined { get; set; } + + /// + /// 登录用户 + /// + public int UserId { get; set; } + + /// + /// 登录状态(0:登陆成功,1:未验证,2:已被拒绝) + /// + public sbyte State { get; set; } + + public virtual User User { get; set; } = null!; +} diff --git a/backend/IM_API/Models/LoginLogExt.cs b/backend/IM_API/Models/LoginLogExt.cs index 333a76a..25c0d79 100644 --- a/backend/IM_API/Models/LoginLogExt.cs +++ b/backend/IM_API/Models/LoginLogExt.cs @@ -1,11 +1,11 @@ -namespace IM_API.Models -{ - public partial class LoginLog - { - public LoginState StateEnum - { - get => (LoginState)State; - set => State = (sbyte)value; - } - } -} +namespace IM_API.Models +{ + public partial class LoginLog + { + public LoginState StateEnum + { + get => (LoginState)State; + set => State = (sbyte)value; + } + } +} diff --git a/backend/IM_API/Models/LoginState.cs b/backend/IM_API/Models/LoginState.cs index e2e32d4..91609dc 100644 --- a/backend/IM_API/Models/LoginState.cs +++ b/backend/IM_API/Models/LoginState.cs @@ -1,18 +1,18 @@ -namespace IM_API.Models -{ - public enum LoginState - { - /// - /// 登陆成功 - /// - Success = 0, - /// - /// 未验证 - /// - Unauthenticated = 1, - /// - /// 已拒绝 - /// - Declined = 2 - } -} +namespace IM_API.Models +{ + public enum LoginState + { + /// + /// 登陆成功 + /// + Success = 0, + /// + /// 未验证 + /// + Unauthenticated = 1, + /// + /// 已拒绝 + /// + Declined = 2 + } +} diff --git a/backend/IM_API/Models/Message.cs b/backend/IM_API/Models/Message.cs index df859ec..1b2871a 100644 --- a/backend/IM_API/Models/Message.cs +++ b/backend/IM_API/Models/Message.cs @@ -1,66 +1,66 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class Message -{ - public int Id { get; set; } - - /// - /// 聊天类型 - /// (0:私聊,1:群聊) - /// - public sbyte ChatType { get; set; } - - /// - /// 消息类型 - /// (0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天) - /// - public sbyte MsgType { get; set; } - public Guid ClientMsgId { get; set; } - - /// - /// 消息内容 - /// - public string Content { get; set; } = null!; - - /// - /// 发送者 - /// - public int Sender { get; set; } - - /// - /// 接收者(私聊为用户ID,群聊为群聊ID) - /// - public int Recipient { get; set; } - - /// - /// 消息状态(0:已发送,1:已撤回) - /// - public sbyte State { get; set; } - - /// - /// 发送时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset Created { get; set; } - - /// - /// 消息推送唯一标识符 - /// - public string StreamKey { get; set; } = null!; - - /// - /// 消息排序标识 - /// - - public long SequenceId { get; set; } - - public virtual ICollection Conversations { get; set; } = new List(); - - public virtual ICollection Files { get; set; } = new List(); - - public virtual User SenderNavigation { get; set; } = null!; -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class Message +{ + public int Id { get; set; } + + /// + /// 聊天类型 + /// (0:私聊,1:群聊) + /// + public sbyte ChatType { get; set; } + + /// + /// 消息类型 + /// (0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天) + /// + public sbyte MsgType { get; set; } + public Guid ClientMsgId { get; set; } + + /// + /// 消息内容 + /// + public string Content { get; set; } = null!; + + /// + /// 发送者 + /// + public int Sender { get; set; } + + /// + /// 接收者(私聊为用户ID,群聊为群聊ID) + /// + public int Recipient { get; set; } + + /// + /// 消息状态(0:已发送,1:已撤回) + /// + public sbyte State { get; set; } + + /// + /// 发送时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset Created { get; set; } + + /// + /// 消息推送唯一标识符 + /// + public string StreamKey { get; set; } = null!; + + /// + /// 消息排序标识 + /// + + public long SequenceId { get; set; } + + public virtual ICollection Conversations { get; set; } = new List(); + + public virtual ICollection Files { get; set; } = new List(); + + public virtual User SenderNavigation { get; set; } = null!; +} diff --git a/backend/IM_API/Models/MessageExt.cs b/backend/IM_API/Models/MessageExt.cs index 9ba3976..9343bb4 100644 --- a/backend/IM_API/Models/MessageExt.cs +++ b/backend/IM_API/Models/MessageExt.cs @@ -1,21 +1,21 @@ -namespace IM_API.Models -{ - public partial class Message - { - public MessageMsgType MsgTypeEnum - { - get => (MessageMsgType)MsgType; - set => MsgType = (sbyte) value; - } - public ChatType ChatTypeEnum - { - get => (ChatType)ChatType; - set => ChatType = (sbyte)value; - } - public MessageState StateEnum - { - get => (MessageState)State; - set => State = (sbyte) value; - } - } -} +namespace IM_API.Models +{ + public partial class Message + { + public MessageMsgType MsgTypeEnum + { + get => (MessageMsgType)MsgType; + set => MsgType = (sbyte) value; + } + public ChatType ChatTypeEnum + { + get => (ChatType)ChatType; + set => ChatType = (sbyte)value; + } + public MessageState StateEnum + { + get => (MessageState)State; + set => State = (sbyte) value; + } + } +} diff --git a/backend/IM_API/Models/MessageMsgType.cs b/backend/IM_API/Models/MessageMsgType.cs index a02832b..1a50e9f 100644 --- a/backend/IM_API/Models/MessageMsgType.cs +++ b/backend/IM_API/Models/MessageMsgType.cs @@ -1,13 +1,13 @@ -namespace IM_API.Models -{ - public enum MessageMsgType - { - Text = 0, - Image = 1, - Voice = 2, - Video = 3, - File = 4, - VoiceChat = 5, - VideoChat = 6 - } -} +namespace IM_API.Models +{ + public enum MessageMsgType + { + Text = 0, + Image = 1, + Voice = 2, + Video = 3, + File = 4, + VoiceChat = 5, + VideoChat = 6 + } +} diff --git a/backend/IM_API/Models/MessageState.cs b/backend/IM_API/Models/MessageState.cs index 8d75248..988b806 100644 --- a/backend/IM_API/Models/MessageState.cs +++ b/backend/IM_API/Models/MessageState.cs @@ -1,14 +1,14 @@ -namespace IM_API.Models -{ - public enum MessageState - { - /// - /// 已发送 - /// - Sent = 0, - /// - /// 已撤回 - /// - Withdrwan = 1 - } -} +namespace IM_API.Models +{ + public enum MessageState + { + /// + /// 已发送 + /// + Sent = 0, + /// + /// 已撤回 + /// + Withdrwan = 1 + } +} diff --git a/backend/IM_API/Models/Notification.cs b/backend/IM_API/Models/Notification.cs index 4286e14..c137ba3 100644 --- a/backend/IM_API/Models/Notification.cs +++ b/backend/IM_API/Models/Notification.cs @@ -1,38 +1,38 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class Notification -{ - public int Id { get; set; } - - /// - /// 接收人(为空为全体通知) - /// - public int UserId { get; set; } - - /// - /// 通知类型(0:文本) - /// - public sbyte Ntype { get; set; } - - /// - /// 通知标题 - /// - public string Title { get; set; } = null!; - - /// - /// 通知内容 - /// - public string Content { get; set; } = null!; - - /// - /// 创建时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset Created { get; set; } - - public virtual User User { get; set; } = null!; -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class Notification +{ + public int Id { get; set; } + + /// + /// 接收人(为空为全体通知) + /// + public int UserId { get; set; } + + /// + /// 通知类型(0:文本) + /// + public sbyte Ntype { get; set; } + + /// + /// 通知标题 + /// + public string Title { get; set; } = null!; + + /// + /// 通知内容 + /// + public string Content { get; set; } = null!; + + /// + /// 创建时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset Created { get; set; } + + public virtual User User { get; set; } = null!; +} diff --git a/backend/IM_API/Models/Permission.cs b/backend/IM_API/Models/Permission.cs index 9c522c1..2f0db7a 100644 --- a/backend/IM_API/Models/Permission.cs +++ b/backend/IM_API/Models/Permission.cs @@ -1,33 +1,33 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class Permission -{ - public int Id { get; set; } - - /// - /// 权限类型(0:增,1:删,2:改,3:查) - /// - public int Ptype { get; set; } - - /// - /// 权限名称 - /// - public string Name { get; set; } = null!; - - /// - /// 权限编码 - /// - public int Code { get; set; } - - /// - /// 创建时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset Created { get; set; } - - public virtual ICollection Permissionaroles { get; set; } = new List(); -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class Permission +{ + public int Id { get; set; } + + /// + /// 权限类型(0:增,1:删,2:改,3:查) + /// + public int Ptype { get; set; } + + /// + /// 权限名称 + /// + public string Name { get; set; } = null!; + + /// + /// 权限编码 + /// + public int Code { get; set; } + + /// + /// 创建时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset Created { get; set; } + + public virtual ICollection Permissionaroles { get; set; } = new List(); +} diff --git a/backend/IM_API/Models/Permissionarole.cs b/backend/IM_API/Models/Permissionarole.cs index 7ea65cb..1d63234 100644 --- a/backend/IM_API/Models/Permissionarole.cs +++ b/backend/IM_API/Models/Permissionarole.cs @@ -1,23 +1,23 @@ -using System; -using System.Collections.Generic; - -namespace IM_API.Models; - -public partial class Permissionarole -{ - public int Id { get; set; } - - /// - /// 角色 - /// - public int RoleId { get; set; } - - /// - /// 权限 - /// - public int PermissionId { get; set; } - - public virtual Permission Permission { get; set; } = null!; - - public virtual Role Role { get; set; } = null!; -} +using System; +using System.Collections.Generic; + +namespace IM_API.Models; + +public partial class Permissionarole +{ + public int Id { get; set; } + + /// + /// 角色 + /// + public int RoleId { get; set; } + + /// + /// 权限 + /// + public int PermissionId { get; set; } + + public virtual Permission Permission { get; set; } = null!; + + public virtual Role Role { get; set; } = null!; +} diff --git a/backend/IM_API/Models/Role.cs b/backend/IM_API/Models/Role.cs index a6a393e..471e3c9 100644 --- a/backend/IM_API/Models/Role.cs +++ b/backend/IM_API/Models/Role.cs @@ -1,30 +1,30 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace IM_API.Models; - -public partial class Role -{ - public int Id { get; set; } - - /// - /// 角色名称 - /// - public string Name { get; set; } = null!; - - /// - /// 角色描述 - /// - public string Description { get; set; } = null!; - - /// - /// 创建时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset Created { get; set; } - - public virtual ICollection Admins { get; set; } = new List(); - - public virtual ICollection Permissionaroles { get; set; } = new List(); -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace IM_API.Models; + +public partial class Role +{ + public int Id { get; set; } + + /// + /// 角色名称 + /// + public string Name { get; set; } = null!; + + /// + /// 角色描述 + /// + public string Description { get; set; } = null!; + + /// + /// 创建时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset Created { get; set; } + + public virtual ICollection Admins { get; set; } = new List(); + + public virtual ICollection Permissionaroles { get; set; } = new List(); +} diff --git a/backend/IM_API/Models/User.cs b/backend/IM_API/Models/User.cs index ece733f..3cbceb8 100644 --- a/backend/IM_API/Models/User.cs +++ b/backend/IM_API/Models/User.cs @@ -1,91 +1,91 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; -using System.Text.Json.Serialization; - -namespace IM_API.Models; - -public partial class User -{ - public int Id { get; set; } - - /// - /// 唯一用户名 - /// - public string Username { get; set; } = null!; - - /// - /// 密码 - /// - public string Password { get; set; } = null!; - - /// - /// 用户昵称 - /// - public string? NickName { get; set; } - - /// - /// 用户在线状态 - /// 0(默认):不在线 - /// 1:在线 - /// - public sbyte OnlineStatus { get; set; } - - /// - /// 创建时间 - /// - public DateTimeOffset Created { get; set; } - - /// - /// 修改时间 - /// - [Column(TypeName = "datetimeoffset")] - public DateTimeOffset? Updated { get; set; } - - /// - /// 账户状态 - /// (0:未激活,1:正常,2:封禁) - /// - public sbyte Status { get; set; } - - /// - /// 软删除标识 - /// 0:账号正常 - /// 1:账号已删除 - /// - public sbyte IsDeleted { get; set; } - - /// - /// 用户头像链接 - /// - public string? Avatar { get; set; } - [JsonIgnore] - - public virtual ICollection Conversations { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection Devices { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection FriendFriendNavigations { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection FriendRequestRequestUserNavigations { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection FriendRequestResponseUserNavigations { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection FriendUsers { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection GroupInviteInviteUserNavigations { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection GroupInviteInvitedUserNavigations { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection GroupMembers { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection GroupRequests { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection Groups { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection LoginLogs { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection Messages { get; set; } = new List(); - [JsonIgnore] - public virtual ICollection Notifications { get; set; } = new List(); -} +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Text.Json.Serialization; + +namespace IM_API.Models; + +public partial class User +{ + public int Id { get; set; } + + /// + /// 唯一用户名 + /// + public string Username { get; set; } = null!; + + /// + /// 密码 + /// + public string Password { get; set; } = null!; + + /// + /// 用户昵称 + /// + public string? NickName { get; set; } + + /// + /// 用户在线状态 + /// 0(默认):不在线 + /// 1:在线 + /// + public sbyte OnlineStatus { get; set; } + + /// + /// 创建时间 + /// + public DateTimeOffset Created { get; set; } + + /// + /// 修改时间 + /// + [Column(TypeName = "datetimeoffset")] + public DateTimeOffset? Updated { get; set; } + + /// + /// 账户状态 + /// (0:未激活,1:正常,2:封禁) + /// + public sbyte Status { get; set; } + + /// + /// 软删除标识 + /// 0:账号正常 + /// 1:账号已删除 + /// + public sbyte IsDeleted { get; set; } + + /// + /// 用户头像链接 + /// + public string? Avatar { get; set; } + [JsonIgnore] + + public virtual ICollection Conversations { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection Devices { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection FriendFriendNavigations { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection FriendRequestRequestUserNavigations { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection FriendRequestResponseUserNavigations { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection FriendUsers { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection GroupInviteInviteUserNavigations { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection GroupInviteInvitedUserNavigations { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection GroupMembers { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection GroupRequests { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection Groups { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection LoginLogs { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection Messages { get; set; } = new List(); + [JsonIgnore] + public virtual ICollection Notifications { get; set; } = new List(); +} diff --git a/backend/IM_API/Models/UserExt.cs b/backend/IM_API/Models/UserExt.cs index 2ef533a..2d2dd9e 100644 --- a/backend/IM_API/Models/UserExt.cs +++ b/backend/IM_API/Models/UserExt.cs @@ -1,16 +1,16 @@ -namespace IM_API.Models -{ - public partial class User - { - public UserOnlineStatus OnlineStatusEnum - { - get => (UserOnlineStatus)OnlineStatus; - set => OnlineStatus = (sbyte)value; - } - public UserStatus StatusEnum - { - get => (UserStatus)Status; - set => Status = (sbyte)value; - } - } -} +namespace IM_API.Models +{ + public partial class User + { + public UserOnlineStatus OnlineStatusEnum + { + get => (UserOnlineStatus)OnlineStatus; + set => OnlineStatus = (sbyte)value; + } + public UserStatus StatusEnum + { + get => (UserStatus)Status; + set => Status = (sbyte)value; + } + } +} diff --git a/backend/IM_API/Models/UserOlineStatus.cs b/backend/IM_API/Models/UserOlineStatus.cs index ac3f15f..0957ae6 100644 --- a/backend/IM_API/Models/UserOlineStatus.cs +++ b/backend/IM_API/Models/UserOlineStatus.cs @@ -1,18 +1,18 @@ -namespace IM_API.Models -{ - /// - /// 用户在线状态 - /// - public enum UserOnlineStatus : sbyte - { - /// - /// 不在线 (0) - /// - Offline = 0, - - /// - /// 在线 (1) - /// - Online = 1 - } -} +namespace IM_API.Models +{ + /// + /// 用户在线状态 + /// + public enum UserOnlineStatus : sbyte + { + /// + /// 不在线 (0) + /// + Offline = 0, + + /// + /// 在线 (1) + /// + Online = 1 + } +} diff --git a/backend/IM_API/Models/UserStatus.cs b/backend/IM_API/Models/UserStatus.cs index e08f38b..5cfdcb8 100644 --- a/backend/IM_API/Models/UserStatus.cs +++ b/backend/IM_API/Models/UserStatus.cs @@ -1,9 +1,9 @@ -namespace IM_API.Models -{ - public enum UserStatus:SByte - { - Inactive = 0, - Normal = 1, - Banned = 2 - } -} +namespace IM_API.Models +{ + public enum UserStatus:SByte + { + Inactive = 0, + Normal = 1, + Banned = 2 + } +} diff --git a/backend/IM_API/Program.cs b/backend/IM_API/Program.cs index c006058..c5ee3be 100644 --- a/backend/IM_API/Program.cs +++ b/backend/IM_API/Program.cs @@ -1,160 +1,160 @@ - -using IM_API.Configs; -using IM_API.Configs.Options; -using IM_API.Filters; -using IM_API.Hubs; -using IM_API.Models; -using IM_API.Tools; -using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.EntityFrameworkCore; -using Microsoft.IdentityModel.Tokens; -using StackExchange.Redis; -using System.Text; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace IM_API -{ - public class Program - { - public static void Main(string[] args) - { - var builder = WebApplication.CreateBuilder(args); - - // Add services to the container. - IConfiguration configuration = new ConfigurationBuilder() - .SetBasePath(Directory.GetCurrentDirectory()) - .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) - .Build(); - var conOptions = configuration.GetSection("ConnectionStrings").Get(); - //עݿ - builder.Services.AddDbContext(options => - { - options.UseMySql(conOptions.DefaultConnection,ServerVersion.AutoDetect(conOptions.DefaultConnection)); - }); - //עredis - var redis = ConnectionMultiplexer.Connect(conOptions.Redis); - builder.Services.AddSingleton(redis); - - builder.Services.AddStackExchangeRedisCache(options => - { - options.ConnectionMultiplexerFactory = () => Task.FromResult(redis); - }); - - builder.Services.AddRabbitMQ(configuration.GetSection("RabbitMqOptions").Get()); - - builder.Services.AddAllService(configuration); - - builder.Services.AddSignalR().AddJsonProtocol(options => - { - // öַ - options.PayloadSerializerOptions.Converters.Add(new JsonStringEnumConverter()); - options.PayloadSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; - }); - //Դ - builder.Services.AddCors(options => - { - options.AddDefaultPolicy(policy => - { - policy.AllowAnyHeader() - .AllowAnyMethod() - .AllowAnyHeader() - .AllowCredentials() - .SetIsOriginAllowed(origin => - { - // Աػضε - var host = new Uri(origin).Host; - return host == "localhost" || host.StartsWith("192.168."); - }); - }); - }); - //ƾ֤ - builder.Services.AddAuthentication(options => - { - options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; - }) - .AddJwtBearer(options => - { - //httpsDZ - options.RequireHttpsMetadata = false; - //token - options.SaveToken = true; - options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters - { - //֤ǩ - ValidateIssuer = true, - ValidIssuer = configuration["Jwt:Issuer"], - //֤ - ValidateAudience = true, - ValidAudience = configuration["Jwt:Audience"], - //֤ǩԿ - ValidateIssuerSigningKey = true, - IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["Jwt:Key"])), - //ʱƫ - ValidateLifetime = true, - ClockSkew = TimeSpan.FromSeconds(30) - - - }; - //websocket tokenƾ֤ - options.Events = new JwtBearerEvents { - OnMessageReceived = context => - { - var accessToken = context.Request.Query["access_token"]; - if (!string.IsNullOrEmpty(accessToken)) - { - context.Token = accessToken; - } - return Task.CompletedTask; - }, - OnAuthenticationFailed = context => - { - Console.WriteLine("Authentication failed: " + context.Exception.Message); - return Task.CompletedTask; - } - }; - }); - builder.Services.AddControllers(options => - { - options.Filters.Add(); - }).AddJsonOptions(options => - { - // ISO 8601 ʽ - //options.JsonSerializerOptions.Converters.Add(new UtcDateTimeConverter()); - // öתΪַ - options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); - // 飺շ - options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; - }); - builder.Services.AddModelValidation(configuration); - // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle - builder.Services.AddEndpointsApiExplorer(); - builder.Services.AddSwaggerGen(); - - var app = builder.Build(); - - app.UseCors(); - - // Configure the HTTP request pipeline. - if (app.Environment.IsDevelopment()) - { - app.UseSwagger(); - app.UseSwaggerUI(); - } - - app.UseHttpsRedirection(); - - app.UseAuthentication(); - app.UseAuthorization(); - - - - app.MapControllers(); - - app.MapHub("/chat").RequireCors(); - - app.Run(); - } - } -} + +using IM_API.Configs; +using IM_API.Configs.Options; +using IM_API.Filters; +using IM_API.Hubs; +using IM_API.Models; +using IM_API.Tools; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.EntityFrameworkCore; +using Microsoft.IdentityModel.Tokens; +using StackExchange.Redis; +using System.Text; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace IM_API +{ + public class Program + { + public static void Main(string[] args) + { + var builder = WebApplication.CreateBuilder(args); + + // Add services to the container. + IConfiguration configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) + .Build(); + var conOptions = configuration.GetSection("ConnectionStrings").Get(); + //עݿ + builder.Services.AddDbContext(options => + { + options.UseMySql(conOptions.DefaultConnection,ServerVersion.AutoDetect(conOptions.DefaultConnection)); + }); + //עredis + var redis = ConnectionMultiplexer.Connect(conOptions.Redis); + builder.Services.AddSingleton(redis); + + builder.Services.AddStackExchangeRedisCache(options => + { + options.ConnectionMultiplexerFactory = () => Task.FromResult(redis); + }); + + builder.Services.AddRabbitMQ(configuration.GetSection("RabbitMqOptions").Get()); + + builder.Services.AddAllService(configuration); + + builder.Services.AddSignalR().AddJsonProtocol(options => + { + // öַ + options.PayloadSerializerOptions.Converters.Add(new JsonStringEnumConverter()); + options.PayloadSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; + }); + //Դ + builder.Services.AddCors(options => + { + options.AddDefaultPolicy(policy => + { + policy.AllowAnyHeader() + .AllowAnyMethod() + .AllowAnyHeader() + .AllowCredentials() + .SetIsOriginAllowed(origin => + { + // Աػضε + var host = new Uri(origin).Host; + return host == "localhost" || host.StartsWith("192.168."); + }); + }); + }); + //ƾ֤ + builder.Services.AddAuthentication(options => + { + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }) + .AddJwtBearer(options => + { + //httpsDZ + options.RequireHttpsMetadata = false; + //token + options.SaveToken = true; + options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters + { + //֤ǩ + ValidateIssuer = true, + ValidIssuer = configuration["Jwt:Issuer"], + //֤ + ValidateAudience = true, + ValidAudience = configuration["Jwt:Audience"], + //֤ǩԿ + ValidateIssuerSigningKey = true, + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["Jwt:Key"])), + //ʱƫ + ValidateLifetime = true, + ClockSkew = TimeSpan.FromSeconds(30) + + + }; + //websocket tokenƾ֤ + options.Events = new JwtBearerEvents { + OnMessageReceived = context => + { + var accessToken = context.Request.Query["access_token"]; + if (!string.IsNullOrEmpty(accessToken)) + { + context.Token = accessToken; + } + return Task.CompletedTask; + }, + OnAuthenticationFailed = context => + { + Console.WriteLine("Authentication failed: " + context.Exception.Message); + return Task.CompletedTask; + } + }; + }); + builder.Services.AddControllers(options => + { + options.Filters.Add(); + }).AddJsonOptions(options => + { + // ISO 8601 ʽ + //options.JsonSerializerOptions.Converters.Add(new UtcDateTimeConverter()); + // öתΪַ + options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); + // 飺շ + options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; + }); + builder.Services.AddModelValidation(configuration); + // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle + builder.Services.AddEndpointsApiExplorer(); + builder.Services.AddSwaggerGen(); + + var app = builder.Build(); + + app.UseCors(); + + // Configure the HTTP request pipeline. + if (app.Environment.IsDevelopment()) + { + app.UseSwagger(); + app.UseSwaggerUI(); + } + + app.UseHttpsRedirection(); + + app.UseAuthentication(); + app.UseAuthorization(); + + + + app.MapControllers(); + + app.MapHub("/chat").RequireCors(); + + app.Run(); + } + } +} diff --git a/backend/IM_API/Properties/launchSettings.json b/backend/IM_API/Properties/launchSettings.json index 758bd87..9d70aa6 100644 --- a/backend/IM_API/Properties/launchSettings.json +++ b/backend/IM_API/Properties/launchSettings.json @@ -1,52 +1,52 @@ -{ - "profiles": { - "http": { - "commandName": "Project", - "launchBrowser": true, - "launchUrl": "swagger", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "dotnetRunMessages": true, - "applicationUrl": "http://localhost:5202" - }, - "https": { - "commandName": "Project", - "launchBrowser": true, - "launchUrl": "swagger", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "dotnetRunMessages": true, - "applicationUrl": "https://localhost:7157;http://localhost:5202" - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "swagger", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "Container (Dockerfile)": { - "commandName": "Docker", - "launchBrowser": true, - "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", - "environmentVariables": { - "ASPNETCORE_HTTPS_PORTS": "8081", - "ASPNETCORE_HTTP_PORTS": "8080" - }, - "publishAllPorts": true, - "useSSL": true - } - }, - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:39786", - "sslPort": 44308 - } - } +{ + "profiles": { + "http": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": true, + "applicationUrl": "http://localhost:5202" + }, + "https": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": true, + "applicationUrl": "https://localhost:7157;http://localhost:5202" + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Container (Dockerfile)": { + "commandName": "Docker", + "launchBrowser": true, + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", + "environmentVariables": { + "ASPNETCORE_HTTPS_PORTS": "8081", + "ASPNETCORE_HTTP_PORTS": "8080" + }, + "publishAllPorts": true, + "useSSL": true + } + }, + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:39786", + "sslPort": 44308 + } + } } \ No newline at end of file diff --git a/backend/IM_API/Services/AuthService.cs b/backend/IM_API/Services/AuthService.cs index 71898c1..c988c13 100644 --- a/backend/IM_API/Services/AuthService.cs +++ b/backend/IM_API/Services/AuthService.cs @@ -1,53 +1,53 @@ -using AutoMapper; -using IM_API.Dtos.Auth; -using IM_API.Dtos.User; -using IM_API.Exceptions; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Tools; -using Microsoft.EntityFrameworkCore; - -namespace IM_API.Services -{ - public class AuthService : IAuthService - { - private readonly ImContext _context; - private readonly ILogger _logger; - private readonly IMapper _mapper; - private readonly ICacheService _cache; - public AuthService(ImContext context, ILogger logger, IMapper mapper, ICacheService cache) - { - _context = context; - _logger = logger; - _mapper = mapper; - _cache = cache; - } - - public async Task LoginAsync(LoginRequestDto dto) - { - var userinfo = await _cache.GetUserCacheAsync(dto.Username); - if (userinfo != null && userinfo.Password == dto.Password) return userinfo; - string username = dto.Username; - string password = dto.Password; - var user = await _context.Users.FirstOrDefaultAsync(x => x.Username == username && x.Password == password); - if(user is null) - { - throw new BaseException(CodeDefine.PASSWORD_ERROR); - } - await _cache.SetUserCacheAsync(user); - return user; - } - - public async Task RegisterAsync(RegisterRequestDto dto) - { - string username = dto.Username; - //用户是否存在 - bool isExist = await _context.Users.AnyAsync(x => x.Username == username); - if (isExist) throw new BaseException(CodeDefine.USER_ALREADY_EXISTS); - User user = _mapper.Map(dto); - _context.Users.Add(user); - await _context.SaveChangesAsync(); - return _mapper.Map(user); - } - } -} +using AutoMapper; +using IM_API.Dtos.Auth; +using IM_API.Dtos.User; +using IM_API.Exceptions; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Tools; +using Microsoft.EntityFrameworkCore; + +namespace IM_API.Services +{ + public class AuthService : IAuthService + { + private readonly ImContext _context; + private readonly ILogger _logger; + private readonly IMapper _mapper; + private readonly ICacheService _cache; + public AuthService(ImContext context, ILogger logger, IMapper mapper, ICacheService cache) + { + _context = context; + _logger = logger; + _mapper = mapper; + _cache = cache; + } + + public async Task LoginAsync(LoginRequestDto dto) + { + var userinfo = await _cache.GetUserCacheAsync(dto.Username); + if (userinfo != null && userinfo.Password == dto.Password) return userinfo; + string username = dto.Username; + string password = dto.Password; + var user = await _context.Users.FirstOrDefaultAsync(x => x.Username == username && x.Password == password); + if(user is null) + { + throw new BaseException(CodeDefine.PASSWORD_ERROR); + } + await _cache.SetUserCacheAsync(user); + return user; + } + + public async Task RegisterAsync(RegisterRequestDto dto) + { + string username = dto.Username; + //用户是否存在 + bool isExist = await _context.Users.AnyAsync(x => x.Username == username); + if (isExist) throw new BaseException(CodeDefine.USER_ALREADY_EXISTS); + User user = _mapper.Map(dto); + _context.Users.Add(user); + await _context.SaveChangesAsync(); + return _mapper.Map(user); + } + } +} diff --git a/backend/IM_API/Services/ConversationService.cs b/backend/IM_API/Services/ConversationService.cs index 52c6856..3d35929 100644 --- a/backend/IM_API/Services/ConversationService.cs +++ b/backend/IM_API/Services/ConversationService.cs @@ -1,182 +1,182 @@ -using AutoMapper; -using IM_API.Dtos.Conversation; -using IM_API.Exceptions; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Tools; -using IM_API.VOs.Conversation; -using Microsoft.EntityFrameworkCore; - -namespace IM_API.Services -{ - public class ConversationService : IConversationService - { - private readonly ImContext _context; - private readonly IMapper _mapper; - public ConversationService(ImContext context, IMapper mapper) - { - _context = context; - _mapper = mapper; - } - #region 删除用户会话 - public async Task ClearConversationsAsync(int userId) - { - await _context.Conversations.Where(x => x.UserId == userId).ExecuteDeleteAsync(); - return true; - } - - - #endregion - #region 获取用户会话列表 - public async Task> GetConversationsAsync(int userId) - { - // 1. 获取私聊会话 - var privateList = await (from c in _context.Conversations - join f in _context.Friends on new { c.UserId, c.TargetId } - equals new { UserId = f.UserId, TargetId = f.FriendId } - where c.UserId == userId && c.ChatType == ChatType.PRIVATE - select new { c, f.Avatar, f.RemarkName }) - .ToListAsync(); - - // 2. 获取群聊会话 - var groupList = await (from c in _context.Conversations - join g in _context.Groups on c.TargetId equals g.Id - where c.UserId == userId && c.ChatType == ChatType.GROUP - select new { c, g.Avatar, g.Name,g.MaxSequenceId,g.LastMessage }) - .ToListAsync(); - - var privateDtos = privateList.Select(x => - { - var dto = _mapper.Map(x.c); - dto.TargetAvatar = x.Avatar; - dto.TargetName = x.RemarkName; - return dto; - }); - - var groupDtos = groupList.Select(x => - { - var dto = _mapper.Map(x.c); - dto.TargetAvatar = x.Avatar; - dto.TargetName = x.Name; - dto.UnreadCount = (int)(x.MaxSequenceId - x.c.LastReadSequenceId ?? 0); - dto.LastSequenceId = x.MaxSequenceId; - dto.LastMessage = x.LastMessage; - return dto; - }); - - // 4. 合并并排序 - return privateDtos.Concat(groupDtos) - .OrderByDescending(x => x.DateTime) - .ToList(); - } - #endregion - #region 删除单个会话 - public async Task DeleteConversationAsync(int conversationId) - { - var conversation = await _context.Conversations.FirstOrDefaultAsync(x => x.Id == conversationId); - if (conversation == null) throw new BaseException(CodeDefine.CONVERSATION_NOT_FOUND); - _context.Conversations.Remove(conversation); - await _context.SaveChangesAsync(); - return true; - } - - - #endregion - #region 获取用户所有统一聊天凭证 - public async Task> GetUserAllStreamKeyAsync(int userId) - { - return await _context.Conversations.Where(x => x.UserId == userId) - .Select(x => x.StreamKey) - .Distinct() - .ToListAsync(); - } - #endregion - - #region 获取单个会话信息 - public async Task GetConversationByIdAsync(int userId, int conversationId) - { - var conversation = await _context.Conversations - .FirstOrDefaultAsync( - x => x.UserId == userId && x.Id == conversationId - ); - if (conversation is null) throw new BaseException(CodeDefine.CONVERSATION_NOT_FOUND); - var dto = _mapper.Map(conversation); - if(conversation.ChatType == ChatType.PRIVATE) - { - var friendInfo = await _context.Friends.Include(n => n.FriendNavigation).FirstOrDefaultAsync( - x => x.UserId == conversation.UserId && x.FriendId == conversation.TargetId - ); - if (friendInfo is null) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); - _mapper.Map(friendInfo,dto); - } - if(conversation.ChatType == ChatType.GROUP) - { - var groupInfo = await _context.Groups.FirstOrDefaultAsync( - x => x.Id == conversation.TargetId - ); - if (groupInfo is null) throw new BaseException(CodeDefine.GROUP_NOT_FOUND); - _mapper.Map(groupInfo, dto); - } - return dto; - } - #endregion - - public async Task ClearUnreadCountAsync(int userId, int conversationId) - { - var conversation = await _context.Conversations.FirstOrDefaultAsync(x => x.UserId == userId && x.Id == conversationId); - if (conversation is null) throw new BaseException(CodeDefine.CONVERSATION_NOT_FOUND); - var message = await _context.Messages - .Where(x => x.StreamKey == conversation.StreamKey) - .OrderByDescending(x => x.SequenceId) - .FirstOrDefaultAsync(); - if(message != null) - { - conversation.UnreadCount = 0; - conversation.LastMessage = message.Content; - conversation.LastReadSequenceId = message.SequenceId; - conversation.LastMessageTime = message.Created; - _context.Conversations.Update(conversation); - await _context.SaveChangesAsync(); - } - - return true; - - } - - public async Task MakeConversationAsync(int userAId, int userBId, ChatType chatType) - { - var userAcExist = await _context.Conversations.AnyAsync(x => x.UserId == userAId && x.TargetId == userBId); - if (userAcExist) return; - var streamKey = chatType == ChatType.PRIVATE ? - StreamKeyBuilder.Private(userAId, userBId) : StreamKeyBuilder.Group(userBId); - var conversation = new Conversation() - { - ChatType = chatType, - LastMessage = "", - LastMessageTime = DateTime.Now, - LastReadSequenceId = null, - StreamKey = streamKey, - TargetId = userBId, - UnreadCount = 0, - UserId = userAId - - }; - _context.Conversations.Add(conversation); - await _context.SaveChangesAsync(); - } - public async Task UpdateConversationAfterSentAsync(UpdateConversationDto dto) - { - var cList = await _context.Conversations.Where(x => x.StreamKey == dto.StreamKey).ToListAsync(); - foreach(var c in cList) - { - bool isSender = dto.SenderId == c.UserId; - c.LastMessage = dto.LastMessage; - c.LastMessageTime = dto.DateTime; - c.LastReadSequenceId = isSender ? dto.LastSequenceId : c.LastReadSequenceId; - c.UnreadCount = isSender ? 0 : c.UnreadCount + 1; - } - _context.Conversations.UpdateRange(cList); - await _context.SaveChangesAsync(); - } - } +using AutoMapper; +using IM_API.Dtos.Conversation; +using IM_API.Exceptions; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Tools; +using IM_API.VOs.Conversation; +using Microsoft.EntityFrameworkCore; + +namespace IM_API.Services +{ + public class ConversationService : IConversationService + { + private readonly ImContext _context; + private readonly IMapper _mapper; + public ConversationService(ImContext context, IMapper mapper) + { + _context = context; + _mapper = mapper; + } + #region 删除用户会话 + public async Task ClearConversationsAsync(int userId) + { + await _context.Conversations.Where(x => x.UserId == userId).ExecuteDeleteAsync(); + return true; + } + + + #endregion + #region 获取用户会话列表 + public async Task> GetConversationsAsync(int userId) + { + // 1. 获取私聊会话 + var privateList = await (from c in _context.Conversations + join f in _context.Friends on new { c.UserId, c.TargetId } + equals new { UserId = f.UserId, TargetId = f.FriendId } + where c.UserId == userId && c.ChatType == ChatType.PRIVATE + select new { c, f.Avatar, f.RemarkName }) + .ToListAsync(); + + // 2. 获取群聊会话 + var groupList = await (from c in _context.Conversations + join g in _context.Groups on c.TargetId equals g.Id + where c.UserId == userId && c.ChatType == ChatType.GROUP + select new { c, g.Avatar, g.Name,g.MaxSequenceId,g.LastMessage }) + .ToListAsync(); + + var privateDtos = privateList.Select(x => + { + var dto = _mapper.Map(x.c); + dto.TargetAvatar = x.Avatar; + dto.TargetName = x.RemarkName; + return dto; + }); + + var groupDtos = groupList.Select(x => + { + var dto = _mapper.Map(x.c); + dto.TargetAvatar = x.Avatar; + dto.TargetName = x.Name; + dto.UnreadCount = (int)(x.MaxSequenceId - x.c.LastReadSequenceId ?? 0); + dto.LastSequenceId = x.MaxSequenceId; + dto.LastMessage = x.LastMessage; + return dto; + }); + + // 4. 合并并排序 + return privateDtos.Concat(groupDtos) + .OrderByDescending(x => x.DateTime) + .ToList(); + } + #endregion + #region 删除单个会话 + public async Task DeleteConversationAsync(int conversationId) + { + var conversation = await _context.Conversations.FirstOrDefaultAsync(x => x.Id == conversationId); + if (conversation == null) throw new BaseException(CodeDefine.CONVERSATION_NOT_FOUND); + _context.Conversations.Remove(conversation); + await _context.SaveChangesAsync(); + return true; + } + + + #endregion + #region 获取用户所有统一聊天凭证 + public async Task> GetUserAllStreamKeyAsync(int userId) + { + return await _context.Conversations.Where(x => x.UserId == userId) + .Select(x => x.StreamKey) + .Distinct() + .ToListAsync(); + } + #endregion + + #region 获取单个会话信息 + public async Task GetConversationByIdAsync(int userId, int conversationId) + { + var conversation = await _context.Conversations + .FirstOrDefaultAsync( + x => x.UserId == userId && x.Id == conversationId + ); + if (conversation is null) throw new BaseException(CodeDefine.CONVERSATION_NOT_FOUND); + var dto = _mapper.Map(conversation); + if(conversation.ChatType == ChatType.PRIVATE) + { + var friendInfo = await _context.Friends.Include(n => n.FriendNavigation).FirstOrDefaultAsync( + x => x.UserId == conversation.UserId && x.FriendId == conversation.TargetId + ); + if (friendInfo is null) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); + _mapper.Map(friendInfo,dto); + } + if(conversation.ChatType == ChatType.GROUP) + { + var groupInfo = await _context.Groups.FirstOrDefaultAsync( + x => x.Id == conversation.TargetId + ); + if (groupInfo is null) throw new BaseException(CodeDefine.GROUP_NOT_FOUND); + _mapper.Map(groupInfo, dto); + } + return dto; + } + #endregion + + public async Task ClearUnreadCountAsync(int userId, int conversationId) + { + var conversation = await _context.Conversations.FirstOrDefaultAsync(x => x.UserId == userId && x.Id == conversationId); + if (conversation is null) throw new BaseException(CodeDefine.CONVERSATION_NOT_FOUND); + var message = await _context.Messages + .Where(x => x.StreamKey == conversation.StreamKey) + .OrderByDescending(x => x.SequenceId) + .FirstOrDefaultAsync(); + if(message != null) + { + conversation.UnreadCount = 0; + conversation.LastMessage = message.Content; + conversation.LastReadSequenceId = message.SequenceId; + conversation.LastMessageTime = message.Created; + _context.Conversations.Update(conversation); + await _context.SaveChangesAsync(); + } + + return true; + + } + + public async Task MakeConversationAsync(int userAId, int userBId, ChatType chatType) + { + var userAcExist = await _context.Conversations.AnyAsync(x => x.UserId == userAId && x.TargetId == userBId); + if (userAcExist) return; + var streamKey = chatType == ChatType.PRIVATE ? + StreamKeyBuilder.Private(userAId, userBId) : StreamKeyBuilder.Group(userBId); + var conversation = new Conversation() + { + ChatType = chatType, + LastMessage = "", + LastMessageTime = DateTime.Now, + LastReadSequenceId = null, + StreamKey = streamKey, + TargetId = userBId, + UnreadCount = 0, + UserId = userAId + + }; + _context.Conversations.Add(conversation); + await _context.SaveChangesAsync(); + } + public async Task UpdateConversationAfterSentAsync(UpdateConversationDto dto) + { + var cList = await _context.Conversations.Where(x => x.StreamKey == dto.StreamKey).ToListAsync(); + foreach(var c in cList) + { + bool isSender = dto.SenderId == c.UserId; + c.LastMessage = dto.LastMessage; + c.LastMessageTime = dto.DateTime; + c.LastReadSequenceId = isSender ? dto.LastSequenceId : c.LastReadSequenceId; + c.UnreadCount = isSender ? 0 : c.UnreadCount + 1; + } + _context.Conversations.UpdateRange(cList); + await _context.SaveChangesAsync(); + } + } } \ No newline at end of file diff --git a/backend/IM_API/Services/FriendService.cs b/backend/IM_API/Services/FriendService.cs index 8ed6ba8..a53a441 100644 --- a/backend/IM_API/Services/FriendService.cs +++ b/backend/IM_API/Services/FriendService.cs @@ -1,220 +1,220 @@ -using AutoMapper; -using IM_API.Domain.Events; -using IM_API.Dtos.Friend; -using IM_API.Exceptions; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Tools; -using MassTransit; -using Microsoft.EntityFrameworkCore; - -namespace IM_API.Services -{ - public class FriendService : IFriendSerivce - { - private readonly ImContext _context; - private readonly ILogger _logger; - private readonly IMapper _mapper; - private readonly IPublishEndpoint _endpoint; - public FriendService(ImContext context, ILogger logger, IMapper mapper, IPublishEndpoint endpoint) - { - _context = context; - _logger = logger; - _mapper = mapper; - _endpoint = endpoint; - } - #region 拉黑好友 - public async Task BlockeFriendAsync(int friendId) - { - var friend = await _context.Friends.FirstOrDefaultAsync(x => x.Id == friendId); - if (friend == null) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); - friend.StatusEnum = FriendStatus.Blocked; - await _context.SaveChangesAsync(); - return true; - } - #endregion - #region 通过用户id拉黑好友 - public async Task BlockFriendByUserIdAsync(int userId, int toUserId) - { - var friend = await _context.Friends.FirstOrDefaultAsync(x => x.UserId == userId && x.FriendId == toUserId); - if (friend == null) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); - friend.StatusEnum = FriendStatus.Blocked; - await _context.SaveChangesAsync(); - return true; - } - #endregion - #region 删除好友关系 - public async Task DeleteFriendAsync(int friendId) - { - var friend = await _context.Friends.FirstOrDefaultAsync(x => x.Id == friendId); - if (friend is null) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); - _context.Friends.Remove(friend); - await _context.SaveChangesAsync(); - return true; - } - #endregion - #region 通过用户id删除好友关系 - public async Task DeleteFriendByUserIdAsync(int userId, int toUserId) - { - var friend = await _context.Friends.FirstOrDefaultAsync(x => x.UserId == userId && x.FriendId == toUserId); - if (friend is null) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); - _context.Friends.Remove(friend); - await _context.SaveChangesAsync(); - return true; - } - #endregion - #region 获取好友列表 - - public async Task> GetFriendListAsync(int userId, int page, int limit, bool desc) - { - var query = _context.Friends.Include(u => u.FriendNavigation).Where(x => x.UserId == userId && x.Status == (sbyte)FriendStatus.Added); - if (desc) - { - query = query.OrderByDescending(x => x.UserId); - } - var friendList = await query.Skip(((page - 1) * limit)).Take(limit).ToListAsync(); - return _mapper.Map>(friendList); - } - #endregion - #region 获取好友请求列表 - public async Task> GetFriendRequestListAsync(int userId, int page, int limit, bool desc) - { - var query = _context.FriendRequests - .Include(x => x.ResponseUserNavigation) - .Include(x => x.RequestUserNavigation) - .Where( - x => (x.ResponseUser == userId) || - x.RequestUser == userId - ) - .Select(s => new FriendRequestResDto - { - Id = s.Id, - RequestUser = s.RequestUser, - ResponseUser = s.ResponseUser, - Avatar = s.RequestUser == userId ? s.ResponseUserNavigation.Avatar : s.RequestUserNavigation.Avatar, - Created = s.Created, - NickName = s.RequestUser == userId ? s.ResponseUserNavigation.NickName : s.RequestUserNavigation.NickName, - Description = s.Description, - State = (FriendRequestState)s.State - }) - ; - query = query.OrderByDescending(x => x.Id); - var friendRequestList = await query.Skip(((page - 1) * limit)).Take(limit).ToListAsync(); - return friendRequestList; - } - #endregion - #region 处理好友请求 - public async Task HandleFriendRequestAsync(HandleFriendRequestDto requestDto) - { - //查询好友请求记录 - var friendRequest = await _context.FriendRequests - .Include(e => e.ResponseUserNavigation) - .FirstOrDefaultAsync(x => x.Id == requestDto.RequestId); - - if (friendRequest is null) throw new BaseException(CodeDefine.FRIEND_REQUEST_NOT_FOUND); - - //查询好友关系 - var friend = await _context.Friends.FirstOrDefaultAsync( - x => x.UserId == friendRequest.RequestUser && x.FriendId == friendRequest.ResponseUser - ); - if (friend != null) throw new BaseException(CodeDefine.ALREADY_FRIENDS); - //处理好友请求操作 - switch (requestDto.Action) - { - //拒绝后标记 - case HandleFriendRequestAction.Reject: - friendRequest.StateEnum = FriendRequestState.Declined; - break; - - //同意后标记 - case HandleFriendRequestAction.Accept: - friendRequest.StateEnum = FriendRequestState.Passed; - await _endpoint.Publish(new FriendAddEvent() - { - AggregateId = friendRequest.Id.ToString(), - OccurredAt = DateTime.Now, - Created = DateTime.Now, - EventId = Guid.NewGuid(), - OperatorId = friendRequest.ResponseUser, - RequestInfo = _mapper.Map(friendRequest), - requestUserRemarkname = requestDto.RemarkName, - RequestUserId = friendRequest.RequestUser, - ResponseUserId = friendRequest.ResponseUser - - }); - break; - - //无效操作 - default: - throw new BaseException(CodeDefine.INVALID_ACTION); - } - - await _context.SaveChangesAsync(); - return true; - } - #endregion - #region 发起好友请求 - public async Task SendFriendRequestAsync(FriendRequestDto dto) - { - //查询用户是否存在 - bool isExist = await _context.Users.AnyAsync(x => x.Id == dto.ToUserId); - if (!isExist) throw new BaseException(CodeDefine.USER_NOT_FOUND); - bool isExistUser2 = await _context.Users.AnyAsync(x => x.Id == dto.FromUserId); - if(!isExistUser2) throw new BaseException(CodeDefine.USER_NOT_FOUND); - // 检查是否已有好友关系或待处理请求 - bool alreadyExists = await _context.FriendRequests.AnyAsync(x => - x.RequestUser == dto.FromUserId && x.ResponseUser == dto.ToUserId && x.State == (sbyte)FriendRequestState.Pending - ); - if (alreadyExists) - throw new BaseException(CodeDefine.FRIEND_REQUEST_EXISTS); - - var friendShip = await _context.Friends.FirstOrDefaultAsync(x => x.UserId == dto.FromUserId && x.FriendId == dto.ToUserId); - - //检查是否被对方拉黑 - bool isBlocked = friendShip != null && friendShip.StatusEnum == FriendStatus.Blocked; - if (isBlocked) - throw new BaseException(CodeDefine.FRIEND_REQUEST_REJECTED); - if (friendShip != null) - throw new BaseException(CodeDefine.ALREADY_FRIENDS); - //生成实体 - var friendRequst = _mapper.Map(dto); - _context.FriendRequests.Add(friendRequst); - await _context.SaveChangesAsync(); - await _endpoint.Publish(new RequestFriendEvent() - { - AggregateId = friendRequst.Id.ToString(), - OccurredAt = friendRequst.Created.UtcDateTime, - Description = friendRequst.Description, - EventId = Guid.NewGuid(), - FromUserId = friendRequst.RequestUser, - ToUserId = friendRequst.ResponseUser, - OperatorId = friendRequst.RequestUser - }); - return true; - } - #endregion - - #region 创建好友关系 - public async Task MakeFriendshipAsync(int userAId, int userBId, string? remarkName) - { - bool userAexist = await _context.Friends.AnyAsync(x => x.UserId == userAId && x.FriendId == userBId); - if (!userAexist) - { - User? userbInfo = await _context.Users.FirstOrDefaultAsync(x => x.Id == userBId); - if (userbInfo is null) throw new BaseException(CodeDefine.USER_NOT_FOUND); - Friend friendA = new Friend() - { - Avatar = userbInfo.Avatar, - Created = DateTime.Now, - FriendId = userbInfo.Id, - RemarkName = remarkName ?? userbInfo.NickName, - StatusEnum = FriendStatus.Added, - UserId = userAId - }; - _context.Friends.Add(friendA); - await _context.SaveChangesAsync(); - } - } - #endregion - } -} +using AutoMapper; +using IM_API.Domain.Events; +using IM_API.Dtos.Friend; +using IM_API.Exceptions; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Tools; +using MassTransit; +using Microsoft.EntityFrameworkCore; + +namespace IM_API.Services +{ + public class FriendService : IFriendSerivce + { + private readonly ImContext _context; + private readonly ILogger _logger; + private readonly IMapper _mapper; + private readonly IPublishEndpoint _endpoint; + public FriendService(ImContext context, ILogger logger, IMapper mapper, IPublishEndpoint endpoint) + { + _context = context; + _logger = logger; + _mapper = mapper; + _endpoint = endpoint; + } + #region 拉黑好友 + public async Task BlockeFriendAsync(int friendId) + { + var friend = await _context.Friends.FirstOrDefaultAsync(x => x.Id == friendId); + if (friend == null) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); + friend.StatusEnum = FriendStatus.Blocked; + await _context.SaveChangesAsync(); + return true; + } + #endregion + #region 通过用户id拉黑好友 + public async Task BlockFriendByUserIdAsync(int userId, int toUserId) + { + var friend = await _context.Friends.FirstOrDefaultAsync(x => x.UserId == userId && x.FriendId == toUserId); + if (friend == null) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); + friend.StatusEnum = FriendStatus.Blocked; + await _context.SaveChangesAsync(); + return true; + } + #endregion + #region 删除好友关系 + public async Task DeleteFriendAsync(int friendId) + { + var friend = await _context.Friends.FirstOrDefaultAsync(x => x.Id == friendId); + if (friend is null) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); + _context.Friends.Remove(friend); + await _context.SaveChangesAsync(); + return true; + } + #endregion + #region 通过用户id删除好友关系 + public async Task DeleteFriendByUserIdAsync(int userId, int toUserId) + { + var friend = await _context.Friends.FirstOrDefaultAsync(x => x.UserId == userId && x.FriendId == toUserId); + if (friend is null) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); + _context.Friends.Remove(friend); + await _context.SaveChangesAsync(); + return true; + } + #endregion + #region 获取好友列表 + + public async Task> GetFriendListAsync(int userId, int page, int limit, bool desc) + { + var query = _context.Friends.Include(u => u.FriendNavigation).Where(x => x.UserId == userId && x.Status == (sbyte)FriendStatus.Added); + if (desc) + { + query = query.OrderByDescending(x => x.UserId); + } + var friendList = await query.Skip(((page - 1) * limit)).Take(limit).ToListAsync(); + return _mapper.Map>(friendList); + } + #endregion + #region 获取好友请求列表 + public async Task> GetFriendRequestListAsync(int userId, int page, int limit, bool desc) + { + var query = _context.FriendRequests + .Include(x => x.ResponseUserNavigation) + .Include(x => x.RequestUserNavigation) + .Where( + x => (x.ResponseUser == userId) || + x.RequestUser == userId + ) + .Select(s => new FriendRequestResDto + { + Id = s.Id, + RequestUser = s.RequestUser, + ResponseUser = s.ResponseUser, + Avatar = s.RequestUser == userId ? s.ResponseUserNavigation.Avatar : s.RequestUserNavigation.Avatar, + Created = s.Created, + NickName = s.RequestUser == userId ? s.ResponseUserNavigation.NickName : s.RequestUserNavigation.NickName, + Description = s.Description, + State = (FriendRequestState)s.State + }) + ; + query = query.OrderByDescending(x => x.Id); + var friendRequestList = await query.Skip(((page - 1) * limit)).Take(limit).ToListAsync(); + return friendRequestList; + } + #endregion + #region 处理好友请求 + public async Task HandleFriendRequestAsync(HandleFriendRequestDto requestDto) + { + //查询好友请求记录 + var friendRequest = await _context.FriendRequests + .Include(e => e.ResponseUserNavigation) + .FirstOrDefaultAsync(x => x.Id == requestDto.RequestId); + + if (friendRequest is null) throw new BaseException(CodeDefine.FRIEND_REQUEST_NOT_FOUND); + + //查询好友关系 + var friend = await _context.Friends.FirstOrDefaultAsync( + x => x.UserId == friendRequest.RequestUser && x.FriendId == friendRequest.ResponseUser + ); + if (friend != null) throw new BaseException(CodeDefine.ALREADY_FRIENDS); + //处理好友请求操作 + switch (requestDto.Action) + { + //拒绝后标记 + case HandleFriendRequestAction.Reject: + friendRequest.StateEnum = FriendRequestState.Declined; + break; + + //同意后标记 + case HandleFriendRequestAction.Accept: + friendRequest.StateEnum = FriendRequestState.Passed; + await _endpoint.Publish(new FriendAddEvent() + { + AggregateId = friendRequest.Id.ToString(), + OccurredAt = DateTime.Now, + Created = DateTime.Now, + EventId = Guid.NewGuid(), + OperatorId = friendRequest.ResponseUser, + RequestInfo = _mapper.Map(friendRequest), + requestUserRemarkname = requestDto.RemarkName, + RequestUserId = friendRequest.RequestUser, + ResponseUserId = friendRequest.ResponseUser + + }); + break; + + //无效操作 + default: + throw new BaseException(CodeDefine.INVALID_ACTION); + } + + await _context.SaveChangesAsync(); + return true; + } + #endregion + #region 发起好友请求 + public async Task SendFriendRequestAsync(FriendRequestDto dto) + { + //查询用户是否存在 + bool isExist = await _context.Users.AnyAsync(x => x.Id == dto.ToUserId); + if (!isExist) throw new BaseException(CodeDefine.USER_NOT_FOUND); + bool isExistUser2 = await _context.Users.AnyAsync(x => x.Id == dto.FromUserId); + if(!isExistUser2) throw new BaseException(CodeDefine.USER_NOT_FOUND); + // 检查是否已有好友关系或待处理请求 + bool alreadyExists = await _context.FriendRequests.AnyAsync(x => + x.RequestUser == dto.FromUserId && x.ResponseUser == dto.ToUserId && x.State == (sbyte)FriendRequestState.Pending + ); + if (alreadyExists) + throw new BaseException(CodeDefine.FRIEND_REQUEST_EXISTS); + + var friendShip = await _context.Friends.FirstOrDefaultAsync(x => x.UserId == dto.FromUserId && x.FriendId == dto.ToUserId); + + //检查是否被对方拉黑 + bool isBlocked = friendShip != null && friendShip.StatusEnum == FriendStatus.Blocked; + if (isBlocked) + throw new BaseException(CodeDefine.FRIEND_REQUEST_REJECTED); + if (friendShip != null) + throw new BaseException(CodeDefine.ALREADY_FRIENDS); + //生成实体 + var friendRequst = _mapper.Map(dto); + _context.FriendRequests.Add(friendRequst); + await _context.SaveChangesAsync(); + await _endpoint.Publish(new RequestFriendEvent() + { + AggregateId = friendRequst.Id.ToString(), + OccurredAt = friendRequst.Created.UtcDateTime, + Description = friendRequst.Description, + EventId = Guid.NewGuid(), + FromUserId = friendRequst.RequestUser, + ToUserId = friendRequst.ResponseUser, + OperatorId = friendRequst.RequestUser + }); + return true; + } + #endregion + + #region 创建好友关系 + public async Task MakeFriendshipAsync(int userAId, int userBId, string? remarkName) + { + bool userAexist = await _context.Friends.AnyAsync(x => x.UserId == userAId && x.FriendId == userBId); + if (!userAexist) + { + User? userbInfo = await _context.Users.FirstOrDefaultAsync(x => x.Id == userBId); + if (userbInfo is null) throw new BaseException(CodeDefine.USER_NOT_FOUND); + Friend friendA = new Friend() + { + Avatar = userbInfo.Avatar, + Created = DateTime.Now, + FriendId = userbInfo.Id, + RemarkName = remarkName ?? userbInfo.NickName, + StatusEnum = FriendStatus.Added, + UserId = userAId + }; + _context.Friends.Add(friendA); + await _context.SaveChangesAsync(); + } + } + #endregion + } +} diff --git a/backend/IM_API/Services/GroupService.cs b/backend/IM_API/Services/GroupService.cs index c78ebb9..85c0bb1 100644 --- a/backend/IM_API/Services/GroupService.cs +++ b/backend/IM_API/Services/GroupService.cs @@ -1,251 +1,251 @@ -using AutoMapper; -using AutoMapper.QueryableExtensions; -using IM_API.Domain.Events; -using IM_API.Dtos.Group; -using IM_API.Exceptions; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Tools; -using MassTransit; -using Microsoft.EntityFrameworkCore; -using System; - -namespace IM_API.Services -{ - public class GroupService : IGroupService - { - private readonly ImContext _context; - private readonly IMapper _mapper; - private readonly ILogger _logger; - private readonly IPublishEndpoint _endPoint; - private readonly IUserService _userService; - public GroupService(ImContext context, IMapper mapper, ILogger logger, - IPublishEndpoint publishEndpoint, IUserService userService) - { - _context = context; - _mapper = mapper; - _logger = logger; - _endPoint = publishEndpoint; - _userService = userService; - } - - private async Task> validFriendshipAsync (int userId, List ids) - { - DateTime dateTime = DateTime.UtcNow; - //验证被邀请用户是否为好友 - return await _context.Friends - .Where(f => f.UserId == userId && ids.Contains(f.FriendId)) - .Select(f => f.FriendId) - .ToListAsync(); - } - - public async Task CreateGroupAsync(int userId, GroupCreateDto groupCreateDto) - { - List userIds = groupCreateDto.UserIDs ?? []; - using var transaction = await _context.Database.BeginTransactionAsync(); - try - { - //先创建群 - DateTime dateTime = DateTime.Now; - Group group = _mapper.Map(groupCreateDto); - group.GroupMaster = userId; - _context.Groups.Add(group); - await _context.SaveChangesAsync(); - if (userIds.Count > 0) - { - //邀请好友 - await InviteUsersAsync(userId, group.Id ,userIds); - } - await transaction.CommitAsync(); - await _endPoint.Publish(new GroupJoinEvent - { - EventId = Guid.NewGuid(), - AggregateId = userId.ToString(), - GroupId = group.Id, - OccurredAt = dateTime, - OperatorId = userId, - UserId = userId, - IsCreated = true - }); - return _mapper.Map(group); - } - catch - { - await transaction.RollbackAsync(); - throw; - } - } - - public Task DeleteGroupAsync(int userId, int groupId) - { - throw new NotImplementedException(); - } - - public async Task InviteUsersAsync(int userId, int groupId, List userIds) - { - var group = await _context.Groups.FirstOrDefaultAsync( - x => x.Id == groupId) ?? throw new BaseException(CodeDefine.GROUP_NOT_FOUND); - //过滤非好友 - var groupInviteIds = await validFriendshipAsync(userId, userIds); - var inviteList = groupInviteIds.Select(id => new GroupInvite - { - Created = DateTime.UtcNow, - GroupId = group.Id, - InviteUser = userId, - InvitedUser = id, - StateEnum = GroupInviteState.Pending - }).ToList(); - _context.GroupInvites.AddRange(inviteList); - await _context.SaveChangesAsync(); - await _endPoint.Publish(new GroupInviteEvent - { - GroupId = groupId, - AggregateId = userId.ToString(), - OccurredAt = DateTime.UtcNow, - EventId = Guid.NewGuid(), - Ids = userIds, - OperatorId = userId, - UserId = userId - }); - } - - public async Task MakeGroupMemberAsync(int userId, int groupId ,GroupMemberRole? role) - { - var isExist = await _context.GroupMembers.AnyAsync(x => x.GroupId == groupId && x.UserId == userId); - if (isExist) return; - var groupMember = new GroupMember - { - UserId = userId, - Created = DateTime.UtcNow, - RoleEnum = role ?? GroupMemberRole.Normal, - GroupId = groupId - }; - _context.GroupMembers.Add(groupMember); - await _context.SaveChangesAsync(); - } - - public Task JoinGroupAsync(int userId, int groupId) - { - throw new NotImplementedException(); - } - - public async Task> GetGroupListAsync(int userId, int page, int limit, bool desc) - { - var query = _context.GroupMembers - .Where(x => x.UserId == userId) - .Select(s => s.Group); - if (desc) - { - query = query.OrderByDescending(x => x.Id); - } - var list = await query - .Skip((page - 1) * limit) - .Take(limit) - .ProjectTo(_mapper.ConfigurationProvider) - .ToListAsync(); - return list; - } - public async Task UpdateGroupConversationAsync(GroupUpdateConversationDto dto) - { - var group = await _context.Groups.FirstOrDefaultAsync(x => x.Id == dto.GroupId); - if (group is null) return; - group.LastMessage = dto.LastMessage; - group.MaxSequenceId = dto.MaxSequenceId; - group.LastSenderName = dto.LastSenderName; - group.LastUpdateTime = dto.LastUpdateTime; - _context.Groups.Update(group); - await _context.SaveChangesAsync(); - } - public async Task HandleGroupInviteAsync(int userid, HandleGroupInviteDto dto) - { - var user = _userService.GetUserInfoAsync(userid); - var inviteInfo = await _context.GroupInvites.FirstOrDefaultAsync(x => x.Id == dto.InviteId) - ?? throw new BaseException(CodeDefine.INVALID_ACTION); - if (inviteInfo.InvitedUser != userid) throw new BaseException(CodeDefine.AUTH_FAILED); - inviteInfo.StateEnum = dto.Action; - _context.GroupInvites.Update(inviteInfo); - await _context.SaveChangesAsync(); - await _endPoint.Publish(new GroupInviteActionUpdateEvent - { - Action = dto.Action, - AggregateId = userid.ToString(), - OccurredAt = DateTime.UtcNow, - EventId = Guid.NewGuid(), - GroupId = inviteInfo.GroupId, - InviteId = inviteInfo.Id, - InviteUserId = inviteInfo.InviteUser.Value, - OperatorId = userid, - UserId = userid - - }); - } - public async Task HandleGroupRequestAsync(int userid, HandleGroupRequestDto dto) - { - var user = _userService.GetUserInfoAsync(userid); - //判断请求存在 - var requestInfo = await _context.GroupRequests.FirstOrDefaultAsync(x => x.Id == dto.RequestId) - ?? throw new BaseException(CodeDefine.INVALID_ACTION); - //判断成员存在 - var memberInfo = await _context.GroupMembers.FirstOrDefaultAsync(x => x.UserId == userid) - ?? throw new BaseException(CodeDefine.NO_GROUP_PERMISSION); - //判断成员权限 - if (memberInfo.RoleEnum != GroupMemberRole.Master && memberInfo.RoleEnum != GroupMemberRole.Administrator) - throw new BaseException(CodeDefine.NO_GROUP_PERMISSION); - - requestInfo.StateEnum = dto.Action; - _context.GroupRequests.Update(requestInfo); - await _context.SaveChangesAsync(); - - await _endPoint.Publish(new GroupRequestUpdateEvent - { - Action = requestInfo.StateEnum, - AdminUserId = userid, - AggregateId = userid.ToString(), - OccurredAt = DateTime.UtcNow, - EventId = Guid.NewGuid(), - GroupId = requestInfo.GroupId, - OperatorId = userid, - UserId = requestInfo.UserId, - RequestId = requestInfo.Id - }); - } - public async Task MakeGroupRequestAsync(int userId, int? adminUserId, int groupId) - { - var requestInfo = await _context.GroupRequests - .FirstOrDefaultAsync(x => x.UserId == userId && x.GroupId == groupId); - if (requestInfo != null) return; - - var member = await _context.GroupMembers.FirstOrDefaultAsync( - x => x.UserId == adminUserId && x.GroupId == groupId); - var request = new GroupRequest - { - Created = DateTime.UtcNow, - Description = string.Empty, - GroupId = groupId, - UserId = userId, - StateEnum = GroupRequestState.Pending - }; - if(member != null && ( - member.RoleEnum == GroupMemberRole.Administrator || member.RoleEnum == GroupMemberRole.Master)) - { - request.StateEnum = GroupRequestState.Passed; - } - - _context.GroupRequests.Add(request); - await _context.SaveChangesAsync(); - - await _endPoint.Publish(new GroupRequestEvent - { - OccurredAt = DateTime.UtcNow, - Description = request.Description, - GroupId = request.GroupId, - Action = request.StateEnum, - UserId = userId, - AggregateId = userId.ToString(), - EventId = Guid.NewGuid(), - OperatorId = userId - }); - return; - } - } -} +using AutoMapper; +using AutoMapper.QueryableExtensions; +using IM_API.Domain.Events; +using IM_API.Dtos.Group; +using IM_API.Exceptions; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Tools; +using MassTransit; +using Microsoft.EntityFrameworkCore; +using System; + +namespace IM_API.Services +{ + public class GroupService : IGroupService + { + private readonly ImContext _context; + private readonly IMapper _mapper; + private readonly ILogger _logger; + private readonly IPublishEndpoint _endPoint; + private readonly IUserService _userService; + public GroupService(ImContext context, IMapper mapper, ILogger logger, + IPublishEndpoint publishEndpoint, IUserService userService) + { + _context = context; + _mapper = mapper; + _logger = logger; + _endPoint = publishEndpoint; + _userService = userService; + } + + private async Task> validFriendshipAsync (int userId, List ids) + { + DateTime dateTime = DateTime.UtcNow; + //验证被邀请用户是否为好友 + return await _context.Friends + .Where(f => f.UserId == userId && ids.Contains(f.FriendId)) + .Select(f => f.FriendId) + .ToListAsync(); + } + + public async Task CreateGroupAsync(int userId, GroupCreateDto groupCreateDto) + { + List userIds = groupCreateDto.UserIDs ?? []; + using var transaction = await _context.Database.BeginTransactionAsync(); + try + { + //先创建群 + DateTime dateTime = DateTime.Now; + Group group = _mapper.Map(groupCreateDto); + group.GroupMaster = userId; + _context.Groups.Add(group); + await _context.SaveChangesAsync(); + if (userIds.Count > 0) + { + //邀请好友 + await InviteUsersAsync(userId, group.Id ,userIds); + } + await transaction.CommitAsync(); + await _endPoint.Publish(new GroupJoinEvent + { + EventId = Guid.NewGuid(), + AggregateId = userId.ToString(), + GroupId = group.Id, + OccurredAt = dateTime, + OperatorId = userId, + UserId = userId, + IsCreated = true + }); + return _mapper.Map(group); + } + catch + { + await transaction.RollbackAsync(); + throw; + } + } + + public Task DeleteGroupAsync(int userId, int groupId) + { + throw new NotImplementedException(); + } + + public async Task InviteUsersAsync(int userId, int groupId, List userIds) + { + var group = await _context.Groups.FirstOrDefaultAsync( + x => x.Id == groupId) ?? throw new BaseException(CodeDefine.GROUP_NOT_FOUND); + //过滤非好友 + var groupInviteIds = await validFriendshipAsync(userId, userIds); + var inviteList = groupInviteIds.Select(id => new GroupInvite + { + Created = DateTime.UtcNow, + GroupId = group.Id, + InviteUser = userId, + InvitedUser = id, + StateEnum = GroupInviteState.Pending + }).ToList(); + _context.GroupInvites.AddRange(inviteList); + await _context.SaveChangesAsync(); + await _endPoint.Publish(new GroupInviteEvent + { + GroupId = groupId, + AggregateId = userId.ToString(), + OccurredAt = DateTime.UtcNow, + EventId = Guid.NewGuid(), + Ids = userIds, + OperatorId = userId, + UserId = userId + }); + } + + public async Task MakeGroupMemberAsync(int userId, int groupId ,GroupMemberRole? role) + { + var isExist = await _context.GroupMembers.AnyAsync(x => x.GroupId == groupId && x.UserId == userId); + if (isExist) return; + var groupMember = new GroupMember + { + UserId = userId, + Created = DateTime.UtcNow, + RoleEnum = role ?? GroupMemberRole.Normal, + GroupId = groupId + }; + _context.GroupMembers.Add(groupMember); + await _context.SaveChangesAsync(); + } + + public Task JoinGroupAsync(int userId, int groupId) + { + throw new NotImplementedException(); + } + + public async Task> GetGroupListAsync(int userId, int page, int limit, bool desc) + { + var query = _context.GroupMembers + .Where(x => x.UserId == userId) + .Select(s => s.Group); + if (desc) + { + query = query.OrderByDescending(x => x.Id); + } + var list = await query + .Skip((page - 1) * limit) + .Take(limit) + .ProjectTo(_mapper.ConfigurationProvider) + .ToListAsync(); + return list; + } + public async Task UpdateGroupConversationAsync(GroupUpdateConversationDto dto) + { + var group = await _context.Groups.FirstOrDefaultAsync(x => x.Id == dto.GroupId); + if (group is null) return; + group.LastMessage = dto.LastMessage; + group.MaxSequenceId = dto.MaxSequenceId; + group.LastSenderName = dto.LastSenderName; + group.LastUpdateTime = dto.LastUpdateTime; + _context.Groups.Update(group); + await _context.SaveChangesAsync(); + } + public async Task HandleGroupInviteAsync(int userid, HandleGroupInviteDto dto) + { + var user = _userService.GetUserInfoAsync(userid); + var inviteInfo = await _context.GroupInvites.FirstOrDefaultAsync(x => x.Id == dto.InviteId) + ?? throw new BaseException(CodeDefine.INVALID_ACTION); + if (inviteInfo.InvitedUser != userid) throw new BaseException(CodeDefine.AUTH_FAILED); + inviteInfo.StateEnum = dto.Action; + _context.GroupInvites.Update(inviteInfo); + await _context.SaveChangesAsync(); + await _endPoint.Publish(new GroupInviteActionUpdateEvent + { + Action = dto.Action, + AggregateId = userid.ToString(), + OccurredAt = DateTime.UtcNow, + EventId = Guid.NewGuid(), + GroupId = inviteInfo.GroupId, + InviteId = inviteInfo.Id, + InviteUserId = inviteInfo.InviteUser.Value, + OperatorId = userid, + UserId = userid + + }); + } + public async Task HandleGroupRequestAsync(int userid, HandleGroupRequestDto dto) + { + var user = _userService.GetUserInfoAsync(userid); + //判断请求存在 + var requestInfo = await _context.GroupRequests.FirstOrDefaultAsync(x => x.Id == dto.RequestId) + ?? throw new BaseException(CodeDefine.INVALID_ACTION); + //判断成员存在 + var memberInfo = await _context.GroupMembers.FirstOrDefaultAsync(x => x.UserId == userid) + ?? throw new BaseException(CodeDefine.NO_GROUP_PERMISSION); + //判断成员权限 + if (memberInfo.RoleEnum != GroupMemberRole.Master && memberInfo.RoleEnum != GroupMemberRole.Administrator) + throw new BaseException(CodeDefine.NO_GROUP_PERMISSION); + + requestInfo.StateEnum = dto.Action; + _context.GroupRequests.Update(requestInfo); + await _context.SaveChangesAsync(); + + await _endPoint.Publish(new GroupRequestUpdateEvent + { + Action = requestInfo.StateEnum, + AdminUserId = userid, + AggregateId = userid.ToString(), + OccurredAt = DateTime.UtcNow, + EventId = Guid.NewGuid(), + GroupId = requestInfo.GroupId, + OperatorId = userid, + UserId = requestInfo.UserId, + RequestId = requestInfo.Id + }); + } + public async Task MakeGroupRequestAsync(int userId, int? adminUserId, int groupId) + { + var requestInfo = await _context.GroupRequests + .FirstOrDefaultAsync(x => x.UserId == userId && x.GroupId == groupId); + if (requestInfo != null) return; + + var member = await _context.GroupMembers.FirstOrDefaultAsync( + x => x.UserId == adminUserId && x.GroupId == groupId); + var request = new GroupRequest + { + Created = DateTime.UtcNow, + Description = string.Empty, + GroupId = groupId, + UserId = userId, + StateEnum = GroupRequestState.Pending + }; + if(member != null && ( + member.RoleEnum == GroupMemberRole.Administrator || member.RoleEnum == GroupMemberRole.Master)) + { + request.StateEnum = GroupRequestState.Passed; + } + + _context.GroupRequests.Add(request); + await _context.SaveChangesAsync(); + + await _endPoint.Publish(new GroupRequestEvent + { + OccurredAt = DateTime.UtcNow, + Description = request.Description, + GroupId = request.GroupId, + Action = request.StateEnum, + UserId = userId, + AggregateId = userId.ToString(), + EventId = Guid.NewGuid(), + OperatorId = userId + }); + return; + } + } +} diff --git a/backend/IM_API/Services/JWTService.cs b/backend/IM_API/Services/JWTService.cs index 030beb4..aec98cd 100644 --- a/backend/IM_API/Services/JWTService.cs +++ b/backend/IM_API/Services/JWTService.cs @@ -1,55 +1,55 @@ -using IM_API.Interface.Services; -using Microsoft.IdentityModel.Tokens; -using System.IdentityModel.Tokens.Jwt; -using System.Security.Claims; -using System.Text; - -namespace IM_API.Services -{ - public class JWTService : IJWTService - { - private readonly IConfiguration _config; - private readonly string _key; - private readonly string _issuer; - private readonly string _audience; - private readonly int _accessMinutes; - - public JWTService(IConfiguration config) - { - _config = config; - _key = _config["Jwt:Key"]!; - _issuer = _config["Jwt:Issuer"]!; - _audience = _config["Jwt:Audience"]!; - _accessMinutes = int.Parse(_config["Jwt:AccessTokenMinutes"] ?? "15"); - } - - public string GenerateAccessToken(IEnumerable claims, DateTime expiresAt) - { - var keyBytes = Encoding.UTF8.GetBytes(_key); - var creds = new SigningCredentials(new SymmetricSecurityKey(keyBytes), SecurityAlgorithms.HmacSha256); - - var token = new JwtSecurityToken( - issuer: _issuer, - audience: _audience, - claims: claims, - expires: expiresAt, - signingCredentials: creds - ); - - return new JwtSecurityTokenHandler().WriteToken(token); - } - - public (string token, DateTime expiresAt) CreateAccessTokenForUser(int userId, string username, string role) - { - var expiresAt = DateTime.Now.AddMinutes(_accessMinutes); - var claims = new[] - { - new Claim(JwtRegisteredClaimNames.Sub, userId.ToString()), - new Claim(ClaimTypes.Name, username), - new Claim(ClaimTypes.Role, role) - }; - var token = GenerateAccessToken(claims, expiresAt); - return (token, expiresAt); - } - } -} +using IM_API.Interface.Services; +using Microsoft.IdentityModel.Tokens; +using System.IdentityModel.Tokens.Jwt; +using System.Security.Claims; +using System.Text; + +namespace IM_API.Services +{ + public class JWTService : IJWTService + { + private readonly IConfiguration _config; + private readonly string _key; + private readonly string _issuer; + private readonly string _audience; + private readonly int _accessMinutes; + + public JWTService(IConfiguration config) + { + _config = config; + _key = _config["Jwt:Key"]!; + _issuer = _config["Jwt:Issuer"]!; + _audience = _config["Jwt:Audience"]!; + _accessMinutes = int.Parse(_config["Jwt:AccessTokenMinutes"] ?? "15"); + } + + public string GenerateAccessToken(IEnumerable claims, DateTime expiresAt) + { + var keyBytes = Encoding.UTF8.GetBytes(_key); + var creds = new SigningCredentials(new SymmetricSecurityKey(keyBytes), SecurityAlgorithms.HmacSha256); + + var token = new JwtSecurityToken( + issuer: _issuer, + audience: _audience, + claims: claims, + expires: expiresAt, + signingCredentials: creds + ); + + return new JwtSecurityTokenHandler().WriteToken(token); + } + + public (string token, DateTime expiresAt) CreateAccessTokenForUser(int userId, string username, string role) + { + var expiresAt = DateTime.Now.AddMinutes(_accessMinutes); + var claims = new[] + { + new Claim(JwtRegisteredClaimNames.Sub, userId.ToString()), + new Claim(ClaimTypes.Name, username), + new Claim(ClaimTypes.Role, role) + }; + var token = GenerateAccessToken(claims, expiresAt); + return (token, expiresAt); + } + } +} diff --git a/backend/IM_API/Services/MessageService.cs b/backend/IM_API/Services/MessageService.cs index 07b0528..2ca00e7 100644 --- a/backend/IM_API/Services/MessageService.cs +++ b/backend/IM_API/Services/MessageService.cs @@ -1,164 +1,164 @@ -using AutoMapper; -using IM_API.Application.Interfaces; -using IM_API.Domain.Events; -using IM_API.Dtos; -using IM_API.Dtos.Message; -using IM_API.Exceptions; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Tools; -using IM_API.VOs.Message; -using MassTransit; -using Microsoft.EntityFrameworkCore; -using StackExchange.Redis; -using System.Text.Json; -using System.Text.RegularExpressions; -using static MassTransit.Monitoring.Performance.BuiltInCounters; -using static Microsoft.EntityFrameworkCore.DbLoggerCategory; - -namespace IM_API.Services -{ - public class MessageService : IMessageSevice - { - private readonly ImContext _context; - private readonly ILogger _logger; - private readonly IMapper _mapper; - //废弃,此处已使用rabbitMQ替代 - //private readonly IEventBus _eventBus; - private readonly IPublishEndpoint _endpoint; - private readonly ISequenceIdService _sequenceIdService; - private readonly IUserService _userService; - public MessageService( - ImContext context, ILogger logger, IMapper mapper, - IPublishEndpoint publishEndpoint, ISequenceIdService sequenceIdService, - IUserService userService - ) - { - _context = context; - _logger = logger; - _mapper = mapper; - //_eventBus = eventBus; - _endpoint = publishEndpoint; - _sequenceIdService = sequenceIdService; - _userService = userService; - } - - public async Task> GetMessagesAsync(int userId,MessageQueryDto dto) - { - //获取会话信息,用于获取双方聊天的唯一标识streamkey - Conversation? conversation = await _context.Conversations.FirstOrDefaultAsync( - x => x.Id == dto.ConversationId && x.UserId == userId - ); - if (conversation is null) throw new BaseException(CodeDefine.CONVERSATION_NOT_FOUND); - - var baseQuery = _context.Messages.Where(x => x.StreamKey == conversation.StreamKey); - List messages = new List(); - if (dto.Direction == 0) // Before: 找比锚点小的,按倒序排 - { - if (dto.Cursor.HasValue) - baseQuery = baseQuery.Where(m => m.SequenceId < dto.Cursor.Value); - - var list = await baseQuery - .OrderByDescending(m => m.SequenceId) // 最新消息在最前 - .Take(dto.Limit) - .Select(m => _mapper.Map(m)) - .ToListAsync(); - - messages = list.OrderBy(s => s.SequenceId).ToList(); - } - else // After: 找比锚点大的,按正序排(用于补洞或刷新) - { - // 如果 Cursor 为空且是 After,逻辑上说不通,通常直接返回空或报错 - if (!dto.Cursor.HasValue) return new List(); - - messages = await baseQuery - .Where(m => m.SequenceId > dto.Cursor.Value) - .OrderBy(m => m.SequenceId) // 按时间线正序 - .Take(dto.Limit) - .Select(m => _mapper.Map(m)) - .ToListAsync(); - } - //取发送者信息,用于前端展示 - if(messages.Count > 0) - { - var ids = messages - .Select(s => s.SenderId) - .Distinct() - .ToList(); - var userinfoList = await _userService.GetUserInfoListAsync(ids); - // 转为字典,提高查询效率 - var userDict = userinfoList.ToDictionary(x => x.Id, x => x); - - foreach (var item in messages) - { - if(userDict.TryGetValue(item.SenderId, out var user)) - { - item.SenderName = user.NickName; - item.SenderAvatar = user.Avatar ?? ""; - } - } - } - return messages; - } - - public Task GetUnreadCountAsync(int userId) - { - throw new NotImplementedException(); - } - - public Task> GetUnreadMessagesAsync(int userId) - { - throw new NotImplementedException(); - } - - public Task MarkAsReadAsync(int userId, long messageId) - { - throw new NotImplementedException(); - } - - public Task MarkConversationAsReadAsync(int userId, int? userBId, int? groupId) - { - throw new NotImplementedException(); - } - - public Task RecallMessageAsync(int userId, int messageId) - { - throw new NotImplementedException(); - } - - public async Task MakeMessageAsync(Message message) - { - _context.Messages.Add(message); - await _context.SaveChangesAsync(); - } - #region 发送群消息 - public async Task SendGroupMessageAsync(int senderId, int groupId, MessageBaseDto dto) - { - //判断群存在 - var isExist = await _context.Groups.AnyAsync(x => x.Id == groupId); - if (!isExist) throw new BaseException(CodeDefine.GROUP_NOT_FOUND); - //判断是否是群成员 - var isMember = await _context.GroupMembers.AnyAsync(x => x.GroupId == groupId && x.UserId == senderId); - if (!isMember) throw new BaseException(CodeDefine.NO_GROUP_PERMISSION); - var message = _mapper.Map(dto); - message.StreamKey = StreamKeyBuilder.Group(groupId); - message.SequenceId = await _sequenceIdService.GetNextSquenceIdAsync(message.StreamKey); - await _endpoint.Publish(_mapper.Map(message)); - return _mapper.Map(message); - - } - #endregion - #region 发送私聊消息 - public async Task SendPrivateMessageAsync(int senderId, int receiverId, MessageBaseDto dto) - { - bool isExist = await _context.Friends.AnyAsync(x => x.FriendId == receiverId); - if (!isExist) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); - var message = _mapper.Map(dto); - message.StreamKey = StreamKeyBuilder.Private(senderId, receiverId); - message.SequenceId = await _sequenceIdService.GetNextSquenceIdAsync(message.StreamKey); - await _endpoint.Publish(_mapper.Map(message)); - return _mapper.Map(message); - } - #endregion - } -} +using AutoMapper; +using IM_API.Application.Interfaces; +using IM_API.Domain.Events; +using IM_API.Dtos; +using IM_API.Dtos.Message; +using IM_API.Exceptions; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Tools; +using IM_API.VOs.Message; +using MassTransit; +using Microsoft.EntityFrameworkCore; +using StackExchange.Redis; +using System.Text.Json; +using System.Text.RegularExpressions; +using static MassTransit.Monitoring.Performance.BuiltInCounters; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory; + +namespace IM_API.Services +{ + public class MessageService : IMessageSevice + { + private readonly ImContext _context; + private readonly ILogger _logger; + private readonly IMapper _mapper; + //废弃,此处已使用rabbitMQ替代 + //private readonly IEventBus _eventBus; + private readonly IPublishEndpoint _endpoint; + private readonly ISequenceIdService _sequenceIdService; + private readonly IUserService _userService; + public MessageService( + ImContext context, ILogger logger, IMapper mapper, + IPublishEndpoint publishEndpoint, ISequenceIdService sequenceIdService, + IUserService userService + ) + { + _context = context; + _logger = logger; + _mapper = mapper; + //_eventBus = eventBus; + _endpoint = publishEndpoint; + _sequenceIdService = sequenceIdService; + _userService = userService; + } + + public async Task> GetMessagesAsync(int userId,MessageQueryDto dto) + { + //获取会话信息,用于获取双方聊天的唯一标识streamkey + Conversation? conversation = await _context.Conversations.FirstOrDefaultAsync( + x => x.Id == dto.ConversationId && x.UserId == userId + ); + if (conversation is null) throw new BaseException(CodeDefine.CONVERSATION_NOT_FOUND); + + var baseQuery = _context.Messages.Where(x => x.StreamKey == conversation.StreamKey); + List messages = new List(); + if (dto.Direction == 0) // Before: 找比锚点小的,按倒序排 + { + if (dto.Cursor.HasValue) + baseQuery = baseQuery.Where(m => m.SequenceId < dto.Cursor.Value); + + var list = await baseQuery + .OrderByDescending(m => m.SequenceId) // 最新消息在最前 + .Take(dto.Limit) + .Select(m => _mapper.Map(m)) + .ToListAsync(); + + messages = list.OrderBy(s => s.SequenceId).ToList(); + } + else // After: 找比锚点大的,按正序排(用于补洞或刷新) + { + // 如果 Cursor 为空且是 After,逻辑上说不通,通常直接返回空或报错 + if (!dto.Cursor.HasValue) return new List(); + + messages = await baseQuery + .Where(m => m.SequenceId > dto.Cursor.Value) + .OrderBy(m => m.SequenceId) // 按时间线正序 + .Take(dto.Limit) + .Select(m => _mapper.Map(m)) + .ToListAsync(); + } + //取发送者信息,用于前端展示 + if(messages.Count > 0) + { + var ids = messages + .Select(s => s.SenderId) + .Distinct() + .ToList(); + var userinfoList = await _userService.GetUserInfoListAsync(ids); + // 转为字典,提高查询效率 + var userDict = userinfoList.ToDictionary(x => x.Id, x => x); + + foreach (var item in messages) + { + if(userDict.TryGetValue(item.SenderId, out var user)) + { + item.SenderName = user.NickName; + item.SenderAvatar = user.Avatar ?? ""; + } + } + } + return messages; + } + + public Task GetUnreadCountAsync(int userId) + { + throw new NotImplementedException(); + } + + public Task> GetUnreadMessagesAsync(int userId) + { + throw new NotImplementedException(); + } + + public Task MarkAsReadAsync(int userId, long messageId) + { + throw new NotImplementedException(); + } + + public Task MarkConversationAsReadAsync(int userId, int? userBId, int? groupId) + { + throw new NotImplementedException(); + } + + public Task RecallMessageAsync(int userId, int messageId) + { + throw new NotImplementedException(); + } + + public async Task MakeMessageAsync(Message message) + { + _context.Messages.Add(message); + await _context.SaveChangesAsync(); + } + #region 发送群消息 + public async Task SendGroupMessageAsync(int senderId, int groupId, MessageBaseDto dto) + { + //判断群存在 + var isExist = await _context.Groups.AnyAsync(x => x.Id == groupId); + if (!isExist) throw new BaseException(CodeDefine.GROUP_NOT_FOUND); + //判断是否是群成员 + var isMember = await _context.GroupMembers.AnyAsync(x => x.GroupId == groupId && x.UserId == senderId); + if (!isMember) throw new BaseException(CodeDefine.NO_GROUP_PERMISSION); + var message = _mapper.Map(dto); + message.StreamKey = StreamKeyBuilder.Group(groupId); + message.SequenceId = await _sequenceIdService.GetNextSquenceIdAsync(message.StreamKey); + await _endpoint.Publish(_mapper.Map(message)); + return _mapper.Map(message); + + } + #endregion + #region 发送私聊消息 + public async Task SendPrivateMessageAsync(int senderId, int receiverId, MessageBaseDto dto) + { + bool isExist = await _context.Friends.AnyAsync(x => x.FriendId == receiverId); + if (!isExist) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); + var message = _mapper.Map(dto); + message.StreamKey = StreamKeyBuilder.Private(senderId, receiverId); + message.SequenceId = await _sequenceIdService.GetNextSquenceIdAsync(message.StreamKey); + await _endpoint.Publish(_mapper.Map(message)); + return _mapper.Map(message); + } + #endregion + } +} diff --git a/backend/IM_API/Services/RedisCacheService.cs b/backend/IM_API/Services/RedisCacheService.cs index b6bb9a9..383fdca 100644 --- a/backend/IM_API/Services/RedisCacheService.cs +++ b/backend/IM_API/Services/RedisCacheService.cs @@ -1,62 +1,62 @@ -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Tools; -using Microsoft.Extensions.Caching.Distributed; -using System.Text.Json; - -namespace IM_API.Services -{ - public class RedisCacheService:ICacheService - { - private readonly IDistributedCache _cache; - public RedisCacheService(IDistributedCache cache) - { - _cache = cache; - } - - public async Task GetAsync(string key) - { - var valueBytes= await _cache.GetAsync(key); - if (valueBytes is null || valueBytes.Length == 0) return default; - return JsonSerializer.Deserialize(valueBytes); - } - - public async Task GetUserCacheAsync(string username) - { - var usernameKey = RedisKeys.GetUserinfoKeyByUsername(username); - var userid = await GetAsync(usernameKey); - if (userid is null) return default; - var key = RedisKeys.GetUserinfoKey(userid); - return await GetAsync(key); - } - - public async Task RemoveAsync(string key) => await _cache.RemoveAsync(key); - - public async Task RemoveUserCacheAsync(string username) - { - var usernameKey = RedisKeys.GetUserinfoKeyByUsername(username); - var userid = await GetAsync(usernameKey); - if (userid is null) return; - var key = RedisKeys.GetUserinfoKey(userid); - await RemoveAsync(key); - } - - public async Task SetAsync(string key, T value, TimeSpan? expiration = null) - { - var options = new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = expiration ?? TimeSpan.FromHours(1) - }; - var valueBytes = JsonSerializer.SerializeToUtf8Bytes(value); - await _cache.SetAsync(key, valueBytes, options); - } - - public async Task SetUserCacheAsync(User user) - { - var idKey = RedisKeys.GetUserinfoKey(user.Id.ToString()); - await SetAsync(idKey, user); - var usernameKey = RedisKeys.GetUserinfoKeyByUsername(user.Username); - await SetAsync(usernameKey, user.Id.ToString()); - } - } -} +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Tools; +using Microsoft.Extensions.Caching.Distributed; +using System.Text.Json; + +namespace IM_API.Services +{ + public class RedisCacheService:ICacheService + { + private readonly IDistributedCache _cache; + public RedisCacheService(IDistributedCache cache) + { + _cache = cache; + } + + public async Task GetAsync(string key) + { + var valueBytes= await _cache.GetAsync(key); + if (valueBytes is null || valueBytes.Length == 0) return default; + return JsonSerializer.Deserialize(valueBytes); + } + + public async Task GetUserCacheAsync(string username) + { + var usernameKey = RedisKeys.GetUserinfoKeyByUsername(username); + var userid = await GetAsync(usernameKey); + if (userid is null) return default; + var key = RedisKeys.GetUserinfoKey(userid); + return await GetAsync(key); + } + + public async Task RemoveAsync(string key) => await _cache.RemoveAsync(key); + + public async Task RemoveUserCacheAsync(string username) + { + var usernameKey = RedisKeys.GetUserinfoKeyByUsername(username); + var userid = await GetAsync(usernameKey); + if (userid is null) return; + var key = RedisKeys.GetUserinfoKey(userid); + await RemoveAsync(key); + } + + public async Task SetAsync(string key, T value, TimeSpan? expiration = null) + { + var options = new DistributedCacheEntryOptions + { + AbsoluteExpirationRelativeToNow = expiration ?? TimeSpan.FromHours(1) + }; + var valueBytes = JsonSerializer.SerializeToUtf8Bytes(value); + await _cache.SetAsync(key, valueBytes, options); + } + + public async Task SetUserCacheAsync(User user) + { + var idKey = RedisKeys.GetUserinfoKey(user.Id.ToString()); + await SetAsync(idKey, user); + var usernameKey = RedisKeys.GetUserinfoKeyByUsername(user.Username); + await SetAsync(usernameKey, user.Id.ToString()); + } + } +} diff --git a/backend/IM_API/Services/RedisRefreshTokenService.cs b/backend/IM_API/Services/RedisRefreshTokenService.cs index 60b3a81..f5512af 100644 --- a/backend/IM_API/Services/RedisRefreshTokenService.cs +++ b/backend/IM_API/Services/RedisRefreshTokenService.cs @@ -1,66 +1,66 @@ -using IM_API.Interface.Services; -using Microsoft.AspNetCore.Connections; -using Newtonsoft.Json; -using StackExchange.Redis; -using System.Numerics; -using System.Security.Cryptography; -using System.Text.Json; - -namespace IM_API.Services -{ - public class RedisRefreshTokenService : IRefreshTokenService - { - private readonly ILogger _logger; - //redis数据库 - private readonly IDatabase _db; - private IConfiguration configuration; - //过期时长 - private readonly TimeSpan _refreshTTL; - public RedisRefreshTokenService(ILogger logger, IConnectionMultiplexer multiplexer, IConfiguration configuration) - { - _logger = logger; - _db = multiplexer.GetDatabase(); - this.configuration = configuration; - //设置refresh过期时间 - var days = int.Parse(this.configuration["Jwt:RefreshTokenDays"] ?? "30"); - _refreshTTL = TimeSpan.FromDays(days); - } - - private static string GenerateTokenStr() - { - var bytes = RandomNumberGenerator.GetBytes(32); - return Convert.ToBase64String(bytes); - } - - public async Task CreateRefreshTokenAsync(int userId, CancellationToken ct = default) - { - string token = GenerateTokenStr(); - var payload = new { UserId = userId,CreateAt = DateTime.Now}; - string json = JsonConvert.SerializeObject(payload); - //token写入redis - await _db.StringSetAsync(token,json,_refreshTTL); - return token; - } - - public async Task RevokeRefreshTokenAsync(string token, CancellationToken ct = default) - { - await _db.KeyDeleteAsync(token); - } - - public async Task<(bool ok, int userId)> ValidateRefreshTokenAsync(string token, CancellationToken ct = default) - { - var json = await _db.StringGetAsync(token); - if (json.IsNullOrEmpty) return (false,-1); - try - { - using var doc = JsonDocument.Parse(json.ToString()); - var userId = doc.RootElement.GetProperty("UserId").GetInt32(); - return (true,userId); - } - catch - { - return (false,-1); - } - } - } -} +using IM_API.Interface.Services; +using Microsoft.AspNetCore.Connections; +using Newtonsoft.Json; +using StackExchange.Redis; +using System.Numerics; +using System.Security.Cryptography; +using System.Text.Json; + +namespace IM_API.Services +{ + public class RedisRefreshTokenService : IRefreshTokenService + { + private readonly ILogger _logger; + //redis数据库 + private readonly IDatabase _db; + private IConfiguration configuration; + //过期时长 + private readonly TimeSpan _refreshTTL; + public RedisRefreshTokenService(ILogger logger, IConnectionMultiplexer multiplexer, IConfiguration configuration) + { + _logger = logger; + _db = multiplexer.GetDatabase(); + this.configuration = configuration; + //设置refresh过期时间 + var days = int.Parse(this.configuration["Jwt:RefreshTokenDays"] ?? "30"); + _refreshTTL = TimeSpan.FromDays(days); + } + + private static string GenerateTokenStr() + { + var bytes = RandomNumberGenerator.GetBytes(32); + return Convert.ToBase64String(bytes); + } + + public async Task CreateRefreshTokenAsync(int userId, CancellationToken ct = default) + { + string token = GenerateTokenStr(); + var payload = new { UserId = userId,CreateAt = DateTime.Now}; + string json = JsonConvert.SerializeObject(payload); + //token写入redis + await _db.StringSetAsync(token,json,_refreshTTL); + return token; + } + + public async Task RevokeRefreshTokenAsync(string token, CancellationToken ct = default) + { + await _db.KeyDeleteAsync(token); + } + + public async Task<(bool ok, int userId)> ValidateRefreshTokenAsync(string token, CancellationToken ct = default) + { + var json = await _db.StringGetAsync(token); + if (json.IsNullOrEmpty) return (false,-1); + try + { + using var doc = JsonDocument.Parse(json.ToString()); + var userId = doc.RootElement.GetProperty("UserId").GetInt32(); + return (true,userId); + } + catch + { + return (false,-1); + } + } + } +} diff --git a/backend/IM_API/Services/SequenceIdService.cs b/backend/IM_API/Services/SequenceIdService.cs index 3db52a6..f4229d8 100644 --- a/backend/IM_API/Services/SequenceIdService.cs +++ b/backend/IM_API/Services/SequenceIdService.cs @@ -1,46 +1,46 @@ -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Tools; -using Microsoft.EntityFrameworkCore; -using RedLockNet; -using StackExchange.Redis; - -namespace IM_API.Services -{ - public class SequenceIdService : ISequenceIdService - { - private IDatabase _database; - private IDistributedLockFactory _lockFactory; - private ImContext _context; - public SequenceIdService(IConnectionMultiplexer connectionMultiplexer, - IDistributedLockFactory distributedLockFactory, ImContext imContext) - { - _database = connectionMultiplexer.GetDatabase(); - _lockFactory = distributedLockFactory; - _context = imContext; - } - public async Task GetNextSquenceIdAsync(string streamKey) - { - string key = RedisKeys.GetSequenceIdKey(streamKey); - string lockKey = RedisKeys.GetSequenceIdLockKey(streamKey); - var exists = await _database.KeyExistsAsync(key); - if (!exists) - { - using (var _lock = await _lockFactory.CreateLockAsync(lockKey, TimeSpan.FromSeconds(5))) - { - if (_lock.IsAcquired) - { - if(!await _database.KeyExistsAsync(key)) - { - var max = await _context.Messages - .Where(x => x.StreamKey == streamKey) - .MaxAsync(m => (long?)m.SequenceId) ?? 0; - await _database.StringSetAsync(key, max, TimeSpan.FromDays(7)); - } - } - } - } - return await _database.StringIncrementAsync(key); - } - } -} +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Tools; +using Microsoft.EntityFrameworkCore; +using RedLockNet; +using StackExchange.Redis; + +namespace IM_API.Services +{ + public class SequenceIdService : ISequenceIdService + { + private IDatabase _database; + private IDistributedLockFactory _lockFactory; + private ImContext _context; + public SequenceIdService(IConnectionMultiplexer connectionMultiplexer, + IDistributedLockFactory distributedLockFactory, ImContext imContext) + { + _database = connectionMultiplexer.GetDatabase(); + _lockFactory = distributedLockFactory; + _context = imContext; + } + public async Task GetNextSquenceIdAsync(string streamKey) + { + string key = RedisKeys.GetSequenceIdKey(streamKey); + string lockKey = RedisKeys.GetSequenceIdLockKey(streamKey); + var exists = await _database.KeyExistsAsync(key); + if (!exists) + { + using (var _lock = await _lockFactory.CreateLockAsync(lockKey, TimeSpan.FromSeconds(5))) + { + if (_lock.IsAcquired) + { + if(!await _database.KeyExistsAsync(key)) + { + var max = await _context.Messages + .Where(x => x.StreamKey == streamKey) + .MaxAsync(m => (long?)m.SequenceId) ?? 0; + await _database.StringSetAsync(key, max, TimeSpan.FromDays(7)); + } + } + } + } + return await _database.StringIncrementAsync(key); + } + } +} diff --git a/backend/IM_API/Services/UserService.cs b/backend/IM_API/Services/UserService.cs index 1ffbe57..f0f86f1 100644 --- a/backend/IM_API/Services/UserService.cs +++ b/backend/IM_API/Services/UserService.cs @@ -1,129 +1,129 @@ -using AutoMapper; -using IM_API.Dtos.User; -using IM_API.Exceptions; -using IM_API.Interface.Services; -using IM_API.Models; -using IM_API.Tools; -using Microsoft.EntityFrameworkCore; -using StackExchange.Redis; -using System.Text.Json; - -namespace IM_API.Services -{ - public class UserService : IUserService - { - private readonly ImContext _context; - private readonly ILogger _logger; - private readonly IMapper _mapper; - private readonly ICacheService _cacheService; - private readonly IDatabase _redis; - public UserService( - ImContext imContext,ILogger logger, - IMapper mapper, ICacheService cacheService, IConnectionMultiplexer connectionMultiplexer) - { - this._context = imContext; - this._logger = logger; - this._mapper = mapper; - _cacheService = cacheService; - _redis = connectionMultiplexer.GetDatabase(); - } - #region 获取用户信息 - public async Task GetUserInfoAsync(int userId) - { - //查询redis缓存,如果存在直接返回不走查库逻辑 - var key = RedisKeys.GetUserinfoKey(userId.ToString()); - var userinfoCache = await _cacheService.GetAsync(key); - if (userinfoCache != null) return _mapper.Map(userinfoCache); - //无缓存查库 - var user = await _context.Users - .FirstOrDefaultAsync(x => x.Id == userId); - if (user == null) - { - throw new BaseException(CodeDefine.USER_NOT_FOUND); - } - await _cacheService.SetUserCacheAsync(user); - return _mapper.Map(user); - } - #endregion - #region 通过用户名获取用户信息 - public async Task GetUserInfoByUsernameAsync(string username) - { - var userinfo = await _cacheService.GetUserCacheAsync(username); - if (userinfo != null) return _mapper.Map(userinfo); - var user = await _context.Users.FirstOrDefaultAsync(x => x.Username == username); - if (user == null) - { - throw new BaseException(CodeDefine.USER_NOT_FOUND); - } - await _cacheService.SetUserCacheAsync(user); - return _mapper.Map(user); - } - #endregion - #region 重置用户密码 - public async Task ResetPasswordAsync(int userId, string oldPassword, string password) - { - var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == userId); - if (user is null) throw new BaseException(CodeDefine.USER_NOT_FOUND); - //验证原密码 - if (user.Password != oldPassword) throw new BaseException(CodeDefine.PASSWORD_ERROR); - user.Password = password; - await _context.SaveChangesAsync(); - return true; - } - #endregion - #region 更新用户在线状态 - public async Task UpdateOlineStatusAsync(int userId,UserOnlineStatus onlineStatus) - { - var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == userId); - if (user is null) throw new BaseException(CodeDefine.USER_NOT_FOUND); - user.OnlineStatusEnum = onlineStatus; - await _context.SaveChangesAsync(); - return true; - } - #endregion - #region 更新用户信息 - public async Task UpdateUserAsync(int userId,UpdateUserDto dto) - { - var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == userId); - if (user is null) throw new BaseException(CodeDefine.USER_NOT_FOUND); - _mapper.Map(dto,user); - await _context.SaveChangesAsync(); - await _cacheService.SetUserCacheAsync(user); - return _mapper.Map(user); - } - #endregion - #region 批量获取用户信息 - public async Task> GetUserInfoListAsync(List ids) - { - //读取缓存中存在的用户,存在直接添加到结果列表 - var idKeyArr = ids.Select(s => (RedisKey)RedisKeys.GetUserinfoKey(s.ToString())).ToArray(); - var values = await _redis.StringGetAsync(idKeyArr); - List results = []; - List missingIds = []; - for(int i = 0; i < ids.Count; i++) - { - if (values[i].HasValue) - { - results.Add(JsonSerializer.Deserialize(values[i])); - } - else - { - missingIds.Add(ids[i]); - } - } - //如果存在没有缓存的用户则进行查库 - if (missingIds.Any()) - { - var dbUsers = await _context.Users - .Where(x => ids.Contains(x.Id)).ToListAsync(); - - results.AddRange(dbUsers); - - var setTasks = dbUsers.Select(s => _cacheService.SetUserCacheAsync(s)).ToList(); - await Task.WhenAll(setTasks); - } - return _mapper.Map>(results); - } - #endregion - } -} +using AutoMapper; +using IM_API.Dtos.User; +using IM_API.Exceptions; +using IM_API.Interface.Services; +using IM_API.Models; +using IM_API.Tools; +using Microsoft.EntityFrameworkCore; +using StackExchange.Redis; +using System.Text.Json; + +namespace IM_API.Services +{ + public class UserService : IUserService + { + private readonly ImContext _context; + private readonly ILogger _logger; + private readonly IMapper _mapper; + private readonly ICacheService _cacheService; + private readonly IDatabase _redis; + public UserService( + ImContext imContext,ILogger logger, + IMapper mapper, ICacheService cacheService, IConnectionMultiplexer connectionMultiplexer) + { + this._context = imContext; + this._logger = logger; + this._mapper = mapper; + _cacheService = cacheService; + _redis = connectionMultiplexer.GetDatabase(); + } + #region 获取用户信息 + public async Task GetUserInfoAsync(int userId) + { + //查询redis缓存,如果存在直接返回不走查库逻辑 + var key = RedisKeys.GetUserinfoKey(userId.ToString()); + var userinfoCache = await _cacheService.GetAsync(key); + if (userinfoCache != null) return _mapper.Map(userinfoCache); + //无缓存查库 + var user = await _context.Users + .FirstOrDefaultAsync(x => x.Id == userId); + if (user == null) + { + throw new BaseException(CodeDefine.USER_NOT_FOUND); + } + await _cacheService.SetUserCacheAsync(user); + return _mapper.Map(user); + } + #endregion + #region 通过用户名获取用户信息 + public async Task GetUserInfoByUsernameAsync(string username) + { + var userinfo = await _cacheService.GetUserCacheAsync(username); + if (userinfo != null) return _mapper.Map(userinfo); + var user = await _context.Users.FirstOrDefaultAsync(x => x.Username == username); + if (user == null) + { + throw new BaseException(CodeDefine.USER_NOT_FOUND); + } + await _cacheService.SetUserCacheAsync(user); + return _mapper.Map(user); + } + #endregion + #region 重置用户密码 + public async Task ResetPasswordAsync(int userId, string oldPassword, string password) + { + var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == userId); + if (user is null) throw new BaseException(CodeDefine.USER_NOT_FOUND); + //验证原密码 + if (user.Password != oldPassword) throw new BaseException(CodeDefine.PASSWORD_ERROR); + user.Password = password; + await _context.SaveChangesAsync(); + return true; + } + #endregion + #region 更新用户在线状态 + public async Task UpdateOlineStatusAsync(int userId,UserOnlineStatus onlineStatus) + { + var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == userId); + if (user is null) throw new BaseException(CodeDefine.USER_NOT_FOUND); + user.OnlineStatusEnum = onlineStatus; + await _context.SaveChangesAsync(); + return true; + } + #endregion + #region 更新用户信息 + public async Task UpdateUserAsync(int userId,UpdateUserDto dto) + { + var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == userId); + if (user is null) throw new BaseException(CodeDefine.USER_NOT_FOUND); + _mapper.Map(dto,user); + await _context.SaveChangesAsync(); + await _cacheService.SetUserCacheAsync(user); + return _mapper.Map(user); + } + #endregion + #region 批量获取用户信息 + public async Task> GetUserInfoListAsync(List ids) + { + //读取缓存中存在的用户,存在直接添加到结果列表 + var idKeyArr = ids.Select(s => (RedisKey)RedisKeys.GetUserinfoKey(s.ToString())).ToArray(); + var values = await _redis.StringGetAsync(idKeyArr); + List results = []; + List missingIds = []; + for(int i = 0; i < ids.Count; i++) + { + if (values[i].HasValue) + { + results.Add(JsonSerializer.Deserialize(values[i])); + } + else + { + missingIds.Add(ids[i]); + } + } + //如果存在没有缓存的用户则进行查库 + if (missingIds.Any()) + { + var dbUsers = await _context.Users + .Where(x => ids.Contains(x.Id)).ToListAsync(); + + results.AddRange(dbUsers); + + var setTasks = dbUsers.Select(s => _cacheService.SetUserCacheAsync(s)).ToList(); + await Task.WhenAll(setTasks); + } + return _mapper.Map>(results); + } + #endregion + } +} diff --git a/backend/IM_API/Tools/CodeDefine.cs b/backend/IM_API/Tools/CodeDefine.cs index e62989e..cf0e8af 100644 --- a/backend/IM_API/Tools/CodeDefine.cs +++ b/backend/IM_API/Tools/CodeDefine.cs @@ -1,109 +1,109 @@ -namespace IM_API.Tools -{ - public class CodeDefine - { - public int Code { get; set; } - public string Message { get; set; } - - public CodeDefine(int code, string message) - { - Code = code; - Message = message; - } - // 3.1 成功类 - /// 成功响应 - public static CodeDefine SUCCESS = new CodeDefine(0, "成功"); - - // 3.2 系统级错误(1000 ~ 1999) - /// 未知异常 - public static CodeDefine SYSTEM_ERROR = new CodeDefine(1000, "系统错误"); - /// 服务器维护中或宕机 - public static CodeDefine SERVICE_UNAVAILABLE = new CodeDefine(1001, "服务不可用"); - /// 后端超时 - public static CodeDefine REQUEST_TIMEOUT = new CodeDefine(1002, "请求超时"); - /// 缺少或参数不合法 - public static CodeDefine PARAMETER_ERROR = new CodeDefine(1003, "参数错误"); - /// 数据库读写失败 - public static CodeDefine DATABASE_ERROR = new CodeDefine(1004, "数据库错误"); - /// 无权限访问 - public static CodeDefine PERMISSION_DENIED = new CodeDefine(1005, "权限不足"); - /// Token 无效/过期 - public static CodeDefine AUTH_FAILED = new CodeDefine(1006, "认证失败"); - - // 3.3 用户相关错误(2000 ~ 2099) - /// 查询不到用户 - public static CodeDefine USER_NOT_FOUND = new CodeDefine(2000, "用户不存在"); - /// 注册时用户已存在 - public static CodeDefine USER_ALREADY_EXISTS = new CodeDefine(2001, "用户已存在"); - /// 登录密码错误 - public static CodeDefine PASSWORD_ERROR = new CodeDefine(2002, "密码错误"); - /// 被管理员封禁 - public static CodeDefine USER_DISABLED = new CodeDefine(2003, "用户被禁用"); - /// 需重新登录 - public static CodeDefine LOGIN_EXPIRED = new CodeDefine(2004, "登录过期"); - - // 3.4 好友相关错误(2100 ~ 2199) - /// 重复申请 - public static CodeDefine FRIEND_REQUEST_EXISTS = new CodeDefine(2100, "好友申请已存在"); - /// 不是好友 - public static CodeDefine FRIEND_RELATION_NOT_FOUND = new CodeDefine(2101, "好友关系不存在"); - /// 重复添加 - public static CodeDefine ALREADY_FRIENDS = new CodeDefine(2102, "已经是好友"); - /// 被对方拒绝 - public static CodeDefine FRIEND_REQUEST_REJECTED = new CodeDefine(2103, "好友请求被拒绝"); - /// 被对方拉黑 - public static CodeDefine CANNOT_ADD_FRIEND = new CodeDefine(2104, "无法申请加好友"); - /// 好友请求不存在 - public static CodeDefine FRIEND_REQUEST_NOT_FOUND = new CodeDefine(2105, "好友请求不存在"); - /// 处理好友请求操作无效 - public static CodeDefine INVALID_ACTION = new CodeDefine(2106, "处理好友请求操作无效"); - - // 3.5 群聊相关错误(2200 ~ 2299) - /// 查询不到群 - public static CodeDefine GROUP_NOT_FOUND = new CodeDefine(2200, "群不存在"); - /// 不能重复加入 - public static CodeDefine ALREADY_IN_GROUP = new CodeDefine(2201, "已在群中"); - /// 超出限制 - public static CodeDefine GROUP_FULL = new CodeDefine(2202, "群成员已满"); - /// 需要邀请/验证 - public static CodeDefine NO_GROUP_PERMISSION = new CodeDefine(2203, "无加群权限"); - /// 邀请链接过期 - public static CodeDefine GROUP_INVITE_EXPIRED = new CodeDefine(2204, "群邀请已过期"); - - // 3.6 消息相关错误(2300 ~ 2399) - /// 发送时异常 - public static CodeDefine MESSAGE_SEND_FAILED = new CodeDefine(2300, "消息发送失败"); - /// 查询不到消息 - public static CodeDefine MESSAGE_NOT_FOUND = new CodeDefine(2301, "消息不存在"); - /// 超过时间限制 - public static CodeDefine MESSAGE_RECALL_FAILED = new CodeDefine(2302, "消息撤回失败"); - /// message_type 不合法 - public static CodeDefine UNSUPPORTED_MESSAGE_TYPE = new CodeDefine(2303, "不支持的消息类型"); - - // 3.7 文件相关错误(2400 ~ 2499) - /// 存储服务错误 - public static CodeDefine FILE_UPLOAD_FAILED = new CodeDefine(2400, "文件上传失败"); - /// 下载时未找到 - public static CodeDefine FILE_NOT_FOUND = new CodeDefine(2401, "文件不存在"); - /// 超过配置限制 - public static CodeDefine FILE_TOO_LARGE = new CodeDefine(2402, "文件大小超限"); - /// 格式不允许 - public static CodeDefine FILE_TYPE_NOT_SUPPORTED = new CodeDefine(2403, "文件类型不支持"); - - // 3.8 管理后台相关错误(3000 ~ 3099) - /// 账号错误 - public static CodeDefine ADMIN_NOT_FOUND = new CodeDefine(3000, "管理员不存在"); - /// 后台登录失败 - public static CodeDefine ADMIN_PASSWORD_ERROR = new CodeDefine(3001, "密码错误"); - /// 角色未找到 - public static CodeDefine ROLE_NOT_FOUND = new CodeDefine(3002, "角色不存在"); - /// 无操作权限 - public static CodeDefine ADMIN_PERMISSION_DENIED = new CodeDefine(3003, "权限不足"); - /// 后台日志写入失败 - public static CodeDefine OPERATION_LOG_FAILED = new CodeDefine(3004, "操作记录失败"); - - // 3.9 会话相关错误(3100 ~ 3199) - /// 发送时异常 - public static CodeDefine CONVERSATION_NOT_FOUND = new CodeDefine(3100, "会话不存在"); - } -} +namespace IM_API.Tools +{ + public class CodeDefine + { + public int Code { get; set; } + public string Message { get; set; } + + public CodeDefine(int code, string message) + { + Code = code; + Message = message; + } + // 3.1 成功类 + /// 成功响应 + public static CodeDefine SUCCESS = new CodeDefine(0, "成功"); + + // 3.2 系统级错误(1000 ~ 1999) + /// 未知异常 + public static CodeDefine SYSTEM_ERROR = new CodeDefine(1000, "系统错误"); + /// 服务器维护中或宕机 + public static CodeDefine SERVICE_UNAVAILABLE = new CodeDefine(1001, "服务不可用"); + /// 后端超时 + public static CodeDefine REQUEST_TIMEOUT = new CodeDefine(1002, "请求超时"); + /// 缺少或参数不合法 + public static CodeDefine PARAMETER_ERROR = new CodeDefine(1003, "参数错误"); + /// 数据库读写失败 + public static CodeDefine DATABASE_ERROR = new CodeDefine(1004, "数据库错误"); + /// 无权限访问 + public static CodeDefine PERMISSION_DENIED = new CodeDefine(1005, "权限不足"); + /// Token 无效/过期 + public static CodeDefine AUTH_FAILED = new CodeDefine(1006, "认证失败"); + + // 3.3 用户相关错误(2000 ~ 2099) + /// 查询不到用户 + public static CodeDefine USER_NOT_FOUND = new CodeDefine(2000, "用户不存在"); + /// 注册时用户已存在 + public static CodeDefine USER_ALREADY_EXISTS = new CodeDefine(2001, "用户已存在"); + /// 登录密码错误 + public static CodeDefine PASSWORD_ERROR = new CodeDefine(2002, "密码错误"); + /// 被管理员封禁 + public static CodeDefine USER_DISABLED = new CodeDefine(2003, "用户被禁用"); + /// 需重新登录 + public static CodeDefine LOGIN_EXPIRED = new CodeDefine(2004, "登录过期"); + + // 3.4 好友相关错误(2100 ~ 2199) + /// 重复申请 + public static CodeDefine FRIEND_REQUEST_EXISTS = new CodeDefine(2100, "好友申请已存在"); + /// 不是好友 + public static CodeDefine FRIEND_RELATION_NOT_FOUND = new CodeDefine(2101, "好友关系不存在"); + /// 重复添加 + public static CodeDefine ALREADY_FRIENDS = new CodeDefine(2102, "已经是好友"); + /// 被对方拒绝 + public static CodeDefine FRIEND_REQUEST_REJECTED = new CodeDefine(2103, "好友请求被拒绝"); + /// 被对方拉黑 + public static CodeDefine CANNOT_ADD_FRIEND = new CodeDefine(2104, "无法申请加好友"); + /// 好友请求不存在 + public static CodeDefine FRIEND_REQUEST_NOT_FOUND = new CodeDefine(2105, "好友请求不存在"); + /// 处理好友请求操作无效 + public static CodeDefine INVALID_ACTION = new CodeDefine(2106, "处理好友请求操作无效"); + + // 3.5 群聊相关错误(2200 ~ 2299) + /// 查询不到群 + public static CodeDefine GROUP_NOT_FOUND = new CodeDefine(2200, "群不存在"); + /// 不能重复加入 + public static CodeDefine ALREADY_IN_GROUP = new CodeDefine(2201, "已在群中"); + /// 超出限制 + public static CodeDefine GROUP_FULL = new CodeDefine(2202, "群成员已满"); + /// 需要邀请/验证 + public static CodeDefine NO_GROUP_PERMISSION = new CodeDefine(2203, "无加群权限"); + /// 邀请链接过期 + public static CodeDefine GROUP_INVITE_EXPIRED = new CodeDefine(2204, "群邀请已过期"); + + // 3.6 消息相关错误(2300 ~ 2399) + /// 发送时异常 + public static CodeDefine MESSAGE_SEND_FAILED = new CodeDefine(2300, "消息发送失败"); + /// 查询不到消息 + public static CodeDefine MESSAGE_NOT_FOUND = new CodeDefine(2301, "消息不存在"); + /// 超过时间限制 + public static CodeDefine MESSAGE_RECALL_FAILED = new CodeDefine(2302, "消息撤回失败"); + /// message_type 不合法 + public static CodeDefine UNSUPPORTED_MESSAGE_TYPE = new CodeDefine(2303, "不支持的消息类型"); + + // 3.7 文件相关错误(2400 ~ 2499) + /// 存储服务错误 + public static CodeDefine FILE_UPLOAD_FAILED = new CodeDefine(2400, "文件上传失败"); + /// 下载时未找到 + public static CodeDefine FILE_NOT_FOUND = new CodeDefine(2401, "文件不存在"); + /// 超过配置限制 + public static CodeDefine FILE_TOO_LARGE = new CodeDefine(2402, "文件大小超限"); + /// 格式不允许 + public static CodeDefine FILE_TYPE_NOT_SUPPORTED = new CodeDefine(2403, "文件类型不支持"); + + // 3.8 管理后台相关错误(3000 ~ 3099) + /// 账号错误 + public static CodeDefine ADMIN_NOT_FOUND = new CodeDefine(3000, "管理员不存在"); + /// 后台登录失败 + public static CodeDefine ADMIN_PASSWORD_ERROR = new CodeDefine(3001, "密码错误"); + /// 角色未找到 + public static CodeDefine ROLE_NOT_FOUND = new CodeDefine(3002, "角色不存在"); + /// 无操作权限 + public static CodeDefine ADMIN_PERMISSION_DENIED = new CodeDefine(3003, "权限不足"); + /// 后台日志写入失败 + public static CodeDefine OPERATION_LOG_FAILED = new CodeDefine(3004, "操作记录失败"); + + // 3.9 会话相关错误(3100 ~ 3199) + /// 发送时异常 + public static CodeDefine CONVERSATION_NOT_FOUND = new CodeDefine(3100, "会话不存在"); + } +} diff --git a/backend/IM_API/Tools/PasswordHasher.cs b/backend/IM_API/Tools/PasswordHasher.cs index 3431848..07eb5d8 100644 --- a/backend/IM_API/Tools/PasswordHasher.cs +++ b/backend/IM_API/Tools/PasswordHasher.cs @@ -1,21 +1,21 @@ -using System.Security.Cryptography; -using System.Text; - -namespace IM_API.Tools -{ - public static class PasswordHasher - { - public static string HashPassword(string password) - { - using var sha256 = SHA256.Create(); - var hashedBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(password)); - return Convert.ToBase64String(hashedBytes); - } - - public static bool VerifyPassword(string password, string hashedPassword) - { - var hashedInput = HashPassword(password); - return hashedInput == hashedPassword; - } - } -} +using System.Security.Cryptography; +using System.Text; + +namespace IM_API.Tools +{ + public static class PasswordHasher + { + public static string HashPassword(string password) + { + using var sha256 = SHA256.Create(); + var hashedBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(password)); + return Convert.ToBase64String(hashedBytes); + } + + public static bool VerifyPassword(string password, string hashedPassword) + { + var hashedInput = HashPassword(password); + return hashedInput == hashedPassword; + } + } +} diff --git a/backend/IM_API/Tools/RedisKeys.cs b/backend/IM_API/Tools/RedisKeys.cs index d7949be..b218d1d 100644 --- a/backend/IM_API/Tools/RedisKeys.cs +++ b/backend/IM_API/Tools/RedisKeys.cs @@ -1,11 +1,11 @@ -namespace IM_API.Tools -{ - public static class RedisKeys - { - public static string GetUserinfoKey(string userId) => $"user::uinfo::{userId}"; - public static string GetUserinfoKeyByUsername(string username) => $"user::uinfobyid::{username}"; - public static string GetSequenceIdKey(string streamKey) => $"chat::seq::{streamKey}"; - public static string GetSequenceIdLockKey(string streamKey) => $"lock::seq::{streamKey}"; - public static string GetConnectionIdKey(string userId) => $"signalr::user::con::{userId}"; - } -} +namespace IM_API.Tools +{ + public static class RedisKeys + { + public static string GetUserinfoKey(string userId) => $"user::uinfo::{userId}"; + public static string GetUserinfoKeyByUsername(string username) => $"user::uinfobyid::{username}"; + public static string GetSequenceIdKey(string streamKey) => $"chat::seq::{streamKey}"; + public static string GetSequenceIdLockKey(string streamKey) => $"lock::seq::{streamKey}"; + public static string GetConnectionIdKey(string userId) => $"signalr::user::con::{userId}"; + } +} diff --git a/backend/IM_API/Tools/SignalRMethodDefine.cs b/backend/IM_API/Tools/SignalRMethodDefine.cs index 829ec14..85e14e1 100644 --- a/backend/IM_API/Tools/SignalRMethodDefine.cs +++ b/backend/IM_API/Tools/SignalRMethodDefine.cs @@ -1,7 +1,7 @@ -namespace IM_API.Tools -{ - public class SignalRMethodDefine - { - public static string ReceiveMessage = "ReceiveMessage"; - } -} +namespace IM_API.Tools +{ + public class SignalRMethodDefine + { + public static string ReceiveMessage = "ReceiveMessage"; + } +} diff --git a/backend/IM_API/Tools/StreamKeyBuilder.cs b/backend/IM_API/Tools/StreamKeyBuilder.cs index c7eee60..a14f43a 100644 --- a/backend/IM_API/Tools/StreamKeyBuilder.cs +++ b/backend/IM_API/Tools/StreamKeyBuilder.cs @@ -1,17 +1,17 @@ -namespace IM_API.Tools -{ - public static class StreamKeyBuilder - { - public static string Private(long a, long b) - { - if (a <= 0 || b <= 0) throw new ArgumentException(); - return $"p:{(a < b ? $"{a}_{b}" : $"{b}_{a}")}"; - } - - public static string Group(long groupId) - { - if (groupId <= 0) throw new ArgumentException(); - return $"g:{groupId}"; - } - } -} +namespace IM_API.Tools +{ + public static class StreamKeyBuilder + { + public static string Private(long a, long b) + { + if (a <= 0 || b <= 0) throw new ArgumentException(); + return $"p:{(a < b ? $"{a}_{b}" : $"{b}_{a}")}"; + } + + public static string Group(long groupId) + { + if (groupId <= 0) throw new ArgumentException(); + return $"g:{groupId}"; + } + } +} diff --git a/backend/IM_API/Tools/UTCConverter.cs b/backend/IM_API/Tools/UTCConverter.cs index bc422cd..06e374c 100644 --- a/backend/IM_API/Tools/UTCConverter.cs +++ b/backend/IM_API/Tools/UTCConverter.cs @@ -1,18 +1,18 @@ -using System.Text.Json; - -namespace IM_API.Tools -{ - public class UtcDateTimeConverter : System.Text.Json.Serialization.JsonConverter - { - public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - => reader.GetDateTime(); - - public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) - { - // 如果 Kind 已经是 Utc,直接输出。 - // 如果不是,先 SpecifyKind 再输出,确保不会发生时区偏移计算 - var utcDate = value.Kind == DateTimeKind.Utc ? value : DateTime.SpecifyKind(value, DateTimeKind.Utc); - writer.WriteStringValue(utcDate.ToString("yyyy-MM-ddTHH:mm:ssZ")); - } - } -} +using System.Text.Json; + +namespace IM_API.Tools +{ + public class UtcDateTimeConverter : System.Text.Json.Serialization.JsonConverter + { + public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + => reader.GetDateTime(); + + public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) + { + // 如果 Kind 已经是 Utc,直接输出。 + // 如果不是,先 SpecifyKind 再输出,确保不会发生时区偏移计算 + var utcDate = value.Kind == DateTimeKind.Utc ? value : DateTime.SpecifyKind(value, DateTimeKind.Utc); + writer.WriteStringValue(utcDate.ToString("yyyy-MM-ddTHH:mm:ssZ")); + } + } +} diff --git a/backend/IM_API/VOs/Auth/LoginVo.cs b/backend/IM_API/VOs/Auth/LoginVo.cs index 3e2c524..5de5edc 100644 --- a/backend/IM_API/VOs/Auth/LoginVo.cs +++ b/backend/IM_API/VOs/Auth/LoginVo.cs @@ -1,18 +1,18 @@ -using IM_API.Dtos.User; - -namespace IM_API.VOs.Auth -{ - public class LoginVo - { - public UserInfoDto userInfo { get; set; } - public string Token { get; set; } - public string RefreshToken { get; set; } - public DateTimeOffset ExpireAt { get; set; } - public LoginVo(UserInfoDto userInfo,string token, string refreshToken, DateTime expireAt) { - this.userInfo = userInfo; - Token = token; - RefreshToken = refreshToken; - ExpireAt = expireAt; - } - } -} +using IM_API.Dtos.User; + +namespace IM_API.VOs.Auth +{ + public class LoginVo + { + public UserInfoDto userInfo { get; set; } + public string Token { get; set; } + public string RefreshToken { get; set; } + public DateTimeOffset ExpireAt { get; set; } + public LoginVo(UserInfoDto userInfo,string token, string refreshToken, DateTime expireAt) { + this.userInfo = userInfo; + Token = token; + RefreshToken = refreshToken; + ExpireAt = expireAt; + } + } +} diff --git a/backend/IM_API/VOs/Conversation/ConversationVo.cs b/backend/IM_API/VOs/Conversation/ConversationVo.cs index 5d98a82..6653941 100644 --- a/backend/IM_API/VOs/Conversation/ConversationVo.cs +++ b/backend/IM_API/VOs/Conversation/ConversationVo.cs @@ -1,53 +1,53 @@ -using IM_API.Dtos; -using IM_API.Models; -using IM_API.VOs.Message; - -namespace IM_API.VOs.Conversation -{ - public class ConversationVo - { - public int Id { get; set; } - - /// - /// 用户 - /// - public int UserId { get; set; } - - /// - /// 对方ID(群聊为群聊ID,单聊为单聊ID) - /// - public int TargetId { get; set; } - - /// - /// 最后一条未读消息ID - /// - public long? LastSequenceId { get; set; } - - /// - /// 未读消息数 - /// - public int UnreadCount { get; set; } - - public ChatType ChatType { get; set; } - - - /// - /// 最后一条最新消息 - /// - public string LastMessage { get; set; } = null!; - /// - /// 最后一条消息时间 - /// - public DateTimeOffset? DateTime { get; set; } = null; - - /// - /// 对方昵称 - /// - public string TargetName { get; set; } - /// - /// 对方头像 - /// - public string? TargetAvatar { get; set; } - - } -} +using IM_API.Dtos; +using IM_API.Models; +using IM_API.VOs.Message; + +namespace IM_API.VOs.Conversation +{ + public class ConversationVo + { + public int Id { get; set; } + + /// + /// 用户 + /// + public int UserId { get; set; } + + /// + /// 对方ID(群聊为群聊ID,单聊为单聊ID) + /// + public int TargetId { get; set; } + + /// + /// 最后一条未读消息ID + /// + public long? LastSequenceId { get; set; } + + /// + /// 未读消息数 + /// + public int UnreadCount { get; set; } + + public ChatType ChatType { get; set; } + + + /// + /// 最后一条最新消息 + /// + public string LastMessage { get; set; } = null!; + /// + /// 最后一条消息时间 + /// + public DateTimeOffset? DateTime { get; set; } = null; + + /// + /// 对方昵称 + /// + public string TargetName { get; set; } + /// + /// 对方头像 + /// + public string? TargetAvatar { get; set; } + + } +} diff --git a/backend/IM_API/VOs/Group/GroupInviteActionUpdateVo.cs b/backend/IM_API/VOs/Group/GroupInviteActionUpdateVo.cs index 23fdd23..780431e 100644 --- a/backend/IM_API/VOs/Group/GroupInviteActionUpdateVo.cs +++ b/backend/IM_API/VOs/Group/GroupInviteActionUpdateVo.cs @@ -1,13 +1,13 @@ -using IM_API.Models; - -namespace IM_API.VOs.Group -{ - public class GroupInviteActionUpdateVo - { - public int GroupId { get; set; } - public int InviteUserId { get; set; } - public int InvitedUserId { get; set; } - public int InviteId { get; set; } - public GroupInviteState Action { get; set; } - } -} +using IM_API.Models; + +namespace IM_API.VOs.Group +{ + public class GroupInviteActionUpdateVo + { + public int GroupId { get; set; } + public int InviteUserId { get; set; } + public int InvitedUserId { get; set; } + public int InviteId { get; set; } + public GroupInviteState Action { get; set; } + } +} diff --git a/backend/IM_API/VOs/Group/GroupInviteVo.cs b/backend/IM_API/VOs/Group/GroupInviteVo.cs index f56d3cd..33a6ccd 100644 --- a/backend/IM_API/VOs/Group/GroupInviteVo.cs +++ b/backend/IM_API/VOs/Group/GroupInviteVo.cs @@ -1,9 +1,9 @@ -namespace IM_API.VOs.Group -{ - public class GroupInviteVo - { - public int GroupId { get; set; } - public int UserId { get; set; } - - } -} +namespace IM_API.VOs.Group +{ + public class GroupInviteVo + { + public int GroupId { get; set; } + public int UserId { get; set; } + + } +} diff --git a/backend/IM_API/VOs/Group/GroupJoinVo.cs b/backend/IM_API/VOs/Group/GroupJoinVo.cs index c6b85a4..69c4b37 100644 --- a/backend/IM_API/VOs/Group/GroupJoinVo.cs +++ b/backend/IM_API/VOs/Group/GroupJoinVo.cs @@ -1,8 +1,8 @@ -namespace IM_API.VOs.Group -{ - public class GroupJoinVo - { - public int UserId { get; set; } - public int GroupId { get; set; } - } -} +namespace IM_API.VOs.Group +{ + public class GroupJoinVo + { + public int UserId { get; set; } + public int GroupId { get; set; } + } +} diff --git a/backend/IM_API/VOs/Group/GroupRequestUpdateVo.cs b/backend/IM_API/VOs/Group/GroupRequestUpdateVo.cs index 337f6e5..89c3bef 100644 --- a/backend/IM_API/VOs/Group/GroupRequestUpdateVo.cs +++ b/backend/IM_API/VOs/Group/GroupRequestUpdateVo.cs @@ -1,9 +1,9 @@ -namespace IM_API.VOs.Group -{ - public class GroupRequestUpdateVo - { - public int RequestId { get; set; } - public int GroupId { get; set; } - public int UserId { get; set; } - } -} +namespace IM_API.VOs.Group +{ + public class GroupRequestUpdateVo + { + public int RequestId { get; set; } + public int GroupId { get; set; } + public int UserId { get; set; } + } +} diff --git a/backend/IM_API/VOs/Message/MessageBaseVo.cs b/backend/IM_API/VOs/Message/MessageBaseVo.cs index a377a4f..68f9442 100644 --- a/backend/IM_API/VOs/Message/MessageBaseVo.cs +++ b/backend/IM_API/VOs/Message/MessageBaseVo.cs @@ -1,11 +1,11 @@ -using IM_API.Dtos; - -namespace IM_API.VOs.Message -{ - public record MessageBaseVo:MessageBaseDto - { - public int SequenceId { get; set; } - public string SenderName { get; set; } = ""; - public string SenderAvatar { get; set; } = ""; - } -} +using IM_API.Dtos; + +namespace IM_API.VOs.Message +{ + public record MessageBaseVo:MessageBaseDto + { + public int SequenceId { get; set; } + public string SenderName { get; set; } = ""; + public string SenderAvatar { get; set; } = ""; + } +} diff --git a/backend/IM_API/appsettings.Development.json b/backend/IM_API/appsettings.Development.json index 0c208ae..ff66ba6 100644 --- a/backend/IM_API/appsettings.Development.json +++ b/backend/IM_API/appsettings.Development.json @@ -1,8 +1,8 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/backend/IM_API/appsettings.json b/backend/IM_API/appsettings.json index fc895fb..0ad51c3 100644 --- a/backend/IM_API/appsettings.json +++ b/backend/IM_API/appsettings.json @@ -1,26 +1,26 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*", - "Jwt": { - "Key": "YourSuperSecretKey123456784124214190!", - "Issuer": "IMDemo", - "Audience": "IMClients", - "AccessTokenMinutes": 30, - "RefreshTokenDays": 30 - }, - "ConnectionStrings": { - "DefaultConnection": "Server=frp-era.com;Port=26582;Database=IM;User=product;Password=12345678;", - "Redis": "192.168.5.100:6379" - }, - "RabbitMQOptions": { - "Host": "192.168.5.100", - "Port": 5672, - "Username": "test", - "Password": "123456" - } -} +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "Jwt": { + "Key": "YourSuperSecretKey123456784124214190!", + "Issuer": "IMDemo", + "Audience": "IMClients", + "AccessTokenMinutes": 30, + "RefreshTokenDays": 30 + }, + "ConnectionStrings": { + "DefaultConnection": "Server=192.168.3.100;Port=3306;Database=IM;User=root;Password=13872911434Dyw@;", + "Redis": "192.168.3.100:6379" + }, + "RabbitMQOptions": { + "Host": "192.168.3.100", + "Port": 5672, + "Username": "test", + "Password": "123456" + } +} diff --git a/backend/SignalRTest/.vs/SignalRTest/v17/DocumentLayout.backup.json b/backend/SignalRTest/.vs/SignalRTest/v17/DocumentLayout.backup.json index 05a3c84..dd054fa 100644 --- a/backend/SignalRTest/.vs/SignalRTest/v17/DocumentLayout.backup.json +++ b/backend/SignalRTest/.vs/SignalRTest/v17/DocumentLayout.backup.json @@ -1,57 +1,57 @@ -{ - "Version": 1, - "WorkspaceRootPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\", - "Documents": [ - { - "AbsoluteMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", - "RelativeMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|solutionrelative:form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" - }, - { - "AbsoluteMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|c:\\users\\nanxun\\documents\\im\\backend\\signalrtest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|solutionrelative:form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - } - ], - "DocumentGroupContainers": [ - { - "Orientation": 0, - "VerticalTabListWidth": 256, - "DocumentGroups": [ - { - "DockedWidth": 200, - "SelectedChildIndex": 1, - "Children": [ - { - "$type": "Bookmark", - "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "Form1.cs [\u8BBE\u8BA1]", - "DocumentMoniker": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", - "RelativeDocumentMoniker": "Form1.cs", - "ToolTip": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs [\u8BBE\u8BA1]", - "RelativeToolTip": "Form1.cs [\u8BBE\u8BA1]", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-06T07:30:28.584Z", - "EditorCaption": " [\u8BBE\u8BA1]" - }, - { - "$type": "Document", - "DocumentIndex": 1, - "Title": "Form1.cs", - "DocumentMoniker": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", - "RelativeDocumentMoniker": "Form1.cs", - "ToolTip": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", - "RelativeToolTip": "Form1.cs", - "ViewState": "AgIAAA4AAAAAAAAAAAAuwBQAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-06T07:28:32.613Z", - "EditorCaption": "" - } - ] - } - ] - } - ] +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|solutionrelative:form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|c:\\users\\nanxun\\documents\\im\\backend\\signalrtest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|solutionrelative:form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Form1.cs [\u8BBE\u8BA1]", + "DocumentMoniker": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", + "RelativeDocumentMoniker": "Form1.cs", + "ToolTip": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs [\u8BBE\u8BA1]", + "RelativeToolTip": "Form1.cs [\u8BBE\u8BA1]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-12-06T07:30:28.584Z", + "EditorCaption": " [\u8BBE\u8BA1]" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "Form1.cs", + "DocumentMoniker": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", + "RelativeDocumentMoniker": "Form1.cs", + "ToolTip": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", + "RelativeToolTip": "Form1.cs", + "ViewState": "AgIAAA4AAAAAAAAAAAAuwBQAAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-12-06T07:28:32.613Z", + "EditorCaption": "" + } + ] + } + ] + } + ] } \ No newline at end of file diff --git a/backend/SignalRTest/.vs/SignalRTest/v17/DocumentLayout.json b/backend/SignalRTest/.vs/SignalRTest/v17/DocumentLayout.json index 5ba6d86..d0b1db9 100644 --- a/backend/SignalRTest/.vs/SignalRTest/v17/DocumentLayout.json +++ b/backend/SignalRTest/.vs/SignalRTest/v17/DocumentLayout.json @@ -1,56 +1,56 @@ -{ - "Version": 1, - "WorkspaceRootPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\", - "Documents": [ - { - "AbsoluteMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|c:\\users\\nanxun\\documents\\im\\backend\\signalrtest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", - "RelativeMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|solutionrelative:form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" - }, - { - "AbsoluteMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|c:\\users\\nanxun\\documents\\im\\backend\\signalrtest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|solutionrelative:form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - } - ], - "DocumentGroupContainers": [ - { - "Orientation": 0, - "VerticalTabListWidth": 256, - "DocumentGroups": [ - { - "DockedWidth": 200, - "SelectedChildIndex": 1, - "Children": [ - { - "$type": "Bookmark", - "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "Form1.cs [\u8BBE\u8BA1]", - "DocumentMoniker": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", - "RelativeDocumentMoniker": "Form1.cs", - "ToolTip": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs [\u8BBE\u8BA1]", - "RelativeToolTip": "Form1.cs [\u8BBE\u8BA1]", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-06T07:30:28.584Z", - "EditorCaption": " [\u8BBE\u8BA1]" - }, - { - "$type": "Document", - "DocumentIndex": 1, - "Title": "Form1.cs", - "DocumentMoniker": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", - "RelativeDocumentMoniker": "Form1.cs", - "ToolTip": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", - "RelativeToolTip": "Form1.cs", - "ViewState": "AgIAAA4AAAAAAAAAAAAuwBQAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-06T07:28:32.613Z" - } - ] - } - ] - } - ] +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|c:\\users\\nanxun\\documents\\im\\backend\\signalrtest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|solutionrelative:form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|c:\\users\\nanxun\\documents\\im\\backend\\signalrtest\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}|SignalRTest.csproj|solutionrelative:form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Form1.cs [\u8BBE\u8BA1]", + "DocumentMoniker": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", + "RelativeDocumentMoniker": "Form1.cs", + "ToolTip": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs [\u8BBE\u8BA1]", + "RelativeToolTip": "Form1.cs [\u8BBE\u8BA1]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-12-06T07:30:28.584Z", + "EditorCaption": " [\u8BBE\u8BA1]" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "Form1.cs", + "DocumentMoniker": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", + "RelativeDocumentMoniker": "Form1.cs", + "ToolTip": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\Form1.cs", + "RelativeToolTip": "Form1.cs", + "ViewState": "AgIAAA4AAAAAAAAAAAAuwBQAAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-12-06T07:28:32.613Z" + } + ] + } + ] + } + ] } \ No newline at end of file diff --git a/backend/SignalRTest/Form1.Designer.cs b/backend/SignalRTest/Form1.Designer.cs index 5878f90..b0c861c 100644 --- a/backend/SignalRTest/Form1.Designer.cs +++ b/backend/SignalRTest/Form1.Designer.cs @@ -1,206 +1,206 @@ -namespace SignalRTest -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - components = new System.ComponentModel.Container(); - button1 = new Button(); - button2 = new Button(); - txtUrl = new TextBox(); - TokenTxt = new TextBox(); - UrlLab = new Label(); - label2 = new Label(); - Historylab = new RichTextBox(); - label3 = new Label(); - MethodTxt = new TextBox(); - label4 = new Label(); - SendMsg = new Button(); - ParamsTxt = new TextBox(); - label5 = new Label(); - toolTip1 = new ToolTip(components); - SuspendLayout(); - // - // button1 - // - button1.Location = new Point(143, 294); - button1.Name = "button1"; - button1.Size = new Size(94, 29); - button1.TabIndex = 0; - button1.Text = "连接"; - button1.UseVisualStyleBackColor = true; - button1.Click += button1_Click; - // - // button2 - // - button2.Location = new Point(278, 294); - button2.Name = "button2"; - button2.Size = new Size(94, 29); - button2.TabIndex = 1; - button2.Text = "断开连接"; - button2.UseVisualStyleBackColor = true; - button2.Click += button2_Click; - // - // txtUrl - // - txtUrl.Location = new Point(112, 39); - txtUrl.Name = "txtUrl"; - txtUrl.Size = new Size(303, 27); - txtUrl.TabIndex = 2; - txtUrl.Text = "http://localhost:5202/chat"; - // - // TokenTxt - // - TokenTxt.Location = new Point(553, 39); - TokenTxt.Name = "TokenTxt"; - TokenTxt.Size = new Size(125, 27); - TokenTxt.TabIndex = 3; - // - // UrlLab - // - UrlLab.AutoSize = true; - UrlLab.Location = new Point(31, 42); - UrlLab.Name = "UrlLab"; - UrlLab.Size = new Size(38, 20); - UrlLab.TabIndex = 4; - UrlLab.Text = "URL"; - // - // label2 - // - label2.AutoSize = true; - label2.Location = new Point(475, 42); - label2.Name = "label2"; - label2.Size = new Size(69, 20); - label2.TabIndex = 5; - label2.Text = "登录凭证"; - // - // Historylab - // - Historylab.Location = new Point(112, 85); - Historylab.Name = "Historylab"; - Historylab.Size = new Size(303, 188); - Historylab.TabIndex = 6; - Historylab.Text = ""; - // - // label3 - // - label3.AutoSize = true; - label3.Location = new Point(16, 165); - label3.Name = "label3"; - label3.Size = new Size(69, 20); - label3.TabIndex = 7; - label3.Text = "消息历史"; - // - // MethodTxt - // - MethodTxt.Location = new Point(553, 182); - MethodTxt.Name = "MethodTxt"; - MethodTxt.Size = new Size(125, 27); - MethodTxt.TabIndex = 8; - toolTip1.SetToolTip(MethodTxt, "后端hub内对应方法名,大小写敏感"); - // - // label4 - // - label4.AutoSize = true; - label4.Location = new Point(475, 182); - label4.Name = "label4"; - label4.Size = new Size(39, 20); - label4.TabIndex = 9; - label4.Text = "方法"; - toolTip1.SetToolTip(label4, "后端hub内对应方法名,大小写敏感"); - // - // SendMsg - // - SendMsg.Location = new Point(705, 244); - SendMsg.Name = "SendMsg"; - SendMsg.Size = new Size(94, 29); - SendMsg.TabIndex = 10; - SendMsg.Text = "发送"; - SendMsg.UseVisualStyleBackColor = true; - SendMsg.Click += SendMsg_Click; - // - // ParamsTxt - // - ParamsTxt.Location = new Point(553, 246); - ParamsTxt.Name = "ParamsTxt"; - ParamsTxt.Size = new Size(125, 27); - ParamsTxt.TabIndex = 11; - toolTip1.SetToolTip(ParamsTxt, "hub方法对应参数,请使用以下格式:[参数1,参数2,参数3,...]"); - // - // label5 - // - label5.AutoSize = true; - label5.Location = new Point(475, 253); - label5.Name = "label5"; - label5.Size = new Size(39, 20); - label5.TabIndex = 12; - label5.Text = "参数"; - toolTip1.SetToolTip(label5, "hub方法对应参数,请使用以下格式:[参数1,参数2,参数3,...]"); - // - // Form1 - // - AutoScaleDimensions = new SizeF(9F, 20F); - AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(800, 450); - Controls.Add(label5); - Controls.Add(ParamsTxt); - Controls.Add(SendMsg); - Controls.Add(label4); - Controls.Add(MethodTxt); - Controls.Add(label3); - Controls.Add(Historylab); - Controls.Add(label2); - Controls.Add(UrlLab); - Controls.Add(TokenTxt); - Controls.Add(txtUrl); - Controls.Add(button2); - Controls.Add(button1); - Name = "Form1"; - Text = "SignalR调试工具"; - Load += Form1_Load; - ResumeLayout(false); - PerformLayout(); - } - - #endregion - - private Button button1; - private Button button2; - private TextBox txtUrl; - private TextBox TokenTxt; - private Label UrlLab; - private Label label2; - private RichTextBox Historylab; - private Label label3; - private TextBox MethodTxt; - private Label label4; - private Button SendMsg; - private TextBox ParamsTxt; - private Label label5; - private ToolTip toolTip1; - } -} +namespace SignalRTest +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + button1 = new Button(); + button2 = new Button(); + txtUrl = new TextBox(); + TokenTxt = new TextBox(); + UrlLab = new Label(); + label2 = new Label(); + Historylab = new RichTextBox(); + label3 = new Label(); + MethodTxt = new TextBox(); + label4 = new Label(); + SendMsg = new Button(); + ParamsTxt = new TextBox(); + label5 = new Label(); + toolTip1 = new ToolTip(components); + SuspendLayout(); + // + // button1 + // + button1.Location = new Point(143, 294); + button1.Name = "button1"; + button1.Size = new Size(94, 29); + button1.TabIndex = 0; + button1.Text = "连接"; + button1.UseVisualStyleBackColor = true; + button1.Click += button1_Click; + // + // button2 + // + button2.Location = new Point(278, 294); + button2.Name = "button2"; + button2.Size = new Size(94, 29); + button2.TabIndex = 1; + button2.Text = "断开连接"; + button2.UseVisualStyleBackColor = true; + button2.Click += button2_Click; + // + // txtUrl + // + txtUrl.Location = new Point(112, 39); + txtUrl.Name = "txtUrl"; + txtUrl.Size = new Size(303, 27); + txtUrl.TabIndex = 2; + txtUrl.Text = "http://localhost:5202/chat"; + // + // TokenTxt + // + TokenTxt.Location = new Point(553, 39); + TokenTxt.Name = "TokenTxt"; + TokenTxt.Size = new Size(125, 27); + TokenTxt.TabIndex = 3; + // + // UrlLab + // + UrlLab.AutoSize = true; + UrlLab.Location = new Point(31, 42); + UrlLab.Name = "UrlLab"; + UrlLab.Size = new Size(38, 20); + UrlLab.TabIndex = 4; + UrlLab.Text = "URL"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(475, 42); + label2.Name = "label2"; + label2.Size = new Size(69, 20); + label2.TabIndex = 5; + label2.Text = "登录凭证"; + // + // Historylab + // + Historylab.Location = new Point(112, 85); + Historylab.Name = "Historylab"; + Historylab.Size = new Size(303, 188); + Historylab.TabIndex = 6; + Historylab.Text = ""; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(16, 165); + label3.Name = "label3"; + label3.Size = new Size(69, 20); + label3.TabIndex = 7; + label3.Text = "消息历史"; + // + // MethodTxt + // + MethodTxt.Location = new Point(553, 182); + MethodTxt.Name = "MethodTxt"; + MethodTxt.Size = new Size(125, 27); + MethodTxt.TabIndex = 8; + toolTip1.SetToolTip(MethodTxt, "后端hub内对应方法名,大小写敏感"); + // + // label4 + // + label4.AutoSize = true; + label4.Location = new Point(475, 182); + label4.Name = "label4"; + label4.Size = new Size(39, 20); + label4.TabIndex = 9; + label4.Text = "方法"; + toolTip1.SetToolTip(label4, "后端hub内对应方法名,大小写敏感"); + // + // SendMsg + // + SendMsg.Location = new Point(705, 244); + SendMsg.Name = "SendMsg"; + SendMsg.Size = new Size(94, 29); + SendMsg.TabIndex = 10; + SendMsg.Text = "发送"; + SendMsg.UseVisualStyleBackColor = true; + SendMsg.Click += SendMsg_Click; + // + // ParamsTxt + // + ParamsTxt.Location = new Point(553, 246); + ParamsTxt.Name = "ParamsTxt"; + ParamsTxt.Size = new Size(125, 27); + ParamsTxt.TabIndex = 11; + toolTip1.SetToolTip(ParamsTxt, "hub方法对应参数,请使用以下格式:[参数1,参数2,参数3,...]"); + // + // label5 + // + label5.AutoSize = true; + label5.Location = new Point(475, 253); + label5.Name = "label5"; + label5.Size = new Size(39, 20); + label5.TabIndex = 12; + label5.Text = "参数"; + toolTip1.SetToolTip(label5, "hub方法对应参数,请使用以下格式:[参数1,参数2,参数3,...]"); + // + // Form1 + // + AutoScaleDimensions = new SizeF(9F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(label5); + Controls.Add(ParamsTxt); + Controls.Add(SendMsg); + Controls.Add(label4); + Controls.Add(MethodTxt); + Controls.Add(label3); + Controls.Add(Historylab); + Controls.Add(label2); + Controls.Add(UrlLab); + Controls.Add(TokenTxt); + Controls.Add(txtUrl); + Controls.Add(button2); + Controls.Add(button1); + Name = "Form1"; + Text = "SignalR调试工具"; + Load += Form1_Load; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Button button1; + private Button button2; + private TextBox txtUrl; + private TextBox TokenTxt; + private Label UrlLab; + private Label label2; + private RichTextBox Historylab; + private Label label3; + private TextBox MethodTxt; + private Label label4; + private Button SendMsg; + private TextBox ParamsTxt; + private Label label5; + private ToolTip toolTip1; + } +} diff --git a/backend/SignalRTest/Form1.cs b/backend/SignalRTest/Form1.cs index 8d7a9b6..a57dc02 100644 --- a/backend/SignalRTest/Form1.cs +++ b/backend/SignalRTest/Form1.cs @@ -1,143 +1,143 @@ -using Microsoft.AspNetCore.SignalR.Client; -using System.Text.Json; -using System.Windows.Forms; - -namespace SignalRTest -{ - public partial class Form1 : Form - { - private HubConnection _connection; - public Form1() - { - InitializeComponent(); - } - - private void Form1_Load(object sender, EventArgs e) - { - - } - - private async void button1_Click(object sender, EventArgs e) - { - try - { - _connection = new HubConnectionBuilder() - .WithUrl(txtUrl.Text, options => - { - options.AccessTokenProvider = () => - Task.FromResult(TokenTxt.Text); - }) - .WithAutomaticReconnect() - .Build(); - - _connection.On("ReceiveMessage", (user, message) => - { - Historylab.Invoke(new Action(() => - { - // ƶ굽ıĩβ - Historylab.SelectionStart = Historylab.TextLength; - Historylab.SelectionLength = 0; - - Historylab.SelectionColor = Color.Green; - Historylab.AppendText("Ϣ" + message + "\n"); - })); - }); - - _connection.Reconnecting += (ex) => - { - // ƶ굽ıĩβ - Historylab.SelectionStart = Historylab.TextLength; - Historylab.SelectionLength = 0; - - Historylab.SelectionColor = Color.Blue; - Historylab.AppendText("..." + "\n"); - return System.Threading.Tasks.Task.CompletedTask; - }; - - _connection.Reconnected += (id) => - { - // ƶ굽ıĩβ - Historylab.SelectionStart = Historylab.TextLength; - Historylab.SelectionLength = 0; - - Historylab.SelectionColor = Color.Blue; - Historylab.AppendText("ɹ" + "\n"); - return System.Threading.Tasks.Task.CompletedTask; - }; - - await _connection.StartAsync(); - // ƶ굽ıĩβ - Historylab.SelectionStart = Historylab.TextLength; - Historylab.SelectionLength = 0; - - Historylab.SelectionColor = Color.Blue; - Historylab.AppendText("ӳɹ" + "\n"); - } - catch (Exception ex) - { - // ƶ굽ıĩβ - Historylab.SelectionStart = Historylab.TextLength; - Historylab.SelectionLength = 0; - - Historylab.SelectionColor = Color.Blue; - Historylab.AppendText("ʧܣ" + ex.Message + "\n"); - } - } - - private async void button2_Click(object sender, EventArgs e) - { - if (_connection != null) - { - await _connection.StopAsync(); - await _connection.DisposeAsync(); - // ƶ굽ıĩβ - Historylab.SelectionStart = Historylab.TextLength; - Historylab.SelectionLength = 0; - - Historylab.SelectionColor = Color.Blue; - Historylab.AppendText("Ͽӣ" + "\n"); - } - } - - private async void SendMsg_Click(object sender, EventArgs e) - { - if (_connection == null || _connection.State != HubConnectionState.Connected) - { - // ƶ굽ıĩβ - Historylab.SelectionStart = Historylab.TextLength; - Historylab.SelectionLength = 0; - - Historylab.SelectionColor = Color.Blue; - Historylab.AppendText("ӣ" + "\n"); - return; - } - - try - { - var method = MethodTxt.Text.Trim(); - var paramText = ParamsTxt.Text.Trim(); - - object[] parameters = string.IsNullOrWhiteSpace(paramText) - ? Array.Empty() - : JsonSerializer.Deserialize(paramText); - // ƶ굽ıĩβ - Historylab.SelectionStart = Historylab.TextLength; - Historylab.SelectionLength = 0; - - Historylab.SelectionColor = Color.Red; - Historylab.AppendText($"Invoke: {method} {paramText}" + "\n"); - await _connection.InvokeCoreAsync(method,parameters); - - } - catch (Exception ex) - { - // ƶ굽ıĩβ - Historylab.SelectionStart = Historylab.TextLength; - Historylab.SelectionLength = 0; - - Historylab.SelectionColor = Color.Blue; - Historylab.AppendText($"ʧ: {ex.Message}" + "\n"); - } - } - } -} +using Microsoft.AspNetCore.SignalR.Client; +using System.Text.Json; +using System.Windows.Forms; + +namespace SignalRTest +{ + public partial class Form1 : Form + { + private HubConnection _connection; + public Form1() + { + InitializeComponent(); + } + + private void Form1_Load(object sender, EventArgs e) + { + + } + + private async void button1_Click(object sender, EventArgs e) + { + try + { + _connection = new HubConnectionBuilder() + .WithUrl(txtUrl.Text, options => + { + options.AccessTokenProvider = () => + Task.FromResult(TokenTxt.Text); + }) + .WithAutomaticReconnect() + .Build(); + + _connection.On("ReceiveMessage", (user, message) => + { + Historylab.Invoke(new Action(() => + { + // ƶ굽ıĩβ + Historylab.SelectionStart = Historylab.TextLength; + Historylab.SelectionLength = 0; + + Historylab.SelectionColor = Color.Green; + Historylab.AppendText("Ϣ" + message + "\n"); + })); + }); + + _connection.Reconnecting += (ex) => + { + // ƶ굽ıĩβ + Historylab.SelectionStart = Historylab.TextLength; + Historylab.SelectionLength = 0; + + Historylab.SelectionColor = Color.Blue; + Historylab.AppendText("..." + "\n"); + return System.Threading.Tasks.Task.CompletedTask; + }; + + _connection.Reconnected += (id) => + { + // ƶ굽ıĩβ + Historylab.SelectionStart = Historylab.TextLength; + Historylab.SelectionLength = 0; + + Historylab.SelectionColor = Color.Blue; + Historylab.AppendText("ɹ" + "\n"); + return System.Threading.Tasks.Task.CompletedTask; + }; + + await _connection.StartAsync(); + // ƶ굽ıĩβ + Historylab.SelectionStart = Historylab.TextLength; + Historylab.SelectionLength = 0; + + Historylab.SelectionColor = Color.Blue; + Historylab.AppendText("ӳɹ" + "\n"); + } + catch (Exception ex) + { + // ƶ굽ıĩβ + Historylab.SelectionStart = Historylab.TextLength; + Historylab.SelectionLength = 0; + + Historylab.SelectionColor = Color.Blue; + Historylab.AppendText("ʧܣ" + ex.Message + "\n"); + } + } + + private async void button2_Click(object sender, EventArgs e) + { + if (_connection != null) + { + await _connection.StopAsync(); + await _connection.DisposeAsync(); + // ƶ굽ıĩβ + Historylab.SelectionStart = Historylab.TextLength; + Historylab.SelectionLength = 0; + + Historylab.SelectionColor = Color.Blue; + Historylab.AppendText("Ͽӣ" + "\n"); + } + } + + private async void SendMsg_Click(object sender, EventArgs e) + { + if (_connection == null || _connection.State != HubConnectionState.Connected) + { + // ƶ굽ıĩβ + Historylab.SelectionStart = Historylab.TextLength; + Historylab.SelectionLength = 0; + + Historylab.SelectionColor = Color.Blue; + Historylab.AppendText("ӣ" + "\n"); + return; + } + + try + { + var method = MethodTxt.Text.Trim(); + var paramText = ParamsTxt.Text.Trim(); + + object[] parameters = string.IsNullOrWhiteSpace(paramText) + ? Array.Empty() + : JsonSerializer.Deserialize(paramText); + // ƶ굽ıĩβ + Historylab.SelectionStart = Historylab.TextLength; + Historylab.SelectionLength = 0; + + Historylab.SelectionColor = Color.Red; + Historylab.AppendText($"Invoke: {method} {paramText}" + "\n"); + await _connection.InvokeCoreAsync(method,parameters); + + } + catch (Exception ex) + { + // ƶ굽ıĩβ + Historylab.SelectionStart = Historylab.TextLength; + Historylab.SelectionLength = 0; + + Historylab.SelectionColor = Color.Blue; + Historylab.AppendText($"ʧ: {ex.Message}" + "\n"); + } + } + } +} diff --git a/backend/SignalRTest/Form1.resx b/backend/SignalRTest/Form1.resx index dcfd08d..c342c56 100644 --- a/backend/SignalRTest/Form1.resx +++ b/backend/SignalRTest/Form1.resx @@ -1,123 +1,123 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + \ No newline at end of file diff --git a/backend/SignalRTest/Program.cs b/backend/SignalRTest/Program.cs index 66a6f3b..f5b8baf 100644 --- a/backend/SignalRTest/Program.cs +++ b/backend/SignalRTest/Program.cs @@ -1,17 +1,17 @@ -namespace SignalRTest -{ - internal static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - // To customize application configuration such as set high DPI settings or default font, - // see https://aka.ms/applicationconfiguration. - ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); - } - } +namespace SignalRTest +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + Application.Run(new Form1()); + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/Properties/PublishProfiles/FolderProfile.pubxml b/backend/SignalRTest/Properties/PublishProfiles/FolderProfile.pubxml index 5cdd245..102cb70 100644 --- a/backend/SignalRTest/Properties/PublishProfiles/FolderProfile.pubxml +++ b/backend/SignalRTest/Properties/PublishProfiles/FolderProfile.pubxml @@ -1,16 +1,16 @@ - - - - - Release - Any CPU - bin\Release\net8.0-windows\publish\win-x64\ - FileSystem - <_TargetId>Folder - net8.0-windows - win-x64 - true - true - false - + + + + + Release + Any CPU + bin\Release\net8.0-windows\publish\win-x64\ + FileSystem + <_TargetId>Folder + net8.0-windows + win-x64 + true + true + false + \ No newline at end of file diff --git a/backend/SignalRTest/Properties/PublishProfiles/FolderProfile.pubxml.user b/backend/SignalRTest/Properties/PublishProfiles/FolderProfile.pubxml.user index 5bea8d3..032ea68 100644 --- a/backend/SignalRTest/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/backend/SignalRTest/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -1,8 +1,8 @@ - - - - - True|2025-12-06T11:34:00.2606316Z||;True|2025-12-06T19:25:07.4627450+08:00||; - - + + + + + True|2025-12-06T11:34:00.2606316Z||;True|2025-12-06T19:25:07.4627450+08:00||; + + \ No newline at end of file diff --git a/backend/SignalRTest/SignalRTest.csproj b/backend/SignalRTest/SignalRTest.csproj index 2ddba81..5cfb87d 100644 --- a/backend/SignalRTest/SignalRTest.csproj +++ b/backend/SignalRTest/SignalRTest.csproj @@ -1,15 +1,15 @@ - - - - WinExe - net8.0-windows - enable - true - enable - - - - - - + + + + WinExe + net8.0-windows + enable + true + enable + + + + + + \ No newline at end of file diff --git a/backend/SignalRTest/SignalRTest.csproj.user b/backend/SignalRTest/SignalRTest.csproj.user index 8457d4d..5b52483 100644 --- a/backend/SignalRTest/SignalRTest.csproj.user +++ b/backend/SignalRTest/SignalRTest.csproj.user @@ -1,11 +1,11 @@ - - - - <_LastSelectedProfileId>C:\Users\nanxun\Documents\IM\backend\SignalRTest\Properties\PublishProfiles\FolderProfile.pubxml - - - - Form - - + + + + <_LastSelectedProfileId>C:\Users\nanxun\Documents\IM\backend\SignalRTest\Properties\PublishProfiles\FolderProfile.pubxml + + + + Form + + \ No newline at end of file diff --git a/backend/SignalRTest/SignalRTest.sln b/backend/SignalRTest/SignalRTest.sln index 753d829..c19da8b 100644 --- a/backend/SignalRTest/SignalRTest.sln +++ b/backend/SignalRTest/SignalRTest.sln @@ -1,25 +1,25 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.14.36408.4 d17.14 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SignalRTest", "SignalRTest.csproj", "{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {266B86EE-17CF-4DD4-84C8-8CE3E2640A70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {266B86EE-17CF-4DD4-84C8-8CE3E2640A70}.Debug|Any CPU.Build.0 = Debug|Any CPU - {266B86EE-17CF-4DD4-84C8-8CE3E2640A70}.Release|Any CPU.ActiveCfg = Release|Any CPU - {266B86EE-17CF-4DD4-84C8-8CE3E2640A70}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {2D41DBBA-147E-49F2-A781-E7CD9E85666F} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36408.4 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SignalRTest", "SignalRTest.csproj", "{266B86EE-17CF-4DD4-84C8-8CE3E2640A70}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {266B86EE-17CF-4DD4-84C8-8CE3E2640A70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {266B86EE-17CF-4DD4-84C8-8CE3E2640A70}.Debug|Any CPU.Build.0 = Debug|Any CPU + {266B86EE-17CF-4DD4-84C8-8CE3E2640A70}.Release|Any CPU.ActiveCfg = Release|Any CPU + {266B86EE-17CF-4DD4-84C8-8CE3E2640A70}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2D41DBBA-147E-49F2-A781-E7CD9E85666F} + EndGlobalSection +EndGlobal diff --git a/backend/SignalRTest/bin/Debug/net8.0-windows/SignalRTest.deps.json b/backend/SignalRTest/bin/Debug/net8.0-windows/SignalRTest.deps.json index 8a84b48..0b7a595 100644 --- a/backend/SignalRTest/bin/Debug/net8.0-windows/SignalRTest.deps.json +++ b/backend/SignalRTest/bin/Debug/net8.0-windows/SignalRTest.deps.json @@ -1,419 +1,419 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v8.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v8.0": { - "SignalRTest/1.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Client": "10.0.0" - }, - "runtime": { - "SignalRTest.dll": {} - } - }, - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.0", - "Microsoft.Extensions.Features": "10.0.0", - "System.IO.Pipelines": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Net.ServerSentEvents": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", - "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", - "Microsoft.Bcl.TimeProvider": "10.0.0", - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging": "10.0.0", - "System.Threading.Channels": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Features/10.0.0": { - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Logging/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "System.Diagnostics.DiagnosticSource": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Options/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Primitives": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.IO.Pipelines/10.0.0": { - "runtime": { - "lib/net8.0/System.IO.Pipelines.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Net.ServerSentEvents/10.0.0": { - "runtime": { - "lib/net8.0/System.Net.ServerSentEvents.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Text.Encodings.Web/10.0.0": { - "runtime": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - }, - "runtimeTargets": { - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { - "rid": "browser", - "assetType": "runtime", - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Text.Json/10.0.0": { - "dependencies": { - "System.IO.Pipelines": "10.0.0", - "System.Text.Encodings.Web": "10.0.0" - }, - "runtime": { - "lib/net8.0/System.Text.Json.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Threading.Channels/10.0.0": { - "runtime": { - "lib/net8.0/System.Threading.Channels.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - } - } - }, - "libraries": { - "SignalRTest/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", - "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", - "hashPath": "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", - "path": "microsoft.aspnetcore.http.connections.client/10.0.0", - "hashPath": "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", - "path": "microsoft.aspnetcore.http.connections.common/10.0.0", - "hashPath": "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", - "path": "microsoft.aspnetcore.signalr.client/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", - "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", - "path": "microsoft.aspnetcore.signalr.common/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", - "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512" - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", - "path": "microsoft.bcl.asyncinterfaces/10.0.0", - "hashPath": "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512" - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", - "path": "microsoft.bcl.timeprovider/10.0.0", - "hashPath": "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", - "path": "microsoft.extensions.dependencyinjection/10.0.0", - "hashPath": "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", - "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", - "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Features/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", - "path": "microsoft.extensions.features/10.0.0", - "hashPath": "microsoft.extensions.features.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", - "path": "microsoft.extensions.logging/10.0.0", - "hashPath": "microsoft.extensions.logging.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", - "path": "microsoft.extensions.logging.abstractions/10.0.0", - "hashPath": "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Options/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", - "path": "microsoft.extensions.options/10.0.0", - "hashPath": "microsoft.extensions.options.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", - "path": "microsoft.extensions.primitives/10.0.0", - "hashPath": "microsoft.extensions.primitives.10.0.0.nupkg.sha512" - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", - "path": "system.diagnostics.diagnosticsource/10.0.0", - "hashPath": "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512" - }, - "System.IO.Pipelines/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", - "path": "system.io.pipelines/10.0.0", - "hashPath": "system.io.pipelines.10.0.0.nupkg.sha512" - }, - "System.Net.ServerSentEvents/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", - "path": "system.net.serversentevents/10.0.0", - "hashPath": "system.net.serversentevents.10.0.0.nupkg.sha512" - }, - "System.Text.Encodings.Web/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", - "path": "system.text.encodings.web/10.0.0", - "hashPath": "system.text.encodings.web.10.0.0.nupkg.sha512" - }, - "System.Text.Json/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", - "path": "system.text.json/10.0.0", - "hashPath": "system.text.json.10.0.0.nupkg.sha512" - }, - "System.Threading.Channels/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", - "path": "system.threading.channels/10.0.0", - "hashPath": "system.threading.channels.10.0.0.nupkg.sha512" - } - } +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "SignalRTest/1.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Client": "10.0.0" + }, + "runtime": { + "SignalRTest.dll": {} + } + }, + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "10.0.0", + "Microsoft.Extensions.Features": "10.0.0", + "System.IO.Pipelines": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Net.ServerSentEvents": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", + "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", + "Microsoft.Bcl.TimeProvider": "10.0.0", + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging": "10.0.0", + "System.Threading.Channels": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Features/10.0.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Logging/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "System.Diagnostics.DiagnosticSource": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Options/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Primitives": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.IO.Pipelines/10.0.0": { + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Net.ServerSentEvents/10.0.0": { + "runtime": { + "lib/net8.0/System.Net.ServerSentEvents.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Text.Encodings.Web/10.0.0": { + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + }, + "runtimeTargets": { + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { + "rid": "browser", + "assetType": "runtime", + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Text.Json/10.0.0": { + "dependencies": { + "System.IO.Pipelines": "10.0.0", + "System.Text.Encodings.Web": "10.0.0" + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Threading.Channels/10.0.0": { + "runtime": { + "lib/net8.0/System.Threading.Channels.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + } + } + }, + "libraries": { + "SignalRTest/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", + "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", + "hashPath": "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", + "path": "microsoft.aspnetcore.http.connections.client/10.0.0", + "hashPath": "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", + "path": "microsoft.aspnetcore.http.connections.common/10.0.0", + "hashPath": "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", + "path": "microsoft.aspnetcore.signalr.client/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", + "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", + "path": "microsoft.aspnetcore.signalr.common/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", + "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512" + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", + "path": "microsoft.bcl.asyncinterfaces/10.0.0", + "hashPath": "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512" + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", + "path": "microsoft.bcl.timeprovider/10.0.0", + "hashPath": "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", + "path": "microsoft.extensions.dependencyinjection/10.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Features/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", + "path": "microsoft.extensions.features/10.0.0", + "hashPath": "microsoft.extensions.features.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", + "path": "microsoft.extensions.logging/10.0.0", + "hashPath": "microsoft.extensions.logging.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", + "path": "microsoft.extensions.logging.abstractions/10.0.0", + "hashPath": "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Options/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", + "path": "microsoft.extensions.options/10.0.0", + "hashPath": "microsoft.extensions.options.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", + "path": "microsoft.extensions.primitives/10.0.0", + "hashPath": "microsoft.extensions.primitives.10.0.0.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", + "path": "system.diagnostics.diagnosticsource/10.0.0", + "hashPath": "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512" + }, + "System.IO.Pipelines/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", + "path": "system.io.pipelines/10.0.0", + "hashPath": "system.io.pipelines.10.0.0.nupkg.sha512" + }, + "System.Net.ServerSentEvents/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", + "path": "system.net.serversentevents/10.0.0", + "hashPath": "system.net.serversentevents.10.0.0.nupkg.sha512" + }, + "System.Text.Encodings.Web/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", + "path": "system.text.encodings.web/10.0.0", + "hashPath": "system.text.encodings.web.10.0.0.nupkg.sha512" + }, + "System.Text.Json/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", + "path": "system.text.json/10.0.0", + "hashPath": "system.text.json.10.0.0.nupkg.sha512" + }, + "System.Threading.Channels/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", + "path": "system.threading.channels/10.0.0", + "hashPath": "system.threading.channels.10.0.0.nupkg.sha512" + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/bin/Debug/net8.0-windows/SignalRTest.runtimeconfig.json b/backend/SignalRTest/bin/Debug/net8.0-windows/SignalRTest.runtimeconfig.json index b2dedf3..a8d07ca 100644 --- a/backend/SignalRTest/bin/Debug/net8.0-windows/SignalRTest.runtimeconfig.json +++ b/backend/SignalRTest/bin/Debug/net8.0-windows/SignalRTest.runtimeconfig.json @@ -1,19 +1,19 @@ -{ - "runtimeOptions": { - "tfm": "net8.0", - "frameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "8.0.0" - }, - { - "name": "Microsoft.WindowsDesktop.App", - "version": "8.0.0" - } - ], - "configProperties": { - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true, - "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false - } - } +{ + "runtimeOptions": { + "tfm": "net8.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + { + "name": "Microsoft.WindowsDesktop.App", + "version": "8.0.0" + } + ], + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true, + "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/bin/Release/net8.0-windows/SignalRTest.deps.json b/backend/SignalRTest/bin/Release/net8.0-windows/SignalRTest.deps.json index 8a84b48..0b7a595 100644 --- a/backend/SignalRTest/bin/Release/net8.0-windows/SignalRTest.deps.json +++ b/backend/SignalRTest/bin/Release/net8.0-windows/SignalRTest.deps.json @@ -1,419 +1,419 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v8.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v8.0": { - "SignalRTest/1.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Client": "10.0.0" - }, - "runtime": { - "SignalRTest.dll": {} - } - }, - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.0", - "Microsoft.Extensions.Features": "10.0.0", - "System.IO.Pipelines": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Net.ServerSentEvents": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", - "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", - "Microsoft.Bcl.TimeProvider": "10.0.0", - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging": "10.0.0", - "System.Threading.Channels": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Features/10.0.0": { - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Logging/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "System.Diagnostics.DiagnosticSource": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Options/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Primitives": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.IO.Pipelines/10.0.0": { - "runtime": { - "lib/net8.0/System.IO.Pipelines.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Net.ServerSentEvents/10.0.0": { - "runtime": { - "lib/net8.0/System.Net.ServerSentEvents.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Text.Encodings.Web/10.0.0": { - "runtime": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - }, - "runtimeTargets": { - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { - "rid": "browser", - "assetType": "runtime", - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Text.Json/10.0.0": { - "dependencies": { - "System.IO.Pipelines": "10.0.0", - "System.Text.Encodings.Web": "10.0.0" - }, - "runtime": { - "lib/net8.0/System.Text.Json.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Threading.Channels/10.0.0": { - "runtime": { - "lib/net8.0/System.Threading.Channels.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - } - } - }, - "libraries": { - "SignalRTest/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", - "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", - "hashPath": "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", - "path": "microsoft.aspnetcore.http.connections.client/10.0.0", - "hashPath": "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", - "path": "microsoft.aspnetcore.http.connections.common/10.0.0", - "hashPath": "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", - "path": "microsoft.aspnetcore.signalr.client/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", - "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", - "path": "microsoft.aspnetcore.signalr.common/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", - "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512" - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", - "path": "microsoft.bcl.asyncinterfaces/10.0.0", - "hashPath": "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512" - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", - "path": "microsoft.bcl.timeprovider/10.0.0", - "hashPath": "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", - "path": "microsoft.extensions.dependencyinjection/10.0.0", - "hashPath": "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", - "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", - "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Features/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", - "path": "microsoft.extensions.features/10.0.0", - "hashPath": "microsoft.extensions.features.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", - "path": "microsoft.extensions.logging/10.0.0", - "hashPath": "microsoft.extensions.logging.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", - "path": "microsoft.extensions.logging.abstractions/10.0.0", - "hashPath": "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Options/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", - "path": "microsoft.extensions.options/10.0.0", - "hashPath": "microsoft.extensions.options.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", - "path": "microsoft.extensions.primitives/10.0.0", - "hashPath": "microsoft.extensions.primitives.10.0.0.nupkg.sha512" - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", - "path": "system.diagnostics.diagnosticsource/10.0.0", - "hashPath": "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512" - }, - "System.IO.Pipelines/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", - "path": "system.io.pipelines/10.0.0", - "hashPath": "system.io.pipelines.10.0.0.nupkg.sha512" - }, - "System.Net.ServerSentEvents/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", - "path": "system.net.serversentevents/10.0.0", - "hashPath": "system.net.serversentevents.10.0.0.nupkg.sha512" - }, - "System.Text.Encodings.Web/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", - "path": "system.text.encodings.web/10.0.0", - "hashPath": "system.text.encodings.web.10.0.0.nupkg.sha512" - }, - "System.Text.Json/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", - "path": "system.text.json/10.0.0", - "hashPath": "system.text.json.10.0.0.nupkg.sha512" - }, - "System.Threading.Channels/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", - "path": "system.threading.channels/10.0.0", - "hashPath": "system.threading.channels.10.0.0.nupkg.sha512" - } - } +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "SignalRTest/1.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Client": "10.0.0" + }, + "runtime": { + "SignalRTest.dll": {} + } + }, + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "10.0.0", + "Microsoft.Extensions.Features": "10.0.0", + "System.IO.Pipelines": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Net.ServerSentEvents": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", + "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", + "Microsoft.Bcl.TimeProvider": "10.0.0", + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging": "10.0.0", + "System.Threading.Channels": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Features/10.0.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Logging/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "System.Diagnostics.DiagnosticSource": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Options/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Primitives": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.IO.Pipelines/10.0.0": { + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Net.ServerSentEvents/10.0.0": { + "runtime": { + "lib/net8.0/System.Net.ServerSentEvents.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Text.Encodings.Web/10.0.0": { + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + }, + "runtimeTargets": { + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { + "rid": "browser", + "assetType": "runtime", + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Text.Json/10.0.0": { + "dependencies": { + "System.IO.Pipelines": "10.0.0", + "System.Text.Encodings.Web": "10.0.0" + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Threading.Channels/10.0.0": { + "runtime": { + "lib/net8.0/System.Threading.Channels.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + } + } + }, + "libraries": { + "SignalRTest/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", + "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", + "hashPath": "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", + "path": "microsoft.aspnetcore.http.connections.client/10.0.0", + "hashPath": "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", + "path": "microsoft.aspnetcore.http.connections.common/10.0.0", + "hashPath": "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", + "path": "microsoft.aspnetcore.signalr.client/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", + "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", + "path": "microsoft.aspnetcore.signalr.common/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", + "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512" + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", + "path": "microsoft.bcl.asyncinterfaces/10.0.0", + "hashPath": "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512" + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", + "path": "microsoft.bcl.timeprovider/10.0.0", + "hashPath": "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", + "path": "microsoft.extensions.dependencyinjection/10.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Features/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", + "path": "microsoft.extensions.features/10.0.0", + "hashPath": "microsoft.extensions.features.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", + "path": "microsoft.extensions.logging/10.0.0", + "hashPath": "microsoft.extensions.logging.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", + "path": "microsoft.extensions.logging.abstractions/10.0.0", + "hashPath": "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Options/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", + "path": "microsoft.extensions.options/10.0.0", + "hashPath": "microsoft.extensions.options.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", + "path": "microsoft.extensions.primitives/10.0.0", + "hashPath": "microsoft.extensions.primitives.10.0.0.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", + "path": "system.diagnostics.diagnosticsource/10.0.0", + "hashPath": "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512" + }, + "System.IO.Pipelines/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", + "path": "system.io.pipelines/10.0.0", + "hashPath": "system.io.pipelines.10.0.0.nupkg.sha512" + }, + "System.Net.ServerSentEvents/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", + "path": "system.net.serversentevents/10.0.0", + "hashPath": "system.net.serversentevents.10.0.0.nupkg.sha512" + }, + "System.Text.Encodings.Web/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", + "path": "system.text.encodings.web/10.0.0", + "hashPath": "system.text.encodings.web.10.0.0.nupkg.sha512" + }, + "System.Text.Json/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", + "path": "system.text.json/10.0.0", + "hashPath": "system.text.json.10.0.0.nupkg.sha512" + }, + "System.Threading.Channels/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", + "path": "system.threading.channels/10.0.0", + "hashPath": "system.threading.channels.10.0.0.nupkg.sha512" + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/bin/Release/net8.0-windows/SignalRTest.runtimeconfig.json b/backend/SignalRTest/bin/Release/net8.0-windows/SignalRTest.runtimeconfig.json index ad83f36..269c3d7 100644 --- a/backend/SignalRTest/bin/Release/net8.0-windows/SignalRTest.runtimeconfig.json +++ b/backend/SignalRTest/bin/Release/net8.0-windows/SignalRTest.runtimeconfig.json @@ -1,20 +1,20 @@ -{ - "runtimeOptions": { - "tfm": "net8.0", - "frameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "8.0.0" - }, - { - "name": "Microsoft.WindowsDesktop.App", - "version": "8.0.0" - } - ], - "configProperties": { - "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true, - "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false - } - } +{ + "runtimeOptions": { + "tfm": "net8.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + { + "name": "Microsoft.WindowsDesktop.App", + "version": "8.0.0" + } + ], + "configProperties": { + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true, + "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/bin/Release/net8.0-windows/win-x64/SignalRTest.deps.json b/backend/SignalRTest/bin/Release/net8.0-windows/win-x64/SignalRTest.deps.json index 7c385e3..4f338e6 100644 --- a/backend/SignalRTest/bin/Release/net8.0-windows/win-x64/SignalRTest.deps.json +++ b/backend/SignalRTest/bin/Release/net8.0-windows/win-x64/SignalRTest.deps.json @@ -1,1369 +1,1369 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v8.0/win-x64", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v8.0": {}, - ".NETCoreApp,Version=v8.0/win-x64": { - "SignalRTest/1.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Client": "10.0.0", - "Microsoft.NET.ILLink.Tasks": "8.0.19", - "runtimepack.Microsoft.NETCore.App.Runtime.win-x64": "8.0.19", - "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64": "8.0.19" - }, - "runtime": { - "SignalRTest.dll": {} - } - }, - "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/8.0.19": { - "runtime": { - "Microsoft.CSharp.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "Microsoft.VisualBasic.Core.dll": { - "assemblyVersion": "13.0.0.0", - "fileVersion": "13.0.1925.36514" - }, - "Microsoft.Win32.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "Microsoft.Win32.Registry.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.AppContext.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Buffers.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Collections.Concurrent.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Collections.Immutable.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Collections.NonGeneric.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Collections.Specialized.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Collections.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.Annotations.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.DataAnnotations.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.EventBasedAsync.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.TypeConverter.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Configuration.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Console.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Core.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Data.Common.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Data.DataSetExtensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Data.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.Contracts.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.Debug.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.FileVersionInfo.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.Process.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.StackTrace.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.TextWriterTraceListener.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.Tools.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.TraceSource.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.Tracing.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Drawing.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Dynamic.Runtime.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Formats.Asn1.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Formats.Tar.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Globalization.Calendars.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Globalization.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Globalization.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Compression.Brotli.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Compression.FileSystem.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Compression.ZipFile.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Compression.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.FileSystem.AccessControl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.FileSystem.DriveInfo.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.FileSystem.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.FileSystem.Watcher.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.FileSystem.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.IsolatedStorage.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.MemoryMappedFiles.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Pipes.AccessControl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Pipes.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.UnmanagedMemoryStream.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Linq.Expressions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Linq.Parallel.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Linq.Queryable.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Linq.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Memory.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Http.Json.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Http.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.HttpListener.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Mail.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.NameResolution.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.NetworkInformation.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Ping.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Quic.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Requests.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Security.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.ServicePoint.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Sockets.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.WebClient.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.WebHeaderCollection.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.WebProxy.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.WebSockets.Client.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.WebSockets.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Numerics.Vectors.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Numerics.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ObjectModel.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Private.CoreLib.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Private.DataContractSerialization.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Private.Uri.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Private.Xml.Linq.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Private.Xml.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.DispatchProxy.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Emit.ILGeneration.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Emit.Lightweight.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Emit.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Metadata.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.TypeExtensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Resources.Reader.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Resources.ResourceManager.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Resources.Writer.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.CompilerServices.Unsafe.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.CompilerServices.VisualC.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Handles.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.InteropServices.JavaScript.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.InteropServices.RuntimeInformation.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.InteropServices.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Intrinsics.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Loader.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Numerics.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Serialization.Formatters.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Serialization.Json.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Serialization.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Serialization.Xml.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Serialization.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.AccessControl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Claims.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Algorithms.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Cng.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Csp.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Encoding.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.OpenSsl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.X509Certificates.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Principal.Windows.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Principal.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.SecureString.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ServiceModel.Web.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ServiceProcess.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Text.Encoding.CodePages.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Text.Encoding.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Text.Encoding.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Text.RegularExpressions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Overlapped.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Tasks.Dataflow.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Tasks.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Tasks.Parallel.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Tasks.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Thread.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.ThreadPool.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Timer.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Transactions.Local.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Transactions.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ValueTuple.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Web.HttpUtility.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Web.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Windows.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.Linq.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.ReaderWriter.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.Serialization.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.XDocument.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.XPath.XDocument.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.XPath.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.XmlDocument.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.XmlSerializer.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "mscorlib.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "netstandard.dll": { - "assemblyVersion": "2.1.0.0", - "fileVersion": "8.0.1925.36514" - } - }, - "native": { - "Microsoft.DiaSymReader.Native.amd64.dll": { - "fileVersion": "14.42.34436.0" - }, - "System.IO.Compression.Native.dll": { - "fileVersion": "8.0.1925.36514" - }, - "clretwrc.dll": { - "fileVersion": "8.0.1925.36514" - }, - "clrgc.dll": { - "fileVersion": "8.0.1925.36514" - }, - "clrjit.dll": { - "fileVersion": "8.0.1925.36514" - }, - "coreclr.dll": { - "fileVersion": "8.0.1925.36514" - }, - "createdump.exe": { - "fileVersion": "8.0.1925.36514" - }, - "hostfxr.dll": { - "fileVersion": "8.0.1925.36514" - }, - "hostpolicy.dll": { - "fileVersion": "8.0.1925.36514" - }, - "mscordaccore.dll": { - "fileVersion": "8.0.1925.36514" - }, - "mscordaccore_amd64_amd64_8.0.1925.36514.dll": { - "fileVersion": "8.0.1925.36514" - }, - "mscordbi.dll": { - "fileVersion": "8.0.1925.36514" - }, - "mscorrc.dll": { - "fileVersion": "8.0.1925.36514" - }, - "msquic.dll": { - "fileVersion": "2.4.8.0" - } - } - }, - "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/8.0.19": { - "runtime": { - "Accessibility.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "DirectWriteForwarder.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "Microsoft.VisualBasic.Forms.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "Microsoft.VisualBasic.dll": { - "assemblyVersion": "10.1.0.0", - "fileVersion": "8.0.1925.36703" - }, - "Microsoft.Win32.Registry.AccessControl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "Microsoft.Win32.SystemEvents.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "PresentationCore.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework-SystemCore.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework-SystemData.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework-SystemDrawing.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework-SystemXml.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework-SystemXmlLinq.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.Aero.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.Aero2.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.AeroLite.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.Classic.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.Luna.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.Royale.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationUI.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "ReachFramework.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "System.CodeDom.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Configuration.ConfigurationManager.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Design.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Diagnostics.EventLog.Messages.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "0.0.0.0" - }, - "System.Diagnostics.EventLog.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.PerformanceCounter.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.DirectoryServices.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Drawing.Common.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Drawing.Design.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Drawing.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.IO.Packaging.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Printing.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "System.Resources.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Pkcs.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.ProtectedData.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Xml.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Permissions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.AccessControl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Windows.Controls.Ribbon.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "System.Windows.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Windows.Forms.Design.Editors.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Windows.Forms.Design.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Windows.Forms.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Windows.Forms.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Windows.Input.Manipulations.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "System.Windows.Presentation.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "System.Xaml.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "UIAutomationClient.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "UIAutomationClientSideProviders.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "UIAutomationProvider.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "UIAutomationTypes.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "WindowsBase.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "WindowsFormsIntegration.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - } - }, - "native": { - "D3DCompiler_47_cor3.dll": { - "fileVersion": "10.0.22621.3233" - }, - "PenImc_cor3.dll": { - "fileVersion": "8.0.1925.36811" - }, - "PresentationNative_cor3.dll": { - "fileVersion": "8.0.25.16802" - }, - "vcruntime140_cor3.dll": { - "fileVersion": "14.42.34438.0" - }, - "wpfgfx_cor3.dll": { - "fileVersion": "8.0.1925.36811" - } - } - }, - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.0", - "Microsoft.Extensions.Features": "10.0.0", - "System.IO.Pipelines": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Net.ServerSentEvents": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", - "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", - "Microsoft.Bcl.TimeProvider": "10.0.0", - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging": "10.0.0", - "System.Threading.Channels": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Features/10.0.0": { - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Logging/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "System.Diagnostics.DiagnosticSource": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Options/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Primitives": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.NET.ILLink.Tasks/8.0.19": {}, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.IO.Pipelines/10.0.0": { - "runtime": { - "lib/net8.0/System.IO.Pipelines.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Net.ServerSentEvents/10.0.0": { - "runtime": { - "lib/net8.0/System.Net.ServerSentEvents.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Text.Encodings.Web/10.0.0": { - "runtime": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Text.Json/10.0.0": { - "dependencies": { - "System.IO.Pipelines": "10.0.0", - "System.Text.Encodings.Web": "10.0.0" - }, - "runtime": { - "lib/net8.0/System.Text.Json.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Threading.Channels/10.0.0": { - "runtime": { - "lib/net8.0/System.Threading.Channels.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - } - } - }, - "libraries": { - "SignalRTest/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/8.0.19": { - "type": "runtimepack", - "serviceable": false, - "sha512": "" - }, - "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/8.0.19": { - "type": "runtimepack", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", - "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", - "hashPath": "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", - "path": "microsoft.aspnetcore.http.connections.client/10.0.0", - "hashPath": "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", - "path": "microsoft.aspnetcore.http.connections.common/10.0.0", - "hashPath": "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", - "path": "microsoft.aspnetcore.signalr.client/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", - "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", - "path": "microsoft.aspnetcore.signalr.common/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", - "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512" - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", - "path": "microsoft.bcl.asyncinterfaces/10.0.0", - "hashPath": "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512" - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", - "path": "microsoft.bcl.timeprovider/10.0.0", - "hashPath": "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", - "path": "microsoft.extensions.dependencyinjection/10.0.0", - "hashPath": "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", - "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", - "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Features/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", - "path": "microsoft.extensions.features/10.0.0", - "hashPath": "microsoft.extensions.features.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", - "path": "microsoft.extensions.logging/10.0.0", - "hashPath": "microsoft.extensions.logging.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", - "path": "microsoft.extensions.logging.abstractions/10.0.0", - "hashPath": "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Options/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", - "path": "microsoft.extensions.options/10.0.0", - "hashPath": "microsoft.extensions.options.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", - "path": "microsoft.extensions.primitives/10.0.0", - "hashPath": "microsoft.extensions.primitives.10.0.0.nupkg.sha512" - }, - "Microsoft.NET.ILLink.Tasks/8.0.19": { - "type": "package", - "serviceable": true, - "sha512": "sha512-IhHf+zeZiaE5EXRyxILd4qM+Hj9cxV3sa8MpzZgeEhpvaG3a1VEGF6UCaPFLO44Kua3JkLKluE0SWVamS50PlA==", - "path": "microsoft.net.illink.tasks/8.0.19", - "hashPath": "microsoft.net.illink.tasks.8.0.19.nupkg.sha512" - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", - "path": "system.diagnostics.diagnosticsource/10.0.0", - "hashPath": "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512" - }, - "System.IO.Pipelines/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", - "path": "system.io.pipelines/10.0.0", - "hashPath": "system.io.pipelines.10.0.0.nupkg.sha512" - }, - "System.Net.ServerSentEvents/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", - "path": "system.net.serversentevents/10.0.0", - "hashPath": "system.net.serversentevents.10.0.0.nupkg.sha512" - }, - "System.Text.Encodings.Web/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", - "path": "system.text.encodings.web/10.0.0", - "hashPath": "system.text.encodings.web.10.0.0.nupkg.sha512" - }, - "System.Text.Json/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", - "path": "system.text.json/10.0.0", - "hashPath": "system.text.json.10.0.0.nupkg.sha512" - }, - "System.Threading.Channels/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", - "path": "system.threading.channels/10.0.0", - "hashPath": "system.threading.channels.10.0.0.nupkg.sha512" - } - }, - "runtimes": { - "win-x64": [ - "win", - "any", - "base" - ] - } +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0/win-x64", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": {}, + ".NETCoreApp,Version=v8.0/win-x64": { + "SignalRTest/1.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Client": "10.0.0", + "Microsoft.NET.ILLink.Tasks": "8.0.19", + "runtimepack.Microsoft.NETCore.App.Runtime.win-x64": "8.0.19", + "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64": "8.0.19" + }, + "runtime": { + "SignalRTest.dll": {} + } + }, + "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/8.0.19": { + "runtime": { + "Microsoft.CSharp.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "Microsoft.VisualBasic.Core.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.1925.36514" + }, + "Microsoft.Win32.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "Microsoft.Win32.Registry.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.AppContext.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Buffers.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Collections.Concurrent.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Collections.Immutable.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Collections.NonGeneric.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Collections.Specialized.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Collections.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.Annotations.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.DataAnnotations.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.EventBasedAsync.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.TypeConverter.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Configuration.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Console.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Core.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Data.Common.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Data.DataSetExtensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Data.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.Contracts.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.Debug.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.FileVersionInfo.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.Process.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.StackTrace.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.TextWriterTraceListener.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.Tools.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.TraceSource.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.Tracing.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Drawing.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Dynamic.Runtime.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Formats.Asn1.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Formats.Tar.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Globalization.Calendars.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Globalization.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Globalization.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Compression.Brotli.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Compression.FileSystem.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Compression.ZipFile.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Compression.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.FileSystem.AccessControl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.FileSystem.DriveInfo.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.FileSystem.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.FileSystem.Watcher.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.FileSystem.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.IsolatedStorage.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.MemoryMappedFiles.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Pipes.AccessControl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Pipes.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.UnmanagedMemoryStream.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Linq.Expressions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Linq.Parallel.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Linq.Queryable.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Linq.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Memory.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Http.Json.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Http.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.HttpListener.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Mail.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.NameResolution.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.NetworkInformation.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Ping.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Quic.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Requests.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Security.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.ServicePoint.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Sockets.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.WebClient.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.WebHeaderCollection.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.WebProxy.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.WebSockets.Client.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.WebSockets.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Numerics.Vectors.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Numerics.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ObjectModel.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Private.CoreLib.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Private.DataContractSerialization.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Private.Uri.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Private.Xml.Linq.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Private.Xml.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.DispatchProxy.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Emit.ILGeneration.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Emit.Lightweight.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Emit.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Metadata.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.TypeExtensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Resources.Reader.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Resources.ResourceManager.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Resources.Writer.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.CompilerServices.VisualC.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Handles.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.InteropServices.JavaScript.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.InteropServices.RuntimeInformation.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.InteropServices.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Intrinsics.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Loader.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Numerics.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Serialization.Formatters.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Serialization.Json.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Serialization.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Serialization.Xml.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Serialization.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.AccessControl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Claims.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Algorithms.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Cng.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Csp.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Encoding.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.OpenSsl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.X509Certificates.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Principal.Windows.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Principal.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.SecureString.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ServiceModel.Web.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ServiceProcess.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Text.Encoding.CodePages.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Text.Encoding.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Text.Encoding.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Text.RegularExpressions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Overlapped.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Tasks.Dataflow.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Tasks.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Tasks.Parallel.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Tasks.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Thread.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.ThreadPool.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Timer.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Transactions.Local.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Transactions.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ValueTuple.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Web.HttpUtility.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Web.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Windows.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.Linq.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.ReaderWriter.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.Serialization.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.XDocument.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.XPath.XDocument.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.XPath.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.XmlDocument.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.XmlSerializer.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "mscorlib.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "netstandard.dll": { + "assemblyVersion": "2.1.0.0", + "fileVersion": "8.0.1925.36514" + } + }, + "native": { + "Microsoft.DiaSymReader.Native.amd64.dll": { + "fileVersion": "14.42.34436.0" + }, + "System.IO.Compression.Native.dll": { + "fileVersion": "8.0.1925.36514" + }, + "clretwrc.dll": { + "fileVersion": "8.0.1925.36514" + }, + "clrgc.dll": { + "fileVersion": "8.0.1925.36514" + }, + "clrjit.dll": { + "fileVersion": "8.0.1925.36514" + }, + "coreclr.dll": { + "fileVersion": "8.0.1925.36514" + }, + "createdump.exe": { + "fileVersion": "8.0.1925.36514" + }, + "hostfxr.dll": { + "fileVersion": "8.0.1925.36514" + }, + "hostpolicy.dll": { + "fileVersion": "8.0.1925.36514" + }, + "mscordaccore.dll": { + "fileVersion": "8.0.1925.36514" + }, + "mscordaccore_amd64_amd64_8.0.1925.36514.dll": { + "fileVersion": "8.0.1925.36514" + }, + "mscordbi.dll": { + "fileVersion": "8.0.1925.36514" + }, + "mscorrc.dll": { + "fileVersion": "8.0.1925.36514" + }, + "msquic.dll": { + "fileVersion": "2.4.8.0" + } + } + }, + "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/8.0.19": { + "runtime": { + "Accessibility.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "DirectWriteForwarder.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "Microsoft.VisualBasic.Forms.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "Microsoft.VisualBasic.dll": { + "assemblyVersion": "10.1.0.0", + "fileVersion": "8.0.1925.36703" + }, + "Microsoft.Win32.Registry.AccessControl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "Microsoft.Win32.SystemEvents.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "PresentationCore.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework-SystemCore.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework-SystemData.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework-SystemDrawing.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework-SystemXml.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework-SystemXmlLinq.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.Aero.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.Aero2.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.AeroLite.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.Classic.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.Luna.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.Royale.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationUI.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "ReachFramework.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "System.CodeDom.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Configuration.ConfigurationManager.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Design.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Diagnostics.EventLog.Messages.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "0.0.0.0" + }, + "System.Diagnostics.EventLog.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.PerformanceCounter.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.DirectoryServices.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Drawing.Common.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Drawing.Design.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Drawing.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.IO.Packaging.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Printing.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "System.Resources.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Pkcs.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.ProtectedData.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Xml.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Permissions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.AccessControl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Windows.Controls.Ribbon.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "System.Windows.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Windows.Forms.Design.Editors.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Windows.Forms.Design.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Windows.Forms.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Windows.Forms.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Windows.Input.Manipulations.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "System.Windows.Presentation.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "System.Xaml.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "UIAutomationClient.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "UIAutomationClientSideProviders.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "UIAutomationProvider.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "UIAutomationTypes.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "WindowsBase.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "WindowsFormsIntegration.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + } + }, + "native": { + "D3DCompiler_47_cor3.dll": { + "fileVersion": "10.0.22621.3233" + }, + "PenImc_cor3.dll": { + "fileVersion": "8.0.1925.36811" + }, + "PresentationNative_cor3.dll": { + "fileVersion": "8.0.25.16802" + }, + "vcruntime140_cor3.dll": { + "fileVersion": "14.42.34438.0" + }, + "wpfgfx_cor3.dll": { + "fileVersion": "8.0.1925.36811" + } + } + }, + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "10.0.0", + "Microsoft.Extensions.Features": "10.0.0", + "System.IO.Pipelines": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Net.ServerSentEvents": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", + "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", + "Microsoft.Bcl.TimeProvider": "10.0.0", + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging": "10.0.0", + "System.Threading.Channels": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Features/10.0.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Logging/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "System.Diagnostics.DiagnosticSource": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Options/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Primitives": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.NET.ILLink.Tasks/8.0.19": {}, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.IO.Pipelines/10.0.0": { + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Net.ServerSentEvents/10.0.0": { + "runtime": { + "lib/net8.0/System.Net.ServerSentEvents.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Text.Encodings.Web/10.0.0": { + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Text.Json/10.0.0": { + "dependencies": { + "System.IO.Pipelines": "10.0.0", + "System.Text.Encodings.Web": "10.0.0" + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Threading.Channels/10.0.0": { + "runtime": { + "lib/net8.0/System.Threading.Channels.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + } + } + }, + "libraries": { + "SignalRTest/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/8.0.19": { + "type": "runtimepack", + "serviceable": false, + "sha512": "" + }, + "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/8.0.19": { + "type": "runtimepack", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", + "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", + "hashPath": "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", + "path": "microsoft.aspnetcore.http.connections.client/10.0.0", + "hashPath": "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", + "path": "microsoft.aspnetcore.http.connections.common/10.0.0", + "hashPath": "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", + "path": "microsoft.aspnetcore.signalr.client/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", + "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", + "path": "microsoft.aspnetcore.signalr.common/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", + "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512" + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", + "path": "microsoft.bcl.asyncinterfaces/10.0.0", + "hashPath": "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512" + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", + "path": "microsoft.bcl.timeprovider/10.0.0", + "hashPath": "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", + "path": "microsoft.extensions.dependencyinjection/10.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Features/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", + "path": "microsoft.extensions.features/10.0.0", + "hashPath": "microsoft.extensions.features.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", + "path": "microsoft.extensions.logging/10.0.0", + "hashPath": "microsoft.extensions.logging.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", + "path": "microsoft.extensions.logging.abstractions/10.0.0", + "hashPath": "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Options/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", + "path": "microsoft.extensions.options/10.0.0", + "hashPath": "microsoft.extensions.options.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", + "path": "microsoft.extensions.primitives/10.0.0", + "hashPath": "microsoft.extensions.primitives.10.0.0.nupkg.sha512" + }, + "Microsoft.NET.ILLink.Tasks/8.0.19": { + "type": "package", + "serviceable": true, + "sha512": "sha512-IhHf+zeZiaE5EXRyxILd4qM+Hj9cxV3sa8MpzZgeEhpvaG3a1VEGF6UCaPFLO44Kua3JkLKluE0SWVamS50PlA==", + "path": "microsoft.net.illink.tasks/8.0.19", + "hashPath": "microsoft.net.illink.tasks.8.0.19.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", + "path": "system.diagnostics.diagnosticsource/10.0.0", + "hashPath": "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512" + }, + "System.IO.Pipelines/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", + "path": "system.io.pipelines/10.0.0", + "hashPath": "system.io.pipelines.10.0.0.nupkg.sha512" + }, + "System.Net.ServerSentEvents/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", + "path": "system.net.serversentevents/10.0.0", + "hashPath": "system.net.serversentevents.10.0.0.nupkg.sha512" + }, + "System.Text.Encodings.Web/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", + "path": "system.text.encodings.web/10.0.0", + "hashPath": "system.text.encodings.web.10.0.0.nupkg.sha512" + }, + "System.Text.Json/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", + "path": "system.text.json/10.0.0", + "hashPath": "system.text.json.10.0.0.nupkg.sha512" + }, + "System.Threading.Channels/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", + "path": "system.threading.channels/10.0.0", + "hashPath": "system.threading.channels.10.0.0.nupkg.sha512" + } + }, + "runtimes": { + "win-x64": [ + "win", + "any", + "base" + ] + } } \ No newline at end of file diff --git a/backend/SignalRTest/bin/Release/net8.0-windows/win-x64/SignalRTest.runtimeconfig.json b/backend/SignalRTest/bin/Release/net8.0-windows/win-x64/SignalRTest.runtimeconfig.json index 5fb4863..b05f485 100644 --- a/backend/SignalRTest/bin/Release/net8.0-windows/win-x64/SignalRTest.runtimeconfig.json +++ b/backend/SignalRTest/bin/Release/net8.0-windows/win-x64/SignalRTest.runtimeconfig.json @@ -1,20 +1,20 @@ -{ - "runtimeOptions": { - "tfm": "net8.0", - "includedFrameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "8.0.19" - }, - { - "name": "Microsoft.WindowsDesktop.App", - "version": "8.0.19" - } - ], - "configProperties": { - "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true, - "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false - } - } +{ + "runtimeOptions": { + "tfm": "net8.0", + "includedFrameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "8.0.19" + }, + { + "name": "Microsoft.WindowsDesktop.App", + "version": "8.0.19" + } + ], + "configProperties": { + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true, + "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/backend/SignalRTest/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs index 2217181..678fc5f 100644 --- a/backend/SignalRTest/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs +++ b/backend/SignalRTest/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -1,4 +1,4 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.AssemblyInfo.cs b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.AssemblyInfo.cs index 6e68c6a..63c202b 100644 --- a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.AssemblyInfo.cs +++ b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.AssemblyInfo.cs @@ -1,25 +1,25 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("SignalRTest")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+219665d4657ce917f2ec72657b9e54ab4daccc10")] -[assembly: System.Reflection.AssemblyProductAttribute("SignalRTest")] -[assembly: System.Reflection.AssemblyTitleAttribute("SignalRTest")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] -[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] -[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] - -// 由 MSBuild WriteCodeFragment 类生成。 - +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("SignalRTest")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+219665d4657ce917f2ec72657b9e54ab4daccc10")] +[assembly: System.Reflection.AssemblyProductAttribute("SignalRTest")] +[assembly: System.Reflection.AssemblyTitleAttribute("SignalRTest")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] +[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.AssemblyInfoInputs.cache b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.AssemblyInfoInputs.cache index e0e86c9..82fd38e 100644 --- a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.AssemblyInfoInputs.cache +++ b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.AssemblyInfoInputs.cache @@ -1 +1 @@ -7b34bc95a170122dd9a850b10d96882caa3af0e14348359c3820644e1bf59d7d +7b34bc95a170122dd9a850b10d96882caa3af0e14348359c3820644e1bf59d7d diff --git a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig index 9aa82f8..ab86a05 100644 --- a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig +++ b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig @@ -1,22 +1,22 @@ -is_global = true -build_property.ApplicationManifest = -build_property.StartupObject = -build_property.ApplicationDefaultFont = -build_property.ApplicationHighDpiMode = -build_property.ApplicationUseCompatibleTextRendering = -build_property.ApplicationVisualStyles = -build_property.TargetFramework = net8.0-windows -build_property.TargetPlatformMinVersion = 7.0 -build_property.UsingMicrosoftNETSdkWeb = -build_property.ProjectTypeGuids = -build_property.InvariantGlobalization = -build_property.PlatformNeutralAssembly = -build_property.EnforceExtendedAnalyzerRules = -build_property._SupportedPlatformList = Linux,macOS,Windows -build_property.RootNamespace = SignalRTest -build_property.ProjectDir = C:\Users\nanxun\Documents\IM\backend\SignalRTest\ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = -build_property.CsWinRTUseWindowsUIXamlProjections = false -build_property.EffectiveAnalysisLevelStyle = 8.0 -build_property.EnableCodeStyleSeverity = +is_global = true +build_property.ApplicationManifest = +build_property.StartupObject = +build_property.ApplicationDefaultFont = +build_property.ApplicationHighDpiMode = +build_property.ApplicationUseCompatibleTextRendering = +build_property.ApplicationVisualStyles = +build_property.TargetFramework = net8.0-windows +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = SignalRTest +build_property.ProjectDir = C:\Users\nanxun\Documents\IM\backend\SignalRTest\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.GlobalUsings.g.cs b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.GlobalUsings.g.cs index 84bbb89..fea4009 100644 --- a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.GlobalUsings.g.cs +++ b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.GlobalUsings.g.cs @@ -1,10 +1,10 @@ -// -global using global::System; -global using global::System.Collections.Generic; -global using global::System.Drawing; -global using global::System.IO; -global using global::System.Linq; -global using global::System.Net.Http; -global using global::System.Threading; -global using global::System.Threading.Tasks; -global using global::System.Windows.Forms; +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.Drawing; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; +global using global::System.Windows.Forms; diff --git a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.csproj.CoreCompileInputs.cache b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.csproj.CoreCompileInputs.cache index 2a2e766..18d9a16 100644 --- a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.csproj.CoreCompileInputs.cache +++ b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -798df1c64700bafd0af19dbc122dfc8329d96a84decc4c645cf227078afc5b70 +798df1c64700bafd0af19dbc122dfc8329d96a84decc4c645cf227078afc5b70 diff --git a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.csproj.FileListAbsolute.txt b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.csproj.FileListAbsolute.txt index 219b150..031c7da 100644 --- a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.csproj.FileListAbsolute.txt +++ b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.csproj.FileListAbsolute.txt @@ -1,41 +1,41 @@ -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\SignalRTest.exe -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\SignalRTest.deps.json -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\SignalRTest.runtimeconfig.json -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\SignalRTest.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\SignalRTest.pdb -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.Connections.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.Http.Connections.Client.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.Http.Connections.Common.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.SignalR.Client.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.SignalR.Client.Core.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.SignalR.Common.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.SignalR.Protocols.Json.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Bcl.AsyncInterfaces.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Bcl.TimeProvider.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.DependencyInjection.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.DependencyInjection.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.Features.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.Logging.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.Logging.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.Options.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.Diagnostics.DiagnosticSource.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.IO.Pipelines.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.Net.ServerSentEvents.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.Text.Encodings.Web.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.Text.Json.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.Threading.Channels.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\runtimes\browser\lib\net8.0\System.Text.Encodings.Web.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.csproj.AssemblyReference.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.Form1.resources -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.csproj.GenerateResource.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.GeneratedMSBuildEditorConfig.editorconfig -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.AssemblyInfoInputs.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.AssemblyInfo.cs -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.csproj.CoreCompileInputs.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRT.5CF90B77.Up2Date -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\refint\SignalRTest.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.pdb -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.genruntimeconfig.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\ref\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\SignalRTest.exe +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\SignalRTest.deps.json +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\SignalRTest.runtimeconfig.json +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\SignalRTest.pdb +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.Connections.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.Http.Connections.Client.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.Http.Connections.Common.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.SignalR.Client.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.SignalR.Client.Core.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.SignalR.Common.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.AspNetCore.SignalR.Protocols.Json.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Bcl.AsyncInterfaces.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Bcl.TimeProvider.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.DependencyInjection.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.DependencyInjection.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.Features.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.Logging.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.Logging.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.Options.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\Microsoft.Extensions.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.Diagnostics.DiagnosticSource.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.IO.Pipelines.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.Net.ServerSentEvents.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.Text.Encodings.Web.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.Text.Json.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\System.Threading.Channels.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Debug\net8.0-windows\runtimes\browser\lib\net8.0\System.Text.Encodings.Web.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.csproj.AssemblyReference.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.Form1.resources +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.csproj.GenerateResource.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.AssemblyInfoInputs.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.AssemblyInfo.cs +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.csproj.CoreCompileInputs.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRT.5CF90B77.Up2Date +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\refint\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.pdb +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\SignalRTest.genruntimeconfig.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Debug\net8.0-windows\ref\SignalRTest.dll diff --git a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.designer.deps.json b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.designer.deps.json index d315bf2..2c020ba 100644 --- a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.designer.deps.json +++ b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.designer.deps.json @@ -1,406 +1,406 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v8.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v8.0": { - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.0", - "Microsoft.Extensions.Features": "10.0.0", - "System.IO.Pipelines": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Net.ServerSentEvents": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", - "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", - "Microsoft.Bcl.TimeProvider": "10.0.0", - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging": "10.0.0", - "System.Threading.Channels": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Features/10.0.0": { - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Logging/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "System.Diagnostics.DiagnosticSource": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Options/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Primitives": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.IO.Pipelines/10.0.0": { - "runtime": { - "lib/net8.0/System.IO.Pipelines.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Net.ServerSentEvents/10.0.0": { - "runtime": { - "lib/net8.0/System.Net.ServerSentEvents.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Text.Encodings.Web/10.0.0": { - "runtime": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - }, - "runtimeTargets": { - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { - "rid": "browser", - "assetType": "runtime", - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Text.Json/10.0.0": { - "dependencies": { - "System.IO.Pipelines": "10.0.0", - "System.Text.Encodings.Web": "10.0.0" - }, - "runtime": { - "lib/net8.0/System.Text.Json.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Threading.Channels/10.0.0": { - "runtime": { - "lib/net8.0/System.Threading.Channels.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - } - } - }, - "libraries": { - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", - "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", - "hashPath": "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", - "path": "microsoft.aspnetcore.http.connections.client/10.0.0", - "hashPath": "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", - "path": "microsoft.aspnetcore.http.connections.common/10.0.0", - "hashPath": "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", - "path": "microsoft.aspnetcore.signalr.client/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", - "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", - "path": "microsoft.aspnetcore.signalr.common/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", - "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512" - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", - "path": "microsoft.bcl.asyncinterfaces/10.0.0", - "hashPath": "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512" - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", - "path": "microsoft.bcl.timeprovider/10.0.0", - "hashPath": "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", - "path": "microsoft.extensions.dependencyinjection/10.0.0", - "hashPath": "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", - "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", - "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Features/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", - "path": "microsoft.extensions.features/10.0.0", - "hashPath": "microsoft.extensions.features.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", - "path": "microsoft.extensions.logging/10.0.0", - "hashPath": "microsoft.extensions.logging.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", - "path": "microsoft.extensions.logging.abstractions/10.0.0", - "hashPath": "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Options/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", - "path": "microsoft.extensions.options/10.0.0", - "hashPath": "microsoft.extensions.options.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", - "path": "microsoft.extensions.primitives/10.0.0", - "hashPath": "microsoft.extensions.primitives.10.0.0.nupkg.sha512" - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", - "path": "system.diagnostics.diagnosticsource/10.0.0", - "hashPath": "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512" - }, - "System.IO.Pipelines/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", - "path": "system.io.pipelines/10.0.0", - "hashPath": "system.io.pipelines.10.0.0.nupkg.sha512" - }, - "System.Net.ServerSentEvents/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", - "path": "system.net.serversentevents/10.0.0", - "hashPath": "system.net.serversentevents.10.0.0.nupkg.sha512" - }, - "System.Text.Encodings.Web/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", - "path": "system.text.encodings.web/10.0.0", - "hashPath": "system.text.encodings.web.10.0.0.nupkg.sha512" - }, - "System.Text.Json/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", - "path": "system.text.json/10.0.0", - "hashPath": "system.text.json.10.0.0.nupkg.sha512" - }, - "System.Threading.Channels/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", - "path": "system.threading.channels/10.0.0", - "hashPath": "system.threading.channels.10.0.0.nupkg.sha512" - } - } +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "10.0.0", + "Microsoft.Extensions.Features": "10.0.0", + "System.IO.Pipelines": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Net.ServerSentEvents": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", + "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", + "Microsoft.Bcl.TimeProvider": "10.0.0", + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging": "10.0.0", + "System.Threading.Channels": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Features/10.0.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Logging/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "System.Diagnostics.DiagnosticSource": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Options/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Primitives": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.IO.Pipelines/10.0.0": { + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Net.ServerSentEvents/10.0.0": { + "runtime": { + "lib/net8.0/System.Net.ServerSentEvents.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Text.Encodings.Web/10.0.0": { + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + }, + "runtimeTargets": { + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { + "rid": "browser", + "assetType": "runtime", + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Text.Json/10.0.0": { + "dependencies": { + "System.IO.Pipelines": "10.0.0", + "System.Text.Encodings.Web": "10.0.0" + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Threading.Channels/10.0.0": { + "runtime": { + "lib/net8.0/System.Threading.Channels.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + } + } + }, + "libraries": { + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", + "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", + "hashPath": "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", + "path": "microsoft.aspnetcore.http.connections.client/10.0.0", + "hashPath": "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", + "path": "microsoft.aspnetcore.http.connections.common/10.0.0", + "hashPath": "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", + "path": "microsoft.aspnetcore.signalr.client/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", + "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", + "path": "microsoft.aspnetcore.signalr.common/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", + "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512" + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", + "path": "microsoft.bcl.asyncinterfaces/10.0.0", + "hashPath": "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512" + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", + "path": "microsoft.bcl.timeprovider/10.0.0", + "hashPath": "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", + "path": "microsoft.extensions.dependencyinjection/10.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Features/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", + "path": "microsoft.extensions.features/10.0.0", + "hashPath": "microsoft.extensions.features.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", + "path": "microsoft.extensions.logging/10.0.0", + "hashPath": "microsoft.extensions.logging.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", + "path": "microsoft.extensions.logging.abstractions/10.0.0", + "hashPath": "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Options/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", + "path": "microsoft.extensions.options/10.0.0", + "hashPath": "microsoft.extensions.options.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", + "path": "microsoft.extensions.primitives/10.0.0", + "hashPath": "microsoft.extensions.primitives.10.0.0.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", + "path": "system.diagnostics.diagnosticsource/10.0.0", + "hashPath": "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512" + }, + "System.IO.Pipelines/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", + "path": "system.io.pipelines/10.0.0", + "hashPath": "system.io.pipelines.10.0.0.nupkg.sha512" + }, + "System.Net.ServerSentEvents/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", + "path": "system.net.serversentevents/10.0.0", + "hashPath": "system.net.serversentevents.10.0.0.nupkg.sha512" + }, + "System.Text.Encodings.Web/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", + "path": "system.text.encodings.web/10.0.0", + "hashPath": "system.text.encodings.web.10.0.0.nupkg.sha512" + }, + "System.Text.Json/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", + "path": "system.text.json/10.0.0", + "hashPath": "system.text.json.10.0.0.nupkg.sha512" + }, + "System.Threading.Channels/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", + "path": "system.threading.channels/10.0.0", + "hashPath": "system.threading.channels.10.0.0.nupkg.sha512" + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.designer.runtimeconfig.json b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.designer.runtimeconfig.json index 62da401..bdec86a 100644 --- a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.designer.runtimeconfig.json +++ b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.designer.runtimeconfig.json @@ -1,25 +1,25 @@ -{ - "runtimeOptions": { - "tfm": "net8.0", - "frameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "8.0.0" - }, - { - "name": "Microsoft.WindowsDesktop.App", - "version": "8.0.0" - } - ], - "additionalProbingPaths": [ - "C:\\Users\\nanxun\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\nanxun\\.nuget\\packages", - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configProperties": { - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true, - "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false, - "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true - } - } +{ + "runtimeOptions": { + "tfm": "net8.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + { + "name": "Microsoft.WindowsDesktop.App", + "version": "8.0.0" + } + ], + "additionalProbingPaths": [ + "C:\\Users\\nanxun\\.dotnet\\store\\|arch|\\|tfm|", + "C:\\Users\\nanxun\\.nuget\\packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true, + "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false, + "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.genruntimeconfig.cache b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.genruntimeconfig.cache index ed70d1b..beb001a 100644 --- a/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.genruntimeconfig.cache +++ b/backend/SignalRTest/obj/Debug/net8.0-windows/SignalRTest.genruntimeconfig.cache @@ -1 +1 @@ -c05369691aaf31d105dcbffdf472a87fdbcb1c1844bdf44f71087b9d0141f9d6 +c05369691aaf31d105dcbffdf472a87fdbcb1c1844bdf44f71087b9d0141f9d6 diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/backend/SignalRTest/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs index 2217181..678fc5f 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs +++ b/backend/SignalRTest/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -1,4 +1,4 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.AssemblyInfo.cs b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.AssemblyInfo.cs index 5050a24..e86e319 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.AssemblyInfo.cs +++ b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.AssemblyInfo.cs @@ -1,25 +1,25 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("SignalRTest")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+219665d4657ce917f2ec72657b9e54ab4daccc10")] -[assembly: System.Reflection.AssemblyProductAttribute("SignalRTest")] -[assembly: System.Reflection.AssemblyTitleAttribute("SignalRTest")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] -[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] -[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] - -// 由 MSBuild WriteCodeFragment 类生成。 - +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("SignalRTest")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+219665d4657ce917f2ec72657b9e54ab4daccc10")] +[assembly: System.Reflection.AssemblyProductAttribute("SignalRTest")] +[assembly: System.Reflection.AssemblyTitleAttribute("SignalRTest")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] +[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.AssemblyInfoInputs.cache b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.AssemblyInfoInputs.cache index 4091985..f7abfd7 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.AssemblyInfoInputs.cache +++ b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.AssemblyInfoInputs.cache @@ -1 +1 @@ -6c95105ac76c9f3a2fc221cab5f1d5a22db152a0fc8b642ffb31000a29645355 +6c95105ac76c9f3a2fc221cab5f1d5a22db152a0fc8b642ffb31000a29645355 diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig index 9aa82f8..ab86a05 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig +++ b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig @@ -1,22 +1,22 @@ -is_global = true -build_property.ApplicationManifest = -build_property.StartupObject = -build_property.ApplicationDefaultFont = -build_property.ApplicationHighDpiMode = -build_property.ApplicationUseCompatibleTextRendering = -build_property.ApplicationVisualStyles = -build_property.TargetFramework = net8.0-windows -build_property.TargetPlatformMinVersion = 7.0 -build_property.UsingMicrosoftNETSdkWeb = -build_property.ProjectTypeGuids = -build_property.InvariantGlobalization = -build_property.PlatformNeutralAssembly = -build_property.EnforceExtendedAnalyzerRules = -build_property._SupportedPlatformList = Linux,macOS,Windows -build_property.RootNamespace = SignalRTest -build_property.ProjectDir = C:\Users\nanxun\Documents\IM\backend\SignalRTest\ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = -build_property.CsWinRTUseWindowsUIXamlProjections = false -build_property.EffectiveAnalysisLevelStyle = 8.0 -build_property.EnableCodeStyleSeverity = +is_global = true +build_property.ApplicationManifest = +build_property.StartupObject = +build_property.ApplicationDefaultFont = +build_property.ApplicationHighDpiMode = +build_property.ApplicationUseCompatibleTextRendering = +build_property.ApplicationVisualStyles = +build_property.TargetFramework = net8.0-windows +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = SignalRTest +build_property.ProjectDir = C:\Users\nanxun\Documents\IM\backend\SignalRTest\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.GlobalUsings.g.cs b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.GlobalUsings.g.cs index 84bbb89..fea4009 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.GlobalUsings.g.cs +++ b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.GlobalUsings.g.cs @@ -1,10 +1,10 @@ -// -global using global::System; -global using global::System.Collections.Generic; -global using global::System.Drawing; -global using global::System.IO; -global using global::System.Linq; -global using global::System.Net.Http; -global using global::System.Threading; -global using global::System.Threading.Tasks; -global using global::System.Windows.Forms; +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.Drawing; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; +global using global::System.Windows.Forms; diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.csproj.CoreCompileInputs.cache b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.csproj.CoreCompileInputs.cache index a89f163..1872322 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.csproj.CoreCompileInputs.cache +++ b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -c0744805f016017646cd8ec4510e403b0f32b575ddd6972e8a72d1a8bab8cf46 +c0744805f016017646cd8ec4510e403b0f32b575ddd6972e8a72d1a8bab8cf46 diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.csproj.FileListAbsolute.txt b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.csproj.FileListAbsolute.txt index 4fadf07..0930920 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.csproj.FileListAbsolute.txt +++ b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.csproj.FileListAbsolute.txt @@ -1,41 +1,41 @@ -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\SignalRTest.exe -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\SignalRTest.deps.json -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\SignalRTest.runtimeconfig.json -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\SignalRTest.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\SignalRTest.pdb -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.Connections.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.Http.Connections.Client.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.Http.Connections.Common.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.SignalR.Client.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.SignalR.Client.Core.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.SignalR.Common.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.SignalR.Protocols.Json.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Bcl.AsyncInterfaces.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Bcl.TimeProvider.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.DependencyInjection.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.DependencyInjection.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.Features.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.Logging.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.Logging.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.Options.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.Diagnostics.DiagnosticSource.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.IO.Pipelines.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.Net.ServerSentEvents.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.Text.Encodings.Web.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.Text.Json.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.Threading.Channels.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\runtimes\browser\lib\net8.0\System.Text.Encodings.Web.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.csproj.AssemblyReference.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.Form1.resources -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.csproj.GenerateResource.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.GeneratedMSBuildEditorConfig.editorconfig -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.AssemblyInfoInputs.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.AssemblyInfo.cs -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.csproj.CoreCompileInputs.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRT.5CF90B77.Up2Date -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\refint\SignalRTest.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.pdb -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.genruntimeconfig.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\ref\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\SignalRTest.exe +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\SignalRTest.deps.json +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\SignalRTest.runtimeconfig.json +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\SignalRTest.pdb +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.Connections.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.Http.Connections.Client.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.Http.Connections.Common.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.SignalR.Client.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.SignalR.Client.Core.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.SignalR.Common.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.AspNetCore.SignalR.Protocols.Json.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Bcl.AsyncInterfaces.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Bcl.TimeProvider.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.DependencyInjection.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.DependencyInjection.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.Features.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.Logging.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.Logging.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.Options.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\Microsoft.Extensions.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.Diagnostics.DiagnosticSource.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.IO.Pipelines.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.Net.ServerSentEvents.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.Text.Encodings.Web.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.Text.Json.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\System.Threading.Channels.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\runtimes\browser\lib\net8.0\System.Text.Encodings.Web.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.csproj.AssemblyReference.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.Form1.resources +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.csproj.GenerateResource.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.AssemblyInfoInputs.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.AssemblyInfo.cs +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.csproj.CoreCompileInputs.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRT.5CF90B77.Up2Date +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\refint\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.pdb +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\SignalRTest.genruntimeconfig.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\ref\SignalRTest.dll diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.genruntimeconfig.cache b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.genruntimeconfig.cache index afc3a0c..f14f743 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.genruntimeconfig.cache +++ b/backend/SignalRTest/obj/Release/net8.0-windows/SignalRTest.genruntimeconfig.cache @@ -1 +1 @@ -730922d6fa16c413a1bc880e81bd425dd03f1fdba9d65be778f79d886ef5a309 +730922d6fa16c413a1bc880e81bd425dd03f1fdba9d65be778f79d886ef5a309 diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs index 2217181..678fc5f 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -1,4 +1,4 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/PublishOutputs.c7711f52c6.txt b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/PublishOutputs.c7711f52c6.txt index 7145286..5d4afd7 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/PublishOutputs.c7711f52c6.txt +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/PublishOutputs.c7711f52c6.txt @@ -1,7 +1,7 @@ -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\SignalRTest.pdb -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\D3DCompiler_47_cor3.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\PenImc_cor3.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\PresentationNative_cor3.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\vcruntime140_cor3.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\wpfgfx_cor3.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\SignalRTest.exe +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\SignalRTest.pdb +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\D3DCompiler_47_cor3.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\PenImc_cor3.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\PresentationNative_cor3.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\vcruntime140_cor3.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\wpfgfx_cor3.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\publish\win-x64\SignalRTest.exe diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.AssemblyInfo.cs b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.AssemblyInfo.cs index 5050a24..e86e319 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.AssemblyInfo.cs +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.AssemblyInfo.cs @@ -1,25 +1,25 @@ -//------------------------------------------------------------------------------ -// -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 -// -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("SignalRTest")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+219665d4657ce917f2ec72657b9e54ab4daccc10")] -[assembly: System.Reflection.AssemblyProductAttribute("SignalRTest")] -[assembly: System.Reflection.AssemblyTitleAttribute("SignalRTest")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] -[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] -[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] - -// 由 MSBuild WriteCodeFragment 类生成。 - +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("SignalRTest")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+219665d4657ce917f2ec72657b9e54ab4daccc10")] +[assembly: System.Reflection.AssemblyProductAttribute("SignalRTest")] +[assembly: System.Reflection.AssemblyTitleAttribute("SignalRTest")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")] +[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.AssemblyInfoInputs.cache b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.AssemblyInfoInputs.cache index 4091985..f7abfd7 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.AssemblyInfoInputs.cache +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.AssemblyInfoInputs.cache @@ -1 +1 @@ -6c95105ac76c9f3a2fc221cab5f1d5a22db152a0fc8b642ffb31000a29645355 +6c95105ac76c9f3a2fc221cab5f1d5a22db152a0fc8b642ffb31000a29645355 diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig index 2040d7a..2e4e611 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.GeneratedMSBuildEditorConfig.editorconfig @@ -1,26 +1,26 @@ -is_global = true -build_property.EnableAotAnalyzer = -build_property.EnableSingleFileAnalyzer = true -build_property.EnableTrimAnalyzer = -build_property.IncludeAllContentForSelfExtract = -build_property.ApplicationManifest = -build_property.StartupObject = -build_property.ApplicationDefaultFont = -build_property.ApplicationHighDpiMode = -build_property.ApplicationUseCompatibleTextRendering = -build_property.ApplicationVisualStyles = -build_property.TargetFramework = net8.0-windows -build_property.TargetPlatformMinVersion = 7.0 -build_property.UsingMicrosoftNETSdkWeb = -build_property.ProjectTypeGuids = -build_property.InvariantGlobalization = -build_property.PlatformNeutralAssembly = -build_property.EnforceExtendedAnalyzerRules = -build_property._SupportedPlatformList = Linux,macOS,Windows -build_property.RootNamespace = SignalRTest -build_property.ProjectDir = C:\Users\nanxun\Documents\IM\backend\SignalRTest\ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = -build_property.CsWinRTUseWindowsUIXamlProjections = false -build_property.EffectiveAnalysisLevelStyle = 8.0 -build_property.EnableCodeStyleSeverity = +is_global = true +build_property.EnableAotAnalyzer = +build_property.EnableSingleFileAnalyzer = true +build_property.EnableTrimAnalyzer = +build_property.IncludeAllContentForSelfExtract = +build_property.ApplicationManifest = +build_property.StartupObject = +build_property.ApplicationDefaultFont = +build_property.ApplicationHighDpiMode = +build_property.ApplicationUseCompatibleTextRendering = +build_property.ApplicationVisualStyles = +build_property.TargetFramework = net8.0-windows +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = SignalRTest +build_property.ProjectDir = C:\Users\nanxun\Documents\IM\backend\SignalRTest\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.GlobalUsings.g.cs b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.GlobalUsings.g.cs index 84bbb89..fea4009 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.GlobalUsings.g.cs +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.GlobalUsings.g.cs @@ -1,10 +1,10 @@ -// -global using global::System; -global using global::System.Collections.Generic; -global using global::System.Drawing; -global using global::System.IO; -global using global::System.Linq; -global using global::System.Net.Http; -global using global::System.Threading; -global using global::System.Threading.Tasks; -global using global::System.Windows.Forms; +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.Drawing; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; +global using global::System.Windows.Forms; diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.csproj.CoreCompileInputs.cache b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.csproj.CoreCompileInputs.cache index a4e1e48..7f5f99a 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.csproj.CoreCompileInputs.cache +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -daefb47b81d1e29c0f7a86bf1362a741ac410e35b5fa3d960ba984bda12732bf +daefb47b81d1e29c0f7a86bf1362a741ac410e35b5fa3d960ba984bda12732bf diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.csproj.FileListAbsolute.txt b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.csproj.FileListAbsolute.txt index ff5fa4c..071116e 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.csproj.FileListAbsolute.txt +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.csproj.FileListAbsolute.txt @@ -1,495 +1,495 @@ -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\SignalRTest.exe -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\SignalRTest.deps.json -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\SignalRTest.runtimeconfig.json -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\SignalRTest.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\SignalRTest.pdb -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.Connections.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.Http.Connections.Client.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.Http.Connections.Common.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.SignalR.Client.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.SignalR.Client.Core.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.SignalR.Common.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.SignalR.Protocols.Json.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Bcl.AsyncInterfaces.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Bcl.TimeProvider.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.DependencyInjection.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.DependencyInjection.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.Features.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.Logging.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.Logging.Abstractions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.Options.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.DiagnosticSource.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Pipelines.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.ServerSentEvents.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.Encodings.Web.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.Json.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Channels.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.CSharp.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.VisualBasic.Core.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Win32.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Win32.Registry.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.AppContext.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Buffers.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Collections.Concurrent.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Collections.Immutable.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Collections.NonGeneric.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Collections.Specialized.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Collections.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.Annotations.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.DataAnnotations.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.EventBasedAsync.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.TypeConverter.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Configuration.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Console.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Core.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Data.Common.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Data.DataSetExtensions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Data.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.Contracts.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.Debug.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.FileVersionInfo.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.Process.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.StackTrace.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.TextWriterTraceListener.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.Tools.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.TraceSource.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.Tracing.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Drawing.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Dynamic.Runtime.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Formats.Asn1.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Formats.Tar.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Globalization.Calendars.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Globalization.Extensions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Globalization.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Compression.Brotli.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Compression.FileSystem.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Compression.ZipFile.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Compression.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.FileSystem.AccessControl.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.FileSystem.DriveInfo.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.FileSystem.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.FileSystem.Watcher.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.FileSystem.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.IsolatedStorage.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.MemoryMappedFiles.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Pipes.AccessControl.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Pipes.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.UnmanagedMemoryStream.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Linq.Expressions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Linq.Parallel.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Linq.Queryable.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Linq.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Memory.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Http.Json.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Http.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.HttpListener.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Mail.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.NameResolution.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.NetworkInformation.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Ping.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Quic.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Requests.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Security.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.ServicePoint.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Sockets.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.WebClient.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.WebHeaderCollection.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.WebProxy.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.WebSockets.Client.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.WebSockets.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Numerics.Vectors.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Numerics.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ObjectModel.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Private.CoreLib.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Private.DataContractSerialization.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Private.Uri.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Private.Xml.Linq.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Private.Xml.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.DispatchProxy.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Emit.ILGeneration.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Emit.Lightweight.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Emit.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Extensions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Metadata.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.TypeExtensions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Resources.Reader.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Resources.ResourceManager.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Resources.Writer.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.CompilerServices.Unsafe.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.CompilerServices.VisualC.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Extensions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Handles.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.InteropServices.JavaScript.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.InteropServices.RuntimeInformation.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.InteropServices.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Intrinsics.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Loader.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Numerics.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Serialization.Formatters.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Serialization.Json.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Serialization.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Serialization.Xml.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Serialization.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.AccessControl.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Claims.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Algorithms.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Cng.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Csp.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Encoding.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.OpenSsl.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.X509Certificates.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Principal.Windows.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Principal.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.SecureString.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ServiceModel.Web.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ServiceProcess.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.Encoding.CodePages.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.Encoding.Extensions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.Encoding.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.RegularExpressions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Overlapped.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Tasks.Dataflow.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Tasks.Extensions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Tasks.Parallel.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Tasks.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Thread.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.ThreadPool.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Timer.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Transactions.Local.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Transactions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ValueTuple.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Web.HttpUtility.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Web.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.Linq.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.ReaderWriter.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.Serialization.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.XDocument.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.XPath.XDocument.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.XPath.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.XmlDocument.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.XmlSerializer.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\mscorlib.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\netstandard.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Accessibility.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\DirectWriteForwarder.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.VisualBasic.Forms.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.VisualBasic.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Win32.Registry.AccessControl.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Win32.SystemEvents.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationCore.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework-SystemCore.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework-SystemData.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework-SystemDrawing.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework-SystemXml.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework-SystemXmlLinq.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.Aero.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.Aero2.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.AeroLite.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.Classic.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.Luna.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.Royale.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationUI.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ReachFramework.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.CodeDom.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Configuration.ConfigurationManager.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Design.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.EventLog.Messages.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.EventLog.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.PerformanceCounter.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.DirectoryServices.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Drawing.Common.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Drawing.Design.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Drawing.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Packaging.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Printing.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Resources.Extensions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Pkcs.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.ProtectedData.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Xml.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Permissions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.AccessControl.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Controls.Ribbon.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Extensions.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Forms.Design.Editors.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Forms.Design.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Forms.Primitives.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Forms.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Input.Manipulations.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Presentation.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xaml.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\UIAutomationClient.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\UIAutomationClientSideProviders.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\UIAutomationProvider.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\UIAutomationTypes.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\WindowsBase.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\WindowsFormsIntegration.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.DiaSymReader.Native.amd64.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Compression.Native.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\clretwrc.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\clrgc.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\clrjit.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\coreclr.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\createdump.exe -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\hostfxr.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\hostpolicy.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\mscordaccore.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\mscordaccore_amd64_amd64_8.0.1925.36514.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\mscordbi.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\mscorrc.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\msquic.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\D3DCompiler_47_cor3.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PenImc_cor3.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationNative_cor3.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\vcruntime140_cor3.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\wpfgfx_cor3.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\Microsoft.VisualBasic.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\PresentationCore.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\PresentationFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\PresentationUI.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\ReachFramework.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Windows.Controls.Ribbon.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Windows.Forms.Design.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Windows.Forms.Primitives.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Windows.Forms.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Windows.Input.Manipulations.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Xaml.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\UIAutomationClient.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\UIAutomationClientSideProviders.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\UIAutomationProvider.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\UIAutomationTypes.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\WindowsBase.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\WindowsFormsIntegration.resources.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.csproj.AssemblyReference.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.Form1.resources -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.csproj.GenerateResource.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.GeneratedMSBuildEditorConfig.editorconfig -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.AssemblyInfoInputs.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.AssemblyInfo.cs -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.csproj.CoreCompileInputs.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRT.5CF90B77.Up2Date -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\refint\SignalRTest.dll -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.pdb -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.genruntimeconfig.cache -C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\ref\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\SignalRTest.exe +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\SignalRTest.deps.json +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\SignalRTest.runtimeconfig.json +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\SignalRTest.pdb +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.Connections.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.Http.Connections.Client.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.Http.Connections.Common.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.SignalR.Client.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.SignalR.Client.Core.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.SignalR.Common.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.AspNetCore.SignalR.Protocols.Json.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Bcl.AsyncInterfaces.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Bcl.TimeProvider.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.DependencyInjection.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.DependencyInjection.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.Features.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.Logging.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.Logging.Abstractions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.Options.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Extensions.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.DiagnosticSource.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Pipelines.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.ServerSentEvents.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.Encodings.Web.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.Json.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Channels.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.CSharp.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.VisualBasic.Core.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Win32.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Win32.Registry.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.AppContext.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Buffers.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Collections.Concurrent.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Collections.Immutable.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Collections.NonGeneric.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Collections.Specialized.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Collections.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.Annotations.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.DataAnnotations.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.EventBasedAsync.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.TypeConverter.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ComponentModel.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Configuration.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Console.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Core.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Data.Common.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Data.DataSetExtensions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Data.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.Contracts.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.Debug.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.FileVersionInfo.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.Process.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.StackTrace.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.TextWriterTraceListener.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.Tools.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.TraceSource.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.Tracing.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Drawing.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Dynamic.Runtime.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Formats.Asn1.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Formats.Tar.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Globalization.Calendars.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Globalization.Extensions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Globalization.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Compression.Brotli.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Compression.FileSystem.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Compression.ZipFile.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Compression.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.FileSystem.AccessControl.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.FileSystem.DriveInfo.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.FileSystem.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.FileSystem.Watcher.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.FileSystem.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.IsolatedStorage.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.MemoryMappedFiles.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Pipes.AccessControl.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Pipes.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.UnmanagedMemoryStream.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Linq.Expressions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Linq.Parallel.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Linq.Queryable.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Linq.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Memory.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Http.Json.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Http.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.HttpListener.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Mail.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.NameResolution.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.NetworkInformation.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Ping.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Quic.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Requests.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Security.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.ServicePoint.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.Sockets.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.WebClient.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.WebHeaderCollection.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.WebProxy.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.WebSockets.Client.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.WebSockets.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Net.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Numerics.Vectors.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Numerics.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ObjectModel.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Private.CoreLib.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Private.DataContractSerialization.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Private.Uri.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Private.Xml.Linq.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Private.Xml.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.DispatchProxy.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Emit.ILGeneration.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Emit.Lightweight.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Emit.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Extensions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Metadata.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.TypeExtensions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Reflection.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Resources.Reader.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Resources.ResourceManager.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Resources.Writer.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.CompilerServices.Unsafe.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.CompilerServices.VisualC.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Extensions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Handles.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.InteropServices.JavaScript.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.InteropServices.RuntimeInformation.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.InteropServices.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Intrinsics.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Loader.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Numerics.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Serialization.Formatters.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Serialization.Json.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Serialization.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Serialization.Xml.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.Serialization.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Runtime.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.AccessControl.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Claims.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Algorithms.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Cng.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Csp.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Encoding.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.OpenSsl.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.X509Certificates.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Principal.Windows.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Principal.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.SecureString.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ServiceModel.Web.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ServiceProcess.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.Encoding.CodePages.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.Encoding.Extensions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.Encoding.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Text.RegularExpressions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Overlapped.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Tasks.Dataflow.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Tasks.Extensions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Tasks.Parallel.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Tasks.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Thread.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.ThreadPool.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.Timer.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Transactions.Local.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Transactions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.ValueTuple.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Web.HttpUtility.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Web.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.Linq.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.ReaderWriter.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.Serialization.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.XDocument.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.XPath.XDocument.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.XPath.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.XmlDocument.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.XmlSerializer.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xml.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\mscorlib.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\netstandard.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Accessibility.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\DirectWriteForwarder.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.VisualBasic.Forms.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.VisualBasic.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Win32.Registry.AccessControl.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.Win32.SystemEvents.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationCore.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework-SystemCore.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework-SystemData.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework-SystemDrawing.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework-SystemXml.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework-SystemXmlLinq.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.Aero.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.Aero2.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.AeroLite.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.Classic.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.Luna.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.Royale.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationFramework.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationUI.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ReachFramework.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.CodeDom.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Configuration.ConfigurationManager.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Design.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.EventLog.Messages.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.EventLog.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Diagnostics.PerformanceCounter.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.DirectoryServices.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Drawing.Common.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Drawing.Design.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Drawing.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Packaging.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Printing.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Resources.Extensions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Pkcs.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.ProtectedData.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Cryptography.Xml.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Security.Permissions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Threading.AccessControl.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Controls.Ribbon.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Extensions.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Forms.Design.Editors.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Forms.Design.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Forms.Primitives.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Forms.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Input.Manipulations.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Windows.Presentation.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.Xaml.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\UIAutomationClient.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\UIAutomationClientSideProviders.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\UIAutomationProvider.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\UIAutomationTypes.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\WindowsBase.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\WindowsFormsIntegration.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\Microsoft.DiaSymReader.Native.amd64.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\System.IO.Compression.Native.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\clretwrc.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\clrgc.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\clrjit.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\coreclr.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\createdump.exe +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\hostfxr.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\hostpolicy.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\mscordaccore.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\mscordaccore_amd64_amd64_8.0.1925.36514.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\mscordbi.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\mscorrc.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\msquic.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\D3DCompiler_47_cor3.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PenImc_cor3.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\PresentationNative_cor3.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\vcruntime140_cor3.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\wpfgfx_cor3.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\cs\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\de\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\es\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\fr\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\it\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ja\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ko\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pl\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\pt-BR\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\ru\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\tr\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hans\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\Microsoft.VisualBasic.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\PresentationCore.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\PresentationFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\PresentationUI.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\ReachFramework.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Windows.Controls.Ribbon.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Windows.Forms.Design.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Windows.Forms.Primitives.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Windows.Forms.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Windows.Input.Manipulations.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\System.Xaml.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\UIAutomationClient.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\UIAutomationClientSideProviders.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\UIAutomationProvider.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\UIAutomationTypes.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\WindowsBase.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\bin\Release\net8.0-windows\win-x64\zh-Hant\WindowsFormsIntegration.resources.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.csproj.AssemblyReference.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.Form1.resources +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.csproj.GenerateResource.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.AssemblyInfoInputs.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.AssemblyInfo.cs +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.csproj.CoreCompileInputs.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRT.5CF90B77.Up2Date +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\refint\SignalRTest.dll +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.pdb +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\SignalRTest.genruntimeconfig.cache +C:\Users\nanxun\Documents\IM\backend\SignalRTest\obj\Release\net8.0-windows\win-x64\ref\SignalRTest.dll diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.deps.json b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.deps.json index b88d09e..6e2519d 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.deps.json +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.deps.json @@ -1,1325 +1,1325 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v8.0/win-x64", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v8.0": {}, - ".NETCoreApp,Version=v8.0/win-x64": { - "SignalRTest/1.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Client": "10.0.0", - "Microsoft.NET.ILLink.Tasks": "8.0.19", - "runtimepack.Microsoft.NETCore.App.Runtime.win-x64": "8.0.19", - "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64": "8.0.19" - }, - "runtime": { - "SignalRTest.dll": {} - } - }, - "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/8.0.19": { - "runtime": { - "Microsoft.CSharp.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "Microsoft.VisualBasic.Core.dll": { - "assemblyVersion": "13.0.0.0", - "fileVersion": "13.0.1925.36514" - }, - "Microsoft.Win32.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "Microsoft.Win32.Registry.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.AppContext.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Buffers.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Collections.Concurrent.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Collections.Immutable.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Collections.NonGeneric.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Collections.Specialized.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Collections.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.Annotations.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.DataAnnotations.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.EventBasedAsync.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.TypeConverter.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ComponentModel.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Configuration.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Console.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Core.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Data.Common.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Data.DataSetExtensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Data.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.Contracts.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.Debug.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.FileVersionInfo.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.Process.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.StackTrace.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.TextWriterTraceListener.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.Tools.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.TraceSource.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.Tracing.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Drawing.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Dynamic.Runtime.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Formats.Asn1.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Formats.Tar.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Globalization.Calendars.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Globalization.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Globalization.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Compression.Brotli.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Compression.FileSystem.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Compression.ZipFile.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Compression.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.FileSystem.AccessControl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.FileSystem.DriveInfo.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.FileSystem.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.FileSystem.Watcher.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.FileSystem.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.IsolatedStorage.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.MemoryMappedFiles.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Pipes.AccessControl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.Pipes.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.UnmanagedMemoryStream.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.IO.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Linq.Expressions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Linq.Parallel.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Linq.Queryable.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Linq.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Memory.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Http.Json.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Http.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.HttpListener.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Mail.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.NameResolution.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.NetworkInformation.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Ping.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Quic.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Requests.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Security.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.ServicePoint.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.Sockets.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.WebClient.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.WebHeaderCollection.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.WebProxy.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.WebSockets.Client.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.WebSockets.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Net.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Numerics.Vectors.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Numerics.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ObjectModel.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Private.CoreLib.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Private.DataContractSerialization.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Private.Uri.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Private.Xml.Linq.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Private.Xml.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.DispatchProxy.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Emit.ILGeneration.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Emit.Lightweight.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Emit.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Metadata.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.TypeExtensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Reflection.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Resources.Reader.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Resources.ResourceManager.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Resources.Writer.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.CompilerServices.Unsafe.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.CompilerServices.VisualC.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Handles.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.InteropServices.JavaScript.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.InteropServices.RuntimeInformation.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.InteropServices.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Intrinsics.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Loader.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Numerics.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Serialization.Formatters.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Serialization.Json.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Serialization.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Serialization.Xml.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.Serialization.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Runtime.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.AccessControl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Claims.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Algorithms.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Cng.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Csp.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Encoding.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.OpenSsl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.X509Certificates.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Principal.Windows.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Principal.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.SecureString.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ServiceModel.Web.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ServiceProcess.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Text.Encoding.CodePages.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Text.Encoding.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Text.Encoding.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Text.RegularExpressions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Overlapped.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Tasks.Dataflow.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Tasks.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Tasks.Parallel.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Tasks.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Thread.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.ThreadPool.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.Timer.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Transactions.Local.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Transactions.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.ValueTuple.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Web.HttpUtility.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Web.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Windows.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.Linq.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.ReaderWriter.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.Serialization.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.XDocument.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.XPath.XDocument.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.XPath.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.XmlDocument.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.XmlSerializer.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Xml.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "mscorlib.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "netstandard.dll": { - "assemblyVersion": "2.1.0.0", - "fileVersion": "8.0.1925.36514" - } - } - }, - "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/8.0.19": { - "runtime": { - "Accessibility.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "DirectWriteForwarder.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "Microsoft.VisualBasic.Forms.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "Microsoft.VisualBasic.dll": { - "assemblyVersion": "10.1.0.0", - "fileVersion": "8.0.1925.36703" - }, - "Microsoft.Win32.Registry.AccessControl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "Microsoft.Win32.SystemEvents.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "PresentationCore.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework-SystemCore.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework-SystemData.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework-SystemDrawing.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework-SystemXml.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework-SystemXmlLinq.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.Aero.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.Aero2.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.AeroLite.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.Classic.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.Luna.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.Royale.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationFramework.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "PresentationUI.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "ReachFramework.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "System.CodeDom.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Configuration.ConfigurationManager.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Design.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Diagnostics.EventLog.Messages.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "0.0.0.0" - }, - "System.Diagnostics.EventLog.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Diagnostics.PerformanceCounter.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.DirectoryServices.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Drawing.Common.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Drawing.Design.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Drawing.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.IO.Packaging.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Printing.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "System.Resources.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Pkcs.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.ProtectedData.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Cryptography.Xml.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Security.Permissions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Threading.AccessControl.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Windows.Controls.Ribbon.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "System.Windows.Extensions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36514" - }, - "System.Windows.Forms.Design.Editors.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Windows.Forms.Design.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Windows.Forms.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Windows.Forms.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36703" - }, - "System.Windows.Input.Manipulations.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "System.Windows.Presentation.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "System.Xaml.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "UIAutomationClient.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "UIAutomationClientSideProviders.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "UIAutomationProvider.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "UIAutomationTypes.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "WindowsBase.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - }, - "WindowsFormsIntegration.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.1925.36811" - } - }, - "native": { - "D3DCompiler_47_cor3.dll": { - "fileVersion": "10.0.22621.3233" - }, - "PenImc_cor3.dll": { - "fileVersion": "8.0.1925.36811" - }, - "PresentationNative_cor3.dll": { - "fileVersion": "8.0.25.16802" - }, - "vcruntime140_cor3.dll": { - "fileVersion": "14.42.34438.0" - }, - "wpfgfx_cor3.dll": { - "fileVersion": "8.0.1925.36811" - } - } - }, - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.0", - "Microsoft.Extensions.Features": "10.0.0", - "System.IO.Pipelines": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Net.ServerSentEvents": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", - "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", - "Microsoft.Bcl.TimeProvider": "10.0.0", - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging": "10.0.0", - "System.Threading.Channels": "10.0.0" - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0" - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Features/10.0.0": { - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Logging/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "System.Diagnostics.DiagnosticSource": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Options/10.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Primitives": "10.0.0" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "Microsoft.NET.ILLink.Tasks/8.0.19": {}, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.IO.Pipelines/10.0.0": { - "runtime": { - "lib/net8.0/System.IO.Pipelines.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Net.ServerSentEvents/10.0.0": { - "runtime": { - "lib/net8.0/System.Net.ServerSentEvents.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Text.Encodings.Web/10.0.0": { - "runtime": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Text.Json/10.0.0": { - "dependencies": { - "System.IO.Pipelines": "10.0.0", - "System.Text.Encodings.Web": "10.0.0" - }, - "runtime": { - "lib/net8.0/System.Text.Json.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - }, - "System.Threading.Channels/10.0.0": { - "runtime": { - "lib/net8.0/System.Threading.Channels.dll": { - "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.25.52411" - } - } - } - } - }, - "libraries": { - "SignalRTest/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/8.0.19": { - "type": "runtimepack", - "serviceable": false, - "sha512": "" - }, - "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/8.0.19": { - "type": "runtimepack", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", - "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", - "hashPath": "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", - "path": "microsoft.aspnetcore.http.connections.client/10.0.0", - "hashPath": "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", - "path": "microsoft.aspnetcore.http.connections.common/10.0.0", - "hashPath": "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", - "path": "microsoft.aspnetcore.signalr.client/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", - "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", - "path": "microsoft.aspnetcore.signalr.common/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", - "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", - "hashPath": "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512" - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", - "path": "microsoft.bcl.asyncinterfaces/10.0.0", - "hashPath": "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512" - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", - "path": "microsoft.bcl.timeprovider/10.0.0", - "hashPath": "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", - "path": "microsoft.extensions.dependencyinjection/10.0.0", - "hashPath": "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", - "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", - "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Features/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", - "path": "microsoft.extensions.features/10.0.0", - "hashPath": "microsoft.extensions.features.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", - "path": "microsoft.extensions.logging/10.0.0", - "hashPath": "microsoft.extensions.logging.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", - "path": "microsoft.extensions.logging.abstractions/10.0.0", - "hashPath": "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Options/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", - "path": "microsoft.extensions.options/10.0.0", - "hashPath": "microsoft.extensions.options.10.0.0.nupkg.sha512" - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", - "path": "microsoft.extensions.primitives/10.0.0", - "hashPath": "microsoft.extensions.primitives.10.0.0.nupkg.sha512" - }, - "Microsoft.NET.ILLink.Tasks/8.0.19": { - "type": "package", - "serviceable": true, - "sha512": "sha512-IhHf+zeZiaE5EXRyxILd4qM+Hj9cxV3sa8MpzZgeEhpvaG3a1VEGF6UCaPFLO44Kua3JkLKluE0SWVamS50PlA==", - "path": "microsoft.net.illink.tasks/8.0.19", - "hashPath": "microsoft.net.illink.tasks.8.0.19.nupkg.sha512" - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", - "path": "system.diagnostics.diagnosticsource/10.0.0", - "hashPath": "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512" - }, - "System.IO.Pipelines/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", - "path": "system.io.pipelines/10.0.0", - "hashPath": "system.io.pipelines.10.0.0.nupkg.sha512" - }, - "System.Net.ServerSentEvents/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", - "path": "system.net.serversentevents/10.0.0", - "hashPath": "system.net.serversentevents.10.0.0.nupkg.sha512" - }, - "System.Text.Encodings.Web/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", - "path": "system.text.encodings.web/10.0.0", - "hashPath": "system.text.encodings.web.10.0.0.nupkg.sha512" - }, - "System.Text.Json/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", - "path": "system.text.json/10.0.0", - "hashPath": "system.text.json.10.0.0.nupkg.sha512" - }, - "System.Threading.Channels/10.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", - "path": "system.threading.channels/10.0.0", - "hashPath": "system.threading.channels.10.0.0.nupkg.sha512" - } - }, - "runtimes": { - "win-x64": [ - "win", - "any", - "base" - ] - } +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0/win-x64", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": {}, + ".NETCoreApp,Version=v8.0/win-x64": { + "SignalRTest/1.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Client": "10.0.0", + "Microsoft.NET.ILLink.Tasks": "8.0.19", + "runtimepack.Microsoft.NETCore.App.Runtime.win-x64": "8.0.19", + "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64": "8.0.19" + }, + "runtime": { + "SignalRTest.dll": {} + } + }, + "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/8.0.19": { + "runtime": { + "Microsoft.CSharp.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "Microsoft.VisualBasic.Core.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.1925.36514" + }, + "Microsoft.Win32.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "Microsoft.Win32.Registry.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.AppContext.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Buffers.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Collections.Concurrent.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Collections.Immutable.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Collections.NonGeneric.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Collections.Specialized.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Collections.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.Annotations.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.DataAnnotations.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.EventBasedAsync.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.TypeConverter.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ComponentModel.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Configuration.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Console.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Core.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Data.Common.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Data.DataSetExtensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Data.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.Contracts.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.Debug.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.FileVersionInfo.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.Process.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.StackTrace.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.TextWriterTraceListener.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.Tools.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.TraceSource.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.Tracing.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Drawing.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Dynamic.Runtime.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Formats.Asn1.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Formats.Tar.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Globalization.Calendars.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Globalization.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Globalization.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Compression.Brotli.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Compression.FileSystem.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Compression.ZipFile.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Compression.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.FileSystem.AccessControl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.FileSystem.DriveInfo.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.FileSystem.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.FileSystem.Watcher.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.FileSystem.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.IsolatedStorage.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.MemoryMappedFiles.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Pipes.AccessControl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.Pipes.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.UnmanagedMemoryStream.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.IO.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Linq.Expressions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Linq.Parallel.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Linq.Queryable.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Linq.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Memory.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Http.Json.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Http.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.HttpListener.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Mail.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.NameResolution.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.NetworkInformation.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Ping.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Quic.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Requests.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Security.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.ServicePoint.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.Sockets.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.WebClient.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.WebHeaderCollection.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.WebProxy.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.WebSockets.Client.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.WebSockets.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Net.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Numerics.Vectors.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Numerics.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ObjectModel.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Private.CoreLib.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Private.DataContractSerialization.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Private.Uri.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Private.Xml.Linq.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Private.Xml.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.DispatchProxy.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Emit.ILGeneration.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Emit.Lightweight.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Emit.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Metadata.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.TypeExtensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Reflection.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Resources.Reader.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Resources.ResourceManager.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Resources.Writer.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.CompilerServices.VisualC.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Handles.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.InteropServices.JavaScript.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.InteropServices.RuntimeInformation.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.InteropServices.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Intrinsics.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Loader.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Numerics.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Serialization.Formatters.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Serialization.Json.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Serialization.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Serialization.Xml.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.Serialization.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Runtime.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.AccessControl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Claims.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Algorithms.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Cng.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Csp.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Encoding.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.OpenSsl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.X509Certificates.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Principal.Windows.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Principal.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.SecureString.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ServiceModel.Web.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ServiceProcess.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Text.Encoding.CodePages.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Text.Encoding.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Text.Encoding.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Text.RegularExpressions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Overlapped.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Tasks.Dataflow.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Tasks.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Tasks.Parallel.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Tasks.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Thread.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.ThreadPool.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.Timer.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Transactions.Local.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Transactions.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.ValueTuple.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Web.HttpUtility.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Web.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Windows.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.Linq.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.ReaderWriter.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.Serialization.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.XDocument.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.XPath.XDocument.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.XPath.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.XmlDocument.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.XmlSerializer.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Xml.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "mscorlib.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "netstandard.dll": { + "assemblyVersion": "2.1.0.0", + "fileVersion": "8.0.1925.36514" + } + } + }, + "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/8.0.19": { + "runtime": { + "Accessibility.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "DirectWriteForwarder.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "Microsoft.VisualBasic.Forms.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "Microsoft.VisualBasic.dll": { + "assemblyVersion": "10.1.0.0", + "fileVersion": "8.0.1925.36703" + }, + "Microsoft.Win32.Registry.AccessControl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "Microsoft.Win32.SystemEvents.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "PresentationCore.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework-SystemCore.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework-SystemData.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework-SystemDrawing.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework-SystemXml.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework-SystemXmlLinq.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.Aero.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.Aero2.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.AeroLite.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.Classic.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.Luna.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.Royale.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationFramework.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "PresentationUI.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "ReachFramework.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "System.CodeDom.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Configuration.ConfigurationManager.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Design.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Diagnostics.EventLog.Messages.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "0.0.0.0" + }, + "System.Diagnostics.EventLog.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Diagnostics.PerformanceCounter.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.DirectoryServices.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Drawing.Common.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Drawing.Design.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Drawing.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.IO.Packaging.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Printing.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "System.Resources.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Pkcs.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.ProtectedData.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Cryptography.Xml.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Security.Permissions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Threading.AccessControl.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Windows.Controls.Ribbon.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "System.Windows.Extensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36514" + }, + "System.Windows.Forms.Design.Editors.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Windows.Forms.Design.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Windows.Forms.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Windows.Forms.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36703" + }, + "System.Windows.Input.Manipulations.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "System.Windows.Presentation.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "System.Xaml.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "UIAutomationClient.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "UIAutomationClientSideProviders.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "UIAutomationProvider.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "UIAutomationTypes.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "WindowsBase.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + }, + "WindowsFormsIntegration.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.1925.36811" + } + }, + "native": { + "D3DCompiler_47_cor3.dll": { + "fileVersion": "10.0.22621.3233" + }, + "PenImc_cor3.dll": { + "fileVersion": "8.0.1925.36811" + }, + "PresentationNative_cor3.dll": { + "fileVersion": "8.0.25.16802" + }, + "vcruntime140_cor3.dll": { + "fileVersion": "14.42.34438.0" + }, + "wpfgfx_cor3.dll": { + "fileVersion": "8.0.1925.36811" + } + } + }, + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "10.0.0", + "Microsoft.Extensions.Features": "10.0.0", + "System.IO.Pipelines": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Net.ServerSentEvents": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", + "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", + "Microsoft.Bcl.TimeProvider": "10.0.0", + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging": "10.0.0", + "System.Threading.Channels": "10.0.0" + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Features/10.0.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Logging/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "System.Diagnostics.DiagnosticSource": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Options/10.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Primitives": "10.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.NET.ILLink.Tasks/8.0.19": {}, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.IO.Pipelines/10.0.0": { + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Net.ServerSentEvents/10.0.0": { + "runtime": { + "lib/net8.0/System.Net.ServerSentEvents.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Text.Encodings.Web/10.0.0": { + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Text.Json/10.0.0": { + "dependencies": { + "System.IO.Pipelines": "10.0.0", + "System.Text.Encodings.Web": "10.0.0" + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "System.Threading.Channels/10.0.0": { + "runtime": { + "lib/net8.0/System.Threading.Channels.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + } + } + }, + "libraries": { + "SignalRTest/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/8.0.19": { + "type": "runtimepack", + "serviceable": false, + "sha512": "" + }, + "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/8.0.19": { + "type": "runtimepack", + "serviceable": false, + "sha512": "" + }, + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", + "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", + "hashPath": "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", + "path": "microsoft.aspnetcore.http.connections.client/10.0.0", + "hashPath": "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", + "path": "microsoft.aspnetcore.http.connections.common/10.0.0", + "hashPath": "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", + "path": "microsoft.aspnetcore.signalr.client/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", + "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", + "path": "microsoft.aspnetcore.signalr.common/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", + "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", + "hashPath": "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512" + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", + "path": "microsoft.bcl.asyncinterfaces/10.0.0", + "hashPath": "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512" + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", + "path": "microsoft.bcl.timeprovider/10.0.0", + "hashPath": "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", + "path": "microsoft.extensions.dependencyinjection/10.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Features/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", + "path": "microsoft.extensions.features/10.0.0", + "hashPath": "microsoft.extensions.features.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", + "path": "microsoft.extensions.logging/10.0.0", + "hashPath": "microsoft.extensions.logging.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", + "path": "microsoft.extensions.logging.abstractions/10.0.0", + "hashPath": "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Options/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", + "path": "microsoft.extensions.options/10.0.0", + "hashPath": "microsoft.extensions.options.10.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", + "path": "microsoft.extensions.primitives/10.0.0", + "hashPath": "microsoft.extensions.primitives.10.0.0.nupkg.sha512" + }, + "Microsoft.NET.ILLink.Tasks/8.0.19": { + "type": "package", + "serviceable": true, + "sha512": "sha512-IhHf+zeZiaE5EXRyxILd4qM+Hj9cxV3sa8MpzZgeEhpvaG3a1VEGF6UCaPFLO44Kua3JkLKluE0SWVamS50PlA==", + "path": "microsoft.net.illink.tasks/8.0.19", + "hashPath": "microsoft.net.illink.tasks.8.0.19.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", + "path": "system.diagnostics.diagnosticsource/10.0.0", + "hashPath": "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512" + }, + "System.IO.Pipelines/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", + "path": "system.io.pipelines/10.0.0", + "hashPath": "system.io.pipelines.10.0.0.nupkg.sha512" + }, + "System.Net.ServerSentEvents/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", + "path": "system.net.serversentevents/10.0.0", + "hashPath": "system.net.serversentevents.10.0.0.nupkg.sha512" + }, + "System.Text.Encodings.Web/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", + "path": "system.text.encodings.web/10.0.0", + "hashPath": "system.text.encodings.web.10.0.0.nupkg.sha512" + }, + "System.Text.Json/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", + "path": "system.text.json/10.0.0", + "hashPath": "system.text.json.10.0.0.nupkg.sha512" + }, + "System.Threading.Channels/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", + "path": "system.threading.channels/10.0.0", + "hashPath": "system.threading.channels.10.0.0.nupkg.sha512" + } + }, + "runtimes": { + "win-x64": [ + "win", + "any", + "base" + ] + } } \ No newline at end of file diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genbundle.cache b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genbundle.cache index 5b491f2..e24f058 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genbundle.cache +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genbundle.cache @@ -1 +1 @@ -f5ec142e4205efa4e2a47deb98b16a53a730a2e2889eb06a1b8d2cf783369ecb +f5ec142e4205efa4e2a47deb98b16a53a730a2e2889eb06a1b8d2cf783369ecb diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genpublishdeps.cache b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genpublishdeps.cache index e3cfe8f..59ab520 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genpublishdeps.cache +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genpublishdeps.cache @@ -1 +1 @@ -fd0643ce84d5db8d093a96fb4a51a64ab36d090f48e974c315bcd467642d24cb +fd0643ce84d5db8d093a96fb4a51a64ab36d090f48e974c315bcd467642d24cb diff --git a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genruntimeconfig.cache b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genruntimeconfig.cache index 0fd30c9..8385c1a 100644 --- a/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genruntimeconfig.cache +++ b/backend/SignalRTest/obj/Release/net8.0-windows/win-x64/SignalRTest.genruntimeconfig.cache @@ -1 +1 @@ -a51d30e150bdb740388f5f5acc59cb2abb41798f409c2d9c6e00372e67cc3428 +a51d30e150bdb740388f5f5acc59cb2abb41798f409c2d9c6e00372e67cc3428 diff --git a/backend/SignalRTest/obj/SignalRTest.csproj.nuget.dgspec.json b/backend/SignalRTest/obj/SignalRTest.csproj.nuget.dgspec.json index b2577f0..b0ba274 100644 --- a/backend/SignalRTest/obj/SignalRTest.csproj.nuget.dgspec.json +++ b/backend/SignalRTest/obj/SignalRTest.csproj.nuget.dgspec.json @@ -1,83 +1,83 @@ -{ - "format": 1, - "restore": { - "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj": {} - }, - "projects": { - "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", - "projectName": "SignalRTest", - "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", - "packagesPath": "C:\\Users\\nanxun\\.nuget\\packages\\", - "outputPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\nanxun\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net8.0-windows" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0-windows7.0": { - "targetAlias": "net8.0-windows", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - }, - "SdkAnalysisLevel": "9.0.300" - }, - "frameworks": { - "net8.0-windows7.0": { - "targetAlias": "net8.0-windows", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Client": { - "target": "Package", - "version": "[10.0.0, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.WindowsDesktop.App.WindowsForms": { - "privateAssets": "none" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" - } - } - } - } +{ + "format": 1, + "restore": { + "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj": {} + }, + "projects": { + "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", + "projectName": "SignalRTest", + "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", + "packagesPath": "C:\\Users\\nanxun\\.nuget\\packages\\", + "outputPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\nanxun\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0-windows7.0": { + "targetAlias": "net8.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0-windows7.0": { + "targetAlias": "net8.0-windows", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Client": { + "target": "Package", + "version": "[10.0.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WindowsForms": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/obj/SignalRTest.csproj.nuget.g.props b/backend/SignalRTest/obj/SignalRTest.csproj.nuget.g.props index 8dc3638..66c3511 100644 --- a/backend/SignalRTest/obj/SignalRTest.csproj.nuget.g.props +++ b/backend/SignalRTest/obj/SignalRTest.csproj.nuget.g.props @@ -1,16 +1,16 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\nanxun\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages - PackageReference - 6.14.1 - - - - - + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\nanxun\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.14.1 + + + + + \ No newline at end of file diff --git a/backend/SignalRTest/obj/SignalRTest.csproj.nuget.g.targets b/backend/SignalRTest/obj/SignalRTest.csproj.nuget.g.targets index 1437cbf..9952526 100644 --- a/backend/SignalRTest/obj/SignalRTest.csproj.nuget.g.targets +++ b/backend/SignalRTest/obj/SignalRTest.csproj.nuget.g.targets @@ -1,8 +1,8 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/backend/SignalRTest/obj/project.assets.json b/backend/SignalRTest/obj/project.assets.json index 82a7344..64310b8 100644 --- a/backend/SignalRTest/obj/project.assets.json +++ b/backend/SignalRTest/obj/project.assets.json @@ -1,1153 +1,1153 @@ -{ - "version": 3, - "targets": { - "net8.0-windows7.0": { - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.0", - "Microsoft.Extensions.Features": "10.0.0", - "System.IO.Pipelines": "10.0.0" - }, - "compile": { - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Net.ServerSentEvents": "10.0.0" - }, - "compile": { - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", - "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", - "Microsoft.Bcl.TimeProvider": "10.0.0", - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging": "10.0.0", - "System.Threading.Channels": "10.0.0" - }, - "compile": { - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "type": "package", - "compile": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Features/10.0.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Logging/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "System.Diagnostics.DiagnosticSource": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {} - } - }, - "Microsoft.Extensions.Options/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Primitives": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {} - } - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.IO.Pipelines/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.IO.Pipelines.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.IO.Pipelines.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.Net.ServerSentEvents/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Net.ServerSentEvents.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Net.ServerSentEvents.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.Text.Encodings.Web/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - }, - "runtimeTargets": { - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { - "assetType": "runtime", - "rid": "browser" - } - } - }, - "System.Text.Json/10.0.0": { - "type": "package", - "dependencies": { - "System.IO.Pipelines": "10.0.0", - "System.Text.Encodings.Web": "10.0.0" - }, - "compile": { - "lib/net8.0/System.Text.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Text.Json.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/System.Text.Json.targets": {} - } - }, - "System.Threading.Channels/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Threading.Channels.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Threading.Channels.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - } - } - }, - "libraries": { - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "sha512": "MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", - "type": "package", - "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.Connections.Abstractions.dll", - "lib/net10.0/Microsoft.AspNetCore.Connections.Abstractions.xml", - "lib/net462/Microsoft.AspNetCore.Connections.Abstractions.dll", - "lib/net462/Microsoft.AspNetCore.Connections.Abstractions.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.xml", - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll", - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.xml", - "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.connections.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "sha512": "7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", - "type": "package", - "path": "microsoft.aspnetcore.http.connections.client/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Client.dll", - "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Client.xml", - "lib/net462/Microsoft.AspNetCore.Http.Connections.Client.dll", - "lib/net462/Microsoft.AspNetCore.Http.Connections.Client.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Client.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Client.xml", - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll", - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.xml", - "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.http.connections.client.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "sha512": "VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", - "type": "package", - "path": "microsoft.aspnetcore.http.connections.common/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Common.dll", - "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Common.xml", - "lib/net462/Microsoft.AspNetCore.Http.Connections.Common.dll", - "lib/net462/Microsoft.AspNetCore.Http.Connections.Common.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.xml", - "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.http.connections.common.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "sha512": "XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", - "type": "package", - "path": "microsoft.aspnetcore.signalr.client/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.dll", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.xml", - "lib/net462/Microsoft.AspNetCore.SignalR.Client.dll", - "lib/net462/Microsoft.AspNetCore.SignalR.Client.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.xml", - "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.client.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "sha512": "MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", - "type": "package", - "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.Core.dll", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.Core.xml", - "lib/net462/Microsoft.AspNetCore.SignalR.Client.Core.dll", - "lib/net462/Microsoft.AspNetCore.SignalR.Client.Core.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.Core.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.Core.xml", - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll", - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.xml", - "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.client.core.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "sha512": "pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", - "type": "package", - "path": "microsoft.aspnetcore.signalr.common/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Common.dll", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Common.xml", - "lib/net462/Microsoft.AspNetCore.SignalR.Common.dll", - "lib/net462/Microsoft.AspNetCore.SignalR.Common.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.xml", - "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.common.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "sha512": "L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", - "type": "package", - "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", - "lib/net462/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", - "lib/net462/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", - "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.protocols.json.nuspec" - ] - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "sha512": "vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", - "type": "package", - "path": "microsoft.bcl.asyncinterfaces/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", - "buildTransitive/net462/_._", - "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", - "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", - "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512", - "microsoft.bcl.asyncinterfaces.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "sha512": "bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", - "type": "package", - "path": "microsoft.bcl.timeprovider/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Bcl.TimeProvider.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Bcl.TimeProvider.targets", - "lib/net462/Microsoft.Bcl.TimeProvider.dll", - "lib/net462/Microsoft.Bcl.TimeProvider.xml", - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll", - "lib/net8.0/Microsoft.Bcl.TimeProvider.xml", - "lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll", - "lib/netstandard2.0/Microsoft.Bcl.TimeProvider.xml", - "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512", - "microsoft.bcl.timeprovider.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "sha512": "f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", - "lib/net10.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net10.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/net462/Microsoft.Extensions.DependencyInjection.dll", - "lib/net462/Microsoft.Extensions.DependencyInjection.xml", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", - "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "sha512": "L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", - "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Features/10.0.0": { - "sha512": "kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", - "type": "package", - "path": "microsoft.extensions.features/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.Extensions.Features.dll", - "lib/net10.0/Microsoft.Extensions.Features.xml", - "lib/net462/Microsoft.Extensions.Features.dll", - "lib/net462/Microsoft.Extensions.Features.xml", - "lib/netstandard2.0/Microsoft.Extensions.Features.dll", - "lib/netstandard2.0/Microsoft.Extensions.Features.xml", - "microsoft.extensions.features.10.0.0.nupkg.sha512", - "microsoft.extensions.features.nuspec" - ] - }, - "Microsoft.Extensions.Logging/10.0.0": { - "sha512": "BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", - "type": "package", - "path": "microsoft.extensions.logging/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Logging.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", - "lib/net10.0/Microsoft.Extensions.Logging.dll", - "lib/net10.0/Microsoft.Extensions.Logging.xml", - "lib/net462/Microsoft.Extensions.Logging.dll", - "lib/net462/Microsoft.Extensions.Logging.xml", - "lib/net8.0/Microsoft.Extensions.Logging.dll", - "lib/net8.0/Microsoft.Extensions.Logging.xml", - "lib/net9.0/Microsoft.Extensions.Logging.dll", - "lib/net9.0/Microsoft.Extensions.Logging.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", - "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", - "microsoft.extensions.logging.10.0.0.nupkg.sha512", - "microsoft.extensions.logging.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "sha512": "FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", - "type": "package", - "path": "microsoft.extensions.logging.abstractions/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", - "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512", - "microsoft.extensions.logging.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Options/10.0.0": { - "sha512": "8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", - "type": "package", - "path": "microsoft.extensions.options/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "buildTransitive/net461/Microsoft.Extensions.Options.targets", - "buildTransitive/net462/Microsoft.Extensions.Options.targets", - "buildTransitive/net8.0/Microsoft.Extensions.Options.targets", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", - "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", - "lib/net10.0/Microsoft.Extensions.Options.dll", - "lib/net10.0/Microsoft.Extensions.Options.xml", - "lib/net462/Microsoft.Extensions.Options.dll", - "lib/net462/Microsoft.Extensions.Options.xml", - "lib/net8.0/Microsoft.Extensions.Options.dll", - "lib/net8.0/Microsoft.Extensions.Options.xml", - "lib/net9.0/Microsoft.Extensions.Options.dll", - "lib/net9.0/Microsoft.Extensions.Options.xml", - "lib/netstandard2.0/Microsoft.Extensions.Options.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.xml", - "lib/netstandard2.1/Microsoft.Extensions.Options.dll", - "lib/netstandard2.1/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.10.0.0.nupkg.sha512", - "microsoft.extensions.options.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "sha512": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", - "type": "package", - "path": "microsoft.extensions.primitives/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", - "lib/net10.0/Microsoft.Extensions.Primitives.dll", - "lib/net10.0/Microsoft.Extensions.Primitives.xml", - "lib/net462/Microsoft.Extensions.Primitives.dll", - "lib/net462/Microsoft.Extensions.Primitives.xml", - "lib/net8.0/Microsoft.Extensions.Primitives.dll", - "lib/net8.0/Microsoft.Extensions.Primitives.xml", - "lib/net9.0/Microsoft.Extensions.Primitives.dll", - "lib/net9.0/Microsoft.Extensions.Primitives.xml", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.10.0.0.nupkg.sha512", - "microsoft.extensions.primitives.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "sha512": "0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", - "type": "package", - "path": "system.diagnostics.diagnosticsource/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", - "lib/net10.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net10.0/System.Diagnostics.DiagnosticSource.xml", - "lib/net462/System.Diagnostics.DiagnosticSource.dll", - "lib/net462/System.Diagnostics.DiagnosticSource.xml", - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", - "lib/net9.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net9.0/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", - "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512", - "system.diagnostics.diagnosticsource.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.IO.Pipelines/10.0.0": { - "sha512": "M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", - "type": "package", - "path": "system.io.pipelines/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.IO.Pipelines.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets", - "lib/net10.0/System.IO.Pipelines.dll", - "lib/net10.0/System.IO.Pipelines.xml", - "lib/net462/System.IO.Pipelines.dll", - "lib/net462/System.IO.Pipelines.xml", - "lib/net8.0/System.IO.Pipelines.dll", - "lib/net8.0/System.IO.Pipelines.xml", - "lib/net9.0/System.IO.Pipelines.dll", - "lib/net9.0/System.IO.Pipelines.xml", - "lib/netstandard2.0/System.IO.Pipelines.dll", - "lib/netstandard2.0/System.IO.Pipelines.xml", - "system.io.pipelines.10.0.0.nupkg.sha512", - "system.io.pipelines.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Net.ServerSentEvents/10.0.0": { - "sha512": "zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", - "type": "package", - "path": "system.net.serversentevents/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Net.ServerSentEvents.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.Net.ServerSentEvents.targets", - "lib/net10.0/System.Net.ServerSentEvents.dll", - "lib/net10.0/System.Net.ServerSentEvents.xml", - "lib/net462/System.Net.ServerSentEvents.dll", - "lib/net462/System.Net.ServerSentEvents.xml", - "lib/net8.0/System.Net.ServerSentEvents.dll", - "lib/net8.0/System.Net.ServerSentEvents.xml", - "lib/net9.0/System.Net.ServerSentEvents.dll", - "lib/net9.0/System.Net.ServerSentEvents.xml", - "lib/netstandard2.0/System.Net.ServerSentEvents.dll", - "lib/netstandard2.0/System.Net.ServerSentEvents.xml", - "system.net.serversentevents.10.0.0.nupkg.sha512", - "system.net.serversentevents.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Text.Encodings.Web/10.0.0": { - "sha512": "257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", - "type": "package", - "path": "system.text.encodings.web/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Text.Encodings.Web.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", - "lib/net10.0/System.Text.Encodings.Web.dll", - "lib/net10.0/System.Text.Encodings.Web.xml", - "lib/net462/System.Text.Encodings.Web.dll", - "lib/net462/System.Text.Encodings.Web.xml", - "lib/net8.0/System.Text.Encodings.Web.dll", - "lib/net8.0/System.Text.Encodings.Web.xml", - "lib/net9.0/System.Text.Encodings.Web.dll", - "lib/net9.0/System.Text.Encodings.Web.xml", - "lib/netstandard2.0/System.Text.Encodings.Web.dll", - "lib/netstandard2.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net10.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net10.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", - "runtimes/wasi/lib/net10.0/System.Text.Encodings.Web.dll", - "runtimes/wasi/lib/net10.0/System.Text.Encodings.Web.xml", - "runtimes/win/lib/net9.0/System.Text.Encodings.Web.dll", - "runtimes/win/lib/net9.0/System.Text.Encodings.Web.xml", - "system.text.encodings.web.10.0.0.nupkg.sha512", - "system.text.encodings.web.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Text.Json/10.0.0": { - "sha512": "1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", - "type": "package", - "path": "system.text.json/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "buildTransitive/net461/System.Text.Json.targets", - "buildTransitive/net462/System.Text.Json.targets", - "buildTransitive/net8.0/System.Text.Json.targets", - "buildTransitive/netcoreapp2.0/System.Text.Json.targets", - "buildTransitive/netstandard2.0/System.Text.Json.targets", - "lib/net10.0/System.Text.Json.dll", - "lib/net10.0/System.Text.Json.xml", - "lib/net462/System.Text.Json.dll", - "lib/net462/System.Text.Json.xml", - "lib/net8.0/System.Text.Json.dll", - "lib/net8.0/System.Text.Json.xml", - "lib/net9.0/System.Text.Json.dll", - "lib/net9.0/System.Text.Json.xml", - "lib/netstandard2.0/System.Text.Json.dll", - "lib/netstandard2.0/System.Text.Json.xml", - "system.text.json.10.0.0.nupkg.sha512", - "system.text.json.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Threading.Channels/10.0.0": { - "sha512": "fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", - "type": "package", - "path": "system.threading.channels/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Threading.Channels.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.Threading.Channels.targets", - "lib/net10.0/System.Threading.Channels.dll", - "lib/net10.0/System.Threading.Channels.xml", - "lib/net462/System.Threading.Channels.dll", - "lib/net462/System.Threading.Channels.xml", - "lib/net8.0/System.Threading.Channels.dll", - "lib/net8.0/System.Threading.Channels.xml", - "lib/net9.0/System.Threading.Channels.dll", - "lib/net9.0/System.Threading.Channels.xml", - "lib/netstandard2.0/System.Threading.Channels.dll", - "lib/netstandard2.0/System.Threading.Channels.xml", - "lib/netstandard2.1/System.Threading.Channels.dll", - "lib/netstandard2.1/System.Threading.Channels.xml", - "system.threading.channels.10.0.0.nupkg.sha512", - "system.threading.channels.nuspec", - "useSharedDesignerContext.txt" - ] - } - }, - "projectFileDependencyGroups": { - "net8.0-windows7.0": [ - "Microsoft.AspNetCore.SignalR.Client >= 10.0.0" - ] - }, - "packageFolders": { - "C:\\Users\\nanxun\\.nuget\\packages\\": {}, - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", - "projectName": "SignalRTest", - "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", - "packagesPath": "C:\\Users\\nanxun\\.nuget\\packages\\", - "outputPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\obj\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\nanxun\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net8.0-windows" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0-windows7.0": { - "targetAlias": "net8.0-windows", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - }, - "SdkAnalysisLevel": "9.0.300" - }, - "frameworks": { - "net8.0-windows7.0": { - "targetAlias": "net8.0-windows", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Client": { - "target": "Package", - "version": "[10.0.0, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.WindowsDesktop.App.WindowsForms": { - "privateAssets": "none" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" - } - } - } +{ + "version": 3, + "targets": { + "net8.0-windows7.0": { + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "10.0.0", + "Microsoft.Extensions.Features": "10.0.0", + "System.IO.Pipelines": "10.0.0" + }, + "compile": { + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Net.ServerSentEvents": "10.0.0" + }, + "compile": { + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", + "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", + "Microsoft.Bcl.TimeProvider": "10.0.0", + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging": "10.0.0", + "System.Threading.Channels": "10.0.0" + }, + "compile": { + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.Features/10.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Logging/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "System.Diagnostics.DiagnosticSource": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + } + }, + "Microsoft.Extensions.Options/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Primitives": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {} + } + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.IO.Pipelines/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.Net.ServerSentEvents/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Net.ServerSentEvents.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Net.ServerSentEvents.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.Text.Encodings.Web/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + }, + "runtimeTargets": { + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { + "assetType": "runtime", + "rid": "browser" + } + } + }, + "System.Text.Json/10.0.0": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "10.0.0", + "System.Text.Encodings.Web": "10.0.0" + }, + "compile": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/System.Text.Json.targets": {} + } + }, + "System.Threading.Channels/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Threading.Channels.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Threading.Channels.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + } + } + }, + "libraries": { + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "sha512": "MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", + "type": "package", + "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.Connections.Abstractions.dll", + "lib/net10.0/Microsoft.AspNetCore.Connections.Abstractions.xml", + "lib/net462/Microsoft.AspNetCore.Connections.Abstractions.dll", + "lib/net462/Microsoft.AspNetCore.Connections.Abstractions.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.xml", + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll", + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.xml", + "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.connections.abstractions.nuspec" + ] + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "sha512": "7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", + "type": "package", + "path": "microsoft.aspnetcore.http.connections.client/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Client.dll", + "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Client.xml", + "lib/net462/Microsoft.AspNetCore.Http.Connections.Client.dll", + "lib/net462/Microsoft.AspNetCore.Http.Connections.Client.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Client.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Client.xml", + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll", + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.xml", + "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.http.connections.client.nuspec" + ] + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "sha512": "VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", + "type": "package", + "path": "microsoft.aspnetcore.http.connections.common/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Common.dll", + "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Common.xml", + "lib/net462/Microsoft.AspNetCore.Http.Connections.Common.dll", + "lib/net462/Microsoft.AspNetCore.Http.Connections.Common.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.xml", + "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.http.connections.common.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "sha512": "XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", + "type": "package", + "path": "microsoft.aspnetcore.signalr.client/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.dll", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.xml", + "lib/net462/Microsoft.AspNetCore.SignalR.Client.dll", + "lib/net462/Microsoft.AspNetCore.SignalR.Client.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.xml", + "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.client.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "sha512": "MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", + "type": "package", + "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.Core.dll", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.Core.xml", + "lib/net462/Microsoft.AspNetCore.SignalR.Client.Core.dll", + "lib/net462/Microsoft.AspNetCore.SignalR.Client.Core.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.Core.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.Core.xml", + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll", + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.xml", + "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.client.core.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "sha512": "pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", + "type": "package", + "path": "microsoft.aspnetcore.signalr.common/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Common.dll", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Common.xml", + "lib/net462/Microsoft.AspNetCore.SignalR.Common.dll", + "lib/net462/Microsoft.AspNetCore.SignalR.Common.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.xml", + "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.common.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "sha512": "L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", + "type": "package", + "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", + "lib/net462/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", + "lib/net462/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", + "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.protocols.json.nuspec" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "sha512": "vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", + "buildTransitive/net462/_._", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "sha512": "bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", + "type": "package", + "path": "microsoft.bcl.timeprovider/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.TimeProvider.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Bcl.TimeProvider.targets", + "lib/net462/Microsoft.Bcl.TimeProvider.dll", + "lib/net462/Microsoft.Bcl.TimeProvider.xml", + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll", + "lib/net8.0/Microsoft.Bcl.TimeProvider.xml", + "lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll", + "lib/netstandard2.0/Microsoft.Bcl.TimeProvider.xml", + "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512", + "microsoft.bcl.timeprovider.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "sha512": "f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", + "lib/net10.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net10.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net462/Microsoft.Extensions.DependencyInjection.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", + "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "sha512": "L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Features/10.0.0": { + "sha512": "kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", + "type": "package", + "path": "microsoft.extensions.features/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.Extensions.Features.dll", + "lib/net10.0/Microsoft.Extensions.Features.xml", + "lib/net462/Microsoft.Extensions.Features.dll", + "lib/net462/Microsoft.Extensions.Features.xml", + "lib/netstandard2.0/Microsoft.Extensions.Features.dll", + "lib/netstandard2.0/Microsoft.Extensions.Features.xml", + "microsoft.extensions.features.10.0.0.nupkg.sha512", + "microsoft.extensions.features.nuspec" + ] + }, + "Microsoft.Extensions.Logging/10.0.0": { + "sha512": "BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", + "type": "package", + "path": "microsoft.extensions.logging/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", + "lib/net10.0/Microsoft.Extensions.Logging.dll", + "lib/net10.0/Microsoft.Extensions.Logging.xml", + "lib/net462/Microsoft.Extensions.Logging.dll", + "lib/net462/Microsoft.Extensions.Logging.xml", + "lib/net8.0/Microsoft.Extensions.Logging.dll", + "lib/net8.0/Microsoft.Extensions.Logging.xml", + "lib/net9.0/Microsoft.Extensions.Logging.dll", + "lib/net9.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", + "microsoft.extensions.logging.10.0.0.nupkg.sha512", + "microsoft.extensions.logging.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "sha512": "FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options/10.0.0": { + "sha512": "8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", + "type": "package", + "path": "microsoft.extensions.options/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Options.targets", + "buildTransitive/net462/Microsoft.Extensions.Options.targets", + "buildTransitive/net8.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", + "lib/net10.0/Microsoft.Extensions.Options.dll", + "lib/net10.0/Microsoft.Extensions.Options.xml", + "lib/net462/Microsoft.Extensions.Options.dll", + "lib/net462/Microsoft.Extensions.Options.xml", + "lib/net8.0/Microsoft.Extensions.Options.dll", + "lib/net8.0/Microsoft.Extensions.Options.xml", + "lib/net9.0/Microsoft.Extensions.Options.dll", + "lib/net9.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.1/Microsoft.Extensions.Options.dll", + "lib/netstandard2.1/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.10.0.0.nupkg.sha512", + "microsoft.extensions.options.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "sha512": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", + "type": "package", + "path": "microsoft.extensions.primitives/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", + "lib/net10.0/Microsoft.Extensions.Primitives.dll", + "lib/net10.0/Microsoft.Extensions.Primitives.xml", + "lib/net462/Microsoft.Extensions.Primitives.dll", + "lib/net462/Microsoft.Extensions.Primitives.xml", + "lib/net8.0/Microsoft.Extensions.Primitives.dll", + "lib/net8.0/Microsoft.Extensions.Primitives.xml", + "lib/net9.0/Microsoft.Extensions.Primitives.dll", + "lib/net9.0/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.10.0.0.nupkg.sha512", + "microsoft.extensions.primitives.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "sha512": "0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", + "lib/net10.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net10.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net462/System.Diagnostics.DiagnosticSource.dll", + "lib/net462/System.Diagnostics.DiagnosticSource.xml", + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net9.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net9.0/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", + "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512", + "system.diagnostics.diagnosticsource.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.IO.Pipelines/10.0.0": { + "sha512": "M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", + "type": "package", + "path": "system.io.pipelines/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.IO.Pipelines.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets", + "lib/net10.0/System.IO.Pipelines.dll", + "lib/net10.0/System.IO.Pipelines.xml", + "lib/net462/System.IO.Pipelines.dll", + "lib/net462/System.IO.Pipelines.xml", + "lib/net8.0/System.IO.Pipelines.dll", + "lib/net8.0/System.IO.Pipelines.xml", + "lib/net9.0/System.IO.Pipelines.dll", + "lib/net9.0/System.IO.Pipelines.xml", + "lib/netstandard2.0/System.IO.Pipelines.dll", + "lib/netstandard2.0/System.IO.Pipelines.xml", + "system.io.pipelines.10.0.0.nupkg.sha512", + "system.io.pipelines.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Net.ServerSentEvents/10.0.0": { + "sha512": "zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", + "type": "package", + "path": "system.net.serversentevents/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Net.ServerSentEvents.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.Net.ServerSentEvents.targets", + "lib/net10.0/System.Net.ServerSentEvents.dll", + "lib/net10.0/System.Net.ServerSentEvents.xml", + "lib/net462/System.Net.ServerSentEvents.dll", + "lib/net462/System.Net.ServerSentEvents.xml", + "lib/net8.0/System.Net.ServerSentEvents.dll", + "lib/net8.0/System.Net.ServerSentEvents.xml", + "lib/net9.0/System.Net.ServerSentEvents.dll", + "lib/net9.0/System.Net.ServerSentEvents.xml", + "lib/netstandard2.0/System.Net.ServerSentEvents.dll", + "lib/netstandard2.0/System.Net.ServerSentEvents.xml", + "system.net.serversentevents.10.0.0.nupkg.sha512", + "system.net.serversentevents.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Encodings.Web/10.0.0": { + "sha512": "257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", + "type": "package", + "path": "system.text.encodings.web/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Text.Encodings.Web.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", + "lib/net10.0/System.Text.Encodings.Web.dll", + "lib/net10.0/System.Text.Encodings.Web.xml", + "lib/net462/System.Text.Encodings.Web.dll", + "lib/net462/System.Text.Encodings.Web.xml", + "lib/net8.0/System.Text.Encodings.Web.dll", + "lib/net8.0/System.Text.Encodings.Web.xml", + "lib/net9.0/System.Text.Encodings.Web.dll", + "lib/net9.0/System.Text.Encodings.Web.xml", + "lib/netstandard2.0/System.Text.Encodings.Web.dll", + "lib/netstandard2.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net10.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net10.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", + "runtimes/wasi/lib/net10.0/System.Text.Encodings.Web.dll", + "runtimes/wasi/lib/net10.0/System.Text.Encodings.Web.xml", + "runtimes/win/lib/net9.0/System.Text.Encodings.Web.dll", + "runtimes/win/lib/net9.0/System.Text.Encodings.Web.xml", + "system.text.encodings.web.10.0.0.nupkg.sha512", + "system.text.encodings.web.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/10.0.0": { + "sha512": "1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", + "type": "package", + "path": "system.text.json/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net8.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net10.0/System.Text.Json.dll", + "lib/net10.0/System.Text.Json.xml", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/net9.0/System.Text.Json.dll", + "lib/net9.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.10.0.0.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Threading.Channels/10.0.0": { + "sha512": "fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", + "type": "package", + "path": "system.threading.channels/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Threading.Channels.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.Threading.Channels.targets", + "lib/net10.0/System.Threading.Channels.dll", + "lib/net10.0/System.Threading.Channels.xml", + "lib/net462/System.Threading.Channels.dll", + "lib/net462/System.Threading.Channels.xml", + "lib/net8.0/System.Threading.Channels.dll", + "lib/net8.0/System.Threading.Channels.xml", + "lib/net9.0/System.Threading.Channels.dll", + "lib/net9.0/System.Threading.Channels.xml", + "lib/netstandard2.0/System.Threading.Channels.dll", + "lib/netstandard2.0/System.Threading.Channels.xml", + "lib/netstandard2.1/System.Threading.Channels.dll", + "lib/netstandard2.1/System.Threading.Channels.xml", + "system.threading.channels.10.0.0.nupkg.sha512", + "system.threading.channels.nuspec", + "useSharedDesignerContext.txt" + ] + } + }, + "projectFileDependencyGroups": { + "net8.0-windows7.0": [ + "Microsoft.AspNetCore.SignalR.Client >= 10.0.0" + ] + }, + "packageFolders": { + "C:\\Users\\nanxun\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", + "projectName": "SignalRTest", + "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", + "packagesPath": "C:\\Users\\nanxun\\.nuget\\packages\\", + "outputPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\nanxun\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0-windows7.0": { + "targetAlias": "net8.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0-windows7.0": { + "targetAlias": "net8.0-windows", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Client": { + "target": "Package", + "version": "[10.0.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WindowsForms": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/obj/project.nuget.cache b/backend/SignalRTest/obj/project.nuget.cache index 099ebf6..80a39fe 100644 --- a/backend/SignalRTest/obj/project.nuget.cache +++ b/backend/SignalRTest/obj/project.nuget.cache @@ -1,31 +1,31 @@ -{ - "version": 2, - "dgSpecHash": "qqVLMCu2v8Q=", - "success": true, - "projectFilePath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", - "expectedPackageFiles": [ - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.connections.abstractions\\10.0.0\\microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections.client\\10.0.0\\microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections.common\\10.0.0\\microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.client\\10.0.0\\microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.client.core\\10.0.0\\microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.common\\10.0.0\\microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.protocols.json\\10.0.0\\microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\10.0.0\\microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.bcl.timeprovider\\10.0.0\\microsoft.bcl.timeprovider.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\10.0.0\\microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\10.0.0\\microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.features\\10.0.0\\microsoft.extensions.features.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging\\10.0.0\\microsoft.extensions.logging.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\10.0.0\\microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.options\\10.0.0\\microsoft.extensions.options.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.primitives\\10.0.0\\microsoft.extensions.primitives.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.diagnosticsource\\10.0.0\\system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.io.pipelines\\10.0.0\\system.io.pipelines.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.net.serversentevents\\10.0.0\\system.net.serversentevents.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.text.encodings.web\\10.0.0\\system.text.encodings.web.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.text.json\\10.0.0\\system.text.json.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.channels\\10.0.0\\system.threading.channels.10.0.0.nupkg.sha512" - ], - "logs": [] +{ + "version": 2, + "dgSpecHash": "qqVLMCu2v8Q=", + "success": true, + "projectFilePath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", + "expectedPackageFiles": [ + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.connections.abstractions\\10.0.0\\microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections.client\\10.0.0\\microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections.common\\10.0.0\\microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.client\\10.0.0\\microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.client.core\\10.0.0\\microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.common\\10.0.0\\microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.protocols.json\\10.0.0\\microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\10.0.0\\microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.bcl.timeprovider\\10.0.0\\microsoft.bcl.timeprovider.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\10.0.0\\microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\10.0.0\\microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.features\\10.0.0\\microsoft.extensions.features.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging\\10.0.0\\microsoft.extensions.logging.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\10.0.0\\microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.options\\10.0.0\\microsoft.extensions.options.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.primitives\\10.0.0\\microsoft.extensions.primitives.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.diagnosticsource\\10.0.0\\system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.io.pipelines\\10.0.0\\system.io.pipelines.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.net.serversentevents\\10.0.0\\system.net.serversentevents.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.text.encodings.web\\10.0.0\\system.text.encodings.web.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.text.json\\10.0.0\\system.text.json.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.channels\\10.0.0\\system.threading.channels.10.0.0.nupkg.sha512" + ], + "logs": [] } \ No newline at end of file diff --git a/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.dgspec.json b/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.dgspec.json index 137f214..ba8d88c 100644 --- a/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.dgspec.json +++ b/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.dgspec.json @@ -1,108 +1,108 @@ -{ - "format": 1, - "restore": { - "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj": {} - }, - "projects": { - "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", - "projectName": "SignalRTest", - "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", - "packagesPath": "C:\\Users\\nanxun\\.nuget\\packages\\", - "outputPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\obj\\publish\\win-x64\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\nanxun\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net8.0-windows" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0-windows7.0": { - "targetAlias": "net8.0-windows", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - }, - "SdkAnalysisLevel": "9.0.300" - }, - "frameworks": { - "net8.0-windows7.0": { - "targetAlias": "net8.0-windows", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Client": { - "target": "Package", - "version": "[10.0.0, )" - }, - "Microsoft.NET.ILLink.Tasks": { - "suppressParent": "All", - "target": "Package", - "version": "[8.0.19, )", - "autoReferenced": true - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "downloadDependencies": [ - { - "name": "Microsoft.AspNetCore.App.Runtime.win-x64", - "version": "[8.0.19, 8.0.19]" - }, - { - "name": "Microsoft.NETCore.App.Runtime.win-x64", - "version": "[8.0.19, 8.0.19]" - }, - { - "name": "Microsoft.WindowsDesktop.App.Runtime.win-x64", - "version": "[8.0.19, 8.0.19]" - } - ], - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.WindowsDesktop.App.WindowsForms": { - "privateAssets": "none" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" - } - }, - "runtimes": { - "win-x64": { - "#import": [] - } - } - } - } +{ + "format": 1, + "restore": { + "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj": {} + }, + "projects": { + "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", + "projectName": "SignalRTest", + "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", + "packagesPath": "C:\\Users\\nanxun\\.nuget\\packages\\", + "outputPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\obj\\publish\\win-x64\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\nanxun\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0-windows7.0": { + "targetAlias": "net8.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0-windows7.0": { + "targetAlias": "net8.0-windows", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Client": { + "target": "Package", + "version": "[10.0.0, )" + }, + "Microsoft.NET.ILLink.Tasks": { + "suppressParent": "All", + "target": "Package", + "version": "[8.0.19, )", + "autoReferenced": true + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Runtime.win-x64", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Runtime.win-x64", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Runtime.win-x64", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WindowsForms": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + }, + "runtimes": { + "win-x64": { + "#import": [] + } + } + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.g.props b/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.g.props index bbece53..f334f1b 100644 --- a/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.g.props +++ b/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.g.props @@ -1,22 +1,22 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\nanxun\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages - PackageReference - 6.14.1 - - - - - - - - - - C:\Users\nanxun\.nuget\packages\microsoft.net.illink.tasks\8.0.19 - + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\nanxun\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.14.1 + + + + + + + + + + C:\Users\nanxun\.nuget\packages\microsoft.net.illink.tasks\8.0.19 + \ No newline at end of file diff --git a/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.g.targets b/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.g.targets index 1437cbf..9952526 100644 --- a/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.g.targets +++ b/backend/SignalRTest/obj/publish/win-x64/SignalRTest.csproj.nuget.g.targets @@ -1,8 +1,8 @@ - - - - - - - + + + + + + + \ No newline at end of file diff --git a/backend/SignalRTest/obj/publish/win-x64/project.assets.json b/backend/SignalRTest/obj/publish/win-x64/project.assets.json index 7f748c3..0f23a50 100644 --- a/backend/SignalRTest/obj/publish/win-x64/project.assets.json +++ b/backend/SignalRTest/obj/publish/win-x64/project.assets.json @@ -1,1624 +1,1624 @@ -{ - "version": 3, - "targets": { - "net8.0-windows7.0": { - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.0", - "Microsoft.Extensions.Features": "10.0.0", - "System.IO.Pipelines": "10.0.0" - }, - "compile": { - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Net.ServerSentEvents": "10.0.0" - }, - "compile": { - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", - "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", - "Microsoft.Bcl.TimeProvider": "10.0.0", - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging": "10.0.0", - "System.Threading.Channels": "10.0.0" - }, - "compile": { - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "type": "package", - "compile": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Features/10.0.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Logging/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "System.Diagnostics.DiagnosticSource": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {} - } - }, - "Microsoft.Extensions.Options/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Primitives": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {} - } - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.NET.ILLink.Tasks/8.0.19": { - "type": "package", - "build": { - "build/Microsoft.NET.ILLink.Tasks.props": {} - } - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.IO.Pipelines/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.IO.Pipelines.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.IO.Pipelines.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.Net.ServerSentEvents/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Net.ServerSentEvents.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Net.ServerSentEvents.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.Text.Encodings.Web/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - }, - "runtimeTargets": { - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { - "assetType": "runtime", - "rid": "browser" - } - } - }, - "System.Text.Json/10.0.0": { - "type": "package", - "dependencies": { - "System.IO.Pipelines": "10.0.0", - "System.Text.Encodings.Web": "10.0.0" - }, - "compile": { - "lib/net8.0/System.Text.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Text.Json.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/System.Text.Json.targets": {} - } - }, - "System.Threading.Channels/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Threading.Channels.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Threading.Channels.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - } - }, - "net8.0-windows7.0/win-x64": { - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.0", - "Microsoft.Extensions.Features": "10.0.0", - "System.IO.Pipelines": "10.0.0" - }, - "compile": { - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Net.ServerSentEvents": "10.0.0" - }, - "compile": { - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", - "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0", - "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", - "Microsoft.Bcl.TimeProvider": "10.0.0", - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging": "10.0.0", - "System.Threading.Channels": "10.0.0" - }, - "compile": { - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0", - "System.Text.Json": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Common": "10.0.0" - }, - "compile": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "type": "package", - "compile": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Features/10.0.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { - "related": ".xml" - } - } - }, - "Microsoft.Extensions.Logging/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.0", - "Microsoft.Extensions.Options": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "System.Diagnostics.DiagnosticSource": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {} - } - }, - "Microsoft.Extensions.Options/10.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "Microsoft.Extensions.Primitives": "10.0.0" - }, - "compile": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {} - } - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "Microsoft.NET.ILLink.Tasks/8.0.19": { - "type": "package", - "build": { - "build/Microsoft.NET.ILLink.Tasks.props": {} - } - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.IO.Pipelines/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.IO.Pipelines.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.IO.Pipelines.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.Net.ServerSentEvents/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Net.ServerSentEvents.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Net.ServerSentEvents.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.Text.Encodings.Web/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Text.Encodings.Web.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - }, - "System.Text.Json/10.0.0": { - "type": "package", - "dependencies": { - "System.IO.Pipelines": "10.0.0", - "System.Text.Encodings.Web": "10.0.0" - }, - "compile": { - "lib/net8.0/System.Text.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Text.Json.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/System.Text.Json.targets": {} - } - }, - "System.Threading.Channels/10.0.0": { - "type": "package", - "compile": { - "lib/net8.0/System.Threading.Channels.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/System.Threading.Channels.dll": { - "related": ".xml" - } - }, - "build": { - "buildTransitive/net8.0/_._": {} - } - } - } - }, - "libraries": { - "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { - "sha512": "MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", - "type": "package", - "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.Connections.Abstractions.dll", - "lib/net10.0/Microsoft.AspNetCore.Connections.Abstractions.xml", - "lib/net462/Microsoft.AspNetCore.Connections.Abstractions.dll", - "lib/net462/Microsoft.AspNetCore.Connections.Abstractions.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.xml", - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll", - "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.xml", - "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.connections.abstractions.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { - "sha512": "7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", - "type": "package", - "path": "microsoft.aspnetcore.http.connections.client/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Client.dll", - "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Client.xml", - "lib/net462/Microsoft.AspNetCore.Http.Connections.Client.dll", - "lib/net462/Microsoft.AspNetCore.Http.Connections.Client.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Client.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Client.xml", - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll", - "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.xml", - "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.http.connections.client.nuspec" - ] - }, - "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { - "sha512": "VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", - "type": "package", - "path": "microsoft.aspnetcore.http.connections.common/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Common.dll", - "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Common.xml", - "lib/net462/Microsoft.AspNetCore.Http.Connections.Common.dll", - "lib/net462/Microsoft.AspNetCore.Http.Connections.Common.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.xml", - "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.http.connections.common.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR.Client/10.0.0": { - "sha512": "XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", - "type": "package", - "path": "microsoft.aspnetcore.signalr.client/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.dll", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.xml", - "lib/net462/Microsoft.AspNetCore.SignalR.Client.dll", - "lib/net462/Microsoft.AspNetCore.SignalR.Client.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.xml", - "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.client.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { - "sha512": "MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", - "type": "package", - "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.Core.dll", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.Core.xml", - "lib/net462/Microsoft.AspNetCore.SignalR.Client.Core.dll", - "lib/net462/Microsoft.AspNetCore.SignalR.Client.Core.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.Core.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.Core.xml", - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll", - "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.xml", - "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.client.core.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR.Common/10.0.0": { - "sha512": "pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", - "type": "package", - "path": "microsoft.aspnetcore.signalr.common/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Common.dll", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Common.xml", - "lib/net462/Microsoft.AspNetCore.SignalR.Common.dll", - "lib/net462/Microsoft.AspNetCore.SignalR.Common.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.xml", - "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.common.nuspec" - ] - }, - "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { - "sha512": "L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", - "type": "package", - "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", - "lib/net10.0/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", - "lib/net462/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", - "lib/net462/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", - "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512", - "microsoft.aspnetcore.signalr.protocols.json.nuspec" - ] - }, - "Microsoft.Bcl.AsyncInterfaces/10.0.0": { - "sha512": "vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", - "type": "package", - "path": "microsoft.bcl.asyncinterfaces/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", - "buildTransitive/net462/_._", - "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", - "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", - "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512", - "microsoft.bcl.asyncinterfaces.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Bcl.TimeProvider/10.0.0": { - "sha512": "bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", - "type": "package", - "path": "microsoft.bcl.timeprovider/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Bcl.TimeProvider.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Bcl.TimeProvider.targets", - "lib/net462/Microsoft.Bcl.TimeProvider.dll", - "lib/net462/Microsoft.Bcl.TimeProvider.xml", - "lib/net8.0/Microsoft.Bcl.TimeProvider.dll", - "lib/net8.0/Microsoft.Bcl.TimeProvider.xml", - "lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll", - "lib/netstandard2.0/Microsoft.Bcl.TimeProvider.xml", - "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512", - "microsoft.bcl.timeprovider.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.DependencyInjection/10.0.0": { - "sha512": "f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", - "lib/net10.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net10.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/net462/Microsoft.Extensions.DependencyInjection.dll", - "lib/net462/Microsoft.Extensions.DependencyInjection.xml", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", - "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { - "sha512": "L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", - "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Features/10.0.0": { - "sha512": "kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", - "type": "package", - "path": "microsoft.extensions.features/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net10.0/Microsoft.Extensions.Features.dll", - "lib/net10.0/Microsoft.Extensions.Features.xml", - "lib/net462/Microsoft.Extensions.Features.dll", - "lib/net462/Microsoft.Extensions.Features.xml", - "lib/netstandard2.0/Microsoft.Extensions.Features.dll", - "lib/netstandard2.0/Microsoft.Extensions.Features.xml", - "microsoft.extensions.features.10.0.0.nupkg.sha512", - "microsoft.extensions.features.nuspec" - ] - }, - "Microsoft.Extensions.Logging/10.0.0": { - "sha512": "BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", - "type": "package", - "path": "microsoft.extensions.logging/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Logging.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", - "lib/net10.0/Microsoft.Extensions.Logging.dll", - "lib/net10.0/Microsoft.Extensions.Logging.xml", - "lib/net462/Microsoft.Extensions.Logging.dll", - "lib/net462/Microsoft.Extensions.Logging.xml", - "lib/net8.0/Microsoft.Extensions.Logging.dll", - "lib/net8.0/Microsoft.Extensions.Logging.xml", - "lib/net9.0/Microsoft.Extensions.Logging.dll", - "lib/net9.0/Microsoft.Extensions.Logging.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", - "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", - "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", - "microsoft.extensions.logging.10.0.0.nupkg.sha512", - "microsoft.extensions.logging.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Logging.Abstractions/10.0.0": { - "sha512": "FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", - "type": "package", - "path": "microsoft.extensions.logging.abstractions/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", - "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512", - "microsoft.extensions.logging.abstractions.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Options/10.0.0": { - "sha512": "8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", - "type": "package", - "path": "microsoft.extensions.options/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", - "buildTransitive/net461/Microsoft.Extensions.Options.targets", - "buildTransitive/net462/Microsoft.Extensions.Options.targets", - "buildTransitive/net8.0/Microsoft.Extensions.Options.targets", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", - "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", - "lib/net10.0/Microsoft.Extensions.Options.dll", - "lib/net10.0/Microsoft.Extensions.Options.xml", - "lib/net462/Microsoft.Extensions.Options.dll", - "lib/net462/Microsoft.Extensions.Options.xml", - "lib/net8.0/Microsoft.Extensions.Options.dll", - "lib/net8.0/Microsoft.Extensions.Options.xml", - "lib/net9.0/Microsoft.Extensions.Options.dll", - "lib/net9.0/Microsoft.Extensions.Options.xml", - "lib/netstandard2.0/Microsoft.Extensions.Options.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.xml", - "lib/netstandard2.1/Microsoft.Extensions.Options.dll", - "lib/netstandard2.1/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.10.0.0.nupkg.sha512", - "microsoft.extensions.options.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.Extensions.Primitives/10.0.0": { - "sha512": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", - "type": "package", - "path": "microsoft.extensions.primitives/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", - "lib/net10.0/Microsoft.Extensions.Primitives.dll", - "lib/net10.0/Microsoft.Extensions.Primitives.xml", - "lib/net462/Microsoft.Extensions.Primitives.dll", - "lib/net462/Microsoft.Extensions.Primitives.xml", - "lib/net8.0/Microsoft.Extensions.Primitives.dll", - "lib/net8.0/Microsoft.Extensions.Primitives.xml", - "lib/net9.0/Microsoft.Extensions.Primitives.dll", - "lib/net9.0/Microsoft.Extensions.Primitives.xml", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.10.0.0.nupkg.sha512", - "microsoft.extensions.primitives.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "Microsoft.NET.ILLink.Tasks/8.0.19": { - "sha512": "IhHf+zeZiaE5EXRyxILd4qM+Hj9cxV3sa8MpzZgeEhpvaG3a1VEGF6UCaPFLO44Kua3JkLKluE0SWVamS50PlA==", - "type": "package", - "path": "microsoft.net.illink.tasks/8.0.19", - "hasTools": true, - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "LICENSE.TXT", - "Sdk/Sdk.props", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/cs/ILLink.CodeFixProvider.dll", - "analyzers/dotnet/cs/ILLink.RoslynAnalyzer.dll", - "build/Microsoft.NET.ILLink.Analyzers.props", - "build/Microsoft.NET.ILLink.Tasks.props", - "build/Microsoft.NET.ILLink.targets", - "microsoft.net.illink.tasks.8.0.19.nupkg.sha512", - "microsoft.net.illink.tasks.nuspec", - "tools/net472/ILLink.Tasks.dll", - "tools/net472/ILLink.Tasks.dll.config", - "tools/net472/Mono.Cecil.Mdb.dll", - "tools/net472/Mono.Cecil.Pdb.dll", - "tools/net472/Mono.Cecil.Rocks.dll", - "tools/net472/Mono.Cecil.dll", - "tools/net472/Sdk/Sdk.props", - "tools/net472/System.Buffers.dll", - "tools/net472/System.Collections.Immutable.dll", - "tools/net472/System.Memory.dll", - "tools/net472/System.Numerics.Vectors.dll", - "tools/net472/System.Reflection.Metadata.dll", - "tools/net472/System.Runtime.CompilerServices.Unsafe.dll", - "tools/net472/build/Microsoft.NET.ILLink.Analyzers.props", - "tools/net472/build/Microsoft.NET.ILLink.Tasks.props", - "tools/net472/build/Microsoft.NET.ILLink.targets", - "tools/net8.0/ILLink.Tasks.deps.json", - "tools/net8.0/ILLink.Tasks.dll", - "tools/net8.0/Mono.Cecil.Mdb.dll", - "tools/net8.0/Mono.Cecil.Pdb.dll", - "tools/net8.0/Mono.Cecil.Rocks.dll", - "tools/net8.0/Mono.Cecil.dll", - "tools/net8.0/Sdk/Sdk.props", - "tools/net8.0/build/Microsoft.NET.ILLink.Analyzers.props", - "tools/net8.0/build/Microsoft.NET.ILLink.Tasks.props", - "tools/net8.0/build/Microsoft.NET.ILLink.targets", - "tools/net8.0/illink.deps.json", - "tools/net8.0/illink.dll", - "tools/net8.0/illink.runtimeconfig.json", - "useSharedDesignerContext.txt" - ] - }, - "System.Diagnostics.DiagnosticSource/10.0.0": { - "sha512": "0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", - "type": "package", - "path": "system.diagnostics.diagnosticsource/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", - "lib/net10.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net10.0/System.Diagnostics.DiagnosticSource.xml", - "lib/net462/System.Diagnostics.DiagnosticSource.dll", - "lib/net462/System.Diagnostics.DiagnosticSource.xml", - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", - "lib/net9.0/System.Diagnostics.DiagnosticSource.dll", - "lib/net9.0/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", - "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512", - "system.diagnostics.diagnosticsource.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.IO.Pipelines/10.0.0": { - "sha512": "M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", - "type": "package", - "path": "system.io.pipelines/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.IO.Pipelines.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets", - "lib/net10.0/System.IO.Pipelines.dll", - "lib/net10.0/System.IO.Pipelines.xml", - "lib/net462/System.IO.Pipelines.dll", - "lib/net462/System.IO.Pipelines.xml", - "lib/net8.0/System.IO.Pipelines.dll", - "lib/net8.0/System.IO.Pipelines.xml", - "lib/net9.0/System.IO.Pipelines.dll", - "lib/net9.0/System.IO.Pipelines.xml", - "lib/netstandard2.0/System.IO.Pipelines.dll", - "lib/netstandard2.0/System.IO.Pipelines.xml", - "system.io.pipelines.10.0.0.nupkg.sha512", - "system.io.pipelines.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Net.ServerSentEvents/10.0.0": { - "sha512": "zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", - "type": "package", - "path": "system.net.serversentevents/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Net.ServerSentEvents.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.Net.ServerSentEvents.targets", - "lib/net10.0/System.Net.ServerSentEvents.dll", - "lib/net10.0/System.Net.ServerSentEvents.xml", - "lib/net462/System.Net.ServerSentEvents.dll", - "lib/net462/System.Net.ServerSentEvents.xml", - "lib/net8.0/System.Net.ServerSentEvents.dll", - "lib/net8.0/System.Net.ServerSentEvents.xml", - "lib/net9.0/System.Net.ServerSentEvents.dll", - "lib/net9.0/System.Net.ServerSentEvents.xml", - "lib/netstandard2.0/System.Net.ServerSentEvents.dll", - "lib/netstandard2.0/System.Net.ServerSentEvents.xml", - "system.net.serversentevents.10.0.0.nupkg.sha512", - "system.net.serversentevents.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Text.Encodings.Web/10.0.0": { - "sha512": "257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", - "type": "package", - "path": "system.text.encodings.web/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Text.Encodings.Web.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", - "lib/net10.0/System.Text.Encodings.Web.dll", - "lib/net10.0/System.Text.Encodings.Web.xml", - "lib/net462/System.Text.Encodings.Web.dll", - "lib/net462/System.Text.Encodings.Web.xml", - "lib/net8.0/System.Text.Encodings.Web.dll", - "lib/net8.0/System.Text.Encodings.Web.xml", - "lib/net9.0/System.Text.Encodings.Web.dll", - "lib/net9.0/System.Text.Encodings.Web.xml", - "lib/netstandard2.0/System.Text.Encodings.Web.dll", - "lib/netstandard2.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net10.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net10.0/System.Text.Encodings.Web.xml", - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", - "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", - "runtimes/wasi/lib/net10.0/System.Text.Encodings.Web.dll", - "runtimes/wasi/lib/net10.0/System.Text.Encodings.Web.xml", - "runtimes/win/lib/net9.0/System.Text.Encodings.Web.dll", - "runtimes/win/lib/net9.0/System.Text.Encodings.Web.xml", - "system.text.encodings.web.10.0.0.nupkg.sha512", - "system.text.encodings.web.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Text.Json/10.0.0": { - "sha512": "1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", - "type": "package", - "path": "system.text.json/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", - "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", - "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", - "buildTransitive/net461/System.Text.Json.targets", - "buildTransitive/net462/System.Text.Json.targets", - "buildTransitive/net8.0/System.Text.Json.targets", - "buildTransitive/netcoreapp2.0/System.Text.Json.targets", - "buildTransitive/netstandard2.0/System.Text.Json.targets", - "lib/net10.0/System.Text.Json.dll", - "lib/net10.0/System.Text.Json.xml", - "lib/net462/System.Text.Json.dll", - "lib/net462/System.Text.Json.xml", - "lib/net8.0/System.Text.Json.dll", - "lib/net8.0/System.Text.Json.xml", - "lib/net9.0/System.Text.Json.dll", - "lib/net9.0/System.Text.Json.xml", - "lib/netstandard2.0/System.Text.Json.dll", - "lib/netstandard2.0/System.Text.Json.xml", - "system.text.json.10.0.0.nupkg.sha512", - "system.text.json.nuspec", - "useSharedDesignerContext.txt" - ] - }, - "System.Threading.Channels/10.0.0": { - "sha512": "fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", - "type": "package", - "path": "system.threading.channels/10.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "PACKAGE.md", - "THIRD-PARTY-NOTICES.TXT", - "buildTransitive/net461/System.Threading.Channels.targets", - "buildTransitive/net462/_._", - "buildTransitive/net8.0/_._", - "buildTransitive/netcoreapp2.0/System.Threading.Channels.targets", - "lib/net10.0/System.Threading.Channels.dll", - "lib/net10.0/System.Threading.Channels.xml", - "lib/net462/System.Threading.Channels.dll", - "lib/net462/System.Threading.Channels.xml", - "lib/net8.0/System.Threading.Channels.dll", - "lib/net8.0/System.Threading.Channels.xml", - "lib/net9.0/System.Threading.Channels.dll", - "lib/net9.0/System.Threading.Channels.xml", - "lib/netstandard2.0/System.Threading.Channels.dll", - "lib/netstandard2.0/System.Threading.Channels.xml", - "lib/netstandard2.1/System.Threading.Channels.dll", - "lib/netstandard2.1/System.Threading.Channels.xml", - "system.threading.channels.10.0.0.nupkg.sha512", - "system.threading.channels.nuspec", - "useSharedDesignerContext.txt" - ] - } - }, - "projectFileDependencyGroups": { - "net8.0-windows7.0": [ - "Microsoft.AspNetCore.SignalR.Client >= 10.0.0", - "Microsoft.NET.ILLink.Tasks >= 8.0.19" - ] - }, - "packageFolders": { - "C:\\Users\\nanxun\\.nuget\\packages\\": {}, - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", - "projectName": "SignalRTest", - "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", - "packagesPath": "C:\\Users\\nanxun\\.nuget\\packages\\", - "outputPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\obj\\publish\\win-x64\\", - "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], - "configFilePaths": [ - "C:\\Users\\nanxun\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" - ], - "originalTargetFrameworks": [ - "net8.0-windows" - ], - "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0-windows7.0": { - "targetAlias": "net8.0-windows", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - }, - "SdkAnalysisLevel": "9.0.300" - }, - "frameworks": { - "net8.0-windows7.0": { - "targetAlias": "net8.0-windows", - "dependencies": { - "Microsoft.AspNetCore.SignalR.Client": { - "target": "Package", - "version": "[10.0.0, )" - }, - "Microsoft.NET.ILLink.Tasks": { - "suppressParent": "All", - "target": "Package", - "version": "[8.0.19, )", - "autoReferenced": true - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "downloadDependencies": [ - { - "name": "Microsoft.AspNetCore.App.Runtime.win-x64", - "version": "[8.0.19, 8.0.19]" - }, - { - "name": "Microsoft.NETCore.App.Runtime.win-x64", - "version": "[8.0.19, 8.0.19]" - }, - { - "name": "Microsoft.WindowsDesktop.App.Runtime.win-x64", - "version": "[8.0.19, 8.0.19]" - } - ], - "frameworkReferences": { - "Microsoft.NETCore.App": { - "privateAssets": "all" - }, - "Microsoft.WindowsDesktop.App.WindowsForms": { - "privateAssets": "none" - } - }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" - } - }, - "runtimes": { - "win-x64": { - "#import": [] - } - } - } +{ + "version": 3, + "targets": { + "net8.0-windows7.0": { + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "10.0.0", + "Microsoft.Extensions.Features": "10.0.0", + "System.IO.Pipelines": "10.0.0" + }, + "compile": { + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Net.ServerSentEvents": "10.0.0" + }, + "compile": { + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", + "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", + "Microsoft.Bcl.TimeProvider": "10.0.0", + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging": "10.0.0", + "System.Threading.Channels": "10.0.0" + }, + "compile": { + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.Features/10.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Logging/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "System.Diagnostics.DiagnosticSource": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + } + }, + "Microsoft.Extensions.Options/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Primitives": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {} + } + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.NET.ILLink.Tasks/8.0.19": { + "type": "package", + "build": { + "build/Microsoft.NET.ILLink.Tasks.props": {} + } + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.IO.Pipelines/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.Net.ServerSentEvents/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Net.ServerSentEvents.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Net.ServerSentEvents.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.Text.Encodings.Web/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + }, + "runtimeTargets": { + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { + "assetType": "runtime", + "rid": "browser" + } + } + }, + "System.Text.Json/10.0.0": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "10.0.0", + "System.Text.Encodings.Web": "10.0.0" + }, + "compile": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/System.Text.Json.targets": {} + } + }, + "System.Threading.Channels/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Threading.Channels.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Threading.Channels.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + } + }, + "net8.0-windows7.0/win-x64": { + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "10.0.0", + "Microsoft.Extensions.Features": "10.0.0", + "System.IO.Pipelines": "10.0.0" + }, + "compile": { + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Common": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Net.ServerSentEvents": "10.0.0" + }, + "compile": { + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Http.Connections.Client": "10.0.0", + "Microsoft.AspNetCore.SignalR.Client.Core": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "10.0.0", + "Microsoft.Bcl.TimeProvider": "10.0.0", + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging": "10.0.0", + "System.Threading.Channels": "10.0.0" + }, + "compile": { + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "System.Text.Json": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "10.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.Features/10.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Features.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Logging/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "System.Diagnostics.DiagnosticSource": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + } + }, + "Microsoft.Extensions.Options/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Primitives": "10.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {} + } + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.NET.ILLink.Tasks/8.0.19": { + "type": "package", + "build": { + "build/Microsoft.NET.ILLink.Tasks.props": {} + } + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.IO.Pipelines/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.Net.ServerSentEvents/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Net.ServerSentEvents.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Net.ServerSentEvents.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.Text.Encodings.Web/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.Text.Json/10.0.0": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "10.0.0", + "System.Text.Encodings.Web": "10.0.0" + }, + "compile": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/System.Text.Json.targets": {} + } + }, + "System.Threading.Channels/10.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Threading.Channels.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Threading.Channels.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + } + } + }, + "libraries": { + "Microsoft.AspNetCore.Connections.Abstractions/10.0.0": { + "sha512": "MPXDzUknemj+sCL/LYOLvU/qIX3o9zCJtKXu9jcwNMQiOvwuv75lV20p3qGENA/ynTH7hOPFqDUEGBT30IvhEA==", + "type": "package", + "path": "microsoft.aspnetcore.connections.abstractions/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.Connections.Abstractions.dll", + "lib/net10.0/Microsoft.AspNetCore.Connections.Abstractions.xml", + "lib/net462/Microsoft.AspNetCore.Connections.Abstractions.dll", + "lib/net462/Microsoft.AspNetCore.Connections.Abstractions.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Connections.Abstractions.xml", + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.dll", + "lib/netstandard2.1/Microsoft.AspNetCore.Connections.Abstractions.xml", + "microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.connections.abstractions.nuspec" + ] + }, + "Microsoft.AspNetCore.Http.Connections.Client/10.0.0": { + "sha512": "7nSER+de0V6mWTcdUqBJZlm1XMz+Y2mTHzL3B/msVF+JfSXXZtKNVC18TI7AeSz4PD//b5qpy8n0RQEIVByfJw==", + "type": "package", + "path": "microsoft.aspnetcore.http.connections.client/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Client.dll", + "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Client.xml", + "lib/net462/Microsoft.AspNetCore.Http.Connections.Client.dll", + "lib/net462/Microsoft.AspNetCore.Http.Connections.Client.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Client.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Client.xml", + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.dll", + "lib/netstandard2.1/Microsoft.AspNetCore.Http.Connections.Client.xml", + "microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.http.connections.client.nuspec" + ] + }, + "Microsoft.AspNetCore.Http.Connections.Common/10.0.0": { + "sha512": "VaEGwazymaL4NB+JoAdvM/IaFg5IIg1WXtVgKmD/y3Et2qnPxolAlMXYJrI8k1EPjmoIcXQZHTj47MskRRyRIA==", + "type": "package", + "path": "microsoft.aspnetcore.http.connections.common/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Common.dll", + "lib/net10.0/Microsoft.AspNetCore.Http.Connections.Common.xml", + "lib/net462/Microsoft.AspNetCore.Http.Connections.Common.dll", + "lib/net462/Microsoft.AspNetCore.Http.Connections.Common.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.Http.Connections.Common.xml", + "microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.http.connections.common.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR.Client/10.0.0": { + "sha512": "XHPNPLqPX7CVJ5JuaumTP58sAVrQG4TqFKLFOtN1mZIwgEUHKwtDeMwL0G8dIvy9zcpi7os4CYAHvA1bUUTzVw==", + "type": "package", + "path": "microsoft.aspnetcore.signalr.client/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.dll", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.xml", + "lib/net462/Microsoft.AspNetCore.SignalR.Client.dll", + "lib/net462/Microsoft.AspNetCore.SignalR.Client.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.xml", + "microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.client.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR.Client.Core/10.0.0": { + "sha512": "MrXjT7YNV0e1Jb3Hai6kX/Ot7X2SlONHv5IC5XNGeycTTLu3qitJ7DXZUsPPZs6yanWIOsIKjPEY58ARHdRKGg==", + "type": "package", + "path": "microsoft.aspnetcore.signalr.client.core/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.Core.dll", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Client.Core.xml", + "lib/net462/Microsoft.AspNetCore.SignalR.Client.Core.dll", + "lib/net462/Microsoft.AspNetCore.SignalR.Client.Core.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.Core.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Client.Core.xml", + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.dll", + "lib/netstandard2.1/Microsoft.AspNetCore.SignalR.Client.Core.xml", + "microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.client.core.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR.Common/10.0.0": { + "sha512": "pyG6FLV4/EeOQeZ30ra4aUYycJQPT/9ddB91aplMKwEGT5KbEs//WMqMObVGvDREP508EB4QUAKzacSVi30nxw==", + "type": "package", + "path": "microsoft.aspnetcore.signalr.common/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Common.dll", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Common.xml", + "lib/net462/Microsoft.AspNetCore.SignalR.Common.dll", + "lib/net462/Microsoft.AspNetCore.SignalR.Common.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Common.xml", + "microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.common.nuspec" + ] + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/10.0.0": { + "sha512": "L++SCI4pcG9uo7HTzAFTX33BsZFDHCdukJIK+/S4tgH/kcJlPTp9QS96E4zgOuzXRDrzaunwbFSS2DElTmWGRA==", + "type": "package", + "path": "microsoft.aspnetcore.signalr.protocols.json/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", + "lib/net10.0/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", + "lib/net462/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", + "lib/net462/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.SignalR.Protocols.Json.xml", + "microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.signalr.protocols.json.nuspec" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/10.0.0": { + "sha512": "vFuwSLj9QJBbNR0NeNO4YVASUbokxs+i/xbuu8B+Fs4FAZg5QaFa6eGrMaRqTzzNI5tAb97T7BhSxtLckFyiRA==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", + "buildTransitive/net462/_._", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Bcl.TimeProvider/10.0.0": { + "sha512": "bUubrBD6tRJE3V1kvRloYc6NymH3R5oFKjAS9e0ELNx6u0ZR+zjps9dDQyjgqN/rArzl7f+21KGszj3YRN7F2Q==", + "type": "package", + "path": "microsoft.bcl.timeprovider/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.TimeProvider.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Bcl.TimeProvider.targets", + "lib/net462/Microsoft.Bcl.TimeProvider.dll", + "lib/net462/Microsoft.Bcl.TimeProvider.xml", + "lib/net8.0/Microsoft.Bcl.TimeProvider.dll", + "lib/net8.0/Microsoft.Bcl.TimeProvider.xml", + "lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll", + "lib/netstandard2.0/Microsoft.Bcl.TimeProvider.xml", + "microsoft.bcl.timeprovider.10.0.0.nupkg.sha512", + "microsoft.bcl.timeprovider.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection/10.0.0": { + "sha512": "f0RBabswJq+gRu5a+hWIobrLWiUYPKMhCD9WO3sYBAdSy3FFH14LMvLVFZc2kPSCimBLxSuitUhsd6tb0TAY6A==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", + "lib/net10.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net10.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net462/Microsoft.Extensions.DependencyInjection.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", + "microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0": { + "sha512": "L3AdmZ1WOK4XXT5YFPEwyt0ep6l8lGIPs7F5OOBZc77Zqeo01Of7XXICy47628sdVl0v/owxYJTe86DTgFwKCA==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Features/10.0.0": { + "sha512": "kCFjPpfvz0K00xIpe7wJKre1gFJdNIu9+1BYJLklu3GWb+uU4HIjza0uMBQeFGZws9VJos9LeO+PUfvGcre+9g==", + "type": "package", + "path": "microsoft.extensions.features/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.Extensions.Features.dll", + "lib/net10.0/Microsoft.Extensions.Features.xml", + "lib/net462/Microsoft.Extensions.Features.dll", + "lib/net462/Microsoft.Extensions.Features.xml", + "lib/netstandard2.0/Microsoft.Extensions.Features.dll", + "lib/netstandard2.0/Microsoft.Extensions.Features.xml", + "microsoft.extensions.features.10.0.0.nupkg.sha512", + "microsoft.extensions.features.nuspec" + ] + }, + "Microsoft.Extensions.Logging/10.0.0": { + "sha512": "BStFkd5CcnEtarlcgYDBcFzGYCuuNMzPs02wN3WBsOFoYIEmYoUdAiU+au6opzoqfTYJsMTW00AeqDdnXH2CvA==", + "type": "package", + "path": "microsoft.extensions.logging/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", + "lib/net10.0/Microsoft.Extensions.Logging.dll", + "lib/net10.0/Microsoft.Extensions.Logging.xml", + "lib/net462/Microsoft.Extensions.Logging.dll", + "lib/net462/Microsoft.Extensions.Logging.xml", + "lib/net8.0/Microsoft.Extensions.Logging.dll", + "lib/net8.0/Microsoft.Extensions.Logging.xml", + "lib/net9.0/Microsoft.Extensions.Logging.dll", + "lib/net9.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", + "microsoft.extensions.logging.10.0.0.nupkg.sha512", + "microsoft.extensions.logging.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/10.0.0": { + "sha512": "FU/IfjDfwaMuKr414SSQNTIti/69bHEMb+QKrskRb26oVqpx3lNFXMjs/RC9ZUuhBhcwDM2BwOgoMw+PZ+beqQ==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net10.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options/10.0.0": { + "sha512": "8oCAgXOow5XDrY9HaXX1QmH3ORsyZO/ANVHBlhLyCeWTH5Sg4UuqZeOTWJi6484M+LqSx0RqQXDJtdYy2BNiLQ==", + "type": "package", + "path": "microsoft.extensions.options/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Options.targets", + "buildTransitive/net462/Microsoft.Extensions.Options.targets", + "buildTransitive/net8.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", + "lib/net10.0/Microsoft.Extensions.Options.dll", + "lib/net10.0/Microsoft.Extensions.Options.xml", + "lib/net462/Microsoft.Extensions.Options.dll", + "lib/net462/Microsoft.Extensions.Options.xml", + "lib/net8.0/Microsoft.Extensions.Options.dll", + "lib/net8.0/Microsoft.Extensions.Options.xml", + "lib/net9.0/Microsoft.Extensions.Options.dll", + "lib/net9.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.1/Microsoft.Extensions.Options.dll", + "lib/netstandard2.1/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.10.0.0.nupkg.sha512", + "microsoft.extensions.options.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Primitives/10.0.0": { + "sha512": "inRnbpCS0nwO/RuoZIAqxQUuyjaknOOnCEZB55KSMMjRhl0RQDttSmLSGsUJN3RQ3ocf5NDLFd2mOQViHqMK5w==", + "type": "package", + "path": "microsoft.extensions.primitives/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", + "lib/net10.0/Microsoft.Extensions.Primitives.dll", + "lib/net10.0/Microsoft.Extensions.Primitives.xml", + "lib/net462/Microsoft.Extensions.Primitives.dll", + "lib/net462/Microsoft.Extensions.Primitives.xml", + "lib/net8.0/Microsoft.Extensions.Primitives.dll", + "lib/net8.0/Microsoft.Extensions.Primitives.xml", + "lib/net9.0/Microsoft.Extensions.Primitives.dll", + "lib/net9.0/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.10.0.0.nupkg.sha512", + "microsoft.extensions.primitives.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.NET.ILLink.Tasks/8.0.19": { + "sha512": "IhHf+zeZiaE5EXRyxILd4qM+Hj9cxV3sa8MpzZgeEhpvaG3a1VEGF6UCaPFLO44Kua3JkLKluE0SWVamS50PlA==", + "type": "package", + "path": "microsoft.net.illink.tasks/8.0.19", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "Sdk/Sdk.props", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/cs/ILLink.CodeFixProvider.dll", + "analyzers/dotnet/cs/ILLink.RoslynAnalyzer.dll", + "build/Microsoft.NET.ILLink.Analyzers.props", + "build/Microsoft.NET.ILLink.Tasks.props", + "build/Microsoft.NET.ILLink.targets", + "microsoft.net.illink.tasks.8.0.19.nupkg.sha512", + "microsoft.net.illink.tasks.nuspec", + "tools/net472/ILLink.Tasks.dll", + "tools/net472/ILLink.Tasks.dll.config", + "tools/net472/Mono.Cecil.Mdb.dll", + "tools/net472/Mono.Cecil.Pdb.dll", + "tools/net472/Mono.Cecil.Rocks.dll", + "tools/net472/Mono.Cecil.dll", + "tools/net472/Sdk/Sdk.props", + "tools/net472/System.Buffers.dll", + "tools/net472/System.Collections.Immutable.dll", + "tools/net472/System.Memory.dll", + "tools/net472/System.Numerics.Vectors.dll", + "tools/net472/System.Reflection.Metadata.dll", + "tools/net472/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net472/build/Microsoft.NET.ILLink.Analyzers.props", + "tools/net472/build/Microsoft.NET.ILLink.Tasks.props", + "tools/net472/build/Microsoft.NET.ILLink.targets", + "tools/net8.0/ILLink.Tasks.deps.json", + "tools/net8.0/ILLink.Tasks.dll", + "tools/net8.0/Mono.Cecil.Mdb.dll", + "tools/net8.0/Mono.Cecil.Pdb.dll", + "tools/net8.0/Mono.Cecil.Rocks.dll", + "tools/net8.0/Mono.Cecil.dll", + "tools/net8.0/Sdk/Sdk.props", + "tools/net8.0/build/Microsoft.NET.ILLink.Analyzers.props", + "tools/net8.0/build/Microsoft.NET.ILLink.Tasks.props", + "tools/net8.0/build/Microsoft.NET.ILLink.targets", + "tools/net8.0/illink.deps.json", + "tools/net8.0/illink.dll", + "tools/net8.0/illink.runtimeconfig.json", + "useSharedDesignerContext.txt" + ] + }, + "System.Diagnostics.DiagnosticSource/10.0.0": { + "sha512": "0KdBK+h7G13PuOSC2R/DalAoFMvdYMznvGRuICtkdcUMXgl/gYXsG6z4yUvTxHSMACorWgHCU1Faq0KUHU6yAQ==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", + "lib/net10.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net10.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net462/System.Diagnostics.DiagnosticSource.dll", + "lib/net462/System.Diagnostics.DiagnosticSource.xml", + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net9.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net9.0/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", + "system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512", + "system.diagnostics.diagnosticsource.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.IO.Pipelines/10.0.0": { + "sha512": "M1eb3nfXntaRJPrrMVM9EFS8I1bDTnt0uvUS6QP/SicZf/ZZjydMD5NiXxfmwW/uQwaMDP/yX2P+zQN1NBHChg==", + "type": "package", + "path": "system.io.pipelines/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.IO.Pipelines.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets", + "lib/net10.0/System.IO.Pipelines.dll", + "lib/net10.0/System.IO.Pipelines.xml", + "lib/net462/System.IO.Pipelines.dll", + "lib/net462/System.IO.Pipelines.xml", + "lib/net8.0/System.IO.Pipelines.dll", + "lib/net8.0/System.IO.Pipelines.xml", + "lib/net9.0/System.IO.Pipelines.dll", + "lib/net9.0/System.IO.Pipelines.xml", + "lib/netstandard2.0/System.IO.Pipelines.dll", + "lib/netstandard2.0/System.IO.Pipelines.xml", + "system.io.pipelines.10.0.0.nupkg.sha512", + "system.io.pipelines.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Net.ServerSentEvents/10.0.0": { + "sha512": "zRH5XXZfenw7bgn8BT+q6XH1Sp75kSQM5m7Ee4WzZhMu2syGawcsqdlfFa2u/+skXr/u2ufp9F6M9lgkKkfZZg==", + "type": "package", + "path": "system.net.serversentevents/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Net.ServerSentEvents.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.Net.ServerSentEvents.targets", + "lib/net10.0/System.Net.ServerSentEvents.dll", + "lib/net10.0/System.Net.ServerSentEvents.xml", + "lib/net462/System.Net.ServerSentEvents.dll", + "lib/net462/System.Net.ServerSentEvents.xml", + "lib/net8.0/System.Net.ServerSentEvents.dll", + "lib/net8.0/System.Net.ServerSentEvents.xml", + "lib/net9.0/System.Net.ServerSentEvents.dll", + "lib/net9.0/System.Net.ServerSentEvents.xml", + "lib/netstandard2.0/System.Net.ServerSentEvents.dll", + "lib/netstandard2.0/System.Net.ServerSentEvents.xml", + "system.net.serversentevents.10.0.0.nupkg.sha512", + "system.net.serversentevents.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Encodings.Web/10.0.0": { + "sha512": "257hh1ep1Gqm1Lm0ulxf7vVBVMJuGN6EL4xSWjpi46DffXzm1058IiWsfSC06zSm7SniN+Tb5160UnXsSa8rRg==", + "type": "package", + "path": "system.text.encodings.web/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Text.Encodings.Web.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", + "lib/net10.0/System.Text.Encodings.Web.dll", + "lib/net10.0/System.Text.Encodings.Web.xml", + "lib/net462/System.Text.Encodings.Web.dll", + "lib/net462/System.Text.Encodings.Web.xml", + "lib/net8.0/System.Text.Encodings.Web.dll", + "lib/net8.0/System.Text.Encodings.Web.xml", + "lib/net9.0/System.Text.Encodings.Web.dll", + "lib/net9.0/System.Text.Encodings.Web.xml", + "lib/netstandard2.0/System.Text.Encodings.Web.dll", + "lib/netstandard2.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net10.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net10.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", + "runtimes/wasi/lib/net10.0/System.Text.Encodings.Web.dll", + "runtimes/wasi/lib/net10.0/System.Text.Encodings.Web.xml", + "runtimes/win/lib/net9.0/System.Text.Encodings.Web.dll", + "runtimes/win/lib/net9.0/System.Text.Encodings.Web.xml", + "system.text.encodings.web.10.0.0.nupkg.sha512", + "system.text.encodings.web.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/10.0.0": { + "sha512": "1Dpjwq9peG/Wt5BNbrzIhTpclfOSqBWZsUO28vVr59yQlkvL5jLBWfpfzRmJ1OY+6DciaY0DUcltyzs4fuZHjw==", + "type": "package", + "path": "system.text.json/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net8.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net10.0/System.Text.Json.dll", + "lib/net10.0/System.Text.Json.xml", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/net9.0/System.Text.Json.dll", + "lib/net9.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.10.0.0.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Threading.Channels/10.0.0": { + "sha512": "fwRdkJpKisUEVNaEdsL5w5EwidzuVw0BOTfzDvYB1Yg8sq1pqNfUZxBOVFgSj6i6tNhpT3HP8BEDXf1+kFkTDA==", + "type": "package", + "path": "system.threading.channels/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Threading.Channels.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.Threading.Channels.targets", + "lib/net10.0/System.Threading.Channels.dll", + "lib/net10.0/System.Threading.Channels.xml", + "lib/net462/System.Threading.Channels.dll", + "lib/net462/System.Threading.Channels.xml", + "lib/net8.0/System.Threading.Channels.dll", + "lib/net8.0/System.Threading.Channels.xml", + "lib/net9.0/System.Threading.Channels.dll", + "lib/net9.0/System.Threading.Channels.xml", + "lib/netstandard2.0/System.Threading.Channels.dll", + "lib/netstandard2.0/System.Threading.Channels.xml", + "lib/netstandard2.1/System.Threading.Channels.dll", + "lib/netstandard2.1/System.Threading.Channels.xml", + "system.threading.channels.10.0.0.nupkg.sha512", + "system.threading.channels.nuspec", + "useSharedDesignerContext.txt" + ] + } + }, + "projectFileDependencyGroups": { + "net8.0-windows7.0": [ + "Microsoft.AspNetCore.SignalR.Client >= 10.0.0", + "Microsoft.NET.ILLink.Tasks >= 8.0.19" + ] + }, + "packageFolders": { + "C:\\Users\\nanxun\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", + "projectName": "SignalRTest", + "projectPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", + "packagesPath": "C:\\Users\\nanxun\\.nuget\\packages\\", + "outputPath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\obj\\publish\\win-x64\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\nanxun\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0-windows7.0": { + "targetAlias": "net8.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0-windows7.0": { + "targetAlias": "net8.0-windows", + "dependencies": { + "Microsoft.AspNetCore.SignalR.Client": { + "target": "Package", + "version": "[10.0.0, )" + }, + "Microsoft.NET.ILLink.Tasks": { + "suppressParent": "All", + "target": "Package", + "version": "[8.0.19, )", + "autoReferenced": true + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Runtime.win-x64", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Runtime.win-x64", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Runtime.win-x64", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WindowsForms": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + }, + "runtimes": { + "win-x64": { + "#import": [] + } + } + } } \ No newline at end of file diff --git a/backend/SignalRTest/obj/publish/win-x64/project.nuget.cache b/backend/SignalRTest/obj/publish/win-x64/project.nuget.cache index 3812f5a..888fbed 100644 --- a/backend/SignalRTest/obj/publish/win-x64/project.nuget.cache +++ b/backend/SignalRTest/obj/publish/win-x64/project.nuget.cache @@ -1,35 +1,35 @@ -{ - "version": 2, - "dgSpecHash": "tkEl1r4m+Ks=", - "success": true, - "projectFilePath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", - "expectedPackageFiles": [ - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.connections.abstractions\\10.0.0\\microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections.client\\10.0.0\\microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections.common\\10.0.0\\microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.client\\10.0.0\\microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.client.core\\10.0.0\\microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.common\\10.0.0\\microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.protocols.json\\10.0.0\\microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\10.0.0\\microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.bcl.timeprovider\\10.0.0\\microsoft.bcl.timeprovider.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\10.0.0\\microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\10.0.0\\microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.features\\10.0.0\\microsoft.extensions.features.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging\\10.0.0\\microsoft.extensions.logging.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\10.0.0\\microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.options\\10.0.0\\microsoft.extensions.options.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.primitives\\10.0.0\\microsoft.extensions.primitives.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.net.illink.tasks\\8.0.19\\microsoft.net.illink.tasks.8.0.19.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.diagnosticsource\\10.0.0\\system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.io.pipelines\\10.0.0\\system.io.pipelines.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.net.serversentevents\\10.0.0\\system.net.serversentevents.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.text.encodings.web\\10.0.0\\system.text.encodings.web.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.text.json\\10.0.0\\system.text.json.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.channels\\10.0.0\\system.threading.channels.10.0.0.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.netcore.app.runtime.win-x64\\8.0.19\\microsoft.netcore.app.runtime.win-x64.8.0.19.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.windowsdesktop.app.runtime.win-x64\\8.0.19\\microsoft.windowsdesktop.app.runtime.win-x64.8.0.19.nupkg.sha512", - "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.app.runtime.win-x64\\8.0.19\\microsoft.aspnetcore.app.runtime.win-x64.8.0.19.nupkg.sha512" - ], - "logs": [] +{ + "version": 2, + "dgSpecHash": "tkEl1r4m+Ks=", + "success": true, + "projectFilePath": "C:\\Users\\nanxun\\Documents\\IM\\backend\\SignalRTest\\SignalRTest.csproj", + "expectedPackageFiles": [ + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.connections.abstractions\\10.0.0\\microsoft.aspnetcore.connections.abstractions.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections.client\\10.0.0\\microsoft.aspnetcore.http.connections.client.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.http.connections.common\\10.0.0\\microsoft.aspnetcore.http.connections.common.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.client\\10.0.0\\microsoft.aspnetcore.signalr.client.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.client.core\\10.0.0\\microsoft.aspnetcore.signalr.client.core.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.common\\10.0.0\\microsoft.aspnetcore.signalr.common.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.signalr.protocols.json\\10.0.0\\microsoft.aspnetcore.signalr.protocols.json.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\10.0.0\\microsoft.bcl.asyncinterfaces.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.bcl.timeprovider\\10.0.0\\microsoft.bcl.timeprovider.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\10.0.0\\microsoft.extensions.dependencyinjection.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\10.0.0\\microsoft.extensions.dependencyinjection.abstractions.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.features\\10.0.0\\microsoft.extensions.features.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging\\10.0.0\\microsoft.extensions.logging.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\10.0.0\\microsoft.extensions.logging.abstractions.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.options\\10.0.0\\microsoft.extensions.options.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.extensions.primitives\\10.0.0\\microsoft.extensions.primitives.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.net.illink.tasks\\8.0.19\\microsoft.net.illink.tasks.8.0.19.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.diagnostics.diagnosticsource\\10.0.0\\system.diagnostics.diagnosticsource.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.io.pipelines\\10.0.0\\system.io.pipelines.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.net.serversentevents\\10.0.0\\system.net.serversentevents.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.text.encodings.web\\10.0.0\\system.text.encodings.web.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.text.json\\10.0.0\\system.text.json.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\system.threading.channels\\10.0.0\\system.threading.channels.10.0.0.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.netcore.app.runtime.win-x64\\8.0.19\\microsoft.netcore.app.runtime.win-x64.8.0.19.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.windowsdesktop.app.runtime.win-x64\\8.0.19\\microsoft.windowsdesktop.app.runtime.win-x64.8.0.19.nupkg.sha512", + "C:\\Users\\nanxun\\.nuget\\packages\\microsoft.aspnetcore.app.runtime.win-x64\\8.0.19\\microsoft.aspnetcore.app.runtime.win-x64.8.0.19.nupkg.sha512" + ], + "logs": [] } \ No newline at end of file diff --git a/docs/ER图.drawio b/docs/ER图.drawio index 4a22d5a..db20250 100644 --- a/docs/ER图.drawio +++ b/docs/ER图.drawio @@ -1,1094 +1,1094 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/IM 系统消息存储与推送策略文档.md b/docs/IM 系统消息存储与推送策略文档.md index e50bc50..b76cd49 100644 --- a/docs/IM 系统消息存储与推送策略文档.md +++ b/docs/IM 系统消息存储与推送策略文档.md @@ -1,141 +1,141 @@ -# IM 系统消息存储与推送策略文档 - -## 1. 概述 - -本策略文档定义了 **消息在系统中的存储、读取和推送流程**,目标是: - -- 保证 **消息实时性** -- 支持 **离线消息存储与同步** -- 支持 **多端登录同步** -- 支持 **单聊、群聊及系统消息** - ------- - -## 2. 消息存储策略 - -### 2.1 消息表设计 - -表结构参考前期设计: - -| 表名 | 作用 | -| ------------ | ------------------------------------------------------------ | -| Messages | 存储所有聊天消息(单聊/群聊) | -| Conversation | 缓存用户最近会话信息(last_message_id, target_id, unread_count) | -| Files | 附件 / 图片 / 语音存储URL | - ------- - -### 2.2 消息存储规则 - -1. **单聊消息** - - 写入 `Messages` 表 - - 更新发送者和接收者 `Conversation` 表 - - 更新 `UnreadCount` -2. **群聊消息** - - 写入 `Messages` 表 - - 更新群成员对应的 `Conversation` 表(except 发送者) - - 更新每个成员的 `UnreadCount` -3. **文件消息** - - 文件存储到对象存储(OSS/S3/MinIO) - - `Messages.Content` 存文件 URL + metadata -4. **消息撤回** - - 消息允许撤回时,修改 `message.status = 1 - - 更新 `Conversation.LastMessageId`(如撤回的是最后一条消息) - ------- - -## 3. 消息推送策略 - -### 3.1 推送原则 - -- **实时性**:在线用户立即通过 WebSocket 推送 -- **可靠性**:离线用户存储消息,登录时同步 -- **顺序保证**:消息按 `timestamp` 或 `messageId` 顺序发送 -- **幂等性**:客户端可根据 `messageId` 去重 - ------- - -### 3.2 单聊推送流程 - -1. 发送者通过 WebSocket 或 HTTP API 发送消息 -2. 服务端写入 `Messages` 表 -3. 查询接收者是否在线 - - **在线**:通过 WebSocket 推送 - - **离线**:存储到 Redis 或 `Conversation.UnreadCount` -4. 接收者收到消息后发送 `MESSAGE_ACK` -5. //暂不要求:更新消息状态(已送达 / 已读) - ------- - -### 3.3 群聊推送流程 - -1. 发送者发送群消息 -2. 服务端写入 `Message`s 表 -3. 查询群成员列表(`GroupMember` 表) -4. 遍历成员: - - **在线成员**:WebSocket 推送 - - **离线成员**:增加 `UnreadCount`,保存在 Redis/数据库 -5. //暂不要求:接收者回 ACK 后更新 `message_receipt`(已读) - ------- - -### 3.4 离线消息处理 - -- 离线消息存储位置: - 1. 数据库 `Messages` 表(长期保存) - 2. Redis 缓存(短期加速推送) -- 客户端上线时: - 1. 请求 `/syncMessages` 接口 - 2. 返回未读消息 + 未读计数 -- 消息同步完成后清除缓存或更新状态 - ------- - -### 3.5 多端同步策略 - -- 每个设备维护独立的 `deviceId` -- WebSocket 推送时: - - 排除发送设备 - - 推送给同账号其他设备 -- //暂不要求:消息回执: - - 每端发送 ACK - - 服务端更新 `Voncers` 和 `message_receipt` - ------- - -## 4. 消息可靠性保障 - -| 场景 | 解决方案 | -| ------------------ | ---------------------------------- | -| 消息丢失 | 发送端生成 `requestId`,服务端去重 | -| 消息顺序错乱 | 按 `messageId` 或 `timestamp` 排序 | -| WebSocket 异常断开 | 客户端重连后同步离线消息 | -| 群聊大消息量 | 异步推送 + 批量 ACK | - ------- - -## 5. //暂不要求:高性能优化策略 - -1. **消息表索引**:`(chat_type, to_id, created_at)` -2. **会话表缓存**:`conversation` 表避免全表查询 -3. **Redis 缓存**:用户在线状态、未读消息数 -4. **分表/分库**:按月或按用户分表 -5. **异步推送队列**:消息通过 MQ(Kafka/RabbitMQ)推送,保证高并发 - ------- - -## 6. 消息撤回与删除策略 - -1. **撤回条件**:超时限制( 2 分钟内可撤回) -2. **撤回操作**: - - 更新 `message.status = 1` - - 更新 `Conversation.LastMessageId` - - 推送撤回事件到在线用户 - ------- - -## 7. 系统消息与通知策略 - -- 系统消息(好友申请、群邀请、公告)走 **同样的消息推送流程** -- 保留在 `Notification` 表 +# IM 系统消息存储与推送策略文档 + +## 1. 概述 + +本策略文档定义了 **消息在系统中的存储、读取和推送流程**,目标是: + +- 保证 **消息实时性** +- 支持 **离线消息存储与同步** +- 支持 **多端登录同步** +- 支持 **单聊、群聊及系统消息** + +------ + +## 2. 消息存储策略 + +### 2.1 消息表设计 + +表结构参考前期设计: + +| 表名 | 作用 | +| ------------ | ------------------------------------------------------------ | +| Messages | 存储所有聊天消息(单聊/群聊) | +| Conversation | 缓存用户最近会话信息(last_message_id, target_id, unread_count) | +| Files | 附件 / 图片 / 语音存储URL | + +------ + +### 2.2 消息存储规则 + +1. **单聊消息** + - 写入 `Messages` 表 + - 更新发送者和接收者 `Conversation` 表 + - 更新 `UnreadCount` +2. **群聊消息** + - 写入 `Messages` 表 + - 更新群成员对应的 `Conversation` 表(except 发送者) + - 更新每个成员的 `UnreadCount` +3. **文件消息** + - 文件存储到对象存储(OSS/S3/MinIO) + - `Messages.Content` 存文件 URL + metadata +4. **消息撤回** + - 消息允许撤回时,修改 `message.status = 1 + - 更新 `Conversation.LastMessageId`(如撤回的是最后一条消息) + +------ + +## 3. 消息推送策略 + +### 3.1 推送原则 + +- **实时性**:在线用户立即通过 WebSocket 推送 +- **可靠性**:离线用户存储消息,登录时同步 +- **顺序保证**:消息按 `timestamp` 或 `messageId` 顺序发送 +- **幂等性**:客户端可根据 `messageId` 去重 + +------ + +### 3.2 单聊推送流程 + +1. 发送者通过 WebSocket 或 HTTP API 发送消息 +2. 服务端写入 `Messages` 表 +3. 查询接收者是否在线 + - **在线**:通过 WebSocket 推送 + - **离线**:存储到 Redis 或 `Conversation.UnreadCount` +4. 接收者收到消息后发送 `MESSAGE_ACK` +5. //暂不要求:更新消息状态(已送达 / 已读) + +------ + +### 3.3 群聊推送流程 + +1. 发送者发送群消息 +2. 服务端写入 `Message`s 表 +3. 查询群成员列表(`GroupMember` 表) +4. 遍历成员: + - **在线成员**:WebSocket 推送 + - **离线成员**:增加 `UnreadCount`,保存在 Redis/数据库 +5. //暂不要求:接收者回 ACK 后更新 `message_receipt`(已读) + +------ + +### 3.4 离线消息处理 + +- 离线消息存储位置: + 1. 数据库 `Messages` 表(长期保存) + 2. Redis 缓存(短期加速推送) +- 客户端上线时: + 1. 请求 `/syncMessages` 接口 + 2. 返回未读消息 + 未读计数 +- 消息同步完成后清除缓存或更新状态 + +------ + +### 3.5 多端同步策略 + +- 每个设备维护独立的 `deviceId` +- WebSocket 推送时: + - 排除发送设备 + - 推送给同账号其他设备 +- //暂不要求:消息回执: + - 每端发送 ACK + - 服务端更新 `Voncers` 和 `message_receipt` + +------ + +## 4. 消息可靠性保障 + +| 场景 | 解决方案 | +| ------------------ | ---------------------------------- | +| 消息丢失 | 发送端生成 `requestId`,服务端去重 | +| 消息顺序错乱 | 按 `messageId` 或 `timestamp` 排序 | +| WebSocket 异常断开 | 客户端重连后同步离线消息 | +| 群聊大消息量 | 异步推送 + 批量 ACK | + +------ + +## 5. //暂不要求:高性能优化策略 + +1. **消息表索引**:`(chat_type, to_id, created_at)` +2. **会话表缓存**:`conversation` 表避免全表查询 +3. **Redis 缓存**:用户在线状态、未读消息数 +4. **分表/分库**:按月或按用户分表 +5. **异步推送队列**:消息通过 MQ(Kafka/RabbitMQ)推送,保证高并发 + +------ + +## 6. 消息撤回与删除策略 + +1. **撤回条件**:超时限制( 2 分钟内可撤回) +2. **撤回操作**: + - 更新 `message.status = 1` + - 更新 `Conversation.LastMessageId` + - 推送撤回事件到在线用户 + +------ + +## 7. 系统消息与通知策略 + +- 系统消息(好友申请、群邀请、公告)走 **同样的消息推送流程** +- 保留在 `Notification` 表 - 支持离线同步 \ No newline at end of file diff --git a/docs/IM 系统鉴权与 Token 安全规范文档.md b/docs/IM 系统鉴权与 Token 安全规范文档.md index 2ece4d2..92aa5b3 100644 --- a/docs/IM 系统鉴权与 Token 安全规范文档.md +++ b/docs/IM 系统鉴权与 Token 安全规范文档.md @@ -1,115 +1,115 @@ -# IM 系统鉴权与 Token 安全规范文档 - -## 1. 概述 - -本规范用于确保系统用户身份验证、消息安全和多端同步安全。 - 鉴权体系采用 **Token(JWT 或自定义) + HTTPS/WebSocket** 方式。 - ------- - -## 2. 鉴权方式选择 - -| 方法 | -| -------------------------------------- | -| JWT(JSON Web Token)+ Redis黑名单机制 | - ------- - -## 3. Token 生成规则 - -### 3.1 Token 内容结构(JWT 示例) - -``` -{ - "userId": 1001, // 用户ID - "iat": 1700000000, // 签发时间(Unix时间戳) - "exp": 1700003600, // 过期时间 - "deviceId": "uuid-xxxx", // 设备ID,用于多端区分 - "role": "user" // 角色 -} -``` - -- **签名算法**:HMAC-SHA256 或 RSA -- **签名秘钥**:服务端统一管理,不暴露给客户端 - ------- - -### 3.2 Token 生成流程 - -1. 用户登录(用户名/密码) -2. 验证用户名与密码正确 -3. 生成 Token,写入 Redis(可选) -4. 返回 Token 给客户端 - -**响应示例**: - -``` -{ - "code": 0, - "message": "登录成功", - "data": { - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." - } -} -``` - ------- - -## 4. Token 使用 - -### 4.1 HTTP 接口鉴权 - -- 客户端请求带上 Header: - -``` -Authorization: Bearer -``` - -- 后端解析 Token: - 1. 校验签名 - 2. 校验 exp 是否过期 - 3. 校验 Redis 黑名单(可选) -- 不通过返回 401 / code 1006 - ------- - -### 4.2 WebSocket 鉴权 - -- 建立连接时通过 Query 或 Header 传 Token: - -``` -ws://example.com/ws?token=xxxx&deviceId=uuid-001 -``` - -- 握手阶段: - 1. 服务器验证 Token - 2. 成功返回 AUTH_SUCCESS - 3. 失败返回 AUTH_FAIL 并关闭连接 - ------- - -## 5. Token 过期策略 - -| 类型 | 建议值 | 说明 | -| ------------------ | ---------------------- | ---------------------------------------- | -| 短期 Token | 30 分钟 ~ 1 小时 | 防止长时间泄露 | -| 长期 Refresh Token | 7 ~ 30 天 | 用于获取新 Token,安全性高 | -| WebSocket 长连接 | Token 与短期有效期一致 | 客户端定期刷新 Token(心跳或重连时验证) | - -### 5.1 Token 刷新流程 - -1. 客户端 Token 快过期时,调用刷新接口 -2. 服务端验证 Refresh Token -3. 返回新 Token,更新 Redis / 黑名单 - ------- - -## 6. 多端登录处理 - -- **每个设备对应一个 deviceId** -- Token 中绑定 deviceId -- 多端策略: - 1. **允许多端同时登录**:每端单独维护 Token - 2. **限制单端登录**:新登录覆盖旧设备 Token - 3. **设备列表管理**:可查看在线设备并强制下线 - +# IM 系统鉴权与 Token 安全规范文档 + +## 1. 概述 + +本规范用于确保系统用户身份验证、消息安全和多端同步安全。 + 鉴权体系采用 **Token(JWT 或自定义) + HTTPS/WebSocket** 方式。 + +------ + +## 2. 鉴权方式选择 + +| 方法 | +| -------------------------------------- | +| JWT(JSON Web Token)+ Redis黑名单机制 | + +------ + +## 3. Token 生成规则 + +### 3.1 Token 内容结构(JWT 示例) + +``` +{ + "userId": 1001, // 用户ID + "iat": 1700000000, // 签发时间(Unix时间戳) + "exp": 1700003600, // 过期时间 + "deviceId": "uuid-xxxx", // 设备ID,用于多端区分 + "role": "user" // 角色 +} +``` + +- **签名算法**:HMAC-SHA256 或 RSA +- **签名秘钥**:服务端统一管理,不暴露给客户端 + +------ + +### 3.2 Token 生成流程 + +1. 用户登录(用户名/密码) +2. 验证用户名与密码正确 +3. 生成 Token,写入 Redis(可选) +4. 返回 Token 给客户端 + +**响应示例**: + +``` +{ + "code": 0, + "message": "登录成功", + "data": { + "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." + } +} +``` + +------ + +## 4. Token 使用 + +### 4.1 HTTP 接口鉴权 + +- 客户端请求带上 Header: + +``` +Authorization: Bearer +``` + +- 后端解析 Token: + 1. 校验签名 + 2. 校验 exp 是否过期 + 3. 校验 Redis 黑名单(可选) +- 不通过返回 401 / code 1006 + +------ + +### 4.2 WebSocket 鉴权 + +- 建立连接时通过 Query 或 Header 传 Token: + +``` +ws://example.com/ws?token=xxxx&deviceId=uuid-001 +``` + +- 握手阶段: + 1. 服务器验证 Token + 2. 成功返回 AUTH_SUCCESS + 3. 失败返回 AUTH_FAIL 并关闭连接 + +------ + +## 5. Token 过期策略 + +| 类型 | 建议值 | 说明 | +| ------------------ | ---------------------- | ---------------------------------------- | +| 短期 Token | 30 分钟 ~ 1 小时 | 防止长时间泄露 | +| 长期 Refresh Token | 7 ~ 30 天 | 用于获取新 Token,安全性高 | +| WebSocket 长连接 | Token 与短期有效期一致 | 客户端定期刷新 Token(心跳或重连时验证) | + +### 5.1 Token 刷新流程 + +1. 客户端 Token 快过期时,调用刷新接口 +2. 服务端验证 Refresh Token +3. 返回新 Token,更新 Redis / 黑名单 + +------ + +## 6. 多端登录处理 + +- **每个设备对应一个 deviceId** +- Token 中绑定 deviceId +- 多端策略: + 1. **允许多端同时登录**:每端单独维护 Token + 2. **限制单端登录**:新登录覆盖旧设备 Token + 3. **设备列表管理**:可查看在线设备并强制下线 + diff --git a/docs/vue3组件文档.md b/docs/vue3组件文档.md index a3631dd..aebf979 100644 --- a/docs/vue3组件文档.md +++ b/docs/vue3组件文档.md @@ -1,150 +1,150 @@ -# 📚 MyButton - -## 🏷️ 1. 组件概览 - -### 基础信息 - -| **属性** | **值** | -| ------------ | ---------------------------------------------------------- | -| **组件名称** | `MyButton` | -| **文件路径** | `@/components/MyButton.vue` | -| **用途** | 封装项目中的所有交互按钮,提供统一的样式、交互状态和动画。 | -| **版本** | v1.0.0 | -| **核心依赖** | `feather-icons` (需要父组件或全局初始化) | - -### 引入方式 - -JavaScript - -``` -import MyButton from '@/components/MyButton.vue'; -``` - -## 💡 2. 使用示例 - -### 基础用法(Primary Variant) - -HTML - -``` -保存配置 - - - - 发送邮件 - -``` - -### 状态和事件绑定 - -HTML - -``` - - 取消 - - - - 删除数据 - -``` - -## ⚙️ 3. Props 属性说明 (API) - -| **名称 (Prop Name)** | **类型 (Type)** | **可选值/说明** | **默认值 (Default)** | **描述** | -| -------------------- | --------------- | ------------------------------------------------------------ | -------------------- | -------------------------------------------------------- | -| `variant` | `String` | `primary` (主色调), `secondary` (次要/灰色), `danger` (危险/红色), `text` (纯文本链接样式) | `'primary'` | 定义按钮的外观和主题颜色。 | -| `disabled` | `Boolean` | — | `false` | 明确禁用按钮,移除点击交互和视觉提示。 | -| `loading` | `Boolean` | — | `false` | 设置为 `true` 时,按钮显示加载状态,并自动应用禁用样式。 | - -## 🧩 4. 插槽说明 (Slots) - -| **名称 (Slot Name)** | **用途** | **插槽 Prop** | **示例用法** | -| -------------------- | ------------------------------------------ | ------------- | --------------------------------- | -| **默认** (`default`) | 用于插入按钮的**文本内容**或其他核心元素。 | 无 | ` 按钮文本 ` | - -## ⚡ 5. 事件说明 (Events) - -| **名称 (Event Name)** | **参数 (Payload)** | **描述** | -| --------------------- | --------------------- | ------------------------------------------------------------ | -| `@click` | `(event: MouseEvent)` | 按钮被点击时触发。由于使用了 `v-bind="attrs"`,此事件是透传自内部 ` - - -
- - -
-
- 未找到该用户,请检查输入是否正确 -
-
+ + diff --git a/frontend/pc/IM/src/renderer/src/App.vue b/frontend/pc/IM/src/renderer/src/App.vue new file mode 100644 index 0000000..103066d --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/App.vue @@ -0,0 +1,50 @@ + + + + diff --git a/frontend/pc/IM/src/renderer/src/__tests__/App.spec.js b/frontend/pc/IM/src/renderer/src/__tests__/App.spec.js new file mode 100644 index 0000000..5b17801 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/__tests__/App.spec.js @@ -0,0 +1,11 @@ +import { describe, it, expect } from 'vitest' + +import { mount } from '@vue/test-utils' +import App from '../App.vue' + +describe('App', () => { + it('mounts renders properly', () => { + const wrapper = mount(App) + expect(wrapper.text()).toContain('You did it!') + }) +}) diff --git a/frontend/pc/IM/src/renderer/src/assets/default_avatar.png b/frontend/pc/IM/src/renderer/src/assets/default_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..a21d5448925c1d28d2150e1bedb1096578b2febd GIT binary patch literal 754903 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

NLbCmkXpQbOoGp(p|>O+@Kc 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 z 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≈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

Lr_3?NX2H^4+qOgEs%@bf)$IM}6 zuiuO~XS!J%_N#n+(AC7re?)Cc;R+L6rZ#kI(3Us1eWY^eb6w(E;IX6@b`e6(>B8b_ zuTW77|D{CygiBbU5^?qR0wKMcYWpQ9r`>05x=}Cl&2^-O)ftSFfGB3S+JP-3LB58( zqrE*gkOkHPT{?-Bu$+W8jOISN_B!tif~J5CdffS(Y{*BK5tq*TNwdmuD4nGzzF=)13Lo z=^3JsMjULDL zkQTFdY~MDXc=U$~>gS**SYJPmV)O#ATmIO?GzC1DeiFxePrVaV$ncUcY@#SIb6JDd z=)Q_{@WJ)=lx7i4yb{<(o~60V}AQU=#gP@)$E6DIgUm4jzWy}uMXc2$bcb>B| z`xZ2Ljq$Ojd_F#ZD9M2`iYQ&g&iA%TUS?c^&89%&H6y2A4NTYY$Q9*WM0fpj=l9u zE`TsSa+|+$WM74jEhM>gfIJ+zrfI%dmuIZwyd>>&CU(m5)RxaHNIjM&^{)W9Vxelp zbxE7jp;f#coc^v|6LhF(tB}3`bj1)SAO`|DhZ!g_0Nr7VbguT~sbgNZSG0eT9SIA0BaxysvU zoxbeiI+wBqOR;T@^K?4lt*{2B3HNUQ z&0AbU`GDgy6W^rWMY7#mOoXIpeej6Sx~*^+{;#d&pQYC1ee`;t0#hYOU&Kw_*ytAj z*d*#hX%#JXT`bmIYOxVWz&n&t*9-ln0bVOqE<(@9 za-Y6}!=5J66|hwQeL^CMkWd}A@e$TSaD?Gn2@CZ>s-W+M1j4w^gk~uqYQYiU_Qj(H zgSHVH;hm{Dx-FUO0L%3ogF^bh{W36AS18SBaQN5wvjs2u42k>z=TOQ1`2UA5?I}92 zE6j%uJ?Qpz_&=J?GOWq}fBS@hBB3H7ttbW!B1p$qKtKVJj-h~biNqKqR78}L6p)gV zme@v&4Wzp_x_iK=ZLqO%?{^=^|MB%`$8qiYyg%prJkOW-=zuOoUa*K;@#%602qH#i z&NNDgmAnP1!=z^Y&49EAko&h?&d-L`H~NPGYrV6_Du)3osjfBvMU+Ma&y4PKQ0^^G za7DNECv`Eag>W^3(|*q6ramFWW_I1bd^nHjhnv%)cUx&DJqIutAzT zdLC_n&Ep!I=x-T$*@tqV>_d8IEz)(}z2%jhwTB3h+?5f1Ig*M=JJrLle0O? zN|QrNT0b_jZ83je{{E>C;Sw6pW@zk~G_kxgwPXGwUzFZ{r+NpRv#|4MlsqT^+U4~j zwl$Nlaam73{fRecQ~^EO6z9_(+a4+_Ce2Z8D(}jh=vZDu2i1e!=R_1d3zND67q8Qm z&aGzb5W}yZms8P)=i8ghVg-1VM$$(C*lUb`_}r<=YOkAKC(4~Q)k-VyqCR55X7wK( z9aG96zoWDB(oJ(K_Soev#L#5*!?F|!eBy2*HvIhTJWv?nx2&-Jk43JNMo|3Kvh`cL zN~zX}U5C6i8vaaWi#^?C=bc*GoZJ|nrHS*%ovWEcm%N+bbmOf|?;WgZ%}44|`V}qA z7C(DQ8OsIRq&@>2JIrjy{oXMQaF1T75(zRIVpVuMIcp8?y|1%f_oW)632;TZhWpxg zIkM|AvE#3GuGV+JDxfw1Q_(I7fLYB-#%!GG-}!M5Ck;sjN2&#{_U@ZXLMCrP-bBj* z^R{Abeu@HU0qkBIn*pK$5-)cPvBj@$3svyXG|h3C9o-My-l(v7BPQ9Z`-`X^ILLG_ zryKEqT7Xc~jJZXGMPua6A???G{ymJRG-$f$@JY9&H88olscY2vWRKyIm{{u}(A6yW zoyX$7L6onj5U=!x4dry6u<;^Y;YSo&?acUWYrw3hoe$f_; zx=2rB4t*8A9j!$oK7T+j6j<%IJp0~mVY3`eC{y8AZv`*X2Lw;1R_#`|6U~y}-JT;_ zG#?Kfbj&yTiPG*)d4q~(#}SBd3TJV!tAUGx20 zoLnAQ1fb=yLmRj3mb6rOt$%7caU~zL6JA|;P7Inf&n_(I7;KsGr*lCPw`dktwYII* z{?hk-)|DOpk%inxBMJj=*;Hc>S0cpTEhfmM%=68=Ytt_KiydYd^?XQJjJ8MK2)mw_ZG-$hM6* z*)CXHbN3Nyo}(A!)1hNZp9T}&wKT`PUz6JTke%Mt$J-pp;M&49C#>b1`8?aoKKYHH zZSm2HMMMI8J{gWayj?BCuf`UN7J)Xx2%w7Mp^bcT0lA%!KQ<(w@qkR*$|N_DgYnoBS(Sb9~E;L`lZRY0jrNbc9%1<-75sTyHAT6D^dO?g_ZGV zS&~>sK>{@8WA_Ook1My|(U-*QzI0U6m)Q{46P@`T6ke19@^r4DbbW||JXX=27Tzc}p8H>P%9EOg#;c=&vqsNo>v37aoGme$3r*Eu36aMSKWsm1 z0GTWny*Py4Z@EJL{glz5j#C5lX5QE?vWuJ)DkGhUE1t*X6usGv@Z(dq(jUR~(44Vn z848H`3eWiXuQ|6KR$qP)!X&I=oB6a##S!&49)Q_uw5{@X-5dV?^Xe#VeD+#LNGC+< zwYh6QS7;iR7LV zt=v|5uXEfFj6aDL&^}o6S#c&BCt5;&a&h#uXzEvQV9V&xHIyOh(ZmyN`cn43L8mVR zG{4Oj(k$Fua%$=&z?5fMQaZ4=m{|r8|6%DH`R8fFhpwr&W<3bjkH;(UD`mN%pmAFb z>0#*akA}QV3%iqj|5T623FeyWechoAf@gT66pH9YtswWUo4+h8gP8QtwH+E?$+h7& ziRT+|;_t)XK!^m`3L6k^xs&-wd1DY(nHX8_fl8aClE2&_SmPRbh)@)qof`MGjO69K z%8SE6%dwzRlkHDr{k`a}*ysN00k?E;FMC)X0)%=Fk)E?@@0`-XGI272bDuxxab78s z^y)-(n@J-&qdbO|?=`mn*H9eKW3@bGj}O%N9)75BDg1QRsOE)RWz-zz4>_W9LU27T z?LODFlE10X49l_*KdU9G!yaY>KeA_3zWewMZM`}W*F9vYZ<^7UurhFXJZwS1!NU85 zD5u(E+U%t-`0p8A@B8BN+CI5xsoX6y=!!5nYL|v7@J?!Q+-i-~{@`Jz*bGgKVzu^a z)pn#V!@E}&VL?p#bANq+(-uuCk99XZPtR6QHonpc$vBUhTzqNX@O}Mu5(a+%)qgN{ zW>|FLpG&w75RliW+SrYnPcsF@8NPi7jt-V20x4?KuP3v1nm{yh*%854&(>+;?aeTi zK8Lkz&*ZZBc!;(uG{_f3=RDs35%z~Ogf%4N!-GVRS z1;o5&E(bi+!vj9EYY#73SvVh2*D;P<_wtGy{nv&Ah8kE{3HnM{Ovk8y=2i?#!g^Ey z@@ttQg47*6%gY6fkE%8NxhdbK)%94z4dRf73pnztOe4%NHKCXlWXJF0vzIk|mHinZ z|B$(LN)s1S#&n{1T=Uen>j@$FLuZuDIWk7Y_+h9(aqU0!(S=+n+9tTRecQ@8s_*+O zCR#Eq?`WrAz2QXcHJcFWXzNk9>m-)YE&}rPSNY&a4)IA3qj@=R9J>FVtfIhaHpYHw zDXRwtt57)HdD=^8on}_$*mEQ=px^C>qU}r{rdhm9dRqfVX*q*`-ffMTSlR=| zY9AhWWWYmZDyjL}XL4^CF7IHj#-5W`vMS5NZyv{!da}SC%$BpMdL`Njr$N4IW4}Wv z-Y)9nURJ#;=q%LpS6|76QhL?2x!=~i@oi_iCXRkV+h)a9bgfO0Q@4c)jYJt0N2+9qBow*jh1Z+!?@Ph}q7gU;Cx!Ro15~+|O%YH2`iQ zulzWvdmCkQ+jQ4@b9qD|>F|rO*sDeD+GHKe`V3_>#R@q-$9ZmbcDPApU0>{R_D+kO5Iqaj>n+Gj9-0N7O2Nd`KF? z2*9IFw-)&xz`GvJ$4PBD2r#nV_hI-b*1sJ&U{Ob@OKU1^5Bo-^OT%P=;$v2GN%N+Hy6INwy$J?`)PCW&}JhID-OIJUEP;S#&!2;=Yhw zacQ#tT-XC9U?kuW1b4kUGq0NDCV`wRN43 zm>)w$kLvrO&+d)l*UUtj3Xxa(!4ysgoQ10p~Y_hiS$T zouhNV55ZeU2h)gJ>U5@(isn`eeMBO)%Q|VE#7#fBiO45P#WZDVWj7;M{)wr=(>E&N z#<{8XW{NNu2DRX4w2b;b1We@qRpT0$Jd@*i-C#h(VRQnR#(VDu_kZEz6<*8e*m5y` zaQP#CNjH?%LiathYh?O&Acp%QHx(?F3oMM!o+HG;7kz>gzX`Xc2^wcrdjc%u=syM* zqm34j#TBLysgKX$>T<^Y^sUz*aZ16-y207qL0OJ`Xx8B|AJ@UAS}fw?wz3!^<(-Ag zSI9_xs%V7K-@B-qNmd^0(b?nr+Wx7EjWHI6(al9A_S_Ej%w+pD=sbrYe<%7&O(G4tZ-6 z4tyN+9RFyex)A3+wH>mgpj&kv@A*PNOb^h<{G2RH@B947KyPp1L;>%bEdO4Ik==Z| zDedwbceDFvYMODKVJG_rP>*ujKgnAj%zK|}oL0veC9k+V`&e><>c7N89aO!ceu9)E z?df&FZ2NsrGTJ(yk=1_Aa1}~#@LY4PeitqQ6c`ZnCgb)EXe5-4&R;PI*Sj$I|MGXf zvpDO?%50hNthbTab=Mp)=sYL!C$q6--|!*VI=)nUD<>JK9TzZ!;PeSVIaVPGo`8)v z{q%RlH{WeK@`LKFKK@WGx&EbZKa4Yp#!U#|91bL?I@_k>{Cmo7-~< zpEWZck$6cYPCT_KJ4qjduj-e!|Ii@*Hg87x>q>;x-4HM7-XEIx-p`=1F5DMncJ=k# zi}gkAi-tt_Or5aTZhY8%^!^wABD8Y+gq#PP?m|@c^p*jnzv9)-js7B~5p$XWzsx_q zBb^Lp&qO>1WDni|Zt)9-#dut>1>TGwY&N7j*wMEu_D89GM80pF??SZP<>?5R1G{_G zFy)=!Ghd%o1I*a%1AvN8iX8brk4<))G=XQizOq-zv)2iXyc+3d-qQv^nXL2;3{eCn8uJ5)&t&S{rRJ`PcCA#bJX%T!3sfRC`CQ?Y^jbQ>9rPq zw=qH0zzCU_?5`0<4(?@3Q{g|1Hrns~z$eK?Ea(30ra($m$D_c?ze3YVrI?p^f9sJd+#3Ej~B)ZdCiIxgyrObM?Eao+cbeS0aTk|S zO1Rb<;AE<#3KZa|sFvE!WJkGpcWU54G@nl(e_B4a4if59q8q>HemQE`xxbel)YRdz zxP02yHpv}908^9HN`cM{d0SYJv@{pyQ=kPQ20a2mFrZ#KSuuuZgHf~!@u}HE#TfIHEp!bS((v(e%zNX zb-zfHlQY`a0m0uj%AP)x!jBeb&aD>XDwlc#>Kw1aUa)!xuRyzCFx*w;@e8d$TlMZt zMZ3P_)wb>_4?>+9Q=Vl_9U?$r?sK30L^6^nuk|IGuevB8MIyg;CFi~}usca#3-t;) z=Yst2JH<>JGxpo?#tJl(r4)?0`C>7b_^s49%T;a-ER%VMzNdXhzT+37gaSao_PK-7 zgIuWIWyg&V{O5iETH1U>&SseXoBjg8?THt{Jw6YSJ_}Z?{7xKXyB7e@mkt^J?_RLX zd_YWBygg%Vl#XOi>R0$eUe!X9$OJ~>{Wse$xqRrSI>75J;7!EM`;7fDjrZCNl&Vg~ z&y5}7cYABo6t5YDar2R{I`Atnj@+SQucyXFb>DC7bZu;*t*yquik$&>m3=?7PC1gj zwxpldj?K@}K1;tkx1tprEd2ELP)Njw);71nrzf=tNSS5gOXt@p$7#E?E~kZE3J#YOHXP(cICj zj~TCAA55Mraj2R_xL$``wNWqWQ1Km)|8td7JfJgyMNqjm_PVZ@{Tn{mrmIBizSkMc z0;dxwOf;wFiARX>GiME6F}B@Bw#EwQeg!Jhr-}wO#(U{CU8(JO8$0=+TK;t!aeF)z zItVADzCPCVBEJAUitgG|I_8Jp*u`PZ2fBM?hjGq&q)hQTdIU( z#NaWk}Mr(jD+Hg~E6^s+})#XRuf9Yw)-m78MybtaUxd-GQU1oZ|hwyD$b6suXf zU$QmsIbcM0>mz#j*d{Pn;>MDIJ9}Zl2Y3mL06qgmSJ6tWa&z|zU7URKUTEP``ymNO zBQK{TV|JU;T^^NIZOR-I#e5ddip|2V%D=kF(?9T+tH61>TIY3LN@T!c_?QBlh;X*)q=z29-3ygs-_)%R$R0ePj9e}eq#i9= zmL?c1^?^s|B;oF#Pj6EoX_&4|AF*qwF_^r3+Cj&k=q{;oFpC5P#i;nG-AGE1b|aQ6 zYOMIOw6tJx-9%v^LxzOw(hYZ*0q;w=yun&P-!0eKx_PC@wH9`M<(<2`5(zI2#2cP` z-W}j&Np@lJ68{5kQj6^E$l|@{-wx6X#+#CEY2>u<TP z-7>YVEm?@1I(l)!F<^x7Z~HfPSK_zgr6wA&fm=Mvw*d)t*NbbHhgzdw1Yl)5;~2Zl z9@M7Al56U!`a8?N7s!r0SGv7KTsTW+e_1iZ)ikuC$VMp==BAPOeLs(irD)_=y&nXwePDtWYUd`fR?hw z`@bw5;)6;%AoQ03lXb?x;p}7^F8j5kJp;}6?;u93ObJt`laGhG!_+(~o;lj0UY#>f zwjEZ&L&@LzKVgoFsY&|UeN{3ME~vp>?2~X2keTjcnX&0(^sBL#AV?WiZvYx_D*(3X z9_xm-<-8b$jj_AhTlNtyV*qrQjbEwgg`Td>~Xj9vFfxJQ)<6TMzZ_RvF-&tDf<1H~J zMpmEUkq29mMw|Kgs2w3&Vx&*6;5la9&N<$@XO~es4IqExc|S$>7@P< z;3oxW%xxES_hYv0?31dn`(@#ACeNIsq9rN35!WZ#*uVw7s(tDGbLG6YsaAbP>Z0nW zS)p1VzW%R8X`;}FpD0TAK$#{M@iaic<~LwV5Qv^sFgpaw=}4(gy$Jri%_q3Du~N7B zy+-8pF$5*?y73-!QFRuVThNgDS1?6N#^IM$B~gOx>~6$EiKzqQ*PUP6|G9j50s(of zgP9glCbEDt>M-z7Y~As_;fPg07zr*eN%NcjUViTb?Ag03f>Z2k#0do9}J}bd3KN@r>e*e?w-ifyQDJT?or18?nldUf~ya(mP66bcPpo&uD~zcS}A{bo(# zEH~U}3(V+ja38W|!nsR%j0HQ(yiU3Gm~0-w95-)!PxE=(e_76KLdF*I#bc81LK4iB z&6+V1Tul`oY^HRdJ5=tDy#Oyv^#MR@5sxg!c&PO|Om$fJeFC>v)i$vF)9esAgQL<5 z{hlhaHNPfF%qxQ2l}YAy^I}q}>}oNnhf3p01_MonQiS1%68t02E$Dqg4UhLi=NfZz zDVEu7M!V%{^sN=J0cW@?IunrsT{Mt(nq*q@Nd7LlI1v=kRjRofUOVi3K4Xi8+TdHT zN|U;U0#*w~pFf;$8-?q)bFD=8gRwC`M7j8tg@gDo)WIyav(n=Q(ei82z+pMvgoW{+ zB|hWH-f%n^2GCkqR^032Vnbt&j%a7I^70OHbYVzqz10aCDTYz1bMg&?CFgCV8kA|< zCPdg+QOx^No-2)Sb=ni3eTKJVv`iQByupOhJ$}(){W{M0T^qE)8_l%}YQg-w?SIn# zrF$+@s=CSLN0t}gb$kDvir%FM3K^6M6O9aA3)!Pv07;==7d^JgejQ>b@)}>8fliy& ze2SY5ABut>!n>IETkep1RUbgPhvh&B)v8^F_}!E3XXjexK@6gqNAe@*c@>9ykbl&I zdTf3j`FYss;Snqn&_%aXp1=s^sytJ_Le(;+)i6+kE^P{H#i-Bh^e;h|mefv{og>I^ z=6n9bcb1)w?iy>}-hkx*yLNwIdmZ_`Y6zbzYQmkwVxC@_=fm`DPT-^7b<0klYug z9lmZGN~hHP#R)l~ebKED25JG5{29U@f5_}^GW(qR>I#1%R^l~Kv-_qPs`umS)RVkH zRm;e_54UfpUq#&|Ekq0m>*y^GobR)%Z@{STivv8LyeOWiWc14^19B8CWjBSQO<}p| zzxvJgpa%~UpmO7fpnvl#4r>udk6hBQSrxLaG0zzjvSk}Ta6}FyWbeNd_v4R1Ut$}Q z^A_Br!6m#kXn1 zU<~JV)S)704UbKG?M{#YHA>jQ zFVvV&$?USdd2#12CoeQd6(46tBZ|`I=H9Vkx!KbG1Asl(4wWr8ST><>dOm{&UzAPu zx}DX1WoNnn95+9#<)(OaUpRC_=xp&Sq2e(%Twd@1!4!9x{+3q$EGy3s!4Nh^?ohC1^bmy{MzibZ-?2c8(%9edwckdZ< zY@2%AQmh?ALWg$3XobAHlnt>|-v^O8_G(kklYR6#m+CIXzo-pWJAK^&DqbR+BFjjw zVZ=(y;liW20-TwBtc+vD7|i}$UY5hKTo15RD{&= zCxoPg#6@nDM(Ggdq_8fnmP2LwsBUrRK@n$`lJhk6nx^P(NxWYi|H#I`3@iZ>DH8oD zp)-c`$la){+~`obK9cp%l7}4_W$peFetXwU=JBHWVJGp?(*t-Fec#i6=@_UFwgO0C zO|M243C$mgtDFZAj>n3LA__3WZCcDn)ADD79>TxQ(WklWw2(=!6NnhtYFtFhh-b2V zcbop&0R7uIEbKc+HECnsa$94M3;Fy)kAl58@DGEo9rt}B4hbX%rt#Hs-%|Y7uW{_VUwt;py2IGrW`w#r#@_$o(jsgbnWt3a2D_ zjgEVeHNh)%)xqfhOkSGQ{t=1qSF{_5DRFqmw?*0cPLx-?U32g+$EXu(C~|O6z5|?C zGDMm@qfMl2iY2KX;I{@+1fh@9{GeGsg>~Jz!7I`y2dR-)QfRxL0%44kcAZ_%p;aud z?t{&)r)rfh@&Bg<*l9NkesK;*^JV1lNX4V-%xldTeGxI~2Wd^5lI3!VX)~vXZ02`p z+_;1_(rWm`Al&-gDC>g7>scZMnlE%UG;i-|RN*^){CLYf%sgZFpULSEr%;BH3u1nw zL#j>L{P00{m69jw<;dDN0B;(KHZR`5E6T`kGoF&iP>eqr^i_Vsn)I@6iwg=w#u>+jH zI@0$5h3Z=X!W2ptL(Z4k!=+!=H@|VeFW~FD*Y6|6@BP)Ee>*4aJniw1yc~Gc%tnxHy5;j#YC`Qtbk?8M*+(=GhU2KcjI65WF^M z{{S#0dd`x59b@u!IPHJtrO7U@^N+udPuJG%KPKP9pGCZTd2}d}B}6$l4MW7P9bF~xseLnAT0Cj``= zMbqa!qRlB{ly;)8mG_tZWykE>K#5vVLU-zZHtO|PZSK9qzUK2W^Zhit6$8E>9HDd| zAFQM;1>BeWK=-%Vm?Co)ruJcXcjnQAucvy|q`bwUqbX4qmGk7K%}Mp}BN5uqIIiIS z8`ZGXNC@3dV!HjuS^kq-*7LGD!(+;S>=4nATeK1kOCzhBox)f=2T5TY<0)!h4>AAt zBPb6uD)Z|D1XHgXMP`Wv;Pu|XfjjO+It@|EPik2z?e@!mrr~T^eX}7fw1b=ZDZdzYt@*Pq?Ed~sbp1ZL zg6-h!JKH~WB>I$d2HOP@ zP82@!h(TDRH%Mh*(U+F;(TGrbkWQa%df=5+x56%P&~`4AH`9DyB9W33o(dqGg{4}s zFWBUqRuPsx#z~0UF(Y{Y=BJHsl2|eT|JQ}4z6;dqe|U;H_+Co1L&2Y8kAp@5cX`pw z@vObMl!@>Y?F-1qktvO|Vf~T3YfNG$qMUgTAa3(fd&Ea@vwL=%__H@pKK(oV!7sp% z7_j=(5}Lxiyaj7PJ}+{CrbjDTC_Om^~ah60v1!!cTqrDa&Ak`}jJ| zOvZnag$$l&eK!@Cx9c#?$)WKv=BxOtp}X;mfq*XIZb|{SLUkxrK%0M(URsCUGbhF43J{52Ee{q= z+*w{?4m$2bZZKa7juDf!LTB=;5&n>0uzf5*j`j={z5mo>D7mWP%$(V*7m<3pfL)Qe zz~o*?P&-#PLq`Wo@dKvOCYiR+&RV2WW$kl&UwG~@EATZN?gCZ@$q(S!)Q@BqaGuXv zZDK;f?8VAP?qe}(n{24?<%`1VD2seG8>V~0Xm>>WdR+LyOyioE5*PyO9!_4ryTdWN>b zs=>3ZQM!oA?N+PtAIZ>aT2-y%p=GQjUdBO`o1lxLbl)-!jdKR11DlefkLU zVeu0B-NWijJuK+T_QZMR0_UvF869+>M8)&cP%^8?VsJCJo6xtNF{2`GlT4Kw(`1S7 zFu>ufq{sgE==;gfkEjV&^joPy8JC^WhV?k6nMOfj@?#`;$v&)1H4rTxDWL0rnSV-R z%JNY~0E_II!Hk}8M3cdvziET1r6qF}v(}R8cIi6E{$tvXq_^W9Pw;zhyr2-)utPDx zDw;gcsCZr!4m#)zc`1Oc!9$^aGDdBXhvRKP&+#yxtzHw`i-8#_vMjVejJw#Ps-WSo z*0;tzO?%g0boZ=R z{}_NKDh3DUdwZ_fg!)+MUm~v%AA6kY<0Z2YC}lQ(OkJ2>MBjG^H?nv)ycQWTG84l1 z4M4Na`HI98LG!f0L(Ivkb!n=E{_MMB7Dq75Eg%YiXm_gh+9H^H5}+w^b75U-Acw>6 zab{q&&MPJG6Zn*1dH6X5Bl#FNcRz@I26Hrt3;Sg4Lsw5{7dLeEp^)< z1jZ-wY#sp*f0a5e%k{gg%n{UFW}{Iz_js{KzzKE1IrTkeL$6equ2h6%@tGm@CRR7< zjkdO1o_Ypyw6r`v!2va*?ZW-9N1wyh^mZJcT2z%^Fpa%>rE#c_HbD;PSFZ1e11yMM zc=ZDv!jcrpc z;nXeo(@%etEZE?$LO1kr3}Q(M3U$LGA2fUGMf}Hi#bqy1Y7S&-hlW)6Teen%%$QlIJ^n%}LZCR|;YC@2@;)2{~@#;~#A1b|`-Ht!Hg_Y`R)Ip|phbrrt zNJ$_HRV!3c9a~99KkTvcH;VoRbT?CZtw+U`Wa=E^1-jOqb6it&0=>w}f~wp6`Mr6| zyp_Mp9UZiggi}A7T_nqdpHo~gwvA=n5fuTuk-}s=R0n!8jHbV_-s)=o?-Ar?gjRlM zeLZ-5GGXA35dRC90Oihq8#gZS>WJZUY{z+5SA*UsjjSvH%g_4phR@QW3fR7G2R-R8 zjkK$3!~(ug{JfWay9Y*YTNTsMMRDGUq~SW#(nYEK&d3Y<<4Ve>FOIKzD&<(|SRGOr z0r?NWxDwIFw)h&j|v;cyWFSM%zRw4tlwca!Ej7&8S2248Vt^cb;da3vGG~4IZGxXXL zSnqCA>k*1rg`MMboJvc=dNbGowlucYEjY$YZf*GWTjl5NQ+2Ki2a=$#{Yq@}_8OR; zibi0(=uBvu1yf17vE6Mpk0WbvzKpXA9S0LnSmh@Vrf9*={-UN@_AZFH*YcDFTS+`L zs1g>sJq%Q;%Kf=3Qz}2rlFkEh$EOx$L4?q*;FVb5sNcFx$J%GLj6tnb!I}^M% zJgRCh1a@Yw&dcUb&2olLX|H4Vk-`X0EVmBxW&7b>FA7um)rM3%RiA>U*Y+6-g=$&g zq`^8C9V>kHqMG#OncPOc)kMeRgZt*37E-i~eW6n+%Enf0FjEeu9_vE-nXFf7vS*Lf zWfdP+1gTfDRbKtGsDC0>>RP9V)5sKbgY)Nl?*5vUgW5`6 zE8`ZUJSG@Stxa|MO*6IH+U3%L76`uwD_^(yea_0#$azFK1WVvd?34R;{P0H|{23wR zyx5F5*bD!q_eNI}@bkJQ_xB5;iE3$S-V(-E$9pGx2Kh1(tv_I&*{g}Y)77xW^Mp`B z`!Kb+m2#V${8Z;}K`*xeRP_1qWGzbe^BvmD!nm#X$4|BGR8^;(vRrw~%c2^09hNZv zKFS|!tO=q6wpUrlcKgE5dl%Wxs~4?p)!Tm#SYEbp_f?L0^j)TsBpJx?M<>{|*DB|* z6QuTBfVaYQ6U8)#@Jg9ncwt@v2M&5?bGcU;+|n6`G79Q2Z0CDIEohvoX+^${UwaPz z0+JNM&3xQF)V{ajp*nk0=m`~LHTmw={vhJrM}oBLt@Fm@(m!M_mz_&vh=kU5OCkA4 z`QQF;-gDH?Ykefv1U%2v8R94E{VJr^SY`T>35Qk!1{D*g7RCW{^S6+yx{90 zX|-BfNt@3CW}ETEsj{yw9V+5paTzs3q(Ado*-0x!2oDpWlv5T#4&8_#k|+OUJ~jmu$Lyf18`JmWAcf; zrudiTmB7RWFYs)SDFIg;7ZSyK`_6RbIL?wZRqBV~z_C_ z7HSHCk-= zG}o5*Gn$*fp8NBUwJf}6398bj%u5Z2@SdhhvQvHip@(Ri&>LWZlJhXgX$Su^FSbb! z!g6Fzuhx1-2wW6^gS(J9q16Giq-!J4IvJ|A#roOg^fXi5{V(Z7fvj-);k#oM3&@Ut zRhLbe&&S~?tuDlHwiwvn9_)26oeFAYrYAcwAmOVH3mq51hS-qQs8*= zEE;;qa|_%UK_HsA(`s9b6O+0Xa$P!Txh4Uc2W_n8{v|i`w88cpCxVNM^v-V2Mgr#H z^CH^&#Nd^>wm#hGWLm4UbCezZ@o)xR4>Rjif7y?2>`7=LQi>n!ky&FvzU}KuI||Ty zms*{Zx-Jr%gDUP8I>w|2x=D!K=|{IeP*)#n z+48Y`j@OJoCbzB$#HSO2E-uFA4fj}|n}^uh+Zl4uv^{%64~@Jyoge;Rqb+Pnn{j=d z$E#M4*0y!QEtbfAv#1@^tI{ROu`zQsu`6;l3q(WvrFnGZ3v!iz9%}!)I?JNDoSpNE zadFLLtPpA{q_1_9)>O>6#^mQzdMB4oFu;0s_Wh^zwsyB&XT#~B+%742Uk)D>>U*?h z%waS?F58yCP0( z$v;OFo5DY>VJCbls)Yp*-)IsoYDH1TI}u6$+MpK10hD>!)2r1dRvd4Dfta;hmmZre zK~lE(Kg3kA#@ByX#i{(Mtx}bzwc5AA9mWNFF=qsH-kW1hRX>WQ=1AWf429y|^k*R+ z7tFHOCz{QBVE?v5iAs0(hmuIUt?}qS=2SqAmzi_Pml@6#uiSLv{)i*Gzos{v9^L%K z8@{pKLOC8*-%MBpEBx32r^*Exb+2ks4P?t z8TE}1nb`cK!3+Bz*el*K$7N-oGbi$MYvlP`&wye37@zQTs_QiQg!y&a?p+?Q(&(yirisp)WXyN&k~z|^5N|#tU%cka z@g>Ea;^5Zvn;~Zs8rbvF@nTxw!tr&tcFML9fI8-a({Xt9_iX=-@n{TLUWv-4&`isp zTw8k6qpFj(I)3M>S@w&kM@I)EVm#d3maczRYHEO;qMm2aKXdE1iFf=mkeFG8>ObSG z6&LH;B@gwH=xaw4ekf?_2LWZ0y)L^Q|ExlajAOcGgk#C02;L+E^{We7;YPt7L0$M`9X(W?aVC>j*pAl4R6E-X3U;w6Dt+{=J$z#K0%xc#-8VGU2!9!BHrqE zBM7`sK20}A|NC2A`{i(_?5^~27S0phnDz^|S870{rCsqNmJYQ-UL)|hVpukfLmSDV5xINgNUPui1 zLFk6Wm!}w?bhZb%z%^yOPQ&g2SJeWDXt#hV0u3XGUbq0jlVFFIC?I2}?z5oc8TR0n zP(6Ja6Dn?{B=ll4_kCPeK!ffiTLbi)rp@}$FY7y^doC3Ugb0OWkqOLY+CBZ_I~R`< zcJNg+mzW{FDw0I_BN`y%wT;+YXx<1DS|FHB{+;{%*NDCCeXXSC9M!WlqR8UpWpuB= zn7j}9X8bUM+|O;DwGXtZ>WBF|2(iw64)*lx0 z)&`W5zJxiK&vwHJePv~h*qa~6rj_~sT`qrO8)JObYjV-Y3~qV21{N>1NX(x8de3{V zqc*SdFF5X}%SZW#PbOs)(U-i{y)pt)q*Rnv*KVbEri#`=GIEUm0y&ZPYC&eF&fQ5#Rne@95rrVx%=?$>Vw+sv928e|6Z;$ z@i+nSZ`Mc4qPT6nJ(wZ9UOB_`T}$?wU%ilB-dg`!HpR8c0QeT}!AD4%)!OE<2W)yT z{VydrOe7{I3Y@o@ihxD~t2zd=4*$g`L(J6xF9@A0<47l7AnF8pC`&;5q zQ$Nk5EN(0MvD*nbc;@>xQ&_M8(ur%Whw^3O71PRp7Gu(@8Luf4y9r{+qptnkkTi|!wB>0)GC>UHDAxxb1i`gMFX}EFEC+T zW;Fj{fC;{51C@x=BP+&^_{+#&5q|1RhaO&PD);T3*=fFktzCUHHZfll=Fvyd==o6d zf(twl!sLVPtvoM?UrUW&-73+2pB-n$52%CrJdr{c*4>L-ou$0?`S!zWy?rr&-Z|l= zh;Z(zoKok?<>+wtmw`%OkdA4{{Tz`xAE1}h{jRKPH+H*o<_LM|K-|LzeNx@M;58Sc zoRGOZ8$%*|EAv3$ZsIMkv1^;P*nqn`5G#zt4{z$PYdp<}ke77iK=sKj8RzY%Rrdzm zELt8J$*erx2dOS^6$>uD@EO)!$HcWp_J?_c@j5O#_I!#T{6Am1CaeA4S4yZJ`vH5Z zVTScxv5AsUt1tbcCaMdSvu`<#p;`2}I6WRho@1~_F5!F8s;#_)co)+5kx=FIk5$Y6 z>HnlSbx})!Xl`pA_JyL*xsYR4N`WSMVhc2j0P z?7Q+S`UU|G?5Gu<>EYxvq3Q1LoOv4q1?neg3(~c;TcL8(ukyqC-%Z_oKAZGalaKGF z0QF1d+U`UzFAe+CxZ{5|`(ys6x05=V*2?1w^7&hFuT|rfJ|m)c^)6I45jicLj_tSs1hr9RnEo5;wv&CMYWy(S)Hv^LapRthF|`s$7(p z?fP~vWgZ)OVCsqwhi&nNHGl4LCFa=?-(ZRH=vcxY_#!j?$vq%f$({?F)c>t`TSP%s z46j~6ZEo22`eKgu?=_ySNv+BGxm^ZrgSvb6YBG-O<5JnBR|ayAR##|WZ;`0$6Lng5 z3Z*~6C07vrBd6VIZM`RoyT+yirr*Gvt*aYR#S7H70PR&itvinDME}^?y__{XX)fz1 zM4b0=y-=>`o%>4!kU0#u(K#3S6gPjz@!GHU`;~7RAVA3ha3%M?)OJ8k>lBS`=>i{*OQW{+vl=+kIaPsSk(=ch`^(EA&}HW$n?W%;$~QInVRkBa$w?uZuv6 zw{hG1IJU70prQ3{pZSXK=~F{nD?2=PVeDee+UI=$$|8_?zE2zytM~GG_5oBF>9W>6 zervrAuK3)m%U%>vUc9UF*%YHPbT4bIB5inw)@(`o?~!fS;ZnzLRWX$7v!Pqi$a(y` z4_PQxqZ2UJ3MSsp^8M7&ZF@FqFI|#ZXEFZ(01yC4L_t*9w7u=6I?w*>@de}FG2hn8 zlD}Hp7#=@3He0)j3)_Awo*Iw*lHRJWfo%+ltaW^$u?{`!sWS4#wH4}3?PLFz{ne!% zsYzi%NQ}RBPoHZu?*p_40{R<6%C@^s&tmI!!Rc>nYI`*ws>j}-&dam94Zhs>#9o*K ztWjI5N$-*N97qImekwDPvaaA#ddYst86?^oHq9xcPFWhaST;B4zPA^7Ageu)f0d;} z6B#J>F}|W&ADZ>#Pk(XxAE8Jp?P5V{g~lHC88lnKkPl<^j-J zclA2~vd~Wq>dB1io4YWkUNmoO)Y~(8i5z`3Mpd>a_sMU#cRkcck2}6><{MkrmAKZBb2Q$zwi6SOW@6D0^2>E9lv_e1i_tgtKp8`C>q^M~>PWX_^ z-gcEWPmD!Q-FX?!zlY!U0l59_y>u1ZTK1-->5n}eTpchzQ>%1BB2*U#99zkIHnu%0 zr>>~ByKjW=epXhvhQB1Qz!RswdwN^HW3%n!_FOP>9S%NA8(nSPvY}nb;E~l>#U9(% zp2?N31~78q#rGPk)-Z%;qkV`s+Y{S++ur+#vxm^VIR3!6^emScKMB?f937Ce_r;aJ z-er|P04LAzL(b*hwz&>mniND% zICj9qUJIqKv-ys!{?!y0TJL2Kl4DcZ_Boq-9KLJ&$QScu`bU^tjCE~G5Q>C@AGv~= z<>BZm*j|9ZvX38qRUD|CEO8+(qknqiu*ZhO{NlQOo>#b=s6=YHUi#X#6`DJN>Wd2x zjq1*oPqKQf%*#F8T)1gGfz`pjxtX{#;#mRYU zR&JQow{&$6Zoby`NhU-5(ZTD)leCyoWVaS$|9k)W(Lep{2ZE#8s-q#ex+atdBM76D z_q66hd-eO?d&O}DMl4lW7H*R(-17&B>%NS=)E=m00vQ|&>YM6+|K0cb!yo>f{d_wa z3(*K~noIcESY7Ov26ekp2o&Bd;LZ5oo_lOh;g3aSz|Hp1VyvB(4~%@fNI3N6LvHwL z?s$McC@F}Xuo9uw#nGBC_H2A*>vGxcT`c4^PRyWDjkv;EfQ>A5A{ zKJmOylLGnShd*bIl6==2FDoa` zm?!}w?XL7cd`oocx{>!jbKOp%!8=~+k8~Ru5bLttBzsu$1 z*>fmMpPB7cU=0w5*=u)Wxhgb6`v;k;~3sqc^`y%T{r@t(nBcKs#g+c zyY_oO5X^i2YA{1<^H{lUV{`ha+*(`vfL~7G4c)lK(bvaFQs2Z|zmembE@@xal)cWq zcN$mpF5dR0DYio3UH&yu{fF$>;j`E$cTzuJ!`7Q}@wQIC;tX#qCd@P7^nF`&*SY(w z^Z^HGwt{OLzdlE$yR1TO)n?&UNC+4!uD5s)api)uaYZgEyYaKcOG$G1EFa5J?%+?P zw*ZXI_F90$M?Adp+E!X9TOj^uvwriIxaQiPc-5v=rti_pRbD7v0E!H|V_T#TFQKEf zJ&yI4U-kvw!hmaPqAG4+y(R6BKBrftV_ymLQ@qoj7P#YGcfY(vGLQuH7--+@_4H>e z-+2Zcc~aTs>tP0ByxB8r*(Q2j??VGgKCfXZ!`gc;YFFRdG*)4|kdN0)*D-m-?x|nl zpEA;#4DH-4OZ=?w;cvqLYCoo>CJO~i^p;3gwwrvwH4Zjs8eD^(FMgB$cHlq$@W=e@ zO}$-ro%bZ%Ic$9i2)S!){X!g|%$UvB6bn$C6agWbL(-TH{46TfRG8Rz+&}W?pT6W@ z{`EidIPK6VW-F00@X7_3v z$M&!RQce$La?|M`tabY&@IlA1Ee4P}6ArET2)x#&AbD;YiHDb*`87X6FL2_)!HNQ1 zi;I$Z{4RTxtkGSrN0qZSC|h}YrEu0#zd}+y@jwk+Js)=uws~;v=}@-SU6(PP*X5zA z{D#Ia7%95t(Kkoon4#{}*!}>DSHh`p!=?^@9Vo- zs}iWZagQ&Q&)BK{gqx?b2Y`v&H~p`=(uK=D6c_3P6n%o;~H?8@wO@T*feLwiSx8|l}2U+Je-IP3Zr|7s7+ zzOJ<%(|;&_&HdLB!Kn>AGhZ3=75}iBN?xu>^o`m3rDAe^O8-~kSxa%@>o~x>2tMd{ z;a9|K3?RT*e3FkOqXYZmjZ%Ff_jsjmk@kmz6SEu~8V;`Pufg8FZsh6WWBuy?N+@{4OK-%<~bDs}F{Bob{F3HSo1+XfN{|5?5Z3oN1_ejy*D9 z3*?R_R^HFDHD}Q@?3+6}^3`l9)-08Smh&rH> zsoRV5bnD%Aw5N{iQaAOK*RQ?;5NI74EIDzor;T&@nw3=F!~)5xQKB^OaEW$k z@&dEg?hBwSLa`9i0Uv8Ce_~FM_uQ3LS11j)uQ8gxvIicUr~}g6aa0e-ue74TIg8L5 zj;`_oRCe}!d+*5xYIADq8VlXaN}%@je4x?~TJ^)cR-^wf8UYxg2 z|D~Yq{kmPlk3aW4_`myJ{3m->Z!0t2P+LD?;(Ej+8$?LfV(@dBUMX9ir;+uILqG7u zMDApw{cbas3Hngzr|;yvsWeaR`u`97^S}JNq;FJpsQ9Yi4ROHAT5nPYvd{=EMx@Lt z8(Zpi0yPu%Ky};I03~PP&`qeGbPcKp!wNih41KBGdRDw$EXGB%aV8n@o)}i3vTH2J>7k9^n&=ilK2r-2%4y%cT@Q?;(t(j3tKoZDYXw@9 zN6oXag~|u)X{_}!rbgzugq{BJr_|0j^mI+=AL|J58Jn)RE>E9S-7<5i*eWi;ndsYk zZcVs1{hC~jV+>{WQJiN0lh<(8cN(X)50@+7|M^OL(&fkVeIOHmD=gHY zzfHU}+!k`#%e;*8wS%QpXo^BsUQKIrY^~Ec+x^;8d#0|v_u!bvKr<)IP`zAU3Zie$ z>I#q2TC8EX|HK8p>hoXlZOy+_w}#KKUFUXvwJk1`K5%Ti*20m!UXT7&a_G-;_^A8n zm;L;ZUEUFe<|t%((;gjbyRSvB?uVkSz92dC)ND+-<1g_tkuEesLH55qp^*|`Ab({5 zf6)Ry^j*gTpxpWHeDBf21HY2rPI`u8j~>|WaqfHQ(6RsRRBgAKZGV*+yi(DvFID;0 z<`VYU9ci!KqrxRq(AGM?wo<8Y=06<#?uQ>^;py1kgqQbPpVNN%YwVSl4!sYzW(dkE z)L|PtM(Xp|$4N2|;Jgp0eSM4H(&yFE@c2bO#$zB3px1X^X6S}psjiZya#M)c5osh-Hk9kY^ zdY1kJ8Nq!z5a~-uRvK?&SQqWxPU0J*zOFpF>I-U&p+S55K!rl}1xd?TMekUTTV!g7JMVOQ*XJz>Xnuap3^VA1pr26JJ z!7`wJE9inzMFFWQ<%_V!>ZeBO;s(|Mqu($`3#O)XHL@xGCwtJmf7&V+%dc zIb(mZ5PRAjm9!6yKPEsfl@)9YszLEmI}Tn(XJL|IxpBt()1Q9Mzy15~l0Ho=?6E11 z-81b2KX!yXU(tf!%#AsO2F0^+501yC4L_t)@(0$Ov0j>LzvKX)3K#@NC zD?6L7Z43cqbzRckovt$;{!{DD-!yKsf4?tM-Jo}P?{9g zF1?Am%*Vhzs=Sbpj#XocohyKAT$ypyLp~QEwO={P6DOaCHCOOWooA(o_R)7g)*AsT z8eH=D;@R@}+B0B!lQ8+KFXYoW^=mp(I5Eq>@!#H9+jx~Vcd@GXHN%I`6TkTKp;g-f zO2U(384L&K9{Vm3)=0`1yjzEV>P|>Ub%oL~{=ozU zADAl~k=NE;fB29oexKEE&qxK0Y4=M8PXDT}=ipmLRuZ!Kr};qehyKxmHs#)Es7LPo zOV)ZD@G`RIfsgnPAIIf+DKFUogMh);-RJ5HBb-Z<5Ao^p+2)h#|0)K~`dUpXLV{OMaW7GKM;iC>9&mb$T<>wQ8=y*gh9+l4>&p4*l5O?C2^h00C}UhK9q(Q5(}sIqyPy ztXfm$)%W%EQfG^;vDajEt-1hS&xD6QxHfQT-S0D4f1@jaqqAuSs63~>oYCB+iVvXv zEx-NuKjhzk|8x9hfp^cIT2?q=bTG8nWIkk=!pr3FnLnD>9hB(}olzm{W`lyIa zM(j5XE_G~raGwo6b_5;K#}!1BqhI2;ItvLP|C_wM{gZeJ`Yr3KgY`MQgc6W^CBxu(x?j|`b@|J#eg)o;rEB!A&*N$#a<(@45HD=SEvkAd!4 z`NCRn%9dbXRwc&q08moA?{C<{Q={Hlqtt#xT@=zAW^%AdZj zEYJN?{{hvX{u@)56#{E)u54>iSk8QIh5j=4Y_ALPK6}?)B<^SV)#A#VHwEjB(D;Rh zY5vQ7?pbP`yZfL5q4n!ZTSb@?P5$)VkNL@a`|3Sy zj@5g1;P$=tJcqyt-n+@cTl(sALVf$UeRgoc%=2d@=>O;y$|v(|6_wA#RHSWRhYOVUwac(6Oe_}-kw3YBVC>yE zVxUxPNQSasy0pTPgVL?F00c-_K95b7vtMy^4VS*#HAZ=i5b5^*J$CNl7osVQo)H3p z6A$ATM&YHgMFEQPHh)x$P;R%j`pHP^8YPLgfQWZG&+vU!T;vjKqRkdCZr7E>zO3mZ z=^i{b)fQg+3fjEc3w7I*S5`ugjAg$2di`48> z`%wV2NPvMjDlY&Y^=<15mwJ_*#!4)-u+ugevl#Kpm!E4d9rP7zuUX(NiM;sFKVJFW z?|+!TF9OPv6qT~2#?iz1rm(U}(*DevmMnrk*02C63_zX%hju>|5sgM)>54xF`st^i z^RNH*`+WIgKz8|=H14nl@U0NQVxa5(yK49$En}@?VZh_Ig8V-mZbu;}yQ%VO`Wyx~QfYO4-QqjMt zlELcX^aaR=&kmR`3C7t;fPr+-i9 z2aVA+oqQVE&mCXmvsnl0@gKkYgL|i)q3Y*zNU6N_l-Rlb#gDG?SLnHZeE8B} zqDPR@g?GW!s!iZUFC9mH;lz5iRW`Hs)+HX9DUR=Ic<(_lk zejP~w;ovxA)903C;v31Q_dq(z7ko6770@5?nSjrhj~Wvzy4CQalfEu;`CK!=`1J7u zH5LqUT~YNG{Llo-lCcBgv;>X%;#s+I>fhR+da}fCZ@xY(K{{DkLl=`7B4FYk-^Psb zNxz6JtT*xuz!>sAqj~F-BiiPDZ0mTK#!Ix#saq5vZ_9e}A+Oy7c^Ow5pxs)hzSjPt zo|>Z`=ryZYh@6>6pP~N1yRiIWPA%mNaQN!V5AH>|t1gw2+t=AA z+IFLM&qa4|=xDR@3^@R5Jyfg=aP;;6mCp`p0;3L|bF^F^Aqva7G(RyW|Dr{nlV zyVHBA+QyYwr^sF%+pgi+kJ2ifM>oDhVkGJ&9wctg(gfZl4lk#F^CbO;WOhh=@BPL4 z`p=L4`KO=KvF+owmiyRiMcTQ_@;de_BQ3wa=s4dN%SYF3aN{K&+AT4kzN9_d!C%2e zK%2h#`?ufzhh_+xYXdD%SOlBeW{~KYEMtRL;qC3<4WYJZgVnep+i$a{S?Ta@SJqGB zh4DA8!2&v|W|Qqhg9<}{ypG1g(1ptykIoI(Z|)`iy5^*D45)1n;uhy+l)rS?5?kMB zfBCJ+)N9T0!Fc$cW3yBHLiso@{R}bkUH{#_2|lEEQ>*{-WvAf^>ALK9TvNX_=^A3r zT-xZH8|1h5 z#w7Y4{o#9twhL+>T4P)+XY6$M z10}i*^n+%MJ3=pw)pfL{hOJ%o&Gq*7mK6q~Pj!XT%~M>T%&>p^=b?Ie_mcsvWu-s# z3|&|so{>{mjJ@#)t z^0Vw~4)|L1&I8k@_U>IM@x*;F96LC8pBqHWGcV6z*9J%5gZ%1St8uY!uw=Wog5*8n z_8q=9uQ0-w%cFZlja4}OHc#Pjy?$+9+20SEtI&wgUU$8}|KlG$x8AifXWd=n^8Q_k z_x%+T&+z!{9iSn^OL$9l>+LsbZc#QiO7e*@Y$yZlLb$ zOMDTTxp!4xmH}7SRpz!b<|*&8GruioO`fXFXoZyApe}u9>a&!zmR+}u6ByrRzhW-g zsrT&q&0zwq)W~}s8upsXG^PO(^R!l-)3Nm3pl$nQ?`)#|EweORIj0{Py0)h|iZ|$I z&kdtKIjwK&8@)QaS6Pf>5!-HQD^nA72t&HA`Whq^x#9-2WKh_9^3uIE zq{~yAfVs_?rvX}ObA&{??#rAe$&ydchM1Q_eH<(OkqCY^p!bDP{?(p1)xYFdzxp!Y zfB#c#%hcVzShQv)>z+1;g)M;?+cT{uXPaRuOQ`)3iBSyp5=R9ha6!!=JyZE=1v-8G z?W;w675s+cMfIBCjW08^MQ!_GQ{Acm*$sCYU_NIumjDAVF8r`DuzA0Vl5fPuzRJb6lmJUxK`01yC4L_t&+%HyRVnpm2TeR;Sw<)XZO z*tucr4)G(FbR6YR*Hb86P~6?EbI$Igg31e$GiyKZrQn%r5A8j!PpuLkLht{|0ZIkc zGwXl8o2{n)a`-7$yn z#C68e7$VpAR{QBg;%vwCIfZD;;hSFg=G*V{-H(}ZDt}weh`g)-Lh+K1boq@Bb@?qr z%h7@qL;maqw!yuIDfJ`kTlXw}mVw>+$gz7_``SGN?0mPbxB$!=OLxzJk^}C-ob6$* zOJiQ-XA$AE^8Zvqerx`HK7U&+&+EH;`P=NDb@eTLPF6Yata|kJV_oyY-rMTx1iSX? zDuW#hE<23~UOR7G`u{)SbXk35{rXG45ae*>hkw~Wv@o)%rKOGOi}_nr^^ z$=`Q&6`$BFb5>D6>+);k@%J6Du6IUF5(2x9rELL72W(tgl|f30tZh@$D$cG!sI2~q ztXHmtD0z!>>RX$1SXU8T`WsjH5wy=cXzbth<>DioXZAS{D(;+sVRqum3aTHno38vg z>e)3Wz(5@1-TfXyfwTEEnK<=TsfMH;h`!kOsYKkxNhQfta5qcIC_^)J71H-AkVca5X5JXqxcbJ*mHMpw&cc#F6E zEd=_-nDOC*+uhpH@5m9X`*3qtO1~t!p4#LZr#@y12LY5;D=ekzqF(`yEMvCr0uUhW zeXddYMVjI5L$Gf8Hr};=8r2VW34qH1{tJ&QlU^Yo z`j-%K_cv^Rt(*u)Fc!)SIgd1UPTayHF)tuC9!vZhatcweJcsm=)IO0r)Eiy=v^-{ngiahv)rh?jA6qk$b-!M}ilvbzasHv9a`#+Ee?O_qcl2 zIIFU)eY+l{`+)1O@PPDuPdVu@S&pp6wilHYn!A3h>shAHjq;oY&7!;aIuvH`5x`=QKdpmxo2 zq}R_Fd`48u&%tL*M|9f`C6o(!GW)`&^7qW$i=ZQ_WvR zVrF}NKDm@GJc<4$$*%v3Cpr7?t)Aa}{cTR47iW7Qv@eBMpLKn9DAMZ;Ah_Cur3-i_ss*z8fGP71lpCXcU+YY9)nNP*ss41|y7zdWB|tiWp<6+HWrrV~&zN;? zJ&^q@TE^e+vF1@5k`3AE%^v@e(IM`mAB8vLA7!eV)hX@_;hka}UF(a4vhJqE!RNC|IX7Fmac@h4vt+ z>@a%XhWav4-Ano&C5JsHOZyxoQn|buOTnJwgI2=YqJ2el2z!pIwpvDz3~W7UYYo%S z#JsLX-YFCJY`oQI=e3^`mbKKawY3kizP@9te$;0($EHH{Mdg8@6NZ(_5mX%l$}`Y- zF-PvvT79o;F?!(ESno|5(EX@p*C6FI)tilr+L;nyV#NV?O_-ltqw!WisZimCjOV@^ z%M+yjj+l|Bb^G2e#=4hqhJ5$KkNNd)zR8dNrRpSh#64DLhK5cIzLciJbJx$owJLi< z_5Jrarf@7^7HTj+e-F&srahQ-F0Rv0uOIRkzy2~G>SH5Cm;J-x+K7xij)^VqgdHD9 zoS8v-(=^ts`CNfEVz0jyt4?_6Gh@xQm*xdZ=0X>}jMZ;<#_nz^tyiISz~ysTTj@e=6yurz zE)q7TmK`UK>%4@Y@$LryK z=Hpt=Er@ya$;90LmtxS_*upR?uEj$x1I?pAx)Uf0ARNMb{px|z0@UjU$aNMo=U=Z1 zhK}~PN!M`B+Wk^;994~7_oYPjH*k>3!I;lr&Nx7MkV@bU*FV>|>5bX(vTfs-2i=pe zqM5Y^0>pOC89c0~@*4EsEnZcY5L#=OR-1yNoIc^s><3K$OGDLfxnVt6yBA8#Qy(y& z>|b_1Ti5>?J{JSF$A!kEK0|zTfo=PdICsrJ;QiTX4>;Uc<+tB+{QBy3s~)&Eg$jxb zuw$3594H#NWyLp);&0>9w1v;aZtl;BAEN4ScnBqc=^cC?Yw~Ua!#CCtPZwa$_4Hmk z*MRNwIXUd!!nV0wCQfN!>MLDnUf43&zPH?)qlZ~^-I!Gf^%4Cqegcm*+~oH^B;WZZ zKY7XW9kaa8yI!z24{M(et35%9APLobfA}mp29CErt4of#zZ$Cm=-XM$?9Xw;VKA>? zymLKbK$W#s`7{sh$~LB(m9_dFSrthqbz9bY0~l8xcC0PW4A`=`=JRSwG zyW^BE)UHsvPAtCZ>-y-0U1FSV`zEpCk_eB{u?x$CQ)%$_>mt%LSvrM}xnrB?T6lgbNQ zry`f$Gu2$Dfo>g8gHPbrZ`bYrX0-W-=Ti)}>S21bD_UQ6ckHtL;?thg0SL!YascEn z7(p*R(|j?%VEv0<{W?GX@RN}bf!ym_+ARxTwH4q{;#7esUXEVmkKr{+Bzv>;Vc~CN zBmLsH;6p>MqBzL1pdUVb$p7pA{VO+3t$eiUKSlxSmr;weN7+(`zHsUNz_q#=D$%$4 zC0)?OxRyVB0$S*M#;xN5b+S=uJxOscU1prJK0qpq^-Mlvy0$EZ#XbOPifT|M)BMpB z*X_My9hDdIZos{cimN{)3f6bU+p!cs<~h`I-QDyu%XJJ)h#hm~bq7%gjd{uC>r<#t zaT+VGOWl?oVSGkA7gd9Msg2g@xA3@z$_kYmCVF2Vh&4Inj%Y?^%-`=ayh{wDm-5@D z+Y_vN`5Ppx>5yw*;{bNd_FFiGsE_0HuLQ9`qz~;xvTN)ohO*{qeFNs|Z@bUts`0?# z^$4@>Gwp3{pKmIKUEah_%;q<2JQJ;vo(I=*YEg2aHJQ7mF5}{t-W-g7~>j z$R2Q0c{5rlELgm23xcOqBs*%H{E2yrx09y_l zKg()&@97cd+46j^)He37@bl;D)a)5#KQr5-LSq$57d|yT6ct2&1G8&vnBqd|XYe-9 zx8MGdAHM&|GnjDQzxbY8`(Y83dGysY_rQ*Wymvh(GJ2%}Gn!IPw2_o2^_)%c#Zd;7pRYw3{<9LacVZOyxcH4?PzW5I}l%TK&*PW@WT z5+_|kVVI|jUi$8JwiZyLA+W8?p+p;FNH3uZT7jRFYSpzoz0Mg>x6eO$NP?hh{{&nJLzpr=tavibe+8%AD zd1`w5_w&N3{Sq=zODXN@cU->v-CSYy8~2L(I~L%1IFhRoXI6kZ44`dV&v5re`%Bh1 z?Zs??F|hwbU#8WU1d0OWIF7+_Z2hf^@=Rncq#1}~+gaun9FD|Trc6RQmX`t9%1`-1 zeG9TPx$JZMx5w<*t7l)pzAisMEuXi24jr|LQun(-4rx6k&rqHIK$^d*mzQ7USHJ#^ ze<}FMNZV55nRJEri5g1xsGQLTq4+e8flz5F-bZ!m~7&G2z8e3hlQ`dea&C| z>Nm;pg(ikj4(Pg}?ppg$Sf7AqPqLP!&V{ z{`1n16LV8~7#CXKYXD&h<#)ZUIoW(3LmTOrw{ZGpgs%AcXJ>stUu1!VUz01yC4L_t({zWVmt{Nx7?Z}ZHfKkbj; zz24sSL;USiT-n(A9Dv^2+Daz`Hsl&mT~ePzTL#LXe)wBsbzflnu6bT;KShB}H%6iM zK#@TDyd?Wa6wuyxmRS-q1JLe^00ZN5(NNt>GI{lKEsEro97hhB<6!s%<8;lLvEMa) zu6UP>9|0l61qQ4|`PqhL$CkApr(8x4+NMx_Vfma|fm^oH0XvpR|MdXa^7WLX_JuyH ziwo^t;hBb=<3de7ant^7m3%!4Oig!;N;a&Km%eq~>xA6-Vf)50HY9+M8STmG^SO-D zBB5(MwLu#3?mJ*jOIegvP7(q~;3XiPJvQ}bn;iN^n>+>}zac)?ZbfU_&^k8Uy5jwu zzWpkB10;co+nBTFCmA58X5VmT-8I&(P-Sy#Q8LlIF4Ya(9@{O|L5*^a6}h1gzkq)A z^>=TCZ7nXB<3xKZ)p!pK(cF|IOQ;CX&XKMa)~xtG&s0a_41oL#sfmLI^9b7XTd`II+i z>#{F%NEb@i@|0KK*s^fTWsG;nT@5zhl23E4Dh2dKoY<#}M*O0T0b3=X@#$I=UUTcq zyvfnFhntEYG%&QN&y*fIA0#~9UGK~kN}Dy&}f=ymfnc72ba zg;#T|YmHi3r)Q+H=Dhs7PIQL)nA3do+n2)-rE|EqdoL!o4>H@IxdE{c1@m={KyEoS zUWTt?!___SUyp_$m*;cMF{pX3huBHB)Z@%*y z*IvsvSY3qc8|8?RTSN5%1}yP2!1U$FJ>ci;Yg4!_H(uRKVRK2>06WH7YkE`+So>RD zwXeJYZ#sCRYg2$7@8j68Z7Z+c#{k=}@;eU@prXGO!0s3B;LTKseI79P`z~zDBlxrF zn*v4vs5_(!qM4-&!vxsGb?theq2luGRpI7=hi~HG*wl`7;mi<+r{z zsp@(r_L)-I)}NAvuB{;ZZdUdT@05=-*6@Xg*0Wf?ISLQ??;vVh_#I~N)U_|%!qVOI z0WV*D^-Vtb+q~5#TsAO*kL3_S{S?lscX`dyEXYPGbr{THI z^trPJ$LEs5v3kCsjrMEHR*T4%RZ{ZTKcb5X=4uI zGr{B#$6{9FkXT#E11((wZBykvKFeq0plc-*z<_0487e zX7VuNz?MslzS8O&b7=LLKdFQJReGRx$5FXxX6Y7iZcg7J=3;GD6ah%XwSPm%Fd%2` zu@^?4dRmJ_;+nlozp>w|&{W2nIO6JCcOk~h)0p_$H{LNi*D|$;4bYUQG3#;|%V}C2 zE?b$Nx`8P|pLjmM|KZio4wyHjmaIS%%)vu6DjB+7d@I;IwAJ} z0t^doyL4kL9f6$JhS%V<=fzPDh`3m!ll|ciX`bYpt^hWDxM#rB1Z?{YudD9bjE@)C zHXJhdAvZ=jyD)L;*L}v`!~uBCjvcLBkLZ(Gzgq~~r#!H~6uM8Ru=HP38|gaZ(8P`` zdt_(SaZG_z&-myEObzt`^m>~+-Wv}`fPw1j^QJvrc_033^p)2pA%}js_UX9#f-=~# zfW#RGT!i%Ymr!Z>fvsyiviE0fRL*+5p@)x;&Eu$JfCt{X%=#+?-s#m0|FPZ8*XJ2v z*U;RR``s_g4+7;+YqB8|@2juB^|y+(*id~b-HX!rm963SrLs-!>oZ@vPz~%g0A)Xc z+7)2yOFtXImRAN$y`{UiwFSzK9QJx|Ic&bRK#B{%!yYzW`LiEvd)P5@joMt~pz^@b zfBTo7nZjQ`)AEjkT`z2$+&G^dUE}8zx4am3jP~(kTVQ%$yIcbZFdS@L=C%RSGgnyw z-fYSjfQbPcS9bfCE&xSiH-wkl=EjOX=>j{}lW0izy!@oq=-Y<}CDr+yy3MP!4z&`UGMBzw9;^hFtk56hi7IHa0Gsx@bh_)1O*PPKIpIOOo|OO_(olLo zWP5G0>Jy^g*wH@j$4?)Uzxegn`SDdEYL#Q3YZdSOv%hHdUP^s#U$Hl|lAhJ1ztF6x z?tTC_p_@aws|iI*S>lbV{719?#b11xb-rZeYZt7_pesOnD6l{vO}?~|h&AO%Wl2?A ze)Bg@EF@#>wNj2``E?3oW)_J4)^o?zZk;Y@B}YhOTb%e%Bh;t9YNs|0fYGg4TQ@>y zB_kFuZ)TA(YF8@K+a|`rqJSV?BR&EoDYQ0np6v~mg0z~kEq%rn30^PXWz1!u!r4z~ zHfy;ik#>#Uey@P>{jI}keN%eZrbRTYZ%JU=tz^wV&q5r)+m#r-|D`f{jS|9wP zx9zcZ1)aiSt^#biRRw?ID7O5ejx4wE+`g4)e+aZ@jWB*Vsu@7Ku;dD-3)}rbNpm&U zt8@al%--6kCBy-Y4r3iJU!*U+($kaX)TXvZlR~gcU;1S|W&2`0 z%~!sV(kj|Ve6ZvKTtwmQzeC_}*>q11GxvtH2Y&2NL17sAn%vEskdCQatH>Wh;}uG; z#yHd%JD!EeUmF`BwadB0&C+#}?q|#e>V=^_6YcYHXs7HD#y86^Z7W~<7Xokh_=`nP zjDFgs;{s47WUVyc1Jo~NN@GDr%Rn6MYoU5sUB_y0WrfOtqJi7~))g13G)>XNzf5(7 z`V~sUj#s)iu=&zcoMlv3`^t(7pq-$);zu69rSXuJsQ(Sn{az27>i<*0>4FMz*9xt& zaOYnV&)}kRgmk^CoaY9cTfahW?zO4h)5CI_qw+1-R~V1vAU*rQC~mtmo_8hX3$XQ| zy*VpWJ@c*!2yA`NYvr{oE|eaJpSb`J&As-A;38n#z{Zz&^4|0_zH|Ouyl30e4?E+x z2bJA$$GZ6&Kg&xOZe4NtSO4j)LSh57*teF_-nL$5;uIBQvDUvCLnH`em*~#y8rYWwgmPy8c30O#?ij zax2WZP>bYvIT9LgxyIAyv=;JlFz?ux1Zxc#X0oJjm-t+aR$mZxJ+8rc<(Ufny z`m_hY1S!9yiZgpFw`{mQOtHFqa$GSLjD7XO?h99rjWtQgj1^;EG?4B~6-w3Yb(KEP zUaM)X#Wx%|j{YNL8QqDVqyI3y_<#U|G?4u0FWgYz z0ch<{GRco-{XY_2EL8Ufa9o-q0&h@B;W%nj`Jw)(XaE@8OY1D0Znpc@&8c{x@)D@P z@3}^8PwBTDGJ(wlX`Pi7ps{vccTPoBP0kW}3=NbWdI&G@UIv&;MT)(FEl?^i#}OdM z^yd^G1DU~GpD&s|^0cndUxD8JX{S$5NvCu@3L8s6f-rYrv#2oKTSXLys{%I2y5=8N0=;>v;9FZk3q ze}kiSd@daP_4D%7gT@Am2JSVMfh}(h_nJ%JIw1Jm=w1R9r)cik)!j+_olw60?#KCJ zuvGX889TRb+SaGOTi03( zI|op4VB<2iFRola7kzZ`py4>3Wh)1a{F+7?`lbEV?)rq?jT=P{O)Zx+80*!4U< zAS>NIOZy$SaTLqjFYB$o{Eaj9M?HD0)uda$c4lOa000mGNklI#+J z0M*_08NXbkwgpRjk{@cDtLP=a`t_II>p!`G%0(^$w!V9!W6Thkt4@)worXyc_d~%U zya)^^f468*@1jnPzy0ntzxmDAIllNs_@X{XV({fbFq*ZVF^Z7%R4i{)_cB0okb!g{ zS%|vi^fwXyN+Nbq-UZ}svHN6D;iuBlPl2gX{M<28sg+`%JAaB!@gzg#*EU zuwhzsjB0GU$AxG&>pV>CIS0~yT- zQvjp`F8izAWjv0T=>ZlAwX-5oO+Z4&#w*0$P7eRra+*g~V%^LBH`l3CdvTujMc*I& z%j0+7?|8XJm(f^-SlcpYeG9q!p>NHN;;Im`K{?2`8Tz$XYc*nKlrI4k1$e*+9v5pG z|73}Q={vmPIN;46HodNV#Ww_vt-ZWdpn?nrLXz$e@W=z?dBEmj<7Zu0Sa_EGHoCTj z+op8k=6@G%dkeAZ4egV=;o9#tHb!lbxMje#z9Si5ubwNJOHRqag|+dH8d)!QoEuMk z3xDwX0YT#dX~|C}5ZG`lVe|JHx#jP$=hmCyNwm*NJf|DB3Q<9H&Ar~`St^|Oy>V$X zK~K3GB%fwu6`n-zNPL#Uk=hhIv_ro$dSYO#o+Jru*>Vr_(KzxlJ8_Gb_c8GYCHBAf z@%P{NziL(iIXvqdj(~g;*4z2G_YI>)fFrf{A+B9}kO1juJ+PlkUbQx%{l4X(olt3I z^$9+=1$QTwYS>rfjYh0}jhjZY`^};KR@=JPiFSt)Blzr!`TG1humblm*#Xwj4Wy*& z>%x3i_jy-1{fcyIv(!O-myrtE6LW~w$(Bzp*>^<SJapl;yG)%1y^J7m_n-eg$A`(80_cqvfmrW z%P;JfHahja-FH*%3b5r7gRz29V$7A*nEFImey&lP#`ZGk^!+~f(b(zd`}>Yro6^Og zuEap;_AT)`aVqZK#+|uM%Tr#cyf%$jd3mg}{_TD4{2IL+vr_@`)-$c;6O!&%Guy{F z4&_|(h)G;~wDWv5u19ML(Jlu;FoXtsg0h0_)KYx$?OSC9#j?iK`R0?u(#Z;{#r9cZ zCY4RkU8V7Avp5nz+kE})kNN7GpYp-_wo83U)Srm6NBcEO=>u>X;AHFJAYQahWX9ieL?qMagIitOWX^6e>>;VjMTD)BzT7zWx zNP6&$0feoUOBy?l)+!1xklZ+*3{7S;2OqoG`djMcf$a+nA7dS^A&%1qA#OELJpm8b zrC;{NYR7LGu%P+O`+>7%Jv}4#f{>}Hx@*nX_icN zyY{4BwHbY^+F+#z)yHyf8`)^|=*5c<9v~gC@s8Wm z6a5Hq;W*at+a^PE92?h;yc>tI5r~0pr{MONoC$~vBIm7#XIW`sb#-2}gYNgHWoO>L z#h|^?(xT}FYi8 zu(O`HcFhB~g%a02sw#xq7bHJ3HNK>`&1sHH^s@+dKH!o2_AkDn0dBgue4+Hc#?pn# z3(!73-{Y13{|Td4HLAJgS)>nYr^D!5?FKi${oSeNN1s5Tpnd>wA! z6T6QE+h?Eg($D(xH@wN;Vvf%Hs}=Y8^1}}+-+u46dq0!`*Zo}F_$&QTn)zU`qmBP6 zZA^WV>9NOelKjfE+?*5b&vV@qp6CC>YP4DHz|0ryfY3-_^ze1U4+!(6w8lnxwTB z%D~Rk+|YWLde^0L=}_3dYw{^h^Hi?+$VyjUfE@!U8(`q{{W5}HTn1EbOxJ=kQ;pqQ ztQ|+y%*tz{>w_QSy1<+Ly|&sm_GL1t8BOFw$gJf!R8go$fv$B``^wVp;{PL@O_~89c zH$WJ_>bGUx#rD86>>6arPbT?`U;WBIL7u^d0O^jb zQ`{$yhjSLIym&rARAx8N`y1mHrem685vA8@F71Xk7DDM(TOIRY8c9}T_)VXlxUN^a zbqwp}nA*1OTn(^!ZOmw6BeWUHj9WV>ANx^R^*#_2?Up@R;+GH;4Eeo!VoHNU3cCQoUXqnxqjIC8uk>2E$_%%xu(hjNh< z(^!)=uCzzmA1~vR_TQXm{j^*mfYc%E*}6($-n0)Bzc!U-?C+d1TCL3RtZ+ekHb?k& zIro81Yc7;;97396_*d1J9aO%uM^}qQoYYf+D@LRrP$9|sgpmMS$JUp=p;m>P{{**;!lkHf;bK#|aPz+l0|7E6KgF#d;JG?;sD!s#+q16m z9oWmRYkB6~?e04Y7y)S)3&s-Wu!EIYys9$m6ri%-e6@HEm z1}up7^jvqPo|Oz$|hRM)ivk26{wY`%2$h1#~K#qd^_zq`wK-+suCKlGWD@U*_=8HlF!xnq=mfO|B1 zb@lJmzP}W#ZJ}vun;EC+1#O0%%Q@Ff&yG~pvjBvt<0bf9*hYIzP#q&Wq>mf{1}1># z@a!|R?=53Q{jxrMZndU50zqD}*2}s!KQfO1lqa=6eC8egW;HQWu})InBi%F|h{I_MVGaU(q90 zeO7hGXg%fQbG={gR{Zhde%hmvg>+4E90$R^)m1ilIm{_)l9XKfE@LT}d{C>T*IBm| z#;638Y7b}|hx~CQ2PxF-7`kgheP{6zR6^;>-k_q@d&D&pR2&1RYhB7#*VUcX<`mY@ zUT0CYw{q>0?bkk?qf>6q#wdS!jtWa%L2cq%PUY#)HWst(U)xpHu47_rZSLAG@lw{9 z#cy!hlXZc#c^cLumK#p}Y7h3$b@acmXk^nekV)sIjsjDYG2NfOGquX0FHmiw{>$Hd zogaO9*9!=7xGt}Wyo(U;d$YNh_4}bE&D)M?!viE{0cxwCo5q^`60q`ve|!9k|M=@H zZ=!}Kg(Wo!5#Uu$0?gdo@cQ`EpU+ zkV1W}!r0YsV61Yj=M?*iuMzaCYUxxk^yIAU4csgbqYIy2)=qQd*McW|H>!$k89tO^ zz}nZc>yJ507l0z;w8kOla*6F%>i&s74ydmnc527Kad_(=rE8QR51U^exIQq(CSB8+ z4p46ifH_IDYt1)+GS_u9uAo6ce`QX4`4s1pHwWmaF<{)Dh4T7kkJ+nDURNeAaPi3- zwF3H@uyv)wJ%KliiXJ+dP4C)d9}}2Z@D^_^X>V9o)ZIPYcC8c0LDz8P9-z-!X0zgHhje=9U1+6XbJN({nQM~XU6k~Qr)6z zWiRKVUyAy1jhFNZ#bh=n*Tb)SXTktKB!IxXhy%qNkL1Gq`KNRxX& zX{^WR+>l;Ic3WiID+6^&IM}ju9ZOom33z>;&Wb~E000mGNkl+QEdrgaIQv3G4Z0{{a+G?XCpiTXSGumnsp_{yV z(Gzi@^$qw-dlaJq0 z&-o^~a{8fcttQGe9|#DFNQNH0HEEEyajIK6j!KrQCGVO)$$zRl=e}mucJqfh3Qc|N zAjZNNu2LRKN4_yLx;W+mz~QbpadqZKg%Vc~+dFVd6ej-5%ha&0+KQJ7y^~Xa;qC** z9&^g)YXsDs#;aXn*V47MW|fb*>``-J>) zXJqTMX^&6}3TM{8PzGw7l<&O`Obnpv0Z(Jvt1{4->z$2llwT7A>URzgrRx=W2IAGYpsuN`36tScNTbuj+e4rKRD`_n8MCYp-v- z#{u0?-g|sWC(TgtH{X1lpME-nKZk=g!GGCOZ!jJs7@1R{7{qgV{FqM}ILnFN>ywQoYz2W6Z!D|i( zkfBqY9G-iG6{S7v2cdBbAu~>|tM$l>oC*?<*ADLona(K5q1>4b8e5dvpg3R3|3oP*KO2r``xundF}I=9LF#6&9^_~o9|!acmKL*pBN%7fw^w~ z(g#NpLEJdUa+6MX@HFw+O(WNaB*zP>|L9Ek&9^_L|Fr^4TIVF`#k(Pu6%-g? zX?*H0Qt%S=sjQIg7APU8(`Zj+D;|(*Ss=Z(D#}6o?0SKqZ$VLzF8&zay8<_xUxfA zATP&}<1nBpit7`H>^@!Uy00RoF}1c{OVzfJYqUS*ISzdr;ZleI^LX~fwTS~7%WB#S z`FmnAI~v&f%As_7-1VJ`&X`6x#_rIk0JT%?1V(3u!CeP1K5JzLUV%%0_fMg-b)sQ$ zJeSKa2kY#AsomtXeQkGwYc(De_s75 z4R3LPz=qmXUudwKzws>xs-APuvtK!ESrxS}uDtrv@TP}dW9@2FsLeBermK4f!ZZ7~ zPPfiG$z50Zn=XEXYTQqIU+QCDcg4NldkO@o*}xNd@o&024s2Qb+MKX?*toLEVgAw+ z$jj~jEPJLknf-(vr#x&LHm=N-ZSzSx-x%M?{uTSdYB@-hb z4PYdPxX_I|3*oy6$*DhcF^1J+ZzGU`O z*)EavXL+WohsH7MDAj0(kvd7`Qg;!O_v9vu^(neS#E(Mh8Gs|j{fs^)UO-Rb+wXtO z*Wdh<*WORr3C8~l)Y{75P;pY<#EOr=29ISbDz8L30n!FH$d|wQK0o@U{qWX`a zl&;-i!yfu&##zoLzXV8cD(jpwm--u2ri)#(37MNn^-MtZhBg5hd5jE)$hcYhoXQ(f zS&-gy;>s4E+Qmmw#0{fYmcKFZw-2q1Zg3y68d zUB(0tGEt_P4`xEE_p05j`Aq+repUi%g_yIs*IFZ6epoxlcH30Gq3e$8zwMTN-muJF z8!%4}9j#;4ZbQs*1T}&-nQVOEjdRBWg35vm^}ca=_V`eK7_-Y-^36}zt#y4{FAzZQJz4r1yZ79doaz-ChxS!} zm)A6@*DB)&hV}Yg^7?JQSU={Mzn87c^Ee-j;U9E~T??*_z#CLvy%nijqbq;QVcVWv zn{?%c+7zHMR}Py9+xC{v)j^_jor#kaf|1qIP3 zv-(^3Oy9EKhL_5M=x65XdhG1A8L)fRb=2WGA8cLa1>oKKMiym4=>lMU53h6eP$ioe zKgaIg4BrQQK|SC#ft?o^8aB?1>V_EI;eEb(!zcp0n%Fbj*ic@P6E+R?U*lVwX!{;C z{w;HG*N)tybpsW)6kIK`#znPmVydH$-BqP=TzHRtX8>K zZ9q@oho>NwKFjVpmV3Uue>HY4GbFf|xt0#iupth>bEL4j1la&WpNXVLpa7MTdfvG* z(XG|z^zqR%K|`lW`>-54S?58|QF8QMA&u*KF}B4{pEQ{X4DS8&{9J{~&!lMR=xUy1 zL~$V1xCaS%Nd~v>a)+{IU5%T27-GGi)==Wi@j`g92iAV}nN0K4_)Mlx_Qu+m04j5s zqu^h9R^m296b|2svsUfn(6noc``f>4fO2CT<~v^0J3*rhH+~^TE55&so%&4t#<51t zQ?JUZJKdAhzwGqv#Clz>`lDvkuWd7|mzCuj+cOz6xkj(0W9+3f9AVZm8C2d zquB-3Ku#O5u5+kzCXl7isk~<@jahqRP*-&|Bu8@PuiO(B&_HSD#8BTDR`E{PwVtj! z#!iT3-t~|zx?tW zKdXPxKUw-|VH~f6JLO3w)3J@>p0O=9~>L-U)Ef*+Var2ZchT5-3 z4YwXDFZVILx2+j8&uzE;-eT{(r<+k(t(qIQUHQV@gVIpla!JL7N;7;p=r!5>&kU;? zd|!ZVFJ34uh*|?|2Hd+AbIGeK5ZB`k0PMcFKTDg#ev4)T58Ok0?W&$5_OgNp1`n}} zG}pn}{a6)d$0&)lz{QJ?!-&If%i26@v*yyL4}{8L#}>)1z|C{f&6zZ&2Ej}BL$uc? zp^NpsrdZb7yH=5J9fx*#4A{EXuwu~6 zz4ouiHD}>>dBe`xGjiK2`o!(leWFlMU(u`?c7I^U1*&=gFl+oc9zMW8U4)?%A2<0| z|J6Uw|MVaJhx}K6{*UqtzRUT;*WvVw!Tb-YmN`#h1&t4HbWwm%TEWZ9epa*qAjh%! z=lr03E|5O-1J{u#6_y|cq(gRco<7gY1Az^9+~Pv@1=Z$0gmON4e1B}}&Cj$G=Wr3O zY}AeM4(1uQv}+8XV{6PFm)e$TzGu9awiRfP7ExKyRjg7Sx^E3kO)pcJ)fo)g+<+@gD)*jyEhqR)x zg)PT(<>4{rey?ml8=?fv;j%cW+d%Ubk}U&r%=tM28(xkhGaB1CLthuor*_q24JCyAN_R?|R_LPEF-n zN*TT-47D$2kXYth;!~)Nw0U<6w2&UfTxuhj2QhcH000mGNkl#y>|_3shHLHq%!_Y(-b!O;e`cuN|ErR*)yDCv?4FZto8*Zjq=ev?-})cbKO zG4UE3$+62GR_6J#@e)e#14qA&#y#(08mK(@lYv~Lb?lJW14{X!pnJ2ltX`yaPhg1S zutt+kY&%*UR{<{1K913KnHV8{UJ`bm({Hq^p&HLRx2c_QQ|Gqk1&E_;*E5Wl$;Z~oj=r+i0|d|s zkH$;lVwX83oV}6f&pczZX5ktC*hf2(Waq{kSEJFb)y3Gi+E2}loZ#y8Z@yDbv(tQg z4-&vN8L#J{zQS=F%GGJxn#(6ga`(}Q^BV&{r1pdASv;~+tM#t;hmtq|W14G4Nu|fw zwHDPWK8@d8H*`$}Ak@el7LnKo%Y5MZz})^_@|D9ik-bJchF}Bf8z&;Kh2-~(J%9bhPXb9%YbgpD>BX+ zpc`4i1*d1=A_vv}h6+k=obkVTFqw**FMfu`Ew9N;VEk`+aiPlF?#7kfP+6h;a&340 zw=Wo1rLDF5-2r>#PG%sJQ}w$EyY|D*mb&5D2rAtYc%!#uUw2M(Y<8}nw;YwV5b#WT zFqW{T`wF;a*8h>bT0q}sGne}M77k;naNc`M%^!SiDkv`8^xZqN*`*!#*1^uzGgu#Z zi@C`a*fy|r^@UGm^{=kDQ2GXV^Sxzn_};@eNvV1iN*9Kp>ir;_ueIc_@Dh9zZCqV z{D*)4uZ4e`fBc{Set7Mdg75OeYhHX#_*hA|Jra8EGe7Svck{w{k1y{PPs`MJ_ zhsl`vjj*xmuYpxa)i=Ak<*BG8korQoWNf9Od)+-k5!w_y*Kw!=B$Bpa=RM@rFC!~F zeNQauf^7N>wLER!CgAf<-k#P@Dz$NygG*Po0c&XdI9!9V4Z3NsrEN);u>d72%k{>x z8ZTM1jx{|yb54DyHcNVAof3OqSO!DiiD9p%7UM485h=ek)pl9O4fQ|Emw19(Uu;6d zlm3)m)^p#h1Q zQ)Y(t&ASvX^Q;T&5MCO!F2`iiRTpEVnOe(h3@#)AXQ3p?*jPuFxlZ{?$OLk4*7RL} zHNfS&@oF9Vsq&+SpN%{?$h^-V&4iKEXv4&-%-Zc;)s0s$xju)e`aE!w zbbxYa26|~ogBY{ip&pggSTP3OpLPywv0OJ|9$ z$I#PSSLjD|6?0I}Wtv(D&Q1juQFPjgkb!EDOz9zJv!%(-oL zeBF%^VJiU-#+eRqugVu%i@)i2#{&#B&Xgiw`{pSw96s!|3I{oA6l=;FzeEiysuZ5- zX!s~^%s8I$!+)vJZ|g8_kOLmJ%~N||o=j8!o-*|*F4P_<>9Tr$*I;1k&PQWquemYmTQzL| z%F6$3!p`*DGqjg?EjO-5>jkC{r7J7c=H^QmZn+J2zF%`~Z=2c`ZoazmK+yxLFTj?U zekdjC2YY|vJytz6-?+A=Z(JI9*px4PoTIY84#18LymN1SVDk1{6k1c|H@+Pzd#20Z z@GQ64H!EqxZssLK}&loACOr_x`IPKV*5I8&-Sb(E%7T(wL+4Qa!xIlGLX6vsJ5v)~}&+{NzDc6SRezPc5`RFBzm+Pp!F#HwQ6pws+t?kr~SG%#d-^Dk$;_=yf zx$SbRAGq<#)DA49jQHrYU%GMwUD27n1#;`*2yFS-CP81QEK}q|t}G!P^@mNbYtLKD za?OBN)XdZtuB`SItjo4^?F(8=ebBy_tM(0+{-?0?t#l2&0y_usM;ettoC0z!fA>z8 zsinTY%|@5>zLHeA{Nhv4NC8592PsI&8V|A6S(U~k5D_&_olQhEe9hYlpc~PU0 z-se?fX6qWl_(#D#IF4<*u5~kf0u?AALdX5 z7Nf6$X2Rw{r4m42iB8wmyd`_D9wmf3W^4xX(XQycnp}Np*OX;FaEP}N5T{W5DI}!B zk4Rx{pYqK=P-g{(^${ZBT66h8ea$tpR=d|W^|Z)t+M!%r(`Eg+#%Zxlx4bwQXXq^d}Vcg>S_ekv;*Q_0TFgic%ovmD3tYyV|(mJb6p!CvW$*7f|b<4J% z(-(_}Vq(ToUA$om)i2jcW2=}4Y{L)VxMZ($g2f<-_2e4$Kl^PqsM6+=gX?oKRa0497QksoYrQT6ws+S)>-vhR&Kw26Uv@eU{0xw9RbSah}d)1HpE(K znewCb0`7?S4rnLe8VB9+WiV#EDbLw+102nby;&JAb&2O_3e5CkJ<*uMFaa$8%popc zIAZO_17@9(U+xc3b*wJ6FISwnqQ-L#xEC)+@{*r~@A6;%(?81p^nd+#`Sbtc5Ayea z`9)q_>=)V`{&s5q$Ae_oaK(P?ZOnScx*7fMZP&PlS3MXgnZte*hRKrO)GY&)9pjU0 z0K?xl#js_qgTKaX#Aj%T)>~XCUHF&=EO%E{eWAU8MoUUpc0+lfVO-LuxV;4)x*FcT#r3ZY zD0%?x(eWm0oZ7>#uXF)6U&m)2c;p0BpVlt2$9OIa%lmh&RpA3Z<{yd&aYz+Je}&l! z3Uz^9b8{WRvk_~PQr>5_Km4owxBuo}kNRa7wqXvkrP?c+9bC7>6+t>fgM@O08qZGtu}073c7JWYdxlyRMOuQ?c?v zpIn-w@5bf<0^|_t&~+@&M`Kxah{HNt>seg3Qr~ZGdroc3=1^gb+G!?JL7@=}ie}n} z!MzX=TxRn%fBmbup}Zz}IgV{xM&-!!lJ3EJb(burvSnW{lP)hu5St(ys`pp>-Z%Pa zt5VJCX~^C$C3O+%iu2VvRrk z^qQ~z%>LT_bZ;@YQF9N_r%M!KR}&JkA1B&a>1%2iU~{TUu65?iufE9#H;FI42>!H~ zQ+)lUX*K|`DyNG(^=Xh1$(JsGHWFY#;>XkmF5Mv(_U0sQyiwBu>Lf0tE(6bc*fwz( z)<#*a#1a(EgxcH?W0a2LO#C1e)|1TWtKcQKT^_@uI5}$O2&_$9Ibi)nNnY&RasHS;{i9#zfBZlH zoBWeM`+NEQFOrud`NBT;146$HH;ytjcJ3z)dT_`$|yVEc64Hq{NIqR-n;{qdxjcWj#zVlc1OqbW9XaE>|U*L@g9`UOO zil&AkKDt2bUP{;aNsR5CA8!3#Th~#WzexZl_vd2Ybu{0tzj0;o-naJE169YsP6pzD zO#@Mw8Qn7hNcSk$05sX_2S(bfcWhqdej)P<|LXTk@9{tR<6q{#`#=17{`LR%pXC?F zPyTM?r@W{?=DxqrxdQz

(0#X&&Dg*3jAul_u5i{H0;jEAEBR+4Z_%lD;+dmk2km zyT-Z&%2Zo;pNsgTzHXD7+9YrhF`scn*WCVPYJZO7ZS&^i(iO%yuHRU2>*}vczgx7f z_ZKfmI+nT{6H25N*Nc+Kmo8)mlrEH=OeH=ARm}|q7(I}q z&wq7r0(T!tO*2CWF`!<;X_utSxW2l4000mGNklbg;7|V8O zli3?p(zV(5QuT7_R)6^LnlFFzRX)6au$KBG-Vl;|J&hOF-dIs_^mAX8+T;ZkDIP4% zreFQ`{+qA9&V1W&Czge|jznCCS3e=F`HiAY!}tPUG*1XH_FdO9AH4B>AT1pVHA0_dLz3E@iE+=h^KKg} zut|rS7)P$vXIv_alIE}%&=~OnXB2(hwP>83labf_@SA3=H)E5rF@)=tb{-*{X+38^ zUODtInNNDAU*{V1uy=>+h%wjF`?6c|C^^DaylJ>>l*J}27kF3R|H%xHuJN#MW8#ItmCfBASqN{+z;Z|v(~zLZ>_HJOb%Q}gwocW!}Q8VZwUF- z0>!#bouK~yGGLh28gow$zYP4nU#|T3|LwoZfAMF3H^1ixg%=Vl&v7J&zC_}N1FJGG z)^N$7diiDWB&UgitcwRmrfTplFJAy2wx840rqH;>wJDS?fW?$}g6eO$#X#Ua+`8Kq z1@GX=URB=dDiFrE_=4yo`CDgwK5Nhx7B1y&2hAKq^9~L-sW!{~?AZa*0lTNL`Q={R z0MEL&WXl*!J0Oi)$S31e_a=lLzmnS?lo_YzwsPQI&G4SD&F27kh~cJt)(+!sxD5d7 zs%+cA#`#+s?Nb4;7T#rPAF8VmcCV8qdp>NJz3zS~oC({mx2|_r20w*e?PnpQoqN!y z*4zDLyd`*hdROY`O@7EUN1q|Z>3=Xln_nE!=A1A5fB1KQFaO8?=3nHW{=+|%|1ff& zDAu_I?Tq8h3y1HHWvzP+NOga!J6gMf)~tBu^1aZU%bEdWF>+vN(S`TAyO!lICxV?4 zFM}08!FcXVSy1MCPm>htn>t#3^JT`a_2!RxR~+-40fNtFlr0xEo>9F1`d4XypvJt&+bTRMR9iL>mPVtcMAK(aEjrEFB3Zo{n3~feUDUl<{^mONSxfUFtP3J0Gfrj3nVLDmi!TQiV7+a8 zbEa5>#<{Zk)8i0DP^gOwNMkZL)8rvn`btip4 zoW?qk(@&I=m1N%oE??r++!AQc+$!zs2jS4XxvniTy}& z8t*rLA^7p9pDH#^#7lPbscf@{p6n?`fZ~(#OVwF)xtyu zUt@FT3@~&rrEV73jjN(yz%HV&*>(9+HrlcT)~tz(h2yZzAeCC%H?cgB9&{iF zZ#Hpo@qkM-q>&DQ~~_&=v=_ zUmSo}r!Nn$GvDmVk?I?V0J#Tj8mco%HecVvH2{GP^#O_oh(E)VdoA@V0Ndt)cdx5U ztGVPg+On<3nDPF)Wz~NS)fFngG3Y6jF9201p3@@<%ijp*hy2Tb@z3%v{`sHGmx2Dv z!!Me>)S!DY525xTGtS=hQpcfz2L{MtPs$gd{E^xLb1q=Z;0?zCCK7kvzVIf4H~-oI z0ZKjqm|SQ5%{iR@VbpV!0Z<XEVSkHWofFgbP1a8~r2gdF%d%1m!KZeG*Wl7`i z+Ty5O^w|lu{jBPD3V$vx5a4J1;l1u7R^JE=v`@Lloe#DS7!AB(zI^rWW50LZ?eM}fT|UwSj!|aoOC_)k`io%0Cn;ZuV+C$n_L`sbhsM7Q2Cca&o)}Y-5@2{BJ?kK! zLs`E(k&ed4bpmfTTcur;k?v9N0gz6VGms8t>+0bON)Ew2xnxk8BIhbx#VzrhM#cEv zlCi8XbuVnjYfTi;vm@JC(O~5_Zv30}h;<3FeaE_6h6jQY=(RG1O7Ju6m%sTYKm7C| zzQ*HSpjC32)i5*aCbTaKbCf7Vp(4P{59$0U>VG6k7H%CE{S6$LcBsr3k@ma3x+)vSwS%F^UyzOeM-;!_4uB$e< zNA;_Jb>XKl`|xev1)ej)hdKlnxd?SK8}`K7-$?C*bG zbUM<^N&8ZOBY?1SNEfg-JsTbsJ(6A1kaL0Blltcxz(u{G`rYs*jk&fhykYp1j-xpW zl8*^*wh!TNCG50oYAv@}=|cIXF81sVD$T5WttE5(3@Cn@z@sPIFV{F-vvE96m%v@P zDf39G^?KP!y`Ojf%smC3C-?c;1~A8lyI;U%vi*Ts6Ks6f2#jyC?dk*+eFE@#`E7W| zEWV+-($Bbbvg?SWXJ0h4^le`OY&&;x`qo|*qP()&d=8d-T6oqy$9^=X8}d z7PKGURoW~=Js`IpVX$ljT%RB>)rCx=kGc9VgfuM?qi=vuw}6pT)>7e0$u45lpQ{s_0HkC zj^ma!=b4VKud$YS`Y6?6-n*sOS^)+U5@E;4#QWj}al#|^ixvV$?g8YOdJVjwRsFFB&UA%S#XnttAW>A*|jh($^#U|*+JMXf6i)EBwofHv-fIci~oCGM&m7l3!*LhCIlOF2QZ}M$Z zKGy(-x@EP5wcM*mfmPFRr1@l{(LJ)+DKKuZ??7 z&0e;^>zeIH8{{&$G1FnJo5os8KSSf(eEcxpKewIM4y|=v`Hv(>w?3(dZr8Hnk41Pj z+!T|J)B0}=gu}hiE@`}^`&M=tJ3{LKj3E#oUcU&ugz29+_;Uov9>wI|qgA>4dh>Cd zu0{0lX^ypwzgEScK=l?d_VhkFf6PDo$A6MP{o~*BgFxp0HP8?GbsXCgVQM(ceY$4i zXndh`?Fvc*J9q60x4gQW{uozRsJw9dm9G4T%5VC{wJB6re9QkT7?`^2Bl(~=|6W(w z#{h3OAL~BH-*w*mc=NS=ragTXxm_z=-!RwZot=A9{SDOt;{%L;WtZzaRC%Gkx8mk2 zD^y-tarv7r|1n*Ca&VAok&plJ31-slQ}Pvk&VvrZuW8Nqc~-oGEqF4fN> zAh+_SyVe`JzS6f%`J4V2*X|h_@3w!I{~Xao(Xq`QvNkuF}UmhS+cwq>&vJVR?zq#R1y}HZ+}OSkv#@hY5)vQqqzlf;7@0rKo_kbPl8$-7p#f zQBr|X5|Yy0VuRwInBQc;R-I5zk@w zEMfL%io)&!TYvq^3U#kZ@2a-voZOE((>{-s|C~e8ljd`a-_o^=yZGUtjIz`O&dc4XYzCM4mQqrZXZDihI9C#II z_JUGzgOT*g{2YYG0Y$_zl!rNuUvFBoG91iXE93>)9e>Rtn!NB1+_jvl{9sU({=Zp( z56b7EolPE_^|iqCb{cyJR;bRcv~SO3E6wrTptWLc^Q6+)XzuEsHR7NClM1>TO+?+7 zv_ZBTT7+xDF0RB&V)%#Bz8iHEeuv}RAmOU1V;Vnf~jR!MKM(290x!-837gck0*dY|^BA&LO%5&fh z-#0T@CTqn|pPysyCG?uIe?eY<&Oh3vV$pyGKP4weD0QKh&vaIjicF1yTdENY-)Z`0 zyPWQqjDuMB{;L-HOtgou5Jb~I%Oh-P!^tVOJ(*#o2(Dt@0V3nnnzf?#Bjp3rhtJLIk42NJq^SV`S)WhJ zzzknq|EyU>#5OX?gj~7g5KY&5TuFUVF>Hn{ki0@s3&*Dev;U0hKwe?w8#2UaPqafL z&*|#Me76qKv>&E3-{q=5D?uJjy0wlqR@nCjE>j$wdyGcu1_#9ooef}se}y`w&Y>v! z&>Z^7RO7_Xz7cU8;DWt0dkpf}3geN^6*W8SA2nIVS|60(##9!RhD%E@(#Ti~veP_R zDrx!9dnJI8Zt-a>zqjtJ%OyBo@ZQ+tC#QuyJ96$N7|bx&uu6xSSppG^Ru{sOv*VfN z9C281Zp>`XyY_#M$bL=CnT@HjRd)5`<5h#z8_AT!&al0Kuhf9pAm%Vf!?wLff$`oP z;IY+_vLIQU+1$If;u+fW*MxbGe^U4xfggP!lHIO6_?x0V7u4t*~iV^+T@Q z4;FyY$2%Bs$*sf~F8&RkF0%s7Vg3 zkB7=X{w37Telk$(*zveT&HEUz&EY(fh~u}{Jd%N5d_u$#9+ZYuvOMV3IDsG(nrE{J zIdhquKK~hQeQ)f7zvavax?AOjE<>U!-~AFt1!?xo(&r10C6QK)0Q{tX5N}Rpi{NtH z$O0m4-cv{k6xZF-QAKnHFy=vnE;wJrBO1Ms9gJQH+3WTlMFR)7W8okCCkmx^CC_!$ z1mZs55!06_4k4+k{95mK+&Y&iXs_e4XU$}Gvt%t+FF^|OK{t7D#-*wHK*lX^Hp2nW z;CLM)Fk)VPd02UA3R59xDHF$eYg097J&Qvxplroiuc@Q@#_{uVp?dHHg7RBzvt`^5 zhpAP@Pcj>A!fA_&&!L1M7~Nyw%*EzU;qL{&7x(;6ONtGzxBDsXpFd==o&SX$s6j;k zym|gym@8^Ivi0hmVXCm4SPanEFLlM zghdJ#_^{OHak!qni~o_zROTiPT)VQUVh)gra@{XHrwj+PRBPU&Lu~P80bJTq)5f8go!SOkzP$Zso zjV}^sE^ojGib^4x#C^n#`T|e+;8(FJOuS0NR}wI^=9yyelDn!qjBoQVdylFTClWlQ z+k&C;q?ugW=tF zOb_wyQVEy5KmRVZaNdpHG(YxkVLMb?ao2R&yX2C`F#x{&3wdo0)swlk@8kqPRadQPgo27_T=G|B1GZgRO_L>pFUzSjNoH~ax>(3WY+wt z#uP<6}?D0-M9 z^tvRJSytyPW5R@_Y`68(9gcN{$mjKZBD^fOO8koK;OnQ&u$<(l(37b1UM8-?1Z6IR zTzmW6#Pe1{=iO_9J_9kj)b6yRfU86wz5i$+k>4zb!EymN=n5#A(ABo|zq{$G+rJoR zy@H6h^TA&k8tAd#uB8+WPWW)=9l?s4)NxFCjlKB?FIwPvdJV>Ei`R0h(IswMTRks8 zg8S9AE-cu};fZP9ojMY5aXH-A^r<|opjM>Tse)THNpz#i0~B|+^1finN=4`}{Mr4o zO<+x9{7UDvCO8b3oRL|`sqnhIuA#O+n4oaQCF+yTrD#Z>AJ3@i*F8rjgO)#NXMMnY zZa(;IVx7>-Joi7E#Wj7go6CEnw*;wa7PI>Q@2C08gsBi!k?~Fz(`uNyp26JtJjg}d zQw&WGG=AE%?Sen}Rd`D+$!O>; zSq+&pv%c2ur2Dm9A5O4T&UzeNr*R%CI`wi0K=-Pd@Jj-VGVZ6aml%kw^( zXB_0NB6Q0>k<-p&LqSXW!yAYgg1lv^MgV8nCI0RAfHx4z{%1#qRHwY$zB#QImN`nX zxRahX<`=}5j`8IqILzUE9HBlE5B*&MCmM#5+F}!}1P_)?I)6hI#4%9hF+peXrW* zCoR*rOHtXY(!rMCw~8gq|6fYbRG_nwu{r;j3kcguthu{~_CZG%JmZ-!bG#iZxB zq6GsO+kr7A2A=-Xo($-u;{ZYKY?QiTjUA>)0-Io(EhbMlV?)m{Hj%Ho@33|M!uKx? zi$zo3k%pf~>{p8&U66)y?%8iibhr-1KOko0J=~!XPf=N}EWwkc>ol*8}LHT=(+CGdW8L<3vzAknErQGP@&?ZKY z8zb$o4SO@0t~~zdS)e5Lfu4Be)@sX?a0ySsRm1EG&rxBR4FcV0#1_;_+iVX73Th8)9KmVbX+p?}{#X`^ z#fnSgNHd^x!yi`i9r*xswybhG>T1#ustvl2T`U4rEdoaV$;RZhflr5|n9PzXxhaM%McdDtmF zO26IOV{jCb>)-cA)Vq)_7D?QG*>1RBG?=?9|91#i(;u$C%&LZJJp9I!aacYgtb+v{ z|F`wjg_RaZl_X=rM&t5lsO!ynd9|*-Z3$Cu!qW5zCsU9ry;HsO-Ir-Pe=#dZ4n9P3 z(rOTg!~U0-i-i>qN1nZ^!vYRcoinPhGomH5@R-y%*`H*-B!4zr z3zQC8Obx;H+Ybp%hl~Fs77_ZX^mc`+(2k}5&0zTToFJ(jICWjiF3EmLD(|Q+lh1-p z8&aL9tTvm~+|(u&&mBxGB6_r%8TK6@Z5qeyoUyI`tcIOO9IQw`> zqSXUg;lq015LX%rk(kFO+_5lM^L_T>&cmYe&N-~~TTeAYLfaJH@kSHo!hU?`G3{nE z`D+LKuD17eJK@}Bfc9OwC1q!+(EHyE$kL&Z51EgtAihM`DEu%>I!qF(j5qjc@NkV=K$or zj2)~B;b7@M-=c24rrjC*MKahn=We=K>=pXayXVN3tDW3~^E{W>T-+{grpyN~yPB&( z3qP-AoMu5p-`b-oW(E3^wzpT3osKQQ-_LWy_tuRbqPH#hj>Z4>#S=VQRg!0HHt#L^ zu0S|19Ij@|5~3ocn>%IirT^vIuJkzaIQRa5ZD;5EZKs{1?oQk4Xdi^HPJVhCuhX#+4F^L(m!jV$cK#%A`$N zc-zODZC(%3Yx7L~UBqUUUMTqbMCrE%vm_KwD?585rPh}S@|G?PNJEsrg|Bt*f#&Yq z88(SAJaP$D12?1)Atlhw+_rjKh+@Z^=Yz$6gBH49!QcKKQIi@WP;D?SrsKCr=!(AW zp*T==N%ZEAikj@notRt08S5(*Tusa*mj?6M9o)K2>DLeU-h^=7-)14OJPY1%H^K;!-~UU5qIS^V)xh*{aO&({FT&M|64tHzFF%zY&Ma?5v~Ex2WKz%N7+V) zFKN5%^jB0i`fyPBe}AgHWu>85^QY)1N0>?QJ9#JP@b|pz2F?i*=Cc9h`@(%d);iDl zfS}~MsC&A$(41k}p!k+!V{UJ4)=hv46dTDb>aQC3)Q= z-?fIX*>#T!zerJ3E+I-98WRo`b7AX3Ce5Rd zK6sXueYBC+w+drvo$&?xPad!nEPjwFH)I3rIGOvx;`h{T)@~)tz6oNKR%i9}s7g5W zV8Sd4?%p=`Z#S+^f$b$`#u3*+()$^ltL9DPwFle%lU(j`gV+@s>0IeX-%SXZ_| z=;y!@kl!vZMwsT+a|d}m(lr7JvUX^7-DEY+5@C~;k9M0JpWeCjG8!vPulB*hibA4j zZ4z<*gyLdJWSMtI&^smUNk9R8eC<_;g$(5cAQprX({K+OROcb8pWfA4z}6kEX8NT_ zFrj(tm0evB+e@xb^w@5BYqWurxoTI@o8TNU_O})!=;przG)WKq0nbt&>jO}4ErTZ9 zD^nA$cCcHE9yyC5gKQ_Qxez+~+hx5s*yNaCsHNvj^Yx3qVN&kq>6eK?v$$}b6sGSS zwURL+m392SR&wX@hQ`Ymn*BG5XF~(JW@WR0AfnI-yI#@-VXvK&fRKgIUc}S9cIt77 z5DBiBfRjBc$H)WbWZ}j-u{oREdK;xJMN{mLdl+5t1B7DC z^g%1pwaC^_w9m1_wq8?G&*92{(D16c^?f%B`riq$Z$iw%d&~Ma?GYk>#8%I7et1^x zR<(J)8Z$YFT2YEm;NB3=LWw^PI!Nt;~+6 zBZ+*5a11G2-@5sQaIa4adg=h&CYpBbEN`G@K8f&eL}58EFt=u<;2Ll@%n7`=XMHUXM@|Fp0f zfcm%FmWG}SWq-J>e&7aKT-~^y35Uh&kI153bqtEV^Bd`SFZ7dlz!VPC93^;bpF2TA z^de_gQvsv_7vh?0Os182Ic1yZhFnDNFr!nwIk5guB41nqq6C>~tI_xoq}^VP^H`z9 zRzJP8A4zQ&QpD+fO)h45egVVm{G~qoK5-LZAY(VU$Cyh0<5uA<7F@J!oK?(PA;3*@ zBwQRa$`o{Y0U#kJ?iao(Wv0Cj`j6xnsh&xV{sD4GYPy9nxXGK;yqU`Tsa?ubg#bMq z!x8KR>i&G^$-DQrn*82ut;*f=h#kMu?O}n@PZDv$l|7^et`z1%<}5Q`ot7?=)Ca69 zB;cE2gSm_v`cLC!=b!v20ev!#on6&b%h`p@Q| zIoR<10)@(f?viL*0&|17MR00Dhgi}&`?Cb|DXu^|%B9Xf0S|WVcxKOjX&li#6Es$p zx-)!?Bpdp138nAI7p8UOwMFn0P)kn+k_0?Gve_;{AGc=bOekl~%H#>S-pocyc3~9j zX{x$bCt86gApJcqu#@HCq(BSO1YzXs{L2=fw2E1ROg+B9-PpPu5^!7j6mjMms(6iZ zhVF`a{&pRt`N&7CeTgTbO3v$6EnA;rurHf%PBoOUIRCxx^)2&Lw!t$U{p=2y*a|>r69pXPGfMC0Ay~Ln+%an1L;Wt zjd5%bSQ}k}=5A?O=|awzzxL++Xb60Iew$_Eo*yoZfGZ$=#8N*0DQ_gWW%)Fhduxv zDxv@k)iBGaZmC+$R>8fkei6A8HywD=LE#M{+Jc4MNUj*k36QZbir>XOltkS&yYTEc z^mmwypz&>$s6Cl}#5c@8gC(NTJGWBV zVa*Y?{4$Uj7^Pr!!?D+O zj%=&KJ8`=WV9DM}jQOx~*2AY&H~iB8a{!{B$XnhbG_*G!7o9Ly9wdC6U2U(AsuaSQ zYA^kBTL>;*Ti6O7ihG!Y-d&8RnpVPephnlnw*mUp;+4kx;At|G6Y$sttCO#LAnezr{$BJTO^qe>DspdU%UAGoF3M5eR#Xx zI>%=-AX@F{x578nT)8MPg@j9eV*M%_gPzoTN`W(78vxBto~4?5i|Jj|8^>T(5oH9a zYvb)d90Wk_^+;yZ-G=in?K1{?zK29FL*0(hHC_W?umo!I4eG#D#4Eehd+`2RR%eX11 z->h%po=oJm_=f}J>F2FIkdJloeA+fF^j=T_sgPKowp-rmUM3risB|0~3vt*2kp0yC zyxmJRpCAP2#J&wBag((bE&15H`z9PH@<=YVHXr<9jmun~VCC+()-x18DmZ_+c#}_a zK(4eJW5mar*>squEw`&a)}W)78Dcz{THtZ2ro*)>-B(l~&{rEzmcHGo9Y3)~YAxRj z9`z>=9(I+z7EVBUzVe{HaKhPrX3Sr%dpfQL9dTJ14mm_r?J70j-GhH-3R2VucekZ! zKP^8xsO!^uE?pbs`OTUISox&ClQjN#TBp_LS4mR_M4v*u#ks-MIB~wl$1Hf%4nJ%D z-c9B;2HqG-Yb+f<&X^j7!|ACWXPT4TJ-f5GwgCE+eEy`76*(pAL4yxQoc!Kg818#& zUL}0JOE98!U7G7>u$w)<4=Z^2tr1hKVtizKIcRl!n}4?eogxYhFrclPd{Kf<$C;}u zgF2$|83zqJ1Fzxcw#=%?xS@=aS-=<3VXq?;{%p9aCJd6dAv+)^In9FqaSB6EubJC^ zeaX)u>{#@G%3VFDc(9Z@I80-B)knAxJ9WX=rE9^Gv;!+nOb^CcUD5|QXefFjbj=vk zv;8;~N23h%2d4Aa{l?%IPRq-+Sxgq}MP2 zS~>BfonaqUw$Cf6Hcn;aNmZrGY3;m5LvxlIcpY7{Z){^Ew2Xj9G#2$|LK%oYV!8Ua zF5x`^CXy;IrXEb2YZ%!NZ$I!kh)|b(WjFN8S!&Xs>-tnBH+?eTcyf|!q?;z=Ia}J- zjU<;-K)x9ccWD3gaJgb`n(|-Zz6&$cs`ha3vQKHcaaK_xS0B5g+2pdCwG^HkhiUmt zdE!}-)-PUsynTh_=^QV%TLAH+g|S$#7mcC-W(br(X-E5BLZVqo%r;LVJ@A+P^4m;Z z>~cSDK_=cf%Pcb1XIskG+@N9&oNmWYC|S$QpqzB~%5W^i0NvX0g{2$fXgmGtC7-Ud z)egAj$0B*t$>wX>+3$Na9&t4le;soesoWLV6Lo4whPY0ozS#+0R1z|{q6N`9zQgeF z*0huH7A)bu-s*E(ZgQeB7zcH|7oSMnUpwR*~kTfG6|3!myf zgi_uez>H`3jMY$GB=>QU^F1>qyhsH>Ep#Qoy3>)HE6kNZM}2TfCNxT5i|5?Y*ZyStr`cy=CeJT#X&oyT>1-_Qkh=4~OYYgHpzy_82=5Q6 zs4>xXomCLyvXmHTHBr2&>+4)p1_r_4(+^0Yx?Aw+t~5Q^=X3~`Y@k(A;}@F4d@gm_ z5vEEapZ7=o<70zMiZ!iv>bZuldsrx1c3*oza&DAb%_1&-XVDX5*TkVb_^#J1Rlx*` zfiIu4662oBgwZdYgkC8ow-Mhk@Z%!KAx{#_hsPSZwBBzsz6yCxP*U^qRZrk$*|F}L ze^e8`;1cV0c1&xc01zPLgC7*ONYlj7;`C(CovlyD$6u0hFZbbqEn?}7vG}lADz+!S z$?RI?oqtE|&401+-e`hsd_WTXhjT6r*`{{)oj4>Ha~`nvCI>>mh0F|bh0g(zUfpwx z(3rw2oZRTDs?)NL0Lw8dtRba0>Xrt--fiADmA;Jc{=wdXf&~6onN;s?e+5H|!_f{8 zHrs`0cWRd~K_^d-L$9I^v6`hJlI{-E90^1Zw2Ly-V)H&?LFk)~?oEH_ZAp*R&4{{r zurTMh+c+A8oa2v#Zlo^ecdn9^&5`h(2 zZWRKHcPMsOENglBrWjpSa3#N4J@S-ksIF4!Uxqi2%?B?rx~9CAe@tNCmyT?|*Mc-N z96DB}sK$lJOTBHA?&`D%BC>U6^W3GGgQ(|a=KW2lla3#H{y>(rf1VJjKqWc3xDpvY zwJLL@uOeeThHU6ie6zkR7uO#Sl)%&WOIaTUGg!@q$Bvjy)z}kGrf|kYwYImPuRSSO3h& znSPww^;0mHIWnw^@cZ}t<-x##p#s~Dn(F^>%P)3~e(6*w6s?$+z5YH~h5E46-*Lk#GY?|RuXRzf9Yj+Ap>i^QO{Ac1sRnbl5MNz7Z z=j;yHTfDS_g^$$C-U4PJNB<|m%~c%A#DQtZh1n;^xK2sS8NWgEXkQuH|9 zFx|x4VOsaK>ekRf=*4{fP&f|fR68TkwPH(~3(M&5nr1`#21+<4R?q*}N`!4#imjSD z0Zz1Mb4mx!bLb2WmV>H|`qft>|hg(VCQPm|dR|6JrN77s}a@Jhor4 zAIi)noRMoyq#+^sO;ImSclbcUHX?5ud^jr)HuM2q4Xt4jYjbXTViRu z=N=UFX1>AtG=0sc!Uk&-jYQ`RKNNQ})a%y72Rro8LS1;uDBWKHoYK5CCP;1czvI2d zxzWgLt{2J)2h@F1go_pcZ0M)`CPT*zI<)vx3R{Ty*UI1N!~H|l5A$Wqg=rmC!Q7{I zs6}lAAV{;EU#0WuC-Cc7WUzPCgHHc_VfpCC>cgSy04ZJ%rv?Y-f_N+>Up)UK!|nQH zwKlb3L3>VyTo&NpU>KL^8@{7s>4dI(u5DIDMJ6CoQ;YZaZ^#zKvq}@X#)B&DTw79* zHQQ`g*~f(h)0l2KeFq1=nb{j{KoNcPceV*o;EYZ{-A>J!2*A!ve6gg+g?&*_G6D1z zbaR4cyTE9bpniTcv)>GKFm>*AR7mtPE2qgih)#!!>qWx&;``45#k<&&k`p7kkU9@qS`zL>L?AYOidaz*kD z_*c5d9|K1Y@?^9ETi<>MOso$PI-8zxR}m!f+Bk2uV8QD&qs~GkGxWU9vsr?n-HuwO zL#TZKQeR5k5yJX&Y`9zB(iM36!_DM%>@~EOh%1LYl_Fl=k1eG=QMdIlgX~C^VV_vK zPT31w*2fq)U@L?pcqkW95|nYM-ws^zP;=AW0{SDX&+!=gjoaM&vFs=|?GC)4FzXv^ zn(jyo-Tp`@>EZw^ePrH0Z={7G8AX31^XaX!+e2n*cH9~;g7n!e>)AD!n1U^WtL2YA zeIIIWV&$6-nWKi`58Nx1PL3O!PHgjc;RsVI`1NXun>{XY1(}e!CkOHftb-57x%h&0{7{1}ztJG7f zyUZ#sXi@d(8oniR)B1Q;w`J$FLm5llgrhu?K-u#9SA2Sgq^1;1YfUpNm+^eSxU2_` z^wZRUt(AXdm(@>Dik`9LAn74VFuYyO4SGJq@e?rg+w?U&AxiBip20fu);5Q*-iT8ZCM~m+ot|TXIr~f_uMHT`58_hvn&J-2vce@ih zvq}^grMU5mb#7VjJ5EXlRHi+2xxOC5AIe=<>(nW{ck>S$jUAENp!~!!D3sCERYp%2?eAy4slN>DH2Ys;&TcPZk4on}hD+}aie z$BQ5K@v;;~{wtIspZ8R~@K<=TsFo3Qam@v8m>H%D+i36l)o)sUGTS{>>{~sa136a= zdxA?5_((A92p!NrKYtH7`a5@B0ux_Qc)Em?k0+-wceiNSCw`@U(u_k!@*BvyX_$l= zHAbtCL`WsDcUT+(l#c&B_bAszSiThv#RTqmw z-@QYJVIKd%D#aaM;P*)-eI)nrnh4`~Bl#xKbPhpEnQ}z{v3Rg&rgd%C$=ur=BZ&rF zO$+vYg}pYicl4r<-&o!h6|n9Cwd{awi~jf^Sz(7 zdYMsJBijiqg98VcL~ObGXu4WbI1fcN$-=Ohq#{JRM*aami=U*LY&l{ zYim}ZJlUZXpJ3z8tX=iRoWV2xWK~FJ3c=a;&AO67O$ptw+a8;%u~?ef$_sA8h$CDt zrAvN2YwowkpGtGB?BvJf)9+r5!CQeU1G=5@n-y@~-SN z;e_b*zhB-#yM_K`)Q46_{IB_t4Mr^x%R8XIuggOtsBA^67r;07y5F{9QD>)G;fZr|*d??7oa zezV5GtiE%TUaip>;7d+Ak4k+>`c8w z`aHEV{t96wGY^Q#VcN~0`;Sp$|bQey*0G#(v2N!Yf? zy2%=l-$g3s$xY&I@QBAPX-JB=1f@Lh`LG-zo|ejh*EE7y*7me8*EbYY23zeftwuJ0 zAXle88Z&d9^L&V4Xyuyqd}o(+ZjIv&Gc@t^DKe-@ekz13(!T1@)bEVXAsN?2IicMB zCd41qzG^tb^BvZ?h;zaE9sk<6%0Fg@W0o&Q!XxZlLanXdDzBXNb7^N#WBd$^O%#>m z1R-cubRjvrYILe_PTE_~T4in&(39EaB(DfO0{J3Ys?GC7<~?5KU3xHIEjzoejJ1ot z>{4`jT!*brn+N1MIOEo?)N(!RkJ?I#AHwaD+s!A6;Jku7o_y<7tR(YSRS{ZFq4*=h z2LKZ%+azp5XW>SsJb26)Kn};YcSm|IH)J${Y|VdzdO`Hsx5|p-k7)0#U_8Jmt%dr# zprG@@{NVLuPVcw&4X@XHv9%_{9#(2C-j*Gc5^=*q3HN;qb{}`|4I?MxA1{@-_M6p6 zVzGd5)1`@F#@FET#Vsb6)q%5kp$;ypLyG)B^xfZt_&18^7bZ63(Mt8{QXRJMK^`ni+*~5uaRsf zD>(Ljj6|@CZl+{CBHbe<;OUAo+9m=AAKoqD$o~eln+wD^LjnpCRpXW(mWZg7e(kC) zR_7@?d{sKn8J1BKV!~le5&nQ;H}Ck(6Na9yYKtiAg8yXh2W~rsvZNhGV8L>)UD3Ah zcHm{8WL}D0#o}jy3Nt&REtQ(F5d)|JPE2!VH5PD>c#BVAj3$V?zvk<-qM7@&@IH`k zkE2fjl!##M0EcWF3~c;TUtKB)+IwA?u$>Qep!sjOT{j8cuCAN@@H9}B?p>&ZAi|j? z?W(VxES@4<+ZNmkLn-(_NE0ZMV7Z=OMi7oQM{e8GIzcT2Pgeq1YnIw~E9<_0ySxT`r z+eFqsQ$@ShegkamQBt=7-{ipA#?bn`ZDVI9!=qT%2`!K7XWT@SfyEYn$FO&YEbR{^qmqhwl04H172M&uTgxl;79` zyPa(PfOfxamF-m1LK@N9$^=tQx1q!N7xH)0nU&*?iDKRx26vMK% zk4FK^i;94!tCz1;Y=;-eF6_}~@1>_Qzz2R4eRkb(r80DH^^)Dak+nUY2j$En^y%s9c_2;R}tVQeV;2&Jw;7iR| zhoKN5fa-VoSsnXz?Q_YW{)GJ|7D7zzUv#yLl_wttCloNY4{uL<@5(MG^cf2TDLP`b zp)xf1j+q;3Gmh!0wUvqYv_jP4AM&}7JAhf;kbp3tfY)K(I={fZ6!^M?(hI+!iU>k1 zpX9~!flvC3n=KF*wuJCLZks>MUgWuwUpN>4EvIHWmhEugQ^Ql4Uv`t?VE9rJf{ zKf7o=^7Gqqa5t%fKAgL1pQ(`NiaraLc-%@j-N(9EtyV~(bnlDkJ4Qf{J-HGkSEjIc zceJZ<$m)xwn*c2;mb%@?8c3e<*Rt?5M5hltH0iNkb^b|m=wYQ|=O*5C)pWFB6{5rt zYSLwEwSSl=8{RHK%P7%H@(F~8E3sv=hR0oATPNoiOslMK`>eLG2a_%5q7sa?nS3v2 zs&GU%yL4`w*+(mg8eQSf$#da(y=W@ak+is78D~)2(*4?G5YRi`SvL*U2H-Kh;M(2J z^;dfmt2;aq4?1}h*1G4RM>Jxu&OEv#bI6B2IKHq-QEL|LfR(h71louF_(>tL62x)* zo0I_~0M@luf0t3z(@3%7d73huP{r_7cQvw$#SDWzR}^1+PmCeRh7r^yYg;F*W$DJy zS^c1oHw+A*0Kur+gp9g+$-eX$?+e#}NoG{k8-6A34_R-6+xy9W&K33!Q;h0+IQcou z8{?v`V-VP&65wAxGaeJEjIOIq47BTbE&A@WO)p(L{$1e(^x;5ASh;~Yy)YJz`f@ROOKGBA=jw#4S=kqloyyq7}##9|PvEEdnUj2+|nt6iV zoG1A37ZFf6{ialdbllQ4yPLK>&|;^~OSq0CaCJg~uEU#G76~U5e>>L~QAOg}!hnCo zzn`TxOQc>@FSi_!7>N_>Purfmi}RuL7*19x6ypItOEoQpm@GW~*%zZ`pVqV4qg&uP z7;7voQVzpa*4*mth?)!K{KyDY@`~5Gu%js5){a^oma?D360G{#fq`EfLJeEx9ZD zM7MqeCIpBWnYh2nz*&JJJaQLyb#|N)$5Axbjh>cw*g0Nj=N92K4hKRFe(B`{e=Y)n z>H#gxMEaJ`X*<+9Gd;P1VVxziUlf53sbV(z_)D&2WZ*Hs17eG`qQMRd6;_016b3V} z;`Ar{3a9vj(1+tA2S6{Kkuz*OvpJ%tF+kiwvs>tj zqXk2d2+*v3?MSD9sWBO3$B&oog>JwwQ~hx9EtllYj-+cXK!#DKi! z^XO_y;%9?V<=6zf0(bLY7k-t3197JIq$F!+ixlCpRM3(vs?TI4+tHO}-NM(}ErXqv znt0wh_`^U28Lv(;r8NVp&8Wt9SjlBfeT+~_cc$%7w96V#A^=J38ftw==%xys|LlnO zf}K0jS`cG)r!Md#2baF$GTd!(S8)IL$uNOhHqJt1ez;Y>2i2ViUn^0Pe4%!*wUP66 zsmsN2cFDgIO*=cNqFYu;)pbEoGef-fi_;Mw-=7~LA_$9hHfyKNdlLX5Sg0#O{}wJa z85n4Bg?Jo{qWs$w9$((h4p&~KQ2fiD)ZPA+h_YnbOQLV|%@sKDQUEIKEO*SvtKdST zeJ+`gX^qcpu7On|+aPYs>X4c6Mq)t7No%A1f6h!Pxgn3arzJ#>r+w&b1q8Iw@`gv| zFt^;@YB=EW7pO!J;@oY8U>=1fB(bGJ2+;%3Ls!O}Gp)Lm$p6g(oB&NNfesXgmP>lR z_(1~gKA{59Ea+7x=llAWoD=&^K$5uT2K_W!j~`n{INSdL>p&F0G=Cqqclu-G)^N+a z*TQX6-Dl8x>vQXBU%D9f{$b-+S?RwmtWU$;wN&{^moL0}k$nfdZ=YtLWp}5+m;UDf zIr5F~gS?E>_rU32NMA$&qX@bUy|hWT49Goz0J5ZauT-wlI+vfPWyi#q%o565k$zGa z5A{UZ1~oIs-j^XL-;%Kzx%}lWwP)p;y63(JTfJSli~x=H`*Vx7O?^~M{m}$mG^lr^ zp+2=J5D@z1t6vfonZearALUY6{a#_OL0kP168ub`sMklb@9cDl6;o2UvE%NWB&;9dm_yy15!;OU;k*k1X*Vlj17=jEBy|Z?mLbZ zQ10h@U94(yuhHy1NM2JrDJUlWnSAoS0V^bu6ftS$|3!Sc6yE!0&|Bwj*)%PE*osfBgJTB>tSYmXLF;G$z`Rw~(tB#lv;q1p;WhbE%%$ ziw7k3w9k6K^yaF&XL3Wl0a!!-kFJ+5^~!S%U}BfOZ8T7PYBDq3Z%K?0L(p+#HH{0mR|J~Y$mhSQ=4VTLtMKGi=&Ka77}6G#ldzAG)lM-}Jfquql^1Tl`kQvk zH~B00R96tqEL}L{ULl|EBaYANhgO~O$?qJ%Wq(|FI|7?{S(~!}&tAT${|d5ue}(s< zu-ApB^pJc)@1i$V**$OF&HoaTPizFtLwll#ctOXkuFnpx9b_fcC*8o9{aMrR$PAH}1Pr0CM{B zTPA|O>k>e?Xk89-Yh}o#ygJg++*yh(28n)Gz*t^@axvt*_m_IjQfPTgoAZ)&pQnbv z)S)+<*6y8Qur?Q`yn)Oq5q)z{ZnudfwJ?@6Xb+w6hFzDV3=0oQZujn?9uZ z*6^oxg>7pn&-92E%2$9KHUSmO&&?F~{)?0PxSE637m|XAL&_eFuQ9YT-kFW{({9P_ zx$ol8r_Ms_^)R#|fGTaK7Yx75xvakcL}6l`iz7e!uLD2+yy|X+8JOiHx@6g;#-D$E zs=9|XaA*);3_pCyPhb3nz+eeZ<*VfuqvS1_V%%jZ6C)qT(ysMHD@j+<9EJ00U}-Rx znmw0AwKw;_`c6eg*yXzIj!r_za!}>y_(!Tj{2p4>jlzLU1g;|gX&=0 zey0B@tNps`8|BJ-e)qI0ODP&yGKFFO#tZEFVdFbIyytKEui?AKSA5g;D_ywh_PTW8 zmY4nveoOzE&mWQfedGV}UjC8VZ(H~*4*{Pa@6f|8+@$w!1sJ%6z4tc_NUjS+zcBy4 z{cHZ6n6QaYR-dMKQnW2p2o$CNFwkf}{pe@DlGfeUto;F%x3_Ns+g9~8cmHlN?B^5+ zaM|>ovgDIW8aECoC$Zl|0r^5jFHn0>rwn#JNvFG7jeF~M?%J#L{Jwr~-@4;q@-1{mrkI1>-p^ZcE{hNW@qc8A_Mt$9YksM+U0#6u47iEoEkc>v@*gOe` zqGBPDPP&Jyb(vwIFqC=*>fbvHcnHzw7yw2Oi~|s)3bk+C(uxA)5F}C=xK6GWt5QZl zN_q2zT!R1^UmH=~4Js19lR^8x(!MK52W&qOAAaH0x9`K{SyW$u`jtxDk$bZsS-{Xp zRkVUX!?=Jx-I(-qK5an#N<`@>{^$=>rA=)$j{KfY7?2r@HS};xRb^$Cd!5hg{fk%o z@o>>bwfEN8(ohEpXYE8WXr>KMRo)MiW!3Dx*z@_xUkLiI1nuR+{UVB%-(`#Eyl!v* zD3B;UJ*@A(|2|**OJeW%1`kJ_=`?vuJPJTu=!GaGr-7qxP33WeOPgb0NdnTHGJXjl zXPF1wn}<6`eYedy&0NtfJJu1j+w~=wb7>Ptf4PaVm&TZiIwWv< zxsOYR2Og9k0tAFe7b+ikQ+{NIdYRaoM4y%lMse@$OXj>I>n>X+c9@4yAz{_OJAcgYKdJr_9P>6QKNP!*SSG zRjpUk?nk6u@+NWA-aLtnfDm1mUziWxVgTpc)R+zk`jp&o4g$nFn&)V!J}Aar1Kvl~ zC&c9ru`vHFJ>pN#N1Vd+d*^G7t)NhQKvZ2p(%F3$BxjZ`4D$yTXzV=po)4qj zD0~omCqGDyGyBxA{QxGW>`d4^ki*^;;3>4)nfC zT=OZ9PuC^@d)+r~CU z3gO5=tYo#u&4cy>@{!iqaEY?iC*-)^CwII+?opYKnIdD_hwfuF!2RwsY~L@Z4)`7d zeFY9u+xix6x_CBV41~sl+FqbBTy(MV`xkl1*?a%HZB2|FfgD+>tTh-e%e@z}R+7d! z0=^^t9zp*K-9Sm8Izj*CSy*m*&hZ?YuQ3XmrDM7G>NK~(PV-cb%W7irVPRt@e|om( ze2#nOwLSFFx#aQ;h?SptjCMCoCV)`|5Z7X@y)XSMTJkZ*n$M%HJEhZ@wZ8x`N%*#f4uzo-}eMQd3U}`dPS1VEGlza! zKW62HT)pVUy>8=W^FCf}8=|-drYH&^9G+n@BkKap*|dhkmpQG!y-^Ot`Peg17k3rq zD0heUtS`N(&%~2=ws+a~9OZ%W(No;suN*ITPS@O{F<{3(j$@07ewF3Q+uXwR2U7>VF9tUh*a^`z(L@rF9;<#&pS{8PGRgXGKCj|G?tV=o_exWY?r7v@i^#3-< z-wCP-XfJf%uxVF&yGGxoXHwi6iZ`&)hxN80j0QFy=3W%luE5x#rXZS$QihtPWI+ZP z-K^4z{@cv%=a-6Uy|=!&@JqITTlv0|zZDbEg&`ql?zhB3~wbmJRc9tf0QIs5r= z(M!7TwABDQ7pqD?8v7Zt;tvVFM>E5BzkKb=7T3RYp?-Rpt6T;zbIfP9Usx?(83Su_ zT3j+bw7%?ui~Jl}em_~ht9kHeumo8{t(<Vt&Im{O`o)y zT2zkNj~AQI|WmZYdArrQ6EsGtgA^ul*~4 zcET+KBpbLO83L4ez%tmxx|2RMt?BmLLeN*}J}MbM2~c`$|IGjZ5CBO;K~%2k@)C-a zbhRgIO}?rRm!{Qf= zv=^1JKDDi|pufM3o?hUnOYTDIAk;)z)b*kl!!6H_V+}oka@}YFNWX)L#76)j*0kei zMjwFwx8^dJ9?(WU{j!Hd`6XV;YkNxX*$1}Jy4Gr}wI3??vQF(uij|lD76E?cUIf;%I>rKO_+xi_ujwEOg-lcFmYP@GS{l{Lq>>0 zS>>npUiX~shcX>in%-U}?ZJ_QZ*to6XmeUZ{R(5~()=3e+VeWoSYI@3xTLjg00QK& z@AWUlvEp6@$!i|s`gAXc{kb91nLKfvS&6awLMu`jENd-Ve$?o847yKGS_7Ykk7UnsyYQ zc~7OMQ+|Vcni_YkC0*EDSL@Qykoo@GAEqCt;>J%^Rmh{?d1{y_7ArsOrzZ04qgnmz z>^;vlKyBZ_$~B+Z^z%iCvHITED}82CTm5QR-MrK1E+!MxI4Nk;xj1w71y^QZ^XRkh zu{C9d{;V;WrMbGdrlX9~@_v{Y-kn=OePVs8W@5d#|1_3=u(F_0pYl--p0zfmGsA?& z>Hb!h6|Kkyn0GB(ZH&qbr^TM?)&mrzzn~Q2cdvd=iILJCOl|cmB+Gr!I#yi;YukBmmhr%4(yVBf zUZvC6SrsO@rzL%MiMB`c3X)}k0O|PHqw-sRPPjR)5D-)#Wa3IFb4_b1lm^lsx7Wb< zx#LKT9Vm+uW8mkrWau(?(4yUG1Q=<055M(0{ZIWL6uD&C9szAS-|!cLB*t_}zG&P~ z{cFItfAJTBbHwVEYINubdg`+^LtKkZ)#kk%lPPJpFRP+9t5CYl)=E294*;PTX>^{@ zDb%)*)P`M8p2N&hmD4=iE-!-z{k5*OtpLI{gH4M@0OgxA+Mt8eeKrd zaVv>2GBKpmQGK#~N*D4NTMiqqtLMvrK!7V&BA0vIdNU>Z^s)oDIki2i%Fa#T81n zD9PK70P-2!n$G=p7(Snj#&uhxDP00~jMC3L#KeFnjxT}Q098?P2k6LG6Ht84zIjo&jt+*|BS%zxim6&-(mp=h7moKi@rZKwv{HZdlHDLmmgR8M*t$}LqXZ=Z&eXlj236*Tv`5F1-mD>1}I-{w;Ky5?UWl4oon_^)K zI8*!WZ(-H?-V}M1r$}elF%lmKk{e_vW~0NF?Kn#O&T!K~OZ98|e8>oX5nhvyQR|_+ zf;D`lQz42+QoLM*IvOvxToKf8J!-DWGT*sWYS%T6yC$f;Szqd`4l3VJ*JTXdo^$k1 zw$!qZ^)1wMWUJCr8_GT32v;?|)Yf(w6Ud?S{9>#x>c0K%JO4Q7Ujk#D@jiHGphnAm zewp6eNgwfPCI&d>4u1Kv(*LaBIKIijTYv{lkr#izNa5Dk_Q+%OH?gbMhfJa|%s#pF zjKTNAo97stpuoc2kVH-|R^^**o&s92bv3dJBYEUqrrJ<-VZ{fgFo(nFE00waFoDuM z_NVf2kGtR%FoV!9N$9iY5}eAHb$p4$hS9B|m$?cu>A>F1e|Dp<1*GwP)+M#CfxvMX z>S#%K>O^~LsDGBWH}54P+L|ZV*mbog-IVt->yiFtWkCOiTAu&C*Sg};y)Au`a$Y_2 zWCj6DEi@lTP~Q3#Hj!L&dcj(w%C#n|>Qh|;v@`Z<^E(YW4vn)%_qfct^u=EaDg|>{ zYx>s>LmH-HLAko5nB6Nk1|-Hrp8@&CTOrZjRrRbve#L>jIi+Uy&YixH>sLWlt-kd| z+ZFBgMcDc!Izx(E&zt*R1C6Cp`VluFmcT z7^ocVta}?hnce`SM}vZB&aF13VN3h0mA`T6zYY%F3!<5)YoW5kn)VLx?Bj_(p*Cmm zt`u(h(xzaLJ;{f@AIcB?GLYXGy1%pg$Uogr$-*Hnh@7|mjTHsT<$>e4`z-mGw+yy@ z74S8E+f`qH_cp-f0;-;K9b%T<-ywh3(!CXKjpBD$G4vbJf5W;pgy0Ru}JK;SvQ%pAopQ!O-U3f6FIWD~aDzj=W7>;Yg$q;=6w> zlG+VIX^G6>ZQG{O@w?*52WfNG@bq0 zQ>g?9+NMI6`iCudt7#8qbC0Fn!nz8+@23|{-v4*h!@V9Q^jY@k6lzz|s^1-7N6C0t#(Ybx zkE1mbXmnL#!zc7iNOIx&%3+SyrKLUz{wQ*l0tEzP4j?ULVwqlAMr};NngBt+#&c>(#@kg0v zIn^)EIZ}u6_8N_l25TVZR^Xfr@>rxQC0hp-#yQ6BIfkl_>Nm4TRMQi zhT8_H>LDNIr3kDOw$13IZ{PCEQ(u=oY`fFuSN000c7@h@U;3y1^w_?*pEF})yrq5P z7fu^{+VRS~f7-3wxH9ly$7j{tR zU}Ugy#ipN}r3=Sgs;yrtHNAX{C|{dG$;0H^hKhvdzv|Gjdc7`ra@I)>Zu?B`_Nj4} zy}Lop%;fzZ;;23B7|R#GqEyyCEtj=+4W|!ObFP~|D>v-L*RQ(b(}RH>vp$hNwZClG;pd{Jak`ru>C7I&;1*D=^LuX^GpbA$fpCP&waN>>3=L##_c;+Sd7WQ#TF7r0G~bAE!NC+ErX!dEur% z;#*hw@?H+;U%t9R>Ewq!%Nolh2Hn(o#0~r*8RQ0{!P%w+TgjrTL(|suO)@2-F^m-12RE z>z1*T>iS)QfDoZrsLs@}bYWQ#aj{1CSVcMU5?;^$H163xD6dX4ee{=j5R?pxO;_EuO&CQ?ve|sp4(3GAR{oUcyPpQH2hbpYFR*+MStZrK5J5 zlnmGXm_#F~*@~`qvG1_$(-?(2Ug^d-=X=2R*)cH6k`zv%MoK!j&ocIzeh2nw>R8p- z58(pDDHLx|{NQye`{buY-pk4vq&ZvjX&uBLZ7bVqiUb0Po$B4V#GX)j`*3QbOm_RX zqk{I%aJ=P*AAZh{Kg-od(0cZ@?tsdCdQasVxyp~~`ybDI`~45Gm)V-=nEC5v57hg& z1=;90n)tR<=obbxB_7~@jZr%_G9c|?uVQ(pw!QecF{C42!qdKai9Z@!xb;}OH)A(I z`?X=!(3<*S=NhJw(%w_PrVP&FQudOndVfDpAtWP~iS0ZX|AW@#< z2*#?c4+tE!3U-m^I}KsHO#J59(91A6^wlAKSdrLZ444Qp-WjaZy3~)47;0JK)NZBh z#LzyIt2#o_3rJd(v8)NItt2_FIyOhZ8jMq3)1raqXfM0p(uEii>a(GSOMXp^1e7na zkPk!ENB}YEPh-mjC<@lL{OiWr>?L>Ko@+y{U=NPKo98Fpf@@o!scjj@F7}Sl{@12| zF-d^TezZNuwvHKj>o`VF@ZoX^aTuSwn6e6ME9q<=(ta0&hHn4>5CBO;K~(PE^KFo>4jXaA$Vxl5DnRJ!N*1CO5Uh<);~N3F0>AHeH3UfamE zx($b1!XanU{xa~xPwnFod`}#{L-BL*H{sxR?~qB!?xp3;DR=A-$})J}nusvo%W zr@!{*21eh{?ByQ(aDSYq;o?gwD}6P z!b;mPUiu8)R(sWGzr#;$>$i42@y;3!>S2F8ljiDsBhqyq)etT+?Q5YPvZ?(_xda-! zbmOjcR1esag8TGkzUG&VY6a_cojAqN7~2=5ZBRc;*3eoI+i9)m%Gv);%sR2>s#SKj z$HKY*YjK~|0M@aDGd93_E0vrY)K$-xVMAB_EvOErHsw1}yHrPc*^mQ^CzHu^BymDJf4NURS(%iG_A;>QG1XFGKDbzOMGR~T(# zj|8kS*T9&OUlwr+&3dWcA=F`y(V*~VIA;KJJxyihHL~_+owPjbs66_tfn?<#K;k@$ zt?8#PYkna(FOwynXXvWq(D(oXL_#o}MnC9Ttw|tCTHZO5)J~?~wKiI3R$uGi=?Uk4u8`l_^T1A5^D{xe9tt5RJ z-2hbmPF5Y*Hg!Odt}H2C@JrOOA?jC1gxVB<0Or+^ zW!*af#uaJhEUWuW^m0hKN7t=;|H^6CmueW^Tc6nS%P?|vrwtQF!o zr`KN|Iz{j3@`Xnp_fwuUf8x=`BhCN(-~Vpi@}oS|YGEyal0$Gxf{SG5B{d(~mn&5B zIRIZNfB;{~ZvpVD`rGam>+#AC{h4eOpDfVcEc|)70LrezX`Yft08P(*!WfVM`?J* z03LT7_+6o3+Yw&u*9%?pJrCO!eG0Ys6zr?t3G$b3zn}lH0rHK{0g3+e{_mGh&mh*YWH;yXx8HfY8bZ_FD&gg-7+Crza{Na~nKt0+Y51=(FkM}ALz%{!!?ymKnewY@w z4@vdzY0p}0Tb0|!u1G(9PW5Lx(6=@^H9>Oa$~AzCGWbOmjn6pMt-3-rK9_??f8sCq zU;KsO`yWmp18qo-o2kMa!4pI)Bd8rmqpT+!Gq>3H!Hhb;pr-sbaux8PFdUhO~$~ z2HG6%J>7E+)zzx?JRw;pvbVrsDBIY&Fx1fUk!f?j>`SuS(gPg*6c+Z&}HAPk(U*)t?lug zg%+Styi}|#dn8j?dE-}m$Yak|&r!8zHk7PWt#zQSOxh2$i+`Os#N}&#jQ$8Y(pbxv zWbIo+A@;Ml@%LFK9L7e_3m?2he+mQyYm51nRFkC7f%~PD4N!7VVEf#-YU4LV#1zzx zy>#VZWT6dd|B~)ZXb;wz(>qhUWev$&avb^hfB$#oN&B<9C6_T$$am zpDV}|?pW<_LGgdlJj`1V%`E*HjPiFZ`~KdBOQIm!vzsr-z4k};7v|}4osYiB41F5| ziU`~_CqU9?Q<(ehb9v_~2KD)RRQI(sJ6@gxKKFlGyi(7)p3>Kj-1^E+O>U5Mwx)vQ z%w{eO^T~4fycW3n(WnD`$mcn}oxFAH48CvP#T(<>CRxU@efiU${_HOV`si_MRi&)} z#2fmEz^40tl+^qfy+jV*OGqH@zJ}gL+H5<(&*LSWxzEuxi-8(y4ys;VG|ep(e|HoYrBKL=%{0 z;u_sjdizXt5Z8fdQ-3&exaVd5I#_4>t>8gydJL!y9Km4>Zr z+WvL~`;(YMd9hR?zhT>Zjg6gatOSDh1GF~SxQ290O`0r!30Ue{%lr$$kABBpDio{> z*P~F^V+&2_1#F;G{QdVo<%{?*Q3@)cE`{W{icoBUOA|^C9y7VdeNQubRr++z@bHw! z0hpyRbNP;1ft|DZ)6*!F zF5Ld5D?ja*VHA_Iw&pT(*3rm`YU5`>Bj*yzZw%XRgh9J4*J9}ADZsYtTD}0~w&z}- z{#$hh7}$EF?qY|9t%Hq6=mNMtCp>xJipMsvTxi~%t3qIGK)DTQ%5$*B8YrH4tx2Ds6d}Z{XBxwG^Yr66` z-171_U3^+R?7fz+9=a!=)U^T(RCfb>Evv4+#X!*m;A? z1W3=RyNjc>h`yT8eYtnf!3Y5oXT)wVr}A#W!t)$8kmH!|nNq4Ndvg!vx)(FA7^d>_ zOWhOVFhy4(W7irBr|L#9jn_mdZjJlCM!0-H~aP~LSo@8aZoqfQpsG{@qsFkCKJx9u0}U z&%Ej2NVHA&(in*>S;jy0gDOc6t5o+jBK75`rqUG_=kPbdBU#79iM<<$!|ifG#@1T0 ze>+?Hg+n7<)s<+j7$T`|m z_A22@W%YdC^<)xUURotd-I9|&lF$t^DhRVm~#4k@$sf5l6%tjSs2{S`FW(>-h= z6FW0-ZOu!(XMGBuLRQb;b6DpwJ{Y5N3$;7Fhvd)S{+MsS{b`&J!!#mv9nma}R|#=X zsh?tFxu(4>{tQr95dEQ9pTb9{)=^0Bga8Dr$$N0y!j=Ie0>%ayzW%W35xBtSVdL5q z&TFr*b5vG<%TC|+(zZ=M%id7C!p;BJ;KQ^9(ah6z!&>gnzO4&XOrMG?8|I6FTBf*sciY6^!cqH5a6=PgI==-_v2mEd`@evXYkU6 z{MDl|&EqNiV)z5m>R0pIw{+p?@)hjQuG)U38o~0#a9TqMI>5d6 z^lGTdvX~9c7hS8*jLJ{-(?u%ka%l67%v;WL^O{WGvCcli@DU?j{U=%8e=t>lFHGr zaEK3m-wtcns`YG;35mKmiVEl1oCIb2JIyIAwEs1z+&pWfvC=h=>I9YsbMVW)WFXeG zDpNI6yTLBYeJ&f|)YkqF?|E2O}TsmT6m{N~Yq{M2aNgzF zge$Ur*+H6r{Y;iXO`fSz)msni{W4>G**mg9| z1iI`*Kw!rO^!+dubyG=gdKfyz;YMA}yL@1-L#RM|O(#oPkI^fl@N(NJTAwlvx(|b- zmk0<5x2<|G@5=@2Wok^tYWDGV)=X42A;CJ=IW~}Jk(c>l@&1Bz9WXd^LRf%jj&&MjdZva5Z8A3AvC0S z=!?}V+pPQ=s(Y*yH`Y5+;oZl|OIHS-oyPFQl^0;=D}4hyd|Ll4yYVeETwwb)PhoTi z4>>&Ph6JqL=frIuK7&90{3ZYPKmYga?T-Hu8^JFMU))Y3h_tQ@_-OjO`PNzZ-434^ z-u}S5K2=_TU0>-}_nUu}eWYRg-tyibVEX##vq~kdUr*p`;eR7Z%L8UVAIkzBBI3^r z|4_UT?PuXd^oPj$7R=<$+IP&yb7Hjb?RTLzBXlX>vI??~3B04>$v+f-nAkP_VYgp( z@B#c){b$PMX}rpj-*>;gDZFZzOy9Ahc|JbsD=+jt(oe{?>IXma`>%$}PsI#SlYylH zzFTVFST|I;=AGM&z8^GL7XWeAA;Y%ai*^3*^rP9Fs6A+ zzd}W@ZMM8LnZ5MJX#kD&%(~=j3!CVEPVI^d)y2F(fb3y@$?5^+Z((XB5#P~4J7bBW zK@;aWwyyU(8Z=heS|D%)7{TbI-j3&&f7t&0{&xD|IyseT<{jv|;r89!Ug3~vY@vzE;KobTBGSx^YVEaOZjGZVlb!VEx&PX zm|9CUo{^eMdyua9`T(uZhEu7*TnVn%9CFL=^gw{iU`b~nj=qmXkJ;E|mU}K(jk7-1 zu3{M!YfDIfDOlQ(q!7napGPhQFB4EzSW5l;O)=6Ld9G0j5ahwU#)NVTuK8f6Z{$b6 z+fVLG{}CM(zz$Z!FJI35*#D^kW%q+noAiLK3)3G0(zUM+H(vSBv@a@UfPirOj-3kU zo4;(NMH0WL)PADMto>!o&B^G$w2oNA#QU{|hG)&oxHp{9&P&U2UKS{QC_SEjOFQA5|C@yBqwXz_(YjCN+88w5 z_@Nrmj=b-GU-4&JB^=^y1EgQ@<_x5P+yhD%S~CGg1q^Na6bz6;>C=n5N`!Z|M++Ot zb9wf1$G`bqqwB;eUIB6(hd9?*V!xo8uYa{icKnxwzwbwYT|?!-)LLyHFrAIXz-gXU z$X$oFL$5~<8zahesH;GN_LXH1tC<|N8G5ZbmgYRAw^ed@uMW`cP=tJ>mym009Ta1R z!=v4FUdHLaXe{?%5m$Vm>_B@`7{;Y^K{BTwsySC$;NjW8k@D3al1%^9kKLKWu!oA; zq5aQae$M~*-~KKB>*4HqLK%1o26FYT`7ca|j_o(rIbhsnuahIKVXf_JUrXCHl-A&&}V=C#qhfy^h%(9-szB2zvZ)k3RN;s$B~X@9vUFEKjt0h znq&NzCgkv4lWQ2tTh`kp=)2BU&s1JWwdN^Zs2efj#3LPW6a~r`a^0KasIg)-x2YJE#mYzv3F}NDzF*|OaOTB_x3r4gq{ADtc7Fv&n8lOown#3(9TCd3~X};9FWMN`9 z$C+)bwYK-?LEQJcp!&wa7|pc-+g*!{e{G~J<1~qRZRMx(3GZba#qf7*C6cw1 zdN%=kcn-WO!1w})s~FS;OK7m-GyC#duKAP%f5zOV7w^U@m2du6sD61V2J2s3s7)~# z@sh6|%tgbN4{Is4UG_QV#sdM;aY)~>HgDgLqvYPhZkV(pcm_4L}eQvx>S6*A-5xab}JFGo3PS^UJV^e+WYd!FcqtVO}NiF-@7c>yq z@$0KfeoZW(?9fBFz$N=Y%kDW%zsbh25@kE~?2^>Kf#-;R~V&~25VTZJ)-j&U0y(jEgn|rSHFWi#DJUjNbADsdq*i%uCLu+NO zY3-HaKVkoW{>Q)N=R_-)m$|NIvaxDg6&O#j)Uw&SEgQjq!U9a*rs|p4xwy%^j@I=V zzx(7v^Qx2vT=R%q=8kdW%HU~Nd7<*(g4^!Kzh(blp})2^sR3Kc&|Tn3m%jmsbKsW! z5(Y-K->rE(FE`(FJpB;b?};&eEPy!}{+D_PTR%oFwJS(|H7hTCrFbW}@5%eP?@a!# zO!M}k-ASN)Ve?(fbsy)KFW%kQqlkCiW1iQ6dPY#662-PW{TQm(|MPGED?k49CHR@X zDvRo*1LBlGL^GDK5sg zF3dTg^1jz`00E>D{JG<1MxzZeOLahw{sNHa=pM=)HVm52C+5W!sQQBE=kD@=mxY2p zmp0Og{P>HS`E~$ngq;Y4eP39NuTqFF!jBBi8gtR z>X){<8F%jm?iefW?Wx~s9ANyG{nusay%>8Ar?`^q^Z8-FLVu|46$qf9AacSB9X#cD zsg_IfRJFcbL)zSHtuQ~mpQuy5>bmBOx0`b=~G;uCkl*Vh^)N7oPT*fzxzkc?=n*?R4r!r4`+iRvA+F+8~ zKONd~#qeuR?JZG7<0QJ|9-z#rwQ}2VDf-Yw-+nj&;eH6!uaPT*;av2UZjyomDDR8a zI)Kry9D`+(?#*7teKkk1%JhPt-J^0-Dq10V2YWwDmou@J2QSyy<$(Z|2z#FQ16X#o zZ!5JeTj-Z1D-5mkg3Nfvd9^?1Up$PVjn$<5)}Mj;Wa0xC-xqXcyDz$p9L%bXB_$Uw z-B^IK6-_p_pQBS8Ys@vq)?V!Ym7r7U8RU_gsZ;4floytY!T~7&0dkM(6b#G3?Bx`* z4@T9NS$*h_zQEXbX-$Qgd-$qazjx#mKu=+=K~x&IrsJc7rk1&^cHJSS230eGz=qye z-Q`z|Ixt4F)aH;n)F0wRiLuCW{6qft|N1t*AL9Ep_uwK{3*xW_gf)=(7bTMcTAcxm zHQka=O1;7eUG9BJel>qhcN@QpX-*SQuEA?f4UJO((*7M`+(E33M$T<}?#2&aqxu#5 zmbv!nUg}ff1+|$v40nm1{uP)9UX;p!z!MbxH=T!d6+})hm_6Hv8!P^F-umM9_MG?F zHmz*>CJWbn@mXrGVe`Zv>3F~1gHF!I5CyjV&3j6UPvJSM14dAKh?fPJI4`14$o8Ue zt4bGc{%?&NyYP8jZ|%PCm)b5!UHi6|yAPRt0qNL#zibrD8F-ek^@@^`Dir7c`M3X> zFaC4k^7-yDY=2F(0W+GXXLkC8^a0Z?9m}&;U2@>OUM9=;N1wwr{E?**7;LN(FlO9Y zMTJCJdvFY9sn@svD!G<+Li6StP^S%j2PV?KuU7poI@d6aEoxi>g%#XK+?XK1$F5--1vExk_nGWUMT2`I~jhc4gTZ}lx>N!FSW`~?Sd9rm7d ztN_9x5ErKvdp^+zZGkw2r9KX^6KjfNt<#l(WgUmc{k~xo_ohz$^1FytSf>4r&d0JV zU-Y?W{WCdM|0yEZU}b!@uYaPQH7#S7x9Un_%5)f6v1|PLI=ir#heIW+atGxEEMrqt`TwaZJsrQnC_|ETyJAB-cA9O^WUU0f-B9OUpf(=R?fKg@qJ6jNs(R>Z=2 ze~?OZ=vqhAEd`C%B$C~PNZ%FubJ?A47N~0AP^XboJLOmd5Gd5-bXh{@8u@GNk*=<- zp@glpM%}Gu#PWJc@18jCi!tdSd2kEwOlPUX^fNf+RXq5O4L zS049PT!3x+#g|M;Ab_e3%RMa5LBY(%fa)@K$HZDg1J9b4`gCs+c@9m+W=nRQO<(J^ z2aU3|d#x6pbol~o+46?WOU4&Oq^sNT?0sur_Nn@H<$-x9Ku`bx5CBO;K~%fun36#G z%Tt?8xh`Cs7p}kDW5T6>NHVeVGT;c@cJ0lkp*ffN-}kC_^u;~*IrRTn{g$_m!tmq% zj0rn#b=^ws6wQ4Ef{Mzy>MCs&N)xE|iR+tdz}D@vzl5UN6oB!+T9wL@%8o=_=<@*9 z=Zh_TlfQiTQ~u}w{yt^vch^x{Ag6cG2-%}?qU_wPYjXfnzdqrYZQz%6AEUOuuVj}y zFnd0Ic3{)BeXS7)koKYS8-ToyTmC95-Tc*+1}0YN|5KrRX}^A{et7N?_{yyQg(`{* zfPL9_rTl=mzcxUTA3}p3%iY%i(LgT0yO#0kgP}!f(VT5Dyq>Ken=f{^ZR5bsRiFR! z;p1NBrDLC&y9^)o$LQi`K^$w|zZu!GU%=3D97p0m4CH_OkN@Q<9m3W@ar4;YK2v=c z5c3fZfhQ!Jj-#IkqB*afE17poLscQbKErc9YtMP7KxGMF)yLpmK0rEpuFLv27+1RT z^0584%ciRv*uqCmwJ!jZr*t9Nd>pW2G(|rH4tc2T3Z_kUBE2drluO_lC)a5FkDo12 zyCXU{#o2pmzS=kb^6b_otY7_g4)M$UQU}!Q(w!-%AR`X;)~8FK%4)P4OXjwdOlmCL zx_lUG@@!%0q~6{YW9cSao*YN<)dx|}D-LjP8Uih0AgOJ6>x=s`)@hwf>ZH4_xN3)e0&<8CcCG1HiDDP$5F3*yXG5k9uEjcRYSvlw1BT3v^zfhwtpq~>BpZneY5$8SbZEezg!e%r63<@D z_)x3YYEL)01cZbD>3A#Bu5k)xjFAGa%AGaa;K?gZT{awBKC8uANMAmMZl>bpjxZ%e?Q+lBFS)VL%cxIdinUBg1R!9g%Zn{Y4xg8S zH1S6zAh##RS=MZ!YV&}bTI-IveGY47thA7>9+X&bdU#m3XOU|F0pyOsV4eA*sd1I2 zxy40umj31cEL<<@_BIpm)ao?GBoa4ftUf_~FLtsXy^CX64`S>s-Vr>{<~g-1E=1pv zyH8DD{14fJ5j0!_F_(Pf%15a02G3HycD34AYW90R_nSS8lJ>d$`Ys!Yv7_|3l4#FG|$8zzat!5ep>UHmB_Ew4mnx_|BxSkUjAk9Pt}^!c-9(+ zCa${ZgA_T^VU$GK(hd%5IV-mA;xov-f~>k_>@_*c|3{!P4V1$SrC(uW7TlVS{~vR2 z!X`;_mFa%3XN$T2|F7L;=9ys=NJ2J7()l9;y1VE7=$-m#4%n6pJaL3|-M99%=NB&!Fs>sTD*IW$?y6h%I}SjX^^AG( zw|-;PA79vYPlixO(Z4%1_YDnRy7(hhe#1xI%~yZZ--Wx2!mVFkTp#P3wXI)!zS@`e zu%2QanhVPBvs^2lQt~gqIrGbZ`WO31j?r(MM8E8FsieB%#u-S=eYlwG)Ye0_G~*b! zku_e%>pOaR7c`%_ns}%@-XWSLU4+xmsD2)CkY$Xs?_y&&jvna%6%viLG;(`c=JXm( ze%N|VQmW9Z@*?juykgz@r;Zvoo@mEdnY(EVQj_MUfd&Z28Ssl~R!GL@oj;W-SC`TT zX`RHMl|1&d*7!!f;`A4XwcrW^UrntAX_9>|PQ})@b_9G#2 zXG^=KPpq%r=qxpsM>y&kG(oT z`>h+fvf?eYA=@RFnPOY44WMj;!iil!K$c4v@s15VY|D-{v9vEp&a6#|;>rzC)_x9}SQnMx)*^^S+AKu` zC_5N?jzN4DhF*j_RXRVvh zH9WGkE{-EWYFCIuHqE~zmM_XrpUL0-^yltGrSpD4NzNn;&I9K$n&%m}bvE)t{UCr? z$-4;m{%)LWlrQvt6)y1uRaf|$4oKy&aqS8ZX9?K4+Ev&6dSYr4-~n-blq;GupoE~g z>-*W51z>F7YyZ!3t?RogfL(8G?%sTjhHck4w_WKQ>QlIR=<~Y*3@o3U<$LC--}2$T zP)mRw48zaQimzxs84^SjUCt^ZeRd|K@*c-En2IgJDI;+{o? zJ4W>dCG?!dGfOMir)+I~9i=QF-ryTkIs=BbZY3qOiEpJlZ>|Bi-xk2;fiy_b@{ScZ z7${FvJu#F%65mQm_mp`j0{J*rYxyYDy5ePh^<46|2@qgdXl%9C(>R5M`Dtx&RQ7~^ zpHk=qTs!MuID`F-pUa@GwCa(WzarUa1zex}3$xIU6e@4543eC%|Zqq5%5 z;(?J?ld+3q`?(^Z)J- z-};BZGk)cpIwsUC+sj`F63{8hX>p(Y?VtSQDkHf@bfW{}n-w2&q%sDVrNXaY)CynliXuvc)TpF52W z)o&jlP%yuFk4S5uiB+3r73xkB?Uwa-Fa7V+QM3A&i{k$FZmmGg?8jNBJjXEy9c^Qe zn&Na>=5*@AHa!$dzRI?Z@@-)Y?dQ zc5fSJZ2B;A9J$AuWXI@;KL&8yqXx3KCsqQa=1VN={u9``I6!(WdnL0SOK7J|UH7;& zsc_l%Q=6sz=2uZAS^h-3)%&Ae6-#`!CuItaS9}3jo3UoU_XgB){en=}rM~;OAT@jT zA;SJQcJ*5tO?ExQU-4cfTWn4sKn`Q%Wt`EvGIgi&J9hVv@~P9^=7Q=0Eo*&FOqrQb z`H+nomG=11)jdaD<2BvZrsHhCRPpv_`Pt9^F~9$PMr#YI7S5b~V@P#sn!{K(Zk;hN zRI)ALC^5Zhy@e5cSSp9@2OHleu=$BD^c0ja)x9L3d3j=Z=4I~HtQS#4qS zAa=vo@lD;e8Bl&i{V>l3wro~yo|-2G)%J{R`a^t36-56b^E7Hf^woK0->I#9?L#Hy ziwn^DOGTe2oom##{Vxme^}yxRy%uuuo}>M04I8#yV-?~kzCreJmO$Bw0}LL)%L2S` z85{8am^1&T(X%`Cyg~Bay!E&6BY(?3;F=ZYX>05cdRf?edF_Sbug=@1clgM2zp!KU zoNk*2=yQ9TyJwKv_-?4|r$76L^p69pUl1#^Mj+?}5E`=lU%M$7fGTEwgFc9wjNdW~|7{UthvT z)@8Yz>JTTEAMT$z*i!^Gc^$y8jIHF=gZn&`*lszSxU6-~K_T*uH-1+P#Q}-hIMo~aZ!I&Q4%0ZL~*#nSgbg!FMoE+Ma(MerXK^3BIs8EIbD|*11 z2CSS{vkp&kY1A5vPdjj`yB$t>)z4aFMs{XoaWn=nd}FM6sV(a}m1%(B+`1@p1I7WQ z$?cyROW6?Oz5jA!Q=$i|UrE^huyJL{ldjL9t{6y1YbZYL!;*k4->W^H{jR{4z=gH# ztUoY%K!@&gRrQpWQ&m)en-P1-(sRn*n{B8`YSP%F&embrLOhSvdNp1bjMKIBg=!%I zF3Ag0w&t=|w&V8vVB0oc`DzR0fqf9yY_hUm9aI_&YK0xvP#5dhRtZ4Ntqqsq7VC z>tW;SW?zTTSeXl8>jCTLl5SLc;0t-Rz@y(l?g5*=Ybq|>`d7R>-@ad7Wu=?9_${XMOLx0X%vJn}&_=y}e@CI(XvN(U`@sw!5Dp+Oh`01yC4L_t)O z#)kWu$zxPr2DYy8Z)oj>>OTVP_#fpT`Nn!L>xF$UdC$GqFYm*9eX_1IDK3m2S7H4T zdo9KnuvL_O05G!l19mT9%W4E$cGJbTEo`0EiubeBce8*0^N#|*^o{zK<(G=S6Ao=P znu#kgdEvs@c)wd}(0=$vm_6UPa>2Qj7kW+`Yjb@rl`mA+Z=$7jakj=4Q>L=D{OnaK zV{@Ix-0TwVy`6qIb}+jS^e!F8Ai5L0$*&U>oCx=D+FHbJ7Z) zwz4yOd>oaN?!{t9-g5=~eBQcS4)S|DNeGaH0GXkVFyvl`+=~Kmky|ES+KS}f&&nI3 zx2O84&pXzdq7P8@z)_m|s}SwIZd!Kcnt(&TTe!`N$EL(KnUGDk**Sxfk64eSa$ntrg~~_Y{lQOmD|j@yu~zGKvuohUyj+(4LIkGS`nVV37+C_! zq^I_n#o$A0cS^%prx&MjG?`gl?N-&7O%;_5*0(j3@6PcTw)jP=dpP}T4en>%c>2^p z_1tjkUyAFZv{y~jcq8{;BKpz>GBq@Ip}Yxe?`|};7tzLtddr&U2oy)`FOptB*!&%T zO;Gh$tjceQgNf(aNN?Li>M-6R-V;ds*2snlhjnycYx$e85_5E)joZD%(Hae%lB9H%j997S=k`Fl#Nf53#g2P@Tk{ zmwlOSOS+X<(`sH7K*BL_o}Vn^j1i6B*wRHxK)bc#stw}9Gd%p~!*BD`pZ#3AUK(C= z=ew8-SzVU&{6b^|$(L!a7p^2=E{7!?=|0b87&(J^On3^{+qWm%sXF1xIk-J)fmw`J%zI>Uj=)PPZ}8SaHBUXPSTB zorLK{0vPQONJo8YNBmhj7#m1@Klk$q=)<$x1!qMXIcAKFhimah(!pe>_}(7T=|!I2h7|3OwXltcsFS+*0gPwEkD&4 zlE+?yKjyHxOI!TREnX|>y%}F!s6db( zk=1r{k(X-T?D%nPeF8in_pl`;YvVDwMR#s)iLtG$dR$tY=$fd%$O}yjeTypsiUxoj zURtQE5dC>T9DwVeo_G9OnyzSr#kQY7KF|Mn=`{Y{583@#J`|_@i99G}pFI~ouQM-h z?0(3;&u5Y(u;b+#+kWS&{aX8uErZ~`b(r&xjjb&(o_$VB)J{{)wj6k&TO;1_IGTU& zt9R?|IL7X{>;Y}Eucf*(M}G2Ce<4uX_@b!;wq5xf2sil-x3&sy{5AU4-T1aCUwGxa z|Bw7FE57Y-o53!(y!f`evFdrQUUBI@`^7i32lX#hR$SS2>=gyxpX~@;YAgERKH=-< z(n3Dg^pU@9Du?&``mWx+%3=G|->aLu5@7mWd7(bJw52Qi2)Rb(u>C74UwEZqXZm=4 zuQsLs_rR{@&IJTE+;!i&CDHpNnhDJFR;ISEy{YVm$_uv*JpByd?E56*{f>G1ZCQC- zpnggJ4~_V7a{Pwqh$nw2+_@y-B=IB|Tz6blh9Jq>xMtO-Tf2ln0<~E6QVuZk< zv4WYWv@o=bzJP=_u0x9Zu8KjA0}%m~GGC-9C12cL${KUlr(N|zYP40x(b||2Zmo50 zs2XdO%eh*cb_!enk_Urq(d1da2v*~0W1x|h{0NWUjqMK5)l(YN(>SeV7;TohPWx@P zU_F&X_kX6c(T`oDSgrOud9}69)W7$z`KA4)zFeVxcdW)MPq=c&&24`k&Re(7YCMfU zHpT*i=M}_4{cp$Gz?OsfFb20aK_1X`Lte&dj+zSXPSA8aKm2sG(pRqfnp7Ntt)pRSKpCCJV>VM!bD9i3> zTe+0(3S7(I@t*QZ6Cj5W2Qa*A%`VSunK~)+jVc{L(Ln3_!|#8e)4Mi;S*+798pL0h zfgQ+0aZCO}@U6d1+33nOczgRMIY^xS#Z12`U{#PFtijX)a*Q;Nq1<#gi2PLOZ(#k+ zyeug7%pELq=P zf*TI^3lqSy-JeFV`8ojsvh5m-Nw;;_)xz2yW*2NbVNRray6#)v)FJyqAY zX_l1(%IK}keZOlDTkfu6!rbMzmIAQ-mbnZJn{VHntM;o)NI3Es_HAAFzp~RB3u`4n zrZx}2?b%DS8{-t>SQ=?&_!YESIr0zx@IUk0->JMNnD3(BA$<+#ojOws%Xm>g>jMJq zhib9w=1H)q)&S(Z0)UD<2R!-ir5a!!&x4%@sCeL(z1lWMm6gG^1uTD6Jh(QmHT17E z(e(DIevJKVV$+rf4bBx1t6W0718bc_?WHvqHut}4T|FO@-57Y(sdy&vz#r}4scT<= z@dwhLyxNxs@_sD)+WS_##<%+V^)I6vfAq=N0fXa!eNONmt9sbH(m+|EXK;=U)b|`& z^S*+@|KPcde_F@d5d85zcs{76fG=Kz47C zR<4djx@-18`L&m2-z9@FxlDYL5cdpl zUc{Q7z!=r1FpSGrY5f6HSW9u^xbJ2DC2w`3b7@O+&BHg5*PPRO#h)A*QZMURnyo&ee$0S|vSjV*^_3vz54flsQ-LpTT-Z&-S6R zOr}KNMLjm`z9bFTUUuKCT)hz|ez#xw{kNZUc7vl+m^%plDnzg_rk<5Q%>NKInvl3= zhMo|ou!PcV%^Ebap)^|UsA|F#15!fu+kCI-Mr}~#H;nJaz|&9ak``_M+JYLP((4Q- zXOvZ6xumjE84PUZT94q*W&jBShz}tbUEiG-s*|_&Zne$r7xd;Mqz`4`R5`NCKI#fU zX52{rwgUo;`gQ3=0!9bq5acXkjVumOA}Ac$nnSPtkk`NoxOT2C%5Q$yYf)$IZB{SU z2<6YdG-ak%?@X~`C1%tmSE#djr#CCWz!+W2_FFnBFaRJC?FxuD)Gl8P-bs4#Z#%ej zUIfGD;^sVnfN%)KLj4MdbmqZ}wheCp>+e3Q19rc~9KF-0v1+^f+8CL!a;OJ3XA!*z zWf}{V7b*}c6HTn*k8s*=Fkkc=*cQtd!_6*pT#ejH*X3KHzP&TmLH(uH3Ownh9e&{a z(?9<{KmGYX$8>sk9$nr+8Q}7_rnM?c^9*q;?1UgYv$8@NplJMtn1$h|hnK$g<%??q zc!$n`^3}oigN3DrVFQ1k2TTV_Bu7OIPU{v>#7{>TJPVGQi=sRTP{iwbY(5A%1 zt!0dJ$>LM0{5FxDSuMfx3ks}xv zs3^d|FfQE%5QWYo(cb0#h$uw`b-(jN&24*eKvr{ z8IHzZ>8Q^E3gq>f2lNkr_=BxePzw+B^e>ULXhp{G(Dvcixes^m94L$9FqR19OA5Lf zuZ^tY(0@yoaVLga%yYSFR9hX*dHO}6HY2P^Su#XAs&l(p<_kyOghQKyx5SHk+cb^> zbN50CZq_@S0mDrk#oeF5v{PuFkt-Yc{Z~N&xgZ0u0Qr zUq@yzYev31lE-M?VeUFFe_(2^4%#*IP|o7hD6w{BEh6@sBlv}H^)DdmEAGW8&VjaP z(ZmEoWf%{2Lz6~UV&G`Y!&c|SFVT(NdJEIfrMUi{-OcA3&08=~+_)i@$U6ISSebFU z=cF=*zn6(m<=x*l28>Zy#u1yd_RFdfR_}m+5jeEdFn2xk*Ch4j8+Sn8mCrr{=fkeG z7HUUG4h*wQaR}tp=dh+XVQkFfv0pZtIBO%?vwIWJJ|P{=J-&v$@ltnsUWPNr=PaL< z7`V3e!G{jEf5dnGWwC_>f9%!lA6?I+`;B#Lqab~8khk#mXZeHbpZxtVGUmC5wvwlN zyz?&kn{Eb+3q)wg4HBzfr#u5k#EI!vfW*BQ?ii{@R}8Ill}vM%c(uFvS6S&obv=jT zLSjZf&@&V1!a(W&Qvm$Y)UfryqgLSI z1El-C1*PG={#AF=aM>K|bn_R#!YuBHv`!Ad4`980Gg zWM{&T3mcE{WvPAH)o0pxy^Dp)0QcJb&)k_kddD?bivQtPzs*1W`VVq%(Ks^<04se7 zawPFQ=l|Ex;j`WMy%hryseHz##s<~BuIifSd_2pU+=`>`c24YLLseSnek>~-Z#e|R zrQb2CE1U|t)xpv#oiFh;ni$ndLv^N+uODDs--}I>Jpf}I%HJY2wJ+bd?ksQwAyFf4 z>^Pvj7QQesa6ev)6=#38m;eo(hxc3**n-A5eGdXxuJ)-G(Pr10JoDB*){h}GJv_Bz zK(VT2k3SDA>yACG4{@}%)@bcOu$G3YUafPuWCE3SPZdcrKCMHU$>%TChYJ6-ba{S_ zG0@Kk^I~m>P~2Y%25JtOjp_r^Ii!x*0@HFqO^%D!#u{98yY=Oo{4LQRKhxvhWTI)2 zzNHBLE|&UP<*7S{E6~a$R3(V7{7g!>V(Em zDrzN-TlrG3^nJwC&YALBi_M@zYgpRWXGd!BQg@VFcCZ;GBZ+`gJP)z_~3ZOrX5 zwVm?ce)=}2=hpvZu)Ge=l?I*TjSu};d!T>l|KLE~POzrn(HRIB9>|yDD&7q&p&QgV z(X_EFJsqH6h-5!31PZxuY0?23mtMU=C4|NkjeWle6bKbr>atTqzAVaYP8D2sz}C0# zn^NL3VN#H-_&AqpXLFP}Rsv7^TQ~Yp{xqU)SyODj6D% z08d|~%_*9><{{D9I#2hu#D$*G7`!Z%Kkv$pyVd$jz?H``d+%hG?g{FQPy8uuo@!w8 z+y0`JRadxkE_+wHvVtj!1}b0fqYO|KVBk15UN8A-fbzte47B&;jxU=yd~{r^UxCJu zwejo9Q?45=gtTHn)sDDga8$L~mj^DUp(TmJUPe?R{pOZzyi?9q6w z5wzQ)00RxwJ;rxNRk%QF@z$7h=Zj`{w2U9rGBbeO@tZ4-`c+oGpy&~!z2P_}PIa(j z-S3vlUhNwTTGO+J>R$nNjLPbNvxJHQ8&`MQ#}T@?OV>>OC8{qj07d_9@EZG%1-7`6;HPB!lUb)moc@z3)6Z#iynEbWas*AE1%|6-FW*+jPrdnvGI<@96`r13 z3(dcDeQIiF7-MR)1ZTB{%1=K#iVIMw2G07mHPy>H)j2C~nA#6rLhUOpJ2ljf_+wmX zZ3%2%%9?7CFGgd%7uHT_u7ZWthRdk9ya6wXUDR&*J}XRLYowMO!JoVvE1;AugiUlU z7;W^+n6)_Pvu2evWwEzORDDf~6Eb<@Q0E%h(MoTd1b^ZHTwkVqV;$m3>3#GU1*|{W zwtl&lr z<(XfqKP%hM#I}=l!mf3tJ_JzO$oKb3S{oRi?6q zpZeBS`lzs_D$1$Rr%#{8sPdzK5qIPBf-oP_xan`c`9Z3Kx~r(MK)Rs>N*(E!tt0+e z#397dLPbt;+RVvq0#kbsEnb!LoJ*C7<(dTbyNO0NY9&*(@3H2S*S$HV67BOCNa@wO zBu&?&5zHW@jwC=(;=>SFs*3mCPJJHyaj7}!U+gpwXP=+zzIP3$tUASv3 zwwGt$%*#3i&`!TjkS-jgzwk6BD0@4iARX;x<1OuM(CY$M zoYktM$&rK{!d({zL>^5T`bYKNj}2(o9NME1kmJVEONjRs`>AGp z7D;P3np-{Kxt8+4)o~UjZ<# zoo($o=Am9DE&#e)k2v~G5A;(VFqUA!*6E>VkNIaq4c?Cbl3)Jn*ZIf)*?%3}y4SU_ z3MPMw=WV+tc7^0Ht@Sm$5AzXn57;yic)~}0c`(M>aoZzc_7w*!A+ZbzaVKDAMh>K- zeypLpr4()b{mzQM%NQ!Y_gszpN38#p zzOG<>B?NfVvNP`(fLmC(`&1=t`&$MCsA_D7aA^$Ka@o;URw)0+LBHqGjV~zE>CSt{ zDK4lQyW)>fJ#2qq>aFb6Zu93u1bgp2qY8ndKMKIat`Sf)uw!THd!GHM#=iQRpPudg zUaYn)DCn3w8W7k}n*!`wfwJ%P?H4dID=^fVyN1Rdm^;|L-(b8HGXJ}Qzx~Ni^O+-O z!5V?2kUe(&q@NiHLA&HISN3RpKd1YSO3u`^K5LOxI}&^c!G1o7KP@bKY}@;NmVkas z10VFWe|FCvpr3FY^36H$**dl_igj^)PN+1`n6W}@UB)lSjt;aFdPWLj=~=N3Wwj|x zZ2jD#nj@f36#@_}%q>nmAU_dQb{Y^UHGXe?KLF#q2T@dq{;Zmu#&|;Yl_rM>VNclf zg%W+IMwk8z#R#U@t?0ezo(m?(q2t@pm`AX1AVB8xVS-7PPqw^84#+24mOX&s8yjOK zMD_JE81D$05y>=fF^%J%iaoNnXyEQ+LJTut_LQJ9snV@)>aOfm z*!?Vvl)PuTsi8K)uFq)R*VBJ}nY!#@^VGGr1u&D)JVi8M;~OKw(r7~-qp|z{R-kp& zuXsQUPawS;k_j+hF!~F@o0m3@)-Q7JEji+H$vH_ge1mOi`EA#vQ=AHGy6h6S7^ucA z+GvhL;pUS!?Jj?9-rkO}-SN>bj-^aAQ<->K%W30^Wz{3pw?IY4jWV;Zl|J~5dCuu> zz1keDC3_F2F~>%%Xy$2-LgiYGtjp$;Mk-y1qqsn0EIkCpX^i42N*UC1B#)(jWjMMD z)?Jye3f**4)Ct=cHm*(k0DG^u&Gxu#T91m_Ef1$Yve9K?1JZ}^jIs3;y$1sWWBXpw z{i;+5xNaUcJ%X17_##H@T81b*Oyx^2&!YJ3UX;PJR(Qth85bG@nBMQWIvL&Oa6Y=qG>g4r=)&)TdC*y7svA-+PbwPkmd% z?wwbwrc+OCYWoVKbg4` z^>?dNW2NPb-vclAqkYJ~YTUWM=2Ttb>v^9ZxBhFmvey`;>sk3n{IRdq7iwFm{^lE} zvhrVpSKF;$b7xD}x48a=(zooU%NK5a^Qvx+rN6H2Hl$I zD%Ivo?zy5mO6N;#{VFd8rsq)$S`?BLRbPl>PRFAmVoDLJ!jiROsRact#a`Rcv| zbNW1ve4Cpix^Jc{>Ccgf`yIdcNK%$$h_o>OxPCWj$*b$jq{W!fXjX6l01yC4L_t)- z-h9sKZzzpE&A$rj^H&%<{S4(iHQWCb^4a1h&e$7NZRhG6=k+A|SH`hfDViKUTx*>* zpG#ct(Uq_{b-y7J1Z}miv(%dX$WNT5B)Px1HBR+4Em&~&aJLPU-LQrjyO%=)4a_$= zrKh1f7uU9U;^|yoYuVK*bXik_=F-XTO|tS?o7Nij^$;(?_>EyG^*cs=bj&@fFFhsI zu#EleUkG&1M5|ml6x1G=dg3`O9f5G|F(Ek!g1_9$l8*N2sBWz}kJivwh3dQSb)8pv zxctP+90L^@_tq=UD>O&p*0(eJ%*@$1`q#b%oUvcZ&b91~wEXhRWBsvkVzugX4O+YZ z9CrE_Ct##Y-x9^JWngdo*P7W%FSpQK?PqQGKAY2;>Tk}NySf69*0@@T0wDE~w9cM$ zVU>MA^A|u{6Q4e7Yv9Z>f4Uz(gz5kUHk7a5aU}B>5SF@1lgdjKFKaaN$N+8jFWv2( zmh!bsXdsUK=qEpW_n!>`>41$h`#tq5e}oA7#nHXTGqz;=P(71ZRVsH!4;~otX?;_t z{VY8~7ub5t5c^PF?O?||TCaAMiDrJJVcXvF8v|qCWx2F2QDDor-Jz&|39W^s6SiJ5 z&A;u+eF^Zi{ZjjN$!ol?(UrlUihCOTbT7T9#qaGKqtJ6)-ZzbBF8e>k%Tn1Z^bB6q zkF&gGw{7`l?9+Q(8g>ofd3aCfo>Vb+X$b3m+5p4D#MY71ytH zF>F2T9I*M?)drh-xX0ytJvlsH_ixXZ@*8~A424xBzUJ~bKl*8Y|A)^xm+yr5ui!qr zKDduMG>&PCl66||DSayQi7DTAs?kp0tM^%Ja80y3;%Zf{SWg6VSW?#N{gkf-hdzu9 z$n;Yq`Xb35wck_%B#p{3H0W#mWj+1ODBSjdww8b8tGpuEa$v{EGGc2wwJ(S|OWIS* z39a3|uG#zci~HZuy~G|Vf2}()a^tSavl^=~a+lD>GgwB_#zY9qcOGk0vvg0CoSzRPvlc~mV9r4kWVtSK42?DRJB>&)r%x$FxNK&f(9U7{ex)yFYfZ6)WNmY1nI z7>zP(X%fAbvDal=d(cL{`vD9sRH5vn9jFtk9%vB~N?n~jW544_&771B`EF@_{nDGL zv>!{u4a-`E>E#Z-v{`ZQYu4^ydWJqx2gXpUh3m?kg)MHBg{w8K?18y%NC>nq+FS;( z`ONT%t^Md2$&P2HvgUvi`luZt$t+na(q*`#v%TpMflWeo3BNvp}XpFVm1 zwIm(7>9JFl41F4J z!x>W;a+&Az;MyFXS>`2kT2r(k_kc||9&Gy76_2lSAV-q1SeemxlBqW>v16?CrF3Xq zTi~iA$}7oZ)UG}c!9`g8*uu8Q`Z@kAfA`a0=70W6wXqfJ5x2c5G*)4>)}v8o+gDt| zP|MXv%{3FF=iM`U?RVnC?NjQ$-fpoyerR&=`r3B`_4v;8XEcE!N-3$`6>90xFaZyedjge_0( zXRhasLn>)}U})I5ul3)5O8)YPf0u7RYv&h-{(=zvwZ*mpx&6SH)2J0F-S=Ph_q$;w zh6MueVY_M9&!e+-JwJyuz3k1O#x+hH<0O8W-7oCeuXRPgII1_gl&k)|L-D0l`394# zEiLkW6k+FsJNJ&S=ApZ7i?K)bXbfF6D<|^(QGKDcMP+Tu!;WnS%BqqdDluEYRoH&Y zq@l8Y_tMtAl2VFM+>KLYbE!eE#flFs0 z*1oR*Q7D%$#~4(sjcE1Z7T@;7A7gGastNA-+s~i#I2)gp*ZfDVmLB>^E?*KpxKat3 z|E2g=Sddq160RJhBOO)Wmj`ZHn^F2qMLYhAwImg1j|t~Dhkjuw^k6W0I#!n#W7*oc zlMGn16(!)@&`UR>yy`X*T@mtug*a9SdHzOZ0@ZmJS7D6`kx_D}V@y;uMZD7j@Wj#H&Bw4${2wgnIw1(!8om|DBaf$DQ zo@e1UI3)_Af8zvfyWOz&-yNbkH=LdY@I}qg+P6&{u;WSwHVqrM7r?}T`sLk#_p;vC zOx_*8{u{dYLMBJNC55e9xd(9RZ^`$?JKxj#J^wL}r>&`{>;0Z*TkidAO|AE|p3+;} zIHh3sr*xrryfp`;&RLfA)*t<>&wKo1A>(aiM%={zrx!k2-bC@+=R1kKoVBL1UcC zPx)Hhuw#@1jj|-Q@g2EzYHuntQd$nJw{zV@6Ee^#|?>fEbN zPH?ZNEA(*OE844y?M&ngLn~}uqHB`qKQQMLx7GbvoBP4N$6D)i_W#sQeclr7p)zef|MLZ+IPb<&P!}_#XI(pB?`!f&8~1i?otrj?_h{4B zsLv{-kt%%)`Ymmibqt<(ON-lveEz(A-eXVdLl;3C$-{Uu(LM9B=>G@TOwbkefvyP$ z23Rq&=g==b(q*#cYZ9v-OhBJ8S<)*rDpOJ0LS?JP>$8M&Xr+tvM=FxhrGdp%6iXMI z*R`|0x|g)Z^TInP)JNOfKrJZ4%MpTyt4P0<(~Gxb)wfVh;f{HRvI0C~)<;o5t!|A| zzWXWu2-}{q2OfJ{v;Q@<+&;^?f#8Mh!`FUPR;UfA6G|84iYCTwb7R;wn;{d&Q?IUc zoz6aF5`D;yx$t?`s4o~@$jfM~n}x>T+{CqZH>cpeU*i{&%C#7~JVt%X7*1qEyS~`y zrQ|tlf5TI1T$##258?ED6-{rB>1Q9H)_moNyD?9FY71M(b@zemj_lYIi>?GHF;M?n zz_#CMd*4R=&bE0>se*^R`C6aCSnQyC*|Bf#RK3QpaViChqA-c{eYny<4)>C4H1FvL zU0)E(=iqaGkpKP{f0O?Z&bH~{E-fJ>G zuzT2^0$UdGA;@RO^F0FFUhUkws@3*QBfp>DozrT3c-s51k*>V(%73KwN+0pUVGY%T z*#twFgL$?-eLB-m?LKXP{#QTFZ~m}+`yV-bPqeMySqBNY{a5Bor?TcL>L2Zz2eu9R z!=|fmy+Fydi`BPR2?28Wxq|PSbCC{sk1H!QPGQqs_deR6$_o#AG9_>XcD!5z7@4X| zVpU{hjUknU068vbxYaNC_M`8(IL4NYUFq}OaZ0y08=vaWd>m``sjLy`N$T2c9V-PXLz?R8NTq;X7n7cJ%-PM#AT@#LrDmpWHGT!66daqRVesy23 zpxC^2()&|+`H#@rwruAG;!N-M{Ki4@?YE!ut?z@|7SM)qJ5pSbZ4sZm2;3W*X1KL_ zPJ9hJh2HU%Bj;6I3tU5=jTCbv2PuIsfK`VaNtC679Ll3%RReLD6aQKnVfW^+2}deh z(f4@L)IX>f#0Yj(ei`UYALiEN4uofV|*-5L#P~C@Xl)Dih*Z z`kwylK>_>LoQlVGjm;`MfPn@c@e`8N=kzZivG)VUv8sK3b=NPCIo+-R01yC4L_t(7 zp#99tutCe;aDfq?zQhXAmg!9b48(z8b8_P~aWRiC7kv)nAKI@+-RjD>E*lG*ZsI#g9IMYryB;`>wU#w)ne0PX`P^TH=Vc@5?A;MLYvWc;^=6DyNg+9A4@|6tL|FETbp(zi zc#6$gI{NM!;^<%hTl10z)HSAini`5L6AU~1)UI<~%+$2%ot)mi@<0xA_B?<<;YcFZ z5ADaUJrm4g-m50>%4cmBKgdsh_RIYISHI1-mUN!D2O}73*@QwInxmaw_Z0L1425YXD%0A-n)N&xEC!1P+-jR9jH>S{we0A+DBw&>lgY&|5f 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

D|P{IuEX6%UEF(DwYM47F}j!znp9jUcPQC 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%0Ar_AJl5~vItPlwC#9E8{y&03Al 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 %FV2Q`&}ykQxT$PH=e(epVE)Z6h5Hc*tD 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

dQX3<4 z?Fi$qT~e2~jsGl*47|Sdy(u&FQP`ugp4w7daw;1m|4wbc1OGy^R=Y9nazolur;3oZ zB*bePcZnZNf9V54Y!~~CX~EcF+o^-dS@^6u=mcHUm~+c>KkhxXXZHni|AzleTx-4{ zmj$ou8X@I#Y+mY-L0nxfwcYr!z4L1O^i#h{{7vuYrFQprbA3op{#<0OyvA+ce($}$ z%)}IBaeXBK&hEe@B6*=%Q%dk(Au~Q@fVNkxaR4(n&xk)Q){}1dmT%rt?=rS4e=kWr zUW>YX$EnYG``R7iOa2$H<1c)DU5#&jwm|Sg3Ax4)gOgXi&;Aea_L0{x?xnm1a;+yZ zqTW07B-WHCVy=PKq-6<120cSwumdDT{h5z}6Ik$xq81&gd!L_>&xZDP5LtR7OKJLM?zLP!ocz_!dxW4i$Wwx7p zMRn?IUg$tVA@(K4F-{6on>(GH)qOec3BUKj+MbxTh{JP`sEXunU0q zBu6wPX@BFy`T3oEa}a;olyrElcAb zK3Fj4moAKu+>Lb=^e*vXd;a}w68q;i$n*YRiTTWtgoqa% zi{2CmR(c9lyvlEMi#(Pl=9a8A6b3jeJtN@T@KX`GAol@VP5n7yd0@mu5VygISjV=D z38Y{<9~8!k=kUPXl(Xdw^F12%k8}2XSz9t(Bvh7?{^c__B)JbDw#aT7-TMG5Qn&)i zY}F(g$H8YIW)X}`Jn8(njWvTAJ4EcO{#b)=7=@Qm_Dep1iML;gu!Oys11H5f8(*L& zKM#?EPt!3Se9uTO-6W==h8|4|ap;H{|_v1@)+*ri8`RMZslF>pfh~2n>ic}19P{`Pxd_ai#$3ZNqe_8tn z&gGnMN_ah;`7P65d|vcJ#r)-f_`m-8ktZMANtd=mxWD-B(Ym6K#KQ}@;fLCimbS7N z9TK)p+rbXL1fw6QL+A3*p!tm7tSvdr`+KtA&0LuD z-S4~RZod;jGv9ee{kCY6TJwJrxi~MKy$vL8=ZuF+te&}#3~jweVp3C|Sy_I(b`Tl! zCPZ@J!Fp2s?L+jYbMR(i-cZ^iV=zjFHV_=|U9SN1N!r_9v3QOBy!FsKkp~KXV@BRs zY!{#o{B4R!t$u4lB#rf~^#tUVIynyb%Eqt-9l&7Mvq6b~*L>bDUg9SPi(Hy`mczX+ zVfr@D6(he5BRAA!nb^bY@p=7|zXLz~#qXIfY+t-inU^n}86pV=ow}-_PDTI>uh~&v z0A|l1bFbvO4}5J+7>6atn)ldPUE8MhY)?`qvWd7|NOfTtDph+J;5pg*^Lkv6vi3Sj*tK!bHX!Y z?TRlS6t<9%g9+2Q!#&%!aqPO1FI!1XYTs6M>2M#~xE6Mic&#lj*8#HbkaCK<4k*q! z(13*@E+Jm?9d`k+drvnHIggHckNNymbT2A)qznV|UdW76_o6X|d+)06b-F~)2MZAZ z=Xlb{g?7Fr>_BbP7Rd?5A*wE+Plo00;U>MuG>i6Jd6XeiezX--`p*n=ym}lY*zqs` zNliL0ISj7YF^YvA0d^ARah9_y@7Ei$`^Iy9uGPA@kLEee9!GOIgq}Riqk-E$$mV{i zOO`jm&;TP5Er-oKtV`o^9gxMBFjMMYjkH$4xL%hxn!#2ll|H$K@Jq)ge0W&7Whv$f z1E)S*kS8nMTY$qehv+A@_yS;_3)MF55->NL@kmcD1Rs2`pcE3fk)LS(3s}vU&r|tL zZ6|-Sylr;C-8T#qb)UIS$NqB})|u71F!re5Kd{pwtC+s>q7TKM(U$f5v{uM9H2H&n7#sVldD$@FdfU|gdz#u4e&^%#xVNl%hL4fO zz9s#ZezO()ew~NCNw?*eyYwc`TF{r*W-_`AAAA$ksrP;eLaTWNpRp?7WR$vPxD+lZb)cNR?dua%@e@vXy5V! zkqTpd!yu$t@1*Sz%bdvjmmWuGh@B=pbNtYPkh+|}8^XU)ei`_rpi8A+i6a9Gd){j> z${&`)wQY)XTw~2#;~a76@V=0+J90jG`u3&g8fQ55*s1aotIvNT{qSWG^S8u96T*TQ z>sa~RPL3l|ux8!VwF9LtL!Y+WItG^UA`jWJeu+ZeblDBzpA&*j^(?K z)56y}$QYHR+whj#alqgmkhJK`@tCs$N0}o_QeM!~Blp1gM7|xofe#0Cc)5$|AVpFhH*+F%&@=1YSA&I1qvxBel|>5PxN*_W z(C7X#Loex!wpoz3!1bbElRXRT9r9Y(++j@nV3kl>q;cN5xLotfEyFh#waq=+m92N! z`@#3N1^-*ujT07`y=8{Z(kLwC@){uF$cm2Ohqn&C88Ce0NZR#l<(XkWBe0B2Z%H{L zDc2}mf-#GI&WVHX_yaOOJDfl3UO-!{^yFR14H|WzVQ`E?)l<_;!+uzoY9ZM^M;Kbh;MTs(zl!vq< zlq?T=p(~^ln#=ij5aTgvpUT@?)#I*(jI+Y>cbYUXU+TEk2C;tiA z!7nHC00<7X*pe*1eSG-=#)8sgFk@UG?mLLUjtZH0>jW#FxaVqhcK7 zZ~J|%{or-?dhH?qpq`I3O5)u-_>l3iUK;29n^{{0iKDk2h1Bu+aJXJ<24piKaG%iw zfoJY*kUPPMZ@^O%kM#m(?L?-<=T&o1O$oAP-8G;VC%W972e-JqO2T69EL#Y<1v^CjDd z<`A`%8Ew;c<#>pk0;if+y7iXGLoCZtu|afCh$ueD@_}DgXM~}jXxRZ6I8?#|Jj2Zn!~ySgpxZzD( zB+5~D1eUhn@F&=2xc$x`EHlqf=a&>m=ixfQbqBMA)D*38w4N7!8U%iix67xu_k{K__W~4zCZW`d*GX16V^Jx(O)RoIJ#9~<(heYn{(EK12 z3|t*NgNQ8-_~oOP5LrGz4~Co_#!0Istu`q$v>m<A%Tz4q4lCpa*9 ztc~=Z*xw2cIg`s+@wT#y$c1!x-7Kvy(8O>N;QN+jrcCH8x(v1Cpm`>*hle3l97e1z zO4HoNe-SN| zdtBG8FRo|eYpo@MByI7wF2sCt#-7T7OUjA9VdyI*t-Qlq&NKKxAiQUJEx1P6K^e}t zlS+BfQLjA{OKokfeuqrAmwfXpwN0x(`42gUSTOeLqg|h5dApoq^g&D6ZE6LJlALyFyML4q3+U+#yBW54$@f(-=Kw|D4G3cb4RWf@~qo^|c&?ecsMAbV-q19GHK z`z5!Hxkl}*EL#_0rkbR3^H%4RVT$ZPd#fU;?e11`JuJV{wY?Z6**A_%HToy_VBVt> z?qY6i>w>SRD2Dhk+fH6?4A6so;NNFU93r6AO zQGxt|xiKbGda`w8>`r3c%LV{&HiRM2!>spmqv*sW>Pv*6b?ET^Jo(}%i$pG+c#f3k z2@UKi&Tlvg%TWGim_%BawqXvDI{rq&EqUSOm)A1Z+tk3wGwmz^cs5Z2+q zaO1HAaftU8)sY`2kZ|3p!cI9+_Z+-LZbD`MTm(J{jhsofi-n+r;fS-mav!2~PrvyGk;2bY6j?vF#8_i@V9sw8#@-gS-mutK)AXyJiKiMz0VdGmmnmj_D(#Eu% zI&C!sCAXM=bF^11{+2K^U4`yJ!YP8_vey; zH`fq(`(is!s(DHAF&9um;?{V5bB!a6%>8pFV2tK{r2K@lZ{Fkf7db9Nl#bfeqG2Yn z#3>++(;t?$)WA5ta3{$?iDX5lDN*i2`$WTcVBVap4TAlI%Nl~>SsqWiT22lIta*=v z;iUeYP`~I<-lP3h_gti7QR3Y1L>!dyhXYVCQU(K1<9rSCm2|-O|L5S5A3R|G`s+u& z{Ou)wK~VmItZt4&8;4l;L>S4o1_J3Hvg=&*W*gz!>jEA6lG?IIUCYw+`XF>je#V~| zcnd!uZ1PYO=T~lolygkVOZh8zKkL^drN*Iw=kT)UwsC->C2fa79!dude>|xf#<@74 z8nm;OpR|3^B6=RhZ$$gFd*~w}B4G`~{L)0RzXK^_T7QH>hdx^S!ivlU)$&Q&*ehQE z%yYt-;I&sl8xny=95@rJ^Js*g)O-S<(_c9gN=APS@RN2l)Po-(B>A3e;910*j{G2Q zq}gB6szGr5a*bwxE;Vgelp}hL4>=H1e$GWYwVuyW96Hn6Gse&OhpUaQ>$c$#83DGK|P)6+1JV2et2v`yPp$h8uyF@ut0VzPeJr6S51^0gqvL0F)c zMg2F_HgylBb7=zDh)GEKYY0yI3=#9{%PzPN>DjP5T=PMZJiv+8fyAB>>^0TRGJuX( z4fU}d12u34fTU%;Ca~5Ba=VN?CJa{|rNL*R_pIQmt#t*TI&k8x>pg_{nk{~k=QgPN z2vjPx@~&ow%n6$Z$yK*)#`)q$zCiNg`Qxy+Nqfli;jdSEPV9XB2UU{wD zXK&sKBMG+`#zHtVkyyi}vx_ywGL(DwU*)b?z7bVSB|5hBMXUhY>@4L+XROfjDwKq4po_rBL!0A7sAxVDnGDB+Lh! zAAVW*$`f3Ar6jGgwIo!Ii%lq`@i!g*Hpr4fZByzd*bI#I^*ma zlH+zc+&?Ru6Q4p!&`AD_<5&wCE+FYgAQb|GI;2UzbLBm+IQzIsudF|Ir0ADx+_GHi zh0D~J_z*-5niPJ=TLNT#=x%)QqRwI%!|u@A<#>tknL+6wUpF4E*4{X5E%Ui4APm+>r$TB)Y^}d5U+sbf0c&^ws?Gl^GP#ni4 zoz>+nsYz|q7STQFf6y~T5$1u=la%9Wi;eSZg24W<)3;7SVYsIRjTwd>{&ns7JlTH= z^dtZD3pCHDFEGChc(VRK3G>F6P~%C?13%=D%IhrXz_AwH=IM1AzzV=K=}i^l_(M48 zuB%{2zzm+Wy+~O?Ptv@HdDPsOb&pQ~9iTgpT?qI2i5N16#S1HG+3VZuwJlB zq)JP0b|^`Jxx-FOGUygaxfLKnHdpfGS%f;CHT%N>E)c{-m`n#_ z3Fr+V2Lg^`a0SR(H*qt8B<-h1X0$gZmj;f~Bd)8{F#?sCgWAk=m9&K}12RaGCf_K3 z9PRB(71Qv7D6vxDK-qz0T^V?WGQ$&If3KFrosO?(P(8Sq#h*|$q+tP$m?YBbMYaJ7 zv}B$kke}z^B%&M}z-sIev2g8E5Ebjp4{`Kw3o$SKmM1ysFK#|cj+?opQCx^A4lS$1 zbFPx|WtZJ#f1ViGfe2=8_Y5pY7PGAxo3kt}D-&a+htB5)Io3%m7zYVqrk9NK#^f^P zphzZpx#QabT#IIXBjG-v2+(&eW1gi2kw#-7q~vK?F9K!uMXk3wI+L`?#YYZH{IFvtwF;V#M#0(RFR$gD&V8=AU_PptZg1|KHuq&^JC$0*8B&+}}_Ea7pc zL3CuE_e7i^W`CQMZ(~A0TKy56$fh8Qn8k11TDnL_hhSH*5a&-v%ptGlRe;)+Tlht7+388(EPI})faF!kj4=mapu0abk^N9@e*~SYzqL&$3-z!~a>U6s z{hqV{cxb*tsVmUT&t-4P$N`nTJ%bEIEYzt@R|9*ms!~T-G-DG%E`fZXS z4(CwwpbZfd>|wOyp%iTaKj)xlZ%gA|`7fM2R7(jx*uAIb!UX_ohz)9klYm7g7 zOBQOG11IXAJlJ~+P6}As4%tk5$>cc`ch+X)m9H&U;_11Sb5hvO(7~38DW5)1@GaL4 z-yokbh_Sz=1T_xI(IWoDwd4gf%otQPx`3H4`Za9jd01yC4L_t*2`Yp!M>b!mjAA1#&YX`!g-U;j^4ZS?s?}>invrb79_kB|s zZM_9C747F~4)Lb!XRP%2AZFyUA_Gl5xdnhC?SjuW$%bSQjH&-|LEc$%kfFtbFJ5DELFYU>|MY-!$$90#!sK<4Yj6-88@;QSJQ)fxLuXbN1ThOD%EA~< zj!cEd@wuP2X)F8(Iw?QKNKXkE);9J|bAKe~iWbB-l1O6GPU{F9k!$$1v{;yzI?Ni=qZPQADhjCKY*8`JB2j&cc2jkR1_D{y|i$okw%(OURce=-f-UovpZUoFQ;iddM zw33;AH$G$_4n4hiu0gJr(-$vJ3#1i6 z#A~oi9~6Ha()rQhB78JmT7o_lM&BfimX|H>@!B&^D-%ew?1qPJCIr*$VSsr(Vg>a4 zZ-;ZrhmORT{(K?egOMMQ{`%`{{@wHw!;=qJQW(d3h7ZJuq}WH-Iqs%YtECT&ZR1Z| zl_6zG_ZEM{Bz(d+6PNGGydIuk z7XlkQ7EXXKUl9B~+m5oakGZ81c?S=tOoox| zTlcnUr3ZM2$~C(E0P@;@upbe)vZ8dU#+X+~(p6GkI-wM_=Y0T;u`hAdYhp)QTgJb& zNEo+Gv17Y7nhw;oMG8DK4%Ze@Fa84X zBR{yWfAAMG$q29Q^Q!Ui{EX-IA>-InUPB#wf|!=X7|!(eO!%|qKw%Jv38CZH7TJc+ z=;6K{8YeKUj}ISq!I2!$ovrc8V)v=4f2U)!(sy{O2u<|8z{ej0B0jDtyyi>)RfVi9 zVfmOK^?th{94~Qlj*1VM>r&bK83In4%$c8DqiGAcYRk2ov(4gk7)FcF)RseFnwlcr zggEn=Ue{$TEQXJXWuDKzVlYG!UE1fs%E=WReV~_0 z22|{cHXm4Fh_wy#MO&0xX(sn3}N6NbMkgd`=JR_G5J>ibSfs*#^pKG*YH!XPR9cQL^hPTMzq+~CB zV?6N+0bX^p<7~}Uv@Q{NLnA&On`=N~ssI**$uOJ;5?G;wp#{W`c7mGM5Qpv??uGwG zIMm|ZVwx(6nnwavs&exloa|YxUA$c`I#&<1ZFH?`ti1_D*y>=Bp5ytwO zrN2Paa}N0V@Y&w1hk-2}*^vH=TSN+RJ=0}-iyfx1-3d3>_?nI29`t`1QZ zOx$ZVy%T?kv#6}yJgqryO4>qU5Je6$(f>gYI3N14XU1(Gg~hn$=|#bP?~M*_J%slJ zCYroLg^xBo!N?vWWe3M&+m~I8m}N0iO>%!y$YIU4Y0DN)%1>r=S8!v(9z~3M&X+BG zv8j*EM3B1vk_psFjL6gJAmP(COt78nv$jEsoaTw|fzLnnLH@yg``3>j`O7Z?kophK z@ry44Ozw5!Ozc1T;XX3{Ny0g6@*HI-$lP-@ZQ($$7Vc*_R5`Hxj{EW>XL+^){SCJS$%Ski7MoFVg#Vx&7 zjC0;_W7@`_ZC}V+YCFPS6_u>KdlmVl7P}MPj=(i|_&PGLb*|@*YwCI9+ad#Ys9ZA$ zdC#>O8N429@BY!)f11oahfj}p1mn0_Rwxk?=d*h;JM;a&T#Q~;hs}Ia$@eJ_JT1>3I~Mv7`{Dg%+5yu4O83uaLTt{q zve|>LgY64sE|~LpC=RK&P20DQG`%kZnPX9Y@P}(S2j_hW%p|~xf5T7hBH8INWRGjJ zvo`U99Ivp0LkXsYn}2x_NHfhtfy~K_0{rHkAa!773&1p4+q4B`;-b`cV{p({TE1k* ze^Y+*!MdzR*X(Cp-WTpIdFUPM&xJB4|8F=s7yB~9&{Kc*_4xkGNQhkfh=0#%>aKkO$HZ7EjLQHhkh4^sgJ_iQgZvPezO>TCA ziL_{^j{5Jkw3!gz^mUDb3`BfBMnn1!eT(L38#laDaq0*+AC`dG13QAguruwA7vnY! z_O`F7wYZLBa9PRYYHuIS#_}5jC8m8mi%klnhcZ}D+oqf)on%IhS3-cTleFDB(2v>v ziF?iW!FdiV#J{lBb`Cb1qnQoxX5;d=wY{(FmC*wCjh$jo?2s(tcz6M)v{hn};j5 zpRaka`i6h!d%hstxiPps`<0W5D5?=3h7Vd9Br~?(ddbmGGFYN-yB`OZf#A-?z4DN8 z3*#s0lW+#vqix!5<*e;nZK_70Yi z{zW80KJgeDe&Fuq{&;{6W9KN+=VXtIEZdkCJJfETz_UlI{7FfR{uvu`dG5l<3Hh@} z3&^A#FAG=k!^y$q9^fuhz_hqVxFa=f;o9zrRTY_P_+bR!XR5sEi@kl`cS3o=NyZeIMEWT#G|DCJ`m zv`61@c$4Rmi~X39iZN;7+0@E2I4cvKzI;C%!p_7S&>oMp0}e(AaM})$ggv;{@t z>J!f~kwSHoX^`ea!)t>))53?06Kjw2C&R~BH~#n~Iy{tr3a0s#d_g=$;CJ?*dPJR8Pn^LTXHJH6CzK}2NL#MvLq(8#Lx#U;&O3m zfy<>ed$M;m?hAIcrKSp)Xfej?>%PMqnjDiJzmZYWhTVtpTMK!vByW3WY<*2%_Dvti z)(C~YUpAF{cR_&`oi5BBTIRvGMMs{R1L8Y-1pMbDh5*k=m$F>xya$)U&Bc$&R@!n4 zeQ@lNZvCNTeA*)9HGFXLEZ7$IE5U5oLL@ZdOnID(@{LjQf$N*6Eg!&s@mtt${-W^3 z!`L?uXWzUA%q7KvKxas6$nyRLWuIxLXACL#PSQN1J#zPXZk$Xs*YVv58FKRwJ>J%m zvSPU8+uO>G^MdduKG}KJk=64tJd;ih{K&O?y;6RgTyVA+>kXlsr&SBRa9V4n-8v$B z3`DLK@GFTV25=m94NSx>Y9j54-j+Bh1tVtc?g{lZ#b3&J#zv{NOOO?zHHUt1bS0@o zNT#-z3PN%^A1f+m@+b^pdCHP&O}#PT4+m@UA&T8{2K3DJ^nM1$$6)PL!Iy}%9a2uP z;iAc&yuZBnex3X5Kkm8z&i_!J+cDB2e!hgl1C?tQZ|0PA7weU9Cc!4PMGqnznTfpg z*srq$Jq+xjA0$}9>!MtHf7#@3Fxi}2WT!N&&msFh;;^>EUyJTinu{+YyTSkg+IQ}c z5S8PFxFo9T8*)!1SQsq=G*_&wyx$lp>D#{TN6gN5vzL7zv$D0x8obH6r`H6-R#^2g zb`C9Sq|oUEY4f@~=P~;D>ANO(1)kMftRaojb>XT$g* z7`|zdA7J8^!Uyg67cc?z4&Zyn5H4&3nqA;W;ag}6)&5c$MnEPdEWP8^q*r&`mKe zaTR=M`%*Y^!Y`m{x2E@{hF8u57Wvngo#M|Mg z<2Y~}E4tJ_J$Y^@Eisr|xfFZ~Z9bVeRCye$xyCnpjBSfcR+l%~&O@S}zb^8vbCNhP zr$4cFJQNS6UV7?afj#jfi-O6X55Aixl$#Hdr*HjRoTkYThMa#7UH@h6L>Dv3sDbcf zx)+W&zS%x}yg57jV8{3yyT}x%5Ga9b@~xodR=1I%{X$#4;)8qUPj=x7Z*t)U@bn+D-O|IBx^o23aq_xWNeX6 z@gZxc2$IALeDIvr(ajmXqdz$D|Okj}IYaSPA6L)9@YDBw(4dVU5+*8E8u2PyQ| zsRx98u07%|MK@cRC}57lb=0%0v;?BLm-a0Kow?xBn<33?Iv2>}8h`}^bj4K46a@`> z)45MqCMbnVkB<79V%nq)?k@vdey`f`WuHu7br=(rl`}YXT5X~dCZ>D-B%tWt>Kn$x z>6ilB_mPvfhr%$gl)>^EMUr6VfIah|qqhAmZr~Kw&YJd0t1S4YT^0Q=Q*TLA+jqRc zxtB*g%ad#G_0f(I_AeaMo`kHq5mDjoQxn6~lXHf}e&|Y$G&~=pAiO!Sl8f*i+=}mu zdylQeppSXW32CuC94qf>A!NL&TN~p!y+YVJH(P1oi&H$ry$x8lDY50 zpnPF1-MFEsCGF;zlQgZA*T5TD>%x{Hjxd`VfrcM$kT4ch=$WKL6qOKXZg~xRdp}b9 zNH`;|-}}Wr=e9_|^i4p*`~RKBg?JAA?MscG{+k{gPm@BHm&Sy-9x6Fnl;hnhuW=bj z72&yQZ8f>D7u3@uKU#XBuY`wl-)KawHRPhtG>cF6Fz1%c)zBjEb=n`oTCQBJleEZr zj}}7?AusAkonFAvlcqWO2B*}Y!4kx@jbm~e09{~n-sjZxkRCtt6PR4?pHsnq zL3ZT7&mLm&A?};s-hcUU2Yrk2F!u$&DLABzuvSS=KJa#*cB@X-1*rAW>5-}+oGW4F z`XD9PS&|G0yVCp*?Me$4iAeI5lw=RuIZGt*@q7Hky@Vt6TD-C2MHZ@!jK+PlhV)Bl zC2jMJ_APrKwHY+JXj}Y? zw5Pe+4z|ysxD&h0XH{Rp0jHfa`3GmC3}=J+;mpVL=Z)SDWDea-%Vk7-C?ge`oxtuj^muwb|`F9E8qJCoY^+* zoZ{AreQN`~7i=5=9n%|VTUP7IN*?f{bKYJXBn?Bf$2D>Vojfb$=ORa2d>%q%E=h

@nxIMVdk&2TiiY2?Y3<$EM@re&H13 zJwwvO^i%vZPWhpnF^)(6$u5$(rx$9zp^X?B>TVzNZv0u7{gLC*AKt+_>h?+6X3pI- z#L4!)wiHIYW4!U)tACuk{S%r!VSi@h58dkzsr4}qr(>?+h-Yb=c2m*>q7Amk>)1Dm zcN=-e_EICC40`s1_|Iv(#_G^MlG^X2?M=kcJwR_TH3F&%2Iu%S1Fv*ie9 zhj7($bCO^|s51*D1#G2YO_L7Fl;ZhZEd{}$T!5q5XwSUA(W7oW#YE)s5%a&VBjZ#?Ig1^Eg*ThXAgU% z0=2kd^#AFNlXYQ#nYx#RZLvy|DM0z>AgDG2e|#QsdckIDU9(hFBb*-Ty%@f1TKEn-*N#?fwWjvyX2Ew7oShj9?1A2>JH*FB6s7;ahACTqkN`-z0j*`7QEEn>Zo zeINIqM6?ao?3e{V1;Hb6eL=l4S?Kjz#R&RY^0Jp^Klmm5qBmb(cYZ-%JPiKg%YqMp z+9g_;8Vg~0ru3=YmR7AzHLzq+rQ;iHpfK)}h-t;0x7qs7Mq+H!ZsGwb%nWPkCyKN#ig}TWU2dP%=F1WhFOfb#pIy zKY3j@t$g3*URZMveDj6y*VjV7qc7WlCpY&^xOOC*@{2m*KC4u(apE-$qiq6Bt1dx@ zMoiL{&`o|>x^_nJFxVry=Q1?NqCPljS{AVOaAjz*w-6WLWg+$p{KsrLi}8cw8}v`7 z8=HH(z|Avhkh^e}aQ0lL#25jX&Hmw{pwY=Vh7Diu{?4@;GtcnX`6qIPmBKU;hl@9b%@3nhrDnaLQjl-Ib@GVmv7|ntFi2F z+-4cK7MvM)`GN~m#P;?{bf8muiG%Aed(+PQn8oc`-ZpK+64v~45WILES@~wCcYL z$jRqfi9Hm?NsMGJL$s=fxJ`KtKW{T{YW*3=S%RNXnG}vw12+}op5jBsL)b>$R(r@g zT}&u0k+6Fhik6muUeg@B16Xj=2{K1k*$Tv)vN|Ql)i-i;nnaFUa7^1cd^;J(Se47O zVNHWj2zliVKa$)-hsL_~h7Sdctb})OmOU3f($-k1zhF-Lm4A}G+JI*uJvPD~@q=4C zd2H+=PYZE8hHSrquBP+Cq+juA!o4K+)i%Q32fk>;!tjF&OWMYtIXh!r011E3PAGZ2<@qsg-kb#7GtVOl=dwJ!r-6y3f*A4z znc5g>jbCw4gRMozHKi}1RU(kUSwTE6?4X}{+8R7@UW0J0a0UbC%tj^#ApW+j`#9!jWYdza)9{Y{9tQ6zQ$U^c&$mPMXDs?oGQM`(wf@hVQk)- zBWd5f!FKPQ)-s>}r-8~t*kc_zG}zky`5aAd?vw9x4R3OOaSgvAxnKOgxY*y&{?eED zzX9MoK)&$#Cg=0MH`%W%%ewGDtIhVI5Pe+KrgNlhGKd^n!zeMZ5GEV4_uz1I$C-~7 zL<#?_4SfaZ+nf5$j!u}7TpjJ9bZd`<;3~3z{HpkDNimC{pXYPSKba zLTsB>0%KYUHnZ*Kv+m{7zLD(sWH?J4O=XeMW*pP1FnQaiSA`)tL~_;`qpfXP_Q_q4 zCPQ)HD5fa>s1#BSj_sBZ_lqD5{Mx34(gdD*CdtUz!{5|2-O69rmHsgQP>5KNv-p|6 zC=#~?CfcMYAml9|pV@ZaB=*DZB0g_o&z?r+T?yODjCDQ;R9fPp%d;)WkV{UfEn|62 zuZwSFJDqlVo*bJeVvXk#WHne`qxc=5aQ*!4`9%)(hiIQ3tRe-^yhhuR=k><{@zNdp zLe|^Yv3=^c$&-+@PUtLZ+dk^4m)KL=OkcE%I9O&FwWeO56$j>6rwV;s{tp{3gOgsO z*`tLwEf{`DlSB63s(b#tH+cwgH0FqYO>W`}kM`k6@V)1beISwh5w|a^umg7W^7$?aTddQZ3I85HGcP{9)|m9 zi}aqHO4_DCt*Zj$ME5#8BqSMgb3LRvf4;zdz33~yxISN8r*CQe63=VvH*)xWp_tTo z-A@Bso-@ss>0#TFg1385c1mQfAlYCT!&eH#1R%$P38ZO_uzSFY2kc6+l@1SMjr70k z3L&xN0v#nvxj;_D?BwQk_MLAKDrnCG$ zI1Ns4ZJ0!TUHs!e$(pud$urubZhEj6Z^jk}elk+ab}j5GWe=Nko;ieL+b~m&ht|B7 z?DG%|*M0erx7$aAn1rEi+UA;T+n@}!McfnyQY6HWS>(SF=VJp{7o5r7R3Ij)S^qXY z@z3{SeM((<(jr3$PUz^V#_Vx62G(9c+LB&PTZAMqy&lTPz{KZ#H-Q%lar!C_2}+~5 z*DdVN>K~q51NAq}dEhQWB+_5z$*qr+qqj}l9|4}2KGLVfIzJpyJ~7is_VCK#g$nnY z$@D)2o9nmE^NqS>yvM3MG;wtCyiP2*3?;F$PV&c|kA!^{Zlc2w5vnlf6r>`qvDQKu zT7*c)cRe^>%Rt_+GK5lyx(ia07Jh_eT)1bvkk+b3$Q%;lYqp(`7l82c!4}E9;Hk@- z#sqe2FHrz(({^tJ+;6W5x>y*9v1j-kjU4-eutv5LBKOLjhYWzh{cXZdoVH`s0gxE3 z(Nk)!5s-e$a>-E1AaUiIpAXIjDNkNw#Ys4#0nqdfpNYXgFJ1T<=P^Y8>7&~PnMr@> zrUPHavO))#+xqC;IFs_@27I%F)w>}D3qChuds z;sD_iE*@xAk~Vmg@_K(hoT|Q;&`BI@1I7ahjd@O*Zyz!j@R{Y_Ibv`d3XbCfPp=Gx zYc`~XV)0&r&u`4}K`*}7|NfV>PG~{O&3hE=%Jdy`Txsc%7`(X#H?-!r#FlB+PJy57kTcd{@@~zvSa{x z#|K~gVPizE+{P38&7t|vx#WKF8p8G;Ujn|_$Pj`ne>yWE19NlqAuqh8&=tUsbXc8&E4Kb)~+U_Rwx3`z8`^Q$#XoL1d`B+9o z{gHEAFRoLIg2SvX<76JrT^$<8pe^8?Oc=Ii{{(=U*RU6Xf{;#;o#sY2&5LF)_&Bvi zucN3#=H4WpTqfIM(!9qf4*JS;aCP2AuMGu&6i!C=uI{9+6~nHOvZUsT#eYYQ>}GUoPGfY-ubeTW6O{TmzoP>h0Q2+X-q zBxO=C@j4h%=GArb+sU$qMDO$B#@B=kPRTfw8kK?iizcsWT<#V(6CM}IkJKng?1&}8s50zvV(5@e`Fto%M<4s+2_)ixWAC$_{ zIFLj6p#Uo1`jH1UB*~&T@kOrCxGYm-k-;WbMvrHJ4!W@4W*360^1=E)*s3rtU&C43K#bc^VjzUGmvLl>IyCHUB2qw8~XuRWx`j;=iM z6rCJ$$o{y(#FGWxtT(;g#?doS^pPiY>*URHaq}<0huWrX67NAe#}QCL!zw){;mD{MEcbh-Oq>_LkCD~G`rJrAVg``+*N)nfe3 znY!bo)rZXHIArZGjKM;##Jsy-_QoE*xd-f9a-Z%)J~Zd>#W_H;*YA9u&G>-J|NG*+ zzW(Dpzc}x2>Oh<~txS*hGJVjlJxKN;zv&E^*WN;+$8&}R#(OK1Bw>eql;F+zM&d5nLCuu_wWjd1RnkQXTnZqK{-OdanxvQW-l z1Wu=juXqsc#z`d6i6Up>YfCUZ4`yeagT9LmO)fSw?|W3WkByTV-eL+iJA^)QOH@DLM|EmnL3Eikfz0x#1d@9Sj(NE6JnUA(}aPJ93)UB;I)G}Z%IiwY1$Vy;Dvo7cgCvJf_r zl**`J?99aIf!>(8w2d*2l8>UqXj|EREp+_o!`$}7@o$V|gUJCGKGQ47#EC>@C9iR~ zk&|2s`e3D{%;$pt@ei;F1RrQb&Ikv!nEwZnXLqmDj@fm$Y>;~J3yyRGwCG`}ZWxoaGCr+zq2tbW{I)|2T! z1n&KSH$Bh#=GdG&9-Dyz^llzX$t*vlALaCjxwmoD(aA81e#VX+L42`y_dgD2S>Xq} zsxfk7K(# + +

+ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/IconInput.vue b/frontend/pc/IM/src/renderer/src/components/IconInput.vue new file mode 100644 index 0000000..eaffb74 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/IconInput.vue @@ -0,0 +1,165 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/MyButton.vue b/frontend/pc/IM/src/renderer/src/components/MyButton.vue new file mode 100644 index 0000000..f7ea866 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/MyButton.vue @@ -0,0 +1,187 @@ + + + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/Window.vue b/frontend/pc/IM/src/renderer/src/components/Window.vue new file mode 100644 index 0000000..c83d7aa --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/Window.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/components/WindowControls.vue b/frontend/pc/IM/src/renderer/src/components/WindowControls.vue new file mode 100644 index 0000000..a0b0f12 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/WindowControls.vue @@ -0,0 +1,75 @@ + + + + + + diff --git a/frontend/pc/IM/src/renderer/src/components/addMenu.vue b/frontend/pc/IM/src/renderer/src/components/addMenu.vue new file mode 100644 index 0000000..66a61b2 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/addMenu.vue @@ -0,0 +1,180 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/contacts/contactShow.vue b/frontend/pc/IM/src/renderer/src/components/contacts/contactShow.vue new file mode 100644 index 0000000..78b3790 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/contacts/contactShow.vue @@ -0,0 +1,82 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/groups/CreateGroup.vue b/frontend/pc/IM/src/renderer/src/components/groups/CreateGroup.vue new file mode 100644 index 0000000..3e2a68c --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/groups/CreateGroup.vue @@ -0,0 +1,113 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/groups/GroupChatModal.vue b/frontend/pc/IM/src/renderer/src/components/groups/GroupChatModal.vue new file mode 100644 index 0000000..b6ce216 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/groups/GroupChatModal.vue @@ -0,0 +1,256 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/groups/groupsShow.vue b/frontend/pc/IM/src/renderer/src/components/groups/groupsShow.vue new file mode 100644 index 0000000..7095cf4 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/groups/groupsShow.vue @@ -0,0 +1,81 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/messages/Alert.vue b/frontend/pc/IM/src/renderer/src/components/messages/Alert.vue new file mode 100644 index 0000000..9c5fe8a --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/messages/Alert.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/messages/HistoryLoading.vue b/frontend/pc/IM/src/renderer/src/components/messages/HistoryLoading.vue new file mode 100644 index 0000000..d79ab8a --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/messages/HistoryLoading.vue @@ -0,0 +1,88 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/messages/InfoSidebar.vue b/frontend/pc/IM/src/renderer/src/components/messages/InfoSidebar.vue new file mode 100644 index 0000000..bf35c4f --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/messages/InfoSidebar.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/components/messages/VideoMsg.vue b/frontend/pc/IM/src/renderer/src/components/messages/VideoMsg.vue new file mode 100644 index 0000000..b8223f5 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/messages/VideoMsg.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/components/messages/VideoPreView.vue b/frontend/pc/IM/src/renderer/src/components/messages/VideoPreView.vue new file mode 100644 index 0000000..f58a0e4 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/messages/VideoPreView.vue @@ -0,0 +1,30 @@ + + + diff --git a/frontend/pc/IM/src/renderer/src/components/messages/VoiceMsg.vue b/frontend/pc/IM/src/renderer/src/components/messages/VoiceMsg.vue new file mode 100644 index 0000000..da48e41 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/messages/VoiceMsg.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/components/messages/useAlert.js b/frontend/pc/IM/src/renderer/src/components/messages/useAlert.js new file mode 100644 index 0000000..f3f3d8a --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/messages/useAlert.js @@ -0,0 +1,48 @@ +import { ref } from 'vue'; + +// 1. 定义全局共享的状态 (单例模式) +const messages = ref([]); +let idCounter = 0; + +export function useMessage() { + + // 移除弹窗 + const remove = (id) => { + const index = messages.value.findIndex(item => item.id === id); + if (index !== -1) { + messages.value.splice(index, 1); + } + }; + + // 添加弹窗 + // type: 'success' | 'error' | 'warning' | 'info' + const show = (content, type = 'info', duration = 3000) => { + const id = idCounter++; + const message = { id, content, type }; + + messages.value.push(message); + + // 自动销毁 + if (duration > 0) { + setTimeout(() => { + remove(id); + }, duration); + } + }; + + // 快捷方法 + const success = (content) => show(content, 'success'); + const error = (content) => show(content, 'error'); + const warning = (content) => show(content, 'warning'); + const info = (content) => show(content, 'info'); + + return { + messages, // 导出给组件渲染用 + show, + remove, + success, + error, + warning, + info + }; +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/user/RequestFriend.vue b/frontend/pc/IM/src/renderer/src/components/user/RequestFriend.vue new file mode 100644 index 0000000..e69de29 diff --git a/frontend/pc/IM/src/renderer/src/components/user/SearchUser.vue b/frontend/pc/IM/src/renderer/src/components/user/SearchUser.vue new file mode 100644 index 0000000..4b72ac4 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/user/SearchUser.vue @@ -0,0 +1,175 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/components/user/UserHoverCard.vue b/frontend/pc/IM/src/renderer/src/components/user/UserHoverCard.vue new file mode 100644 index 0000000..e7ddb9a --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/components/user/UserHoverCard.vue @@ -0,0 +1,195 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/constants/MessageType.js b/frontend/pc/IM/src/renderer/src/constants/MessageType.js new file mode 100644 index 0000000..5d2043d --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/constants/MessageType.js @@ -0,0 +1,4 @@ +export const MESSAGE_TYPE = Object.freeze({ + PRIVATE: 'PRIVATE', + GROUP: 'GROUP' +}) \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/constants/fileTypeDefine.js b/frontend/pc/IM/src/renderer/src/constants/fileTypeDefine.js new file mode 100644 index 0000000..3eed4ab --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/constants/fileTypeDefine.js @@ -0,0 +1,40 @@ +export const getMessageType = (fileType) => { + if (!fileType) return FILE_TYPE.File; // 兜底处理 + + // 处理图片 + if (fileType.startsWith('image/')) { + return FILE_TYPE.Image; + } + + // 处理音频(录音消息) + if (fileType.startsWith('audio/')) { + return FILE_TYPE.Voice; + } + + // 处理视频 + if (fileType.startsWith('video/')) { + return FILE_TYPE.Video; + } + + // 常见文档类型的特殊处理(可选) + const documentTypes = [ + 'application/pdf', + 'application/msword', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'text/plain' + ]; + + if (documentTypes.includes(fileType)) { + return FILE_TYPE.File; + } + + // 其他所有情况统一归类为文件 + return FILE_TYPE.File; +}; + +export const FILE_TYPE = Object.freeze({ + Image: 'Image', + Video: 'Video', + Voice: 'Voice', + File: 'File' +}); diff --git a/frontend/pc/IM/src/renderer/src/constants/fileTypeInfo.js b/frontend/pc/IM/src/renderer/src/constants/fileTypeInfo.js new file mode 100644 index 0000000..989213e --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/constants/fileTypeInfo.js @@ -0,0 +1,29 @@ +export class MessageBaseInfo { + constructor(format, text) { + this.format = format; + this.text = text; + } +} + +export class ImageInfo extends MessageBaseInfo { + constructor(format, text, w, h, Thumb) { + super(format, text); + this.w = w; + this.h = h; + this.thumb = Thumb; + } +} + +export class VideoInfo extends ImageInfo { + constructor(format, text, w, h, Thumb, duration) { + super(format, text, w, h, Thumb); + this.duration = duration; + } +} + +export class VoiceInfo extends MessageBaseInfo { + constructor(format, text, duration) { + super(format, text); + this.duration = duration; + } +} diff --git a/frontend/pc/IM/src/renderer/src/constants/friendAction.js b/frontend/pc/IM/src/renderer/src/constants/friendAction.js new file mode 100644 index 0000000..7832eab --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/constants/friendAction.js @@ -0,0 +1,17 @@ +export const FRIEND_ACTIONS = Object.freeze({ + /**接受 */ + Accept: 'Accept', + /**拒绝 */ + Reject: 'Reject' +}); + +export const FRIEND_REQUEST_STATUS = Object.freeze({ + /**待处理 */ + Pending: 'Pending', + /**通过 */ + Passed: 'Passed', + /**已拒绝 */ + Declined: 'Declined', + /**已拉黑 */ + Blocked: 'Blocked' +}) \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/constants/systemBaseStatus.js b/frontend/pc/IM/src/renderer/src/constants/systemBaseStatus.js new file mode 100644 index 0000000..7344a9d --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/constants/systemBaseStatus.js @@ -0,0 +1,3 @@ +export const SYSTEM_BASE_STATUS = Object.freeze({ + SUCCESS: 0 +}); \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/constants/uploadStatus.js b/frontend/pc/IM/src/renderer/src/constants/uploadStatus.js new file mode 100644 index 0000000..5600fef --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/constants/uploadStatus.js @@ -0,0 +1,7 @@ + +export const UPLOAD_STATUS = Object.freeze({ + UPLOADING: 'uploading', + UPLOADED: 'uploaded', + MERGING: 'merging', + COMPLETE: 'complete' +}) diff --git a/frontend/pc/IM/src/renderer/src/handler/messageHandler.js b/frontend/pc/IM/src/renderer/src/handler/messageHandler.js new file mode 100644 index 0000000..484f53e --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/handler/messageHandler.js @@ -0,0 +1,14 @@ +import { useConversationStore } from "@/stores/conversation" + +export const messageHandler = (msg) => { + const conversationStore = useConversationStore(); + const conversation = conversationStore.conversations.find(x => x.targetId == msg.senderId || x.targetId == msg.receiverId); + conversation.lastMessage = msg.content; + if (conversation.targetId == msg.receiverId) { + conversation.unreadCount = 0; + } else { + conversation.unreadCount += 1; + } + conversation.dateTime = new Date().toISOString(); + +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/main.js b/frontend/pc/IM/src/renderer/src/main.js new file mode 100644 index 0000000..1481415 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/main.js @@ -0,0 +1,23 @@ +import { createApp } from 'vue' +import { createPinia } from 'pinia' + +import App from './App.vue' +import router from './router' + +import MyButton from './components/MyButton.vue' +import IconInput from './components/IconInput.vue' + +import Vue3VideoPlayer from '@cloudgeek/vue3-video-player' +import '@cloudgeek/vue3-video-player/dist/vue3-video-player.css' + +const app = createApp(App) + +app.use(createPinia()) +app.use(router) +app.use(Vue3VideoPlayer, { + lang: 'zh-CN' // 可选,语言包 +}) +app.component('MyButton', MyButton) +app.component('IconInput', IconInput) + +app.mount('#app') diff --git a/frontend/pc/IM/src/renderer/src/router/index.js b/frontend/pc/IM/src/renderer/src/router/index.js new file mode 100644 index 0000000..0810e24 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/router/index.js @@ -0,0 +1,106 @@ +import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router' +import MainView from '@/views/Main.vue' +import TestView from '@/views/Test.vue' +import { useAuthStore } from '@/stores/auth' +import { useMessage } from '@/components/messages/useAlert' + +// 1. 检测是否在 Electron 环境 +const isElectron = window.electron !== undefined || navigator.userAgent.toLowerCase().includes('electron'); + +const message = useMessage(); + +const routes = [ + { path: '/auth/login', component: () => import('@/views/auth/Login.vue') }, + { + path: '/', + component: MainView, + redirect: '/messages', + meta: { requiresAuth: true }, + children: [ + { + path: '/messages', + name: 'userMessages', + component: () => import('@/views/messages/MessageList.vue'), + redirect: '/messages/index', + children: [ + { + path: '/messages/index', + name: 'msgDefault', + component: () => import('@/views/messages/MessageDefault.vue') + }, + { + path: '/messages/chat/:id', + name: 'msgChat', // 修正了原本 path 风格的 name 命名 + component: () => import('@/views/messages/messageContent/MessageContent.vue'), + props: true + } + ] + }, + { + path: '/contacts', + name: 'userContacts', + redirect: '/contacts/index', + component: () => import('@/views/contact/ContactList.vue'), + children: [ + { + path: '/contacts/index', + name: "contactDefault", + component: () => import('@/views/contact/ContactDefault.vue') + }, + { + path: '/contacts/info/:id', + name: 'contactInfo', + component: () => import('@/views/contact/UserInfoContent.vue'), + props: true + }, + { + path: '/contacts/requests', + name: 'friendRequests', + component: () => import('@/views/contact/FriendRequestList.vue') + } + ] + }, + { path: '/settings', name: 'userSettings', component: () => import('@/views/settings/SettingMenu.vue') } + ] + }, + { + path: '/index', + component: MainView, + redirect: '/messages', + meta: { requiresAuth: true } + }, + { path: '/test', component: TestView }, +] + +const router = createRouter({ + // 2. 关键修改:Electron 环境下必须强制使用 Hash 模式 + history: isElectron + ? createWebHashHistory() + : createWebHistory(import.meta.env.BASE_URL), + routes, +}) + +// 3. 优化守卫逻辑,防止无限重定向 +router.beforeEach((to, from, next) => { + const authStore = useAuthStore(); + + // 处理登录页逻辑 + if (to.path === '/auth/login') { + if (authStore.isLoggedIn) { + message.info('已登录,即将跳转...'); + return next('/'); + } + return next(); + } + + // 处理鉴权逻辑 + if (to.meta.requiresAuth && !authStore.isLoggedIn) { + message.info('未登录,即将跳转...'); + // 使用 name 或带斜杠的完整路径,防止路径拼接错误 + return next('/auth/login'); + } + + next(); +}) + +export default router diff --git a/frontend/pc/IM/src/renderer/src/services/api.js b/frontend/pc/IM/src/renderer/src/services/api.js new file mode 100644 index 0000000..fd327b4 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/services/api.js @@ -0,0 +1,104 @@ +import axios from 'axios' +import { useMessage } from '@/components/messages/useAlert'; +import router from '@/router'; +import { useAuthStore } from '@/stores/auth'; +import { authService } from './auth'; + +const message = useMessage(); + +let waitqueue = []; +let isRefreshing = false; +const authURL = ['/auth/login', '/auth/register', '/auth/refresh']; + +const api = axios.create({ + baseURL: import.meta.env.VITE_API_BASE_URL || 'http://localhost:3000/api', // 从环境变量中读取基础 URL + timeout: 10000, + headers: { + + } +}) + +api.interceptors.request.use( + config => { + const authStore = useAuthStore(); + const token = authStore.token; + if (token) { + config.headers.Authorization = `Bearer ${token}`; + } + return config; + }, + err => { + return Promise.reject(err); + } +) + +api.interceptors.response.use( + response => { + return response.data; + }, + async err => { + const authStore = useAuthStore(); + const { config, response } = err; + if (response) { + switch (response.status) { + case 401: + if (authURL.some(x => config.url.includes(x))) { + authStore.logout(); + message.error('未登录,请登录后操作。'); + router.push('/auth/login') + break; + } + if (config._retry) { + break; + } + + config._retry = true; + // 已经在刷新 → 排队 + if (isRefreshing) { + return new Promise(resolve => { + waitqueue.push(token => { + config.headers.Authorization = `Bearer ${token}` + resolve(api(config)) + }) + }) + } + + isRefreshing = true; + const refreshToken = authStore.refreshToken; + if (refreshToken != null && refreshToken != '') { + const res = await authService.refresh(refreshToken) + authStore.setLoginInfo(res.data.token, res.data.refreshToken, res.data.userInfo) + waitqueue.forEach(cb => cb(authStore.token)); + waitqueue = []; + config.headers.Authorization = `Bearer ${authStore.token}` + return api(config) + } + authStore.logout(); + message.error('未登录,请登录后操作。'); + router.push('/auth/login') + break; + case 400: + if (response.data && response.data.code == 1003) { + message.error(response.data.message); + break; + } + default: + message.error('请求错误,请检查网络。'); + break; + } + return Promise.reject(err); + } else { + message.error('请求错误,请检查网络。'); + return Promise.reject(err); + } + + } +) + +export const request = { + get: (url, config) => api.get(url, config), + post: (url, data, config) => api.post(url, data, config), + put: (url, data, config) => api.put(url, data, config), + delete: (url, config) => api.delete(url, config), + instance: api, +}; diff --git a/frontend/pc/IM/src/renderer/src/services/auth.js b/frontend/pc/IM/src/renderer/src/services/auth.js new file mode 100644 index 0000000..8654008 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/services/auth.js @@ -0,0 +1,23 @@ +import { request } from "./api"; + +export const authService = { + /** + * 用户登录接口 + * @param {*} data + * @returns + */ + login: (data) => request.post('/auth/login', data), + + /** + * 用户注册 + * @param {*} data + * @returns + */ + register: (data) => request.post('/auth/register', data), + /** + * 刷新用户凭证 + * @param {*} data + * @returns + */ + refresh: (refreshToken) => request.post('/auth/refresh', { refreshToken }) +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/services/friend.js b/frontend/pc/IM/src/renderer/src/services/friend.js new file mode 100644 index 0000000..3eb7e67 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/services/friend.js @@ -0,0 +1,44 @@ +import { request } from "./api"; +import { FRIEND_ACTIONS } from "@/constants/friendAction"; + +export const friendService = { + + /** + * 获取好友列表 + * @param {*} page 当前页 + * @param {*} limit 页大小 + * @returns + */ + getFriendList: (page = 1, limit = 100) => request.get(`/friend/list?page=${page}&limit=${limit}`), + /** + * 搜索好友 + * @param {*} username + * @returns + */ + + findUser: (username) => request.get(`/user/findbyusername?username=${username}`), + /** + * 申请添加好友 + * @param {*} params + * @returns + */ + requestFriend: (params) => request.post('/friend/request', params), + /** + * 获取好友请求列表 + * @param {*} page + * @param {*} limit + * @returns + */ + getFriendRequests: (page = 1, limit = 100) => request.get(`/friend/requests?page=${page}&limit=${limit}`), + + /** + * 处理好友请求 + * @param {*} friendRequestId + * @param {typeof FRIEND_ACTIONS[keyof typeof FRIEND_ACTIONS]} action + * @returns + */ + handleFriendRequest: (friendRequestId, action, remarkname) => request.post(`/Friend/HandleRequest?id=${friendRequestId}`, { + remarkName: remarkname, + action: action + }) +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/services/group.js b/frontend/pc/IM/src/renderer/src/services/group.js new file mode 100644 index 0000000..31d0a31 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/services/group.js @@ -0,0 +1,10 @@ +import { request } from "./api" + +export const groupService = { + /** + * 创建群聊 + * @param {*} data + * @returns + */ + createGroup: (data) => request.post('/Group/CreateGroup', data) +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/services/message.js b/frontend/pc/IM/src/renderer/src/services/message.js new file mode 100644 index 0000000..213fdca --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/services/message.js @@ -0,0 +1,42 @@ +import { request } from "./api"; + +export const messageService = { + /** + * 获取当前用户会话 + * @returns + */ + getConversations: () => request.get('/conversation/list'), + + /** + * 清空所有会话消息 + * @returns + */ + clearConversation: () => request.post(''), + /** + * 获取单个会话信息 + * @param {*} conversationId + * @returns + */ + getConversationById: (conversationId) => request.get(`/conversation/get?conversationId=${conversationId}`), + /** + * 获取历史消息列表 + * @param {*} conversationId 指定会话 + * @param {*} msgId + * @param {*} pageSize + * @returns + */ + //getHistoryMessages: (conversationId, msgId, pageSize = 10) => request.get(`/message/getmessageList?conversationId=${conversationId}&msgId=${msgId}&pageSize=${pageSize}`), + /** + * 获取消息 + * @param {*} conversationId 会话ID + * @param {Number} cursor 锚点(对应sequenceId),查询最新消息传null + * @param {Number} direction 方向 0为查历史消息 1为查锚点后的消息,查询最新消息传0 需配合cursor + * @param {number} limit 单次查询消息数 + * @returns + */ + getMessages: (conversationId, cursor, direction, limit) => request.get( + `/message/getmessageList?conversationId=${conversationId}${cursor ? '&cursor=' + cursor : ''}&direction=${direction}&limit=${limit}` + ), + + sendMessage: (msg) => request.post('/Message/SendMessage', msg) +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/services/upload/uploadService.js b/frontend/pc/IM/src/renderer/src/services/upload/uploadService.js new file mode 100644 index 0000000..d1fcc15 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/services/upload/uploadService.js @@ -0,0 +1,52 @@ +import { request } from "../api"; + +export const uploadService = { + /** + * 创建文件上传任务 + * @param {*} fileName 文件名 + * @param {*} fileSize 文件大小 + * @param {*} contentType 文件类型 + * @param {*} fileHash 文件哈希 + * @returns + */ + createUploadTask: (fileName, fileSize, contentType, fileHash) => request.post('/Upload/CreateTask', { + fileName: fileName, + fileSize: fileSize, + contentType: contentType, + fileHash: fileHash + }), + /** + * 创建分段任务 + * @param {*} taskId 任务ID + * @param {*} partNum 分段序号 + * @returns + */ + createPartTask: (taskId, partNum) => request.post(`/Upload/CreatePart?taskId=${taskId}&partNum=${partNum}`), + + completeTask: (taskId, data) => request.post(`/Upload/CompleteTask?taskId=${taskId}`, data), + + uploadPart: (uploadUrl, headers, file, onProgress) => { + const formData = new FormData() + formData.append('file', file) + + return request.post( + uploadUrl, + formData, + { + baseURL: '', + headers, // 不要包含 Content-Type + onUploadProgress: e => { + if (onProgress && e.total) { + onProgress(e.loaded / e.total) + } + } + } + ) + }, + + uploadSmallFile: (file, hash) => { + const formData = new FormData() + formData.append('file', file) + return request.post(`/Upload/upload/${hash}`, formData); + } +} diff --git a/frontend/pc/IM/src/renderer/src/services/upload/uploader.js b/frontend/pc/IM/src/renderer/src/services/upload/uploader.js new file mode 100644 index 0000000..33f2406 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/services/upload/uploader.js @@ -0,0 +1,122 @@ +import { reactive } from "vue"; +import { uploadService } from "./uploadService"; +import { getFileHash, sliceFile } from "@/utils/uploadTools"; +import { request } from "../api"; +import { UPLOAD_STATUS } from "@/constants/uploadStatus"; + + +export const uploadFile = async (file, { + onProgress, + onPartComplete +} = {}) => { + + const fileHash = await getFileHash(file); + const { taskId, chunkSize, concurrency, skip, url } = (await uploadService.createUploadTask(file.name, file.size, file.type, fileHash)).data; + + if (skip) { + const uploadStatus = { + status: UPLOAD_STATUS.COMPLETE, + progress: 100, + taskId: taskId, + url: url + } + onProgress?.(uploadStatus) + return; + } + + const chunks = sliceFile(file, chunkSize); + + const comleteData = []; + + let chunkProgress = reactive(new Array(chunks.length).fill(0)) + + const tasks = chunks.map((chunk, index) => { + return async () => { + const partNum = index + 1; + const { skip, method, url, headers, partNumber } = (await uploadService.createPartTask(taskId, partNum)).data; + if (!skip) { + const { data } = await uploadService.uploadPart(url, headers, chunks[index], p => { + chunkProgress[index] = p; + // 第三步:计算总进度 + // 把账本上所有的百分比加起来 + const sum = chunkProgress.reduce((acc, cur) => acc + cur, 0); + const total = (sum / chunks.length) * 100; + const displayTotal = total.toFixed(2); + const uploadStatus = { + status: displayTotal == 100 ? UPLOAD_STATUS.UPLOADED : UPLOAD_STATUS.UPLOADING, + progress: displayTotal, + taskId: taskId, + url: null + } + onProgress?.(uploadStatus) + }); + onPartComplete?.(partNum) + return data; + } else { + return { skip, partNumber }; + } + } + }); + const results = await concurrentUpload(tasks, concurrency); + + const errors = results.filter(r => r.status === 'rejected'); + + if (errors.length > 0) return; + + await uploadService.completeTask(taskId, comleteData); + + const evtSource = new EventSource(`${request.instance.defaults.baseURL}/upload/events/${taskId}`); + + evtSource.onmessage = (event) => { + const data = JSON.parse(event.data); + const uploadStatus = { + status: data.progress == 100 ? UPLOAD_STATUS.COMPLETE : UPLOAD_STATUS.MERGING, + taskId: taskId, + progress: data.progress, + url: data.url + } + onProgress?.(uploadStatus) + + if (data.status === "Completed") { + evtSource.close(); + } + }; + + evtSource.onerror = (err) => { + console.error("SSE 连接异常", err); + }; +} + + +const concurrentUpload = async (tasks, limit = 3, maxRetries = 3) => { + const results = []; + const executing = []; + for (const task of tasks) { + const retryTask = async (task) => { + let attempt = 0; + while (attempt <= maxRetries) { + try { + return await task(); + } catch (e) { + attempt++; + if (attempt > maxRetries) { + throw e; + } + } + } + } + const p = Promise.resolve().then(() => retryTask(task)); + results.push(p); + + if (limit <= tasks.length) { + const e = p.finally(() => executing.splice(executing.indexOf(e), 1)); + executing.push(e); + + if (executing.length >= limit) { + await Promise.race(executing); + } + } + } + + return Promise.allSettled(results); +} diff --git a/frontend/pc/IM/src/renderer/src/services/useBrowserNotification.js b/frontend/pc/IM/src/renderer/src/services/useBrowserNotification.js new file mode 100644 index 0000000..d43fed5 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/services/useBrowserNotification.js @@ -0,0 +1,21 @@ +export function useBrowserNotification() { + const requestPermission = async () => { + if ("Notification" in window && Notification.permission === "default") { + await Notification.requestPermission(); + } + }; + + const send = (title, options = {}) => { + if ("Notification" in window && Notification.permission === "granted") { + // 如果页面正处于激活状态,通常不需要弹窗提醒,以免干扰用户 + /* + if (document.visibilityState === 'visible' && document.hasFocus()) { + return; + } + */ + return new Notification(title, options); + } + }; + + return { requestPermission, send }; +} diff --git a/frontend/pc/IM/src/renderer/src/stores/auth.js b/frontend/pc/IM/src/renderer/src/stores/auth.js new file mode 100644 index 0000000..7b70aca --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/stores/auth.js @@ -0,0 +1,65 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +export const useAuthStore = defineStore('auth', () => { + const token = ref(localStorage.getItem('user_token') || ''); + const refreshToken = ref(localStorage.getItem('refresh_token') || ''); + const userInfo = ref(JSON.parse(localStorage.getItem('user_info')) || {}); + + //判断是否已登录 + const isLoggedIn = computed(() => !!refreshToken.value); + /** + * 安全解析 JWT + */ + const getPayload = (t) => { + try { + const base64Url = t.split('.')[1]; + const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); + // 处理 Unicode 字符解码 + return JSON.parse(decodeURIComponent(atob(base64).split('').map(c => + '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2) + ).join(''))); + } catch (e) { + return null; + } + }; + + // 检查 Token 是否过期 + const isTokenExpired = computed(() => { + if (!token.value) return true; + const payload = getPayload(token.value); + if (!payload || !payload.exp) return true; + + const now = Math.floor(Date.now() / 1000); + return (payload.exp - now) < 30; // 预留 30 秒缓冲 + }); + + /** + * 登录成功保存状态 + * @param {String} newToken 用户凭证 + * @param {*} user 用户信息 + */ + function setLoginInfo(newToken, newRefreshToken, user) { + console.log(`设置凭证:\ntoken:${newToken}\nrefreshToken:${newRefreshToken}`) + token.value = newToken; + refreshToken.value = newRefreshToken + userInfo.value = user; + localStorage.setItem('user_token', newToken); + localStorage.setItem('refresh_token', newRefreshToken) + localStorage.setItem('user_info', JSON.stringify(user)) + } + + /** + * 退出登录 + */ + function logout() { + token.value = ''; + userInfo.value = null; + refreshToken.value = '' + localStorage.removeItem('user_token'); + localStorage.removeItem('refresh_token') + localStorage.removeItem('user_info') + } + + return { token, refreshToken, userInfo, isLoggedIn, isTokenExpired, setLoginInfo, logout }; +}) diff --git a/frontend/pc/IM/src/renderer/src/stores/chat.js b/frontend/pc/IM/src/renderer/src/stores/chat.js new file mode 100644 index 0000000..49f9414 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/stores/chat.js @@ -0,0 +1,121 @@ +import { defineStore } from "pinia"; +import { messagesDb } from "@/utils/db/messageDB"; +import { messageService } from "@/services/message"; +import { useConversationStore } from "./conversation"; + +export const useChatStore = defineStore('chat', { + state: () => ({ + activeConversationId: null, + activeSessionId: null, + maxSequenceId: null, + isEnded: false, + messages: [], + pageSize: 20 + }), + actions: { + // 抽取统一的排序去重方法 + async pushAndSortMessagesAsync(newMsgs, sessionId, shouldSaveToDb = true) { + if (shouldSaveToDb) { + for (const m of newMsgs) { + if (m.type != 'Text' && !m.isLoading && !m.isError && !m.isImgLoading) { + m.content = JSON.parse(m.content); + } + await messagesDb.save({ ...m, sessionId }); + } + } + + if (sessionId == this.activeSessionId) { + const combined = [...this.messages, ...newMsgs]; + // 1. 根据 msgId 或唯一 key 去重 + const uniqueMap = new Map(); + combined.forEach(m => uniqueMap.set(m.msgId || m.sequenceId, m)); + + // 2. 转换为数组并按sequenceId升序排序 (旧的在前,新的在后) + this.messages = Array.from(uniqueMap.values()).sort((a, b) => { + return a.sequenceId - b.sequenceId; + }); + this.maxSequenceId = this.messages.reduce((max, m) => + m.sequenceId > max ? m.sequenceId : max, + null // 初始值 + ); + } + }, + /** + * 切换会话加载当前会话消息列表 + * @param {*} sessionId + */ + async swtichSession(sessionId, conversationId) { + this.activeSessionId = sessionId; + this.activeConversationId = conversationId; + this.messages = []; + this.isEnded = false; + //先从浏览器缓存加载一部分消息列表 + const localHistory = await messagesDb.getLatestMessages(sessionId, this.pageSize); + console.log(localHistory) + if (localHistory.length > 0) { + this.messages = localHistory; + this.maxSequenceId = this.messages.reduce((max, m) => + m.sequenceId > max ? m.sequenceId : max, + null // 初始值 + ); + } + }, + /** + * 从服务器加载新消息 + * @param {*} sessionId + * @returns + */ + async fetchNewMsgFromServier(conversationId, sequenceId) { + const newMsg = (await messageService.getMessages(conversationId, sequenceId, sequenceId ? 1 : 0, this.pageSize)).data; + if (newMsg.length > 0) { + return newMsg; + } else { + return []; + } + }, + /** + * 从服务器加载历史消息 + * @param {*} sessionId + * @param {*} msgId + * @returns + */ + async fetchHistoryFromServer(conversationId, sequenceId) { + const res = (await messageService.getMessages(conversationId, sequenceId, 0, this.pageSize)).data; + + if (res.length > 0) { + const sessionId = this.activeSessionId; + return res; + } else { + return []; + } + }, + /** + * 加载更多历史消息 + */ + async loadMoreMessages() { + let minSequenceId = 0; + if (!this.messages || this.messages.length === 0) return; + minSequenceId = this.messages.reduce((min, m) => + (m.sequenceId < min ? m.sequenceId : min), + this.messages[0].sequenceId // 使用第一项作为初始参考值 + ); + const dbCacheList = await messagesDb.getPageMessages(this.activeSessionId, minSequenceId, this.pageSize) + const dbMaxSequenceId = dbCacheList.reduce((max, m) => + m.sequenceId > max ? m.sequenceId : max, + null // 初始值 + ); + if (dbCacheList.length < this.pageSize) { + const newList = await this.fetchHistoryFromServer(this.activeConversationId, minSequenceId) + if (newList.length === 0) this.isEnded = true; + await this.pushAndSortMessagesAsync(newList, this.activeSessionId, true); + } else if (dbMaxSequenceId < minSequenceId - 1) { + const newList = await this.fetchHistoryFromServer(this.activeConversationId, minSequenceId) + if (newList.length === 0) this.isEnded = true; + await this.pushAndSortMessagesAsync(newList, this.activeSessionId, true); + } + else { + await this.pushAndSortMessagesAsync(dbCacheList, this.activeSessionId, false); + } + } + } +}) diff --git a/frontend/pc/IM/src/renderer/src/stores/contact.js b/frontend/pc/IM/src/renderer/src/stores/contact.js new file mode 100644 index 0000000..50c39ba --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/stores/contact.js @@ -0,0 +1,45 @@ +import { defineStore } from "pinia"; +import { contactDb } from "@/utils/db/contactDB"; +import { friendService } from "@/services/friend"; +import { useMessage } from "@/components/messages/useAlert"; + +export const useContactStore = defineStore('contact', { + state: () => ({ + contacts: [], + + }), + actions: { + async addContact(contact) { + this.contacts.push(contact); + await contactDb.save(contact); + }, + async loadContactList() { + if (this.contacts.length == 0) { + this.contacts = await contactDb.getAll(); + } + this.fetchContactFromServer(); + }, + async fetchContactFromServer() { + const message = useMessage(); + const res = await friendService.getFriendList(); + if (res.code == 0) { + const localMap = new Map(this.contacts.map(item => [item.id, item])); + res.data.forEach(item => { + const existingItem = localMap.get(item.id); + if (existingItem) { + // --- 局部更新 --- + // 使用 Object.assign 将新数据合并到旧对象上,保持响应式引用 + Object.assign(existingItem, item); + } else { + // --- 插入新会话 --- + this.contacts.push(item); + } + // 同步到本地数据库 + contactDb.save(item); + }); + } else { + message.error(res.message); + } + } + } +}) \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/stores/conversation.js b/frontend/pc/IM/src/renderer/src/stores/conversation.js new file mode 100644 index 0000000..66e2031 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/stores/conversation.js @@ -0,0 +1,72 @@ +import { defineStore } from "pinia"; +import { messageService } from "@/services/message"; +import { conversationDb } from "@/utils/db/conversationDB"; +import { useMessage } from "@/components/messages/useAlert"; + +const message = useMessage(); + +export const useConversationStore = defineStore('conversation', { + state: () => ({ + conversations: [] + }), + // stores/conversation.js + getters: { + // 始终根据时间戳倒序排列 + sortedConversations: (state) => { + return [...state.conversations].sort((a, b) => + new Date(b.dateTime) - new Date(a.dateTime) + ); + } + }, + actions: { + async addConversation(conversation) { + await conversationDb.save(conversation); + this.conversations.unshift(conversation) + }, + /** + * 加载当前会话消息列表 + */ + async loadUserConversations() { + if (this.conversations.length == 0) { + try { + const covnersationsCache = await conversationDb.getAll(); + if (covnersationsCache && covnersationsCache.length > 0) { + this.conversations = covnersationsCache.sort((a, b) => { + return new Date(a.dateTime) - new Date(b.dateTime); + }) + } + } catch (e) { + message.error('读取本地会话缓存失败...'); + console.log('读取本地会话缓存失败:', e); + } + } + //await this.fetchConversationsFromServier() + }, + /** + * 从服务器加载新消息 + * @param {*} sessionId + * @returns + */ + async fetchConversationsFromServier() { + const newConversations = (await messageService.getConversations()).data; + if (newConversations.length > 0) { + // 1. 将当前的本地数据转为 Map,方便通过 ID 快速查找 (O(1) 复杂度) + const localMap = new Map(this.conversations.map(item => [item.id, item])); + newConversations.forEach(item => { + const existingItem = localMap.get(item.id); + if (existingItem) { + // --- 局部更新 --- + // 使用 Object.assign 将新数据合并到旧对象上,保持响应式引用 + Object.assign(existingItem, item); + } else { + // --- 插入新会话 --- + this.conversations.unshift(item); + } + // 同步到本地数据库 + conversationDb.save(item); + }); + + } + } + } +}) \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/stores/signalr.js b/frontend/pc/IM/src/renderer/src/stores/signalr.js new file mode 100644 index 0000000..3b4f66d --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/stores/signalr.js @@ -0,0 +1,103 @@ +import { defineStore } from "pinia"; +import * as signalR from '@microsoft/signalr'; +import { useMessage } from "@/components/messages/useAlert"; +import { useAuthStore } from "./auth"; +import { useChatStore } from "./chat"; +import { authService } from "@/services/auth"; +import { generateSessionId } from "@/utils/sessionIdTools"; +import { messageHandler } from "@/handler/messageHandler"; +import { useBrowserNotification } from "@/services/useBrowserNotification"; +import { useConversationStore } from "./conversation"; +import { SignalRMessageHandler } from "@/utils/signalr/SignalMessageHandler"; +import { signalRConnectionEventHandler } from "@/utils/signalr/signalRConnectionEventHandler"; + +export const useSignalRStore = defineStore('signalr', { + state: () => ({ + connection: null, + isConnected: false + }), + actions: { + async initSignalR() { + const message = useMessage() + const authStore = useAuthStore() + const url = import.meta.env.VITE_SIGNALR_BASE_URL || 'http://localhost:5202/chat/'; + this.connection = new signalR.HubConnectionBuilder() + .withUrl(url, + { + + accessTokenFactory: async () => { + if (authStore.isTokenExpired) { + const res = await authService.refresh(authStore.refreshToken) + authStore.setLoginInfo(res.data.token, res.data.refreshToken, res.data.userInfo) + } + return authStore.token; + } + }) + .withAutomaticReconnect() + .build(); + this.registerHandlers(); + try { + await this.connection.start(); + this.isConnected = true; + signalRConnectionEventHandler(); + console.log('SignalR建立通信成功!') + } catch (e) { + message.error('与服务器建立通信失败,请检查网络连接...'); + } + }, + registerHandlers() { + + + this.connection.on('ReceiveMessage', (msg) => { + console.log(msg) + SignalRMessageHandler(msg) + }); + + this.connection.onclose(() => { + this.isConnected = false; + }); + this.connection.onreconnected(() => { + this.isConnected = true; + signalRConnectionEventHandler(); + }); + + }, + /** + * 通过signalr发送消息 + * @param {*} msg + * @returns + */ + async sendMsg(msg) { + const message = useMessage() + const chatStore = useChatStore() + if (!this.isConnected) { + message.error('与服务器连接中断,请重连后尝试...'); + return; + } + try { + // 后端 Hub 定义的方法名通常为 SendMessage + // 参数顺序需要与后端 ChatHub 中的方法签名一致 + if (msg.msgId == null) { + msg.msgId = self.crypto.randomUUID(); + } + const sessionId = generateSessionId(msg.senderId, msg.receiverId); + this.connection.invoke("SendMessage", msg).then(() => { + const msga = chatStore.messages.find(x => x.msgId == msg.msgId) + if (msga.isLoading) { + msga.isLoading = false; + } + }) + ; + chatStore.addMessage({ ...msg, isLoading: true }, sessionId); + messageHandler(msg); + console.log("消息发送成功!"); + } catch (err) { + console.error("消息发送失败:", err); + message.error("消息发送失败"); + } + }, + async clearUnreadCount(conversationId) { + await this.connection.invoke("ClearUnreadCount", conversationId) + } + } +}) diff --git a/frontend/pc/IM/src/renderer/src/utils/codeHelper.js b/frontend/pc/IM/src/renderer/src/utils/codeHelper.js new file mode 100644 index 0000000..9428a61 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/codeHelper.js @@ -0,0 +1,10 @@ +export function getChatCodeStr(code) { + switch (code) { + case 0: + return '私聊' + case 1: + return '群聊' + default: + return '未知类型' + } +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/utils/dateTool.js b/frontend/pc/IM/src/renderer/src/utils/dateTool.js new file mode 100644 index 0000000..63127fa --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/dateTool.js @@ -0,0 +1,13 @@ +export const GetLocalIso = (date) => { + // 考虑到时区偏差,手动构造符合 C# 要求的本地 ISO 字符串 + const offset = -date.getTimezoneOffset(); + const diff = offset >= 0 ? '+' : '-'; + const pad = (num) => String(num).padStart(2, '0'); + + return date.getFullYear() + + '-' + pad(date.getMonth() + 1) + + '-' + pad(date.getDate()) + + 'T' + pad(date.getHours()) + + ':' + pad(date.getMinutes()) + + ':' + pad(date.getSeconds()); +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/utils/db/baseDb.js b/frontend/pc/IM/src/renderer/src/utils/db/baseDb.js new file mode 100644 index 0000000..e58f510 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/db/baseDb.js @@ -0,0 +1,29 @@ +import { openDB } from "idb"; + +const DBNAME = 'IM_DB'; +const STORE_NAME = 'messages'; +const CONVERSARION_STORE_NAME = 'conversations'; +const CONTACT_STORE_NAME = 'contacts'; + +export const dbPromise = openDB(DBNAME, 7, { + upgrade(db) { + if (!db.objectStoreNames.contains(STORE_NAME)) { + const store = db.createObjectStore(STORE_NAME, { keyPath: 'msgId' }); + store.createIndex('by-sessionId', 'sessionId'); + store.createIndex('by-time', 'timeStamp'); + store.createIndex('by-sequenceId', 'sequenceId'); + store.createIndex('by-session-sequenceId', ['sessionId', 'sequenceId']); + + } + if (!db.objectStoreNames.contains(CONVERSARION_STORE_NAME)) { + const store = db.createObjectStore(CONVERSARION_STORE_NAME, { keyPath: 'id' }); + store.createIndex('by-id', 'id'); + } + if (!db.objectStoreNames.contains(CONTACT_STORE_NAME)) { + const store = db.createObjectStore(CONTACT_STORE_NAME, { keyPath: 'id' }); + store.createIndex('by-id', 'id'); + store.createIndex('by-username', 'username'); + store.createIndex('by-friendId', 'friendId', { unique: true }); + } + } +}) \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/utils/db/contactDB.js b/frontend/pc/IM/src/renderer/src/utils/db/contactDB.js new file mode 100644 index 0000000..6e25378 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/db/contactDB.js @@ -0,0 +1,18 @@ +import { dbPromise } from "./baseDb" + +const STORE_NAME = 'contacts'; + +export const contactDb = { + async save(contact) { + (await dbPromise).put(STORE_NAME, contact); + }, + async getById(id) { + return (await dbPromise).getFromIndex(STORE_NAME, 'by-id', id); + }, + async getByUsername(username) { + return (await dbPromise).getFromIndex(STORE_NAME, 'by-username', username); + }, + async getAll() { + return (await dbPromise).getAll(STORE_NAME); + } +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/utils/db/conversationDB.js b/frontend/pc/IM/src/renderer/src/utils/db/conversationDB.js new file mode 100644 index 0000000..0dc6995 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/db/conversationDB.js @@ -0,0 +1,18 @@ +import { dbPromise } from "./baseDb"; + +const STORE_NAME = 'conversations'; + +export const conversationDb = { + async save(conversation) { + (await dbPromise).put(STORE_NAME, conversation); + }, + async getById(id) { + return (await dbPromise).getFromIndex(STORE_NAME, 'by-id', id); + }, + async getAll() { + return (await dbPromise).getAll(STORE_NAME); + }, + async clearAll() { + (await dbPromise).clear(STORE_NAME); + } +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/utils/db/messageDB.js b/frontend/pc/IM/src/renderer/src/utils/db/messageDB.js new file mode 100644 index 0000000..07d81bd --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/db/messageDB.js @@ -0,0 +1,64 @@ +import { dbPromise } from "./baseDb"; + +const STORE_NAME = 'messages'; + +export const messagesDb = { + async save(msg) { + return (await dbPromise).put(STORE_NAME, msg); + }, + async getBySession(sessionId) { + return (await dbPromise).getAllFromIndex(STORE_NAME, 'by-sessionId', sessionId); + }, + async clearAll() { + return (await dbPromise).clear(STORE_NAME); + }, + async getPageMessages(sessionId, beforeSequenceId, limit = 20) { + const db = await dbPromise; + const tx = db.transaction(STORE_NAME, 'readonly'); + const index = tx.store.index('by-session-sequenceId'); // 使用复合索引 + + // 定义范围:从 [sessionId, 最早时间] 到 [sessionId, beforeTimeStamp) + // 注意:IDBKeyRange.bound([sessionId, ""], [sessionId, beforeTimeStamp], false, true) + // 或者简单使用 upperbound 限制最大值 + const range = IDBKeyRange.upperBound([sessionId, beforeSequenceId], true); + + // 'prev' 表示从最新的往回找(倒序) + let cursor = await index.openCursor(range, 'prev'); + const results = []; + + while (cursor && results.length < limit) { + // 关键安全检查:因为 upperBound 可能会越界捞到其他 sessionId 的数据 + //(复合索引的特性决定了 sessionId 不一致的数据会排在后面) + if (cursor.value.sessionId !== sessionId) break; + + results.unshift(cursor.value); // 放入结果集开头,保证返回的是时间升序 + cursor = await cursor.continue(); + } + + return results; + }, + async getLatestMessages(sessionId, limit) { + const db = await dbPromise; + const tx = db.transaction(STORE_NAME, 'readonly'); + const index = tx.store.index('by-session-sequenceId'); + + // 关键点:范围只限定 sessionId,不限 sequenceId 的上限 + // 复合索引中,[sessionId, []] 到 [sessionId, [Infinity]] 会覆盖该 session 下所有数据 + const range = IDBKeyRange.bound([sessionId, 0], [sessionId, Infinity]); + + // 使用 'prev' 游标,从最大的 sequenceId 开始往前找 + let cursor = await index.openCursor(range, 'prev'); + const results = []; + + while (cursor && results.length < limit) { + // 虽然有 bound 约束,但为了防御性编程,依然建议检查 sessionId + if (cursor.value.sessionId !== sessionId) break; + + results.push(cursor.value); + cursor = await cursor.continue(); + } + + // 因为是倒序捞出来的(20, 19, 18...),最后要反转一下变成升序给界面渲染 + return results.reverse(); + } +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/utils/electronHelper.js b/frontend/pc/IM/src/renderer/src/utils/electronHelper.js new file mode 100644 index 0000000..8c14612 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/electronHelper.js @@ -0,0 +1,9 @@ +export const isElectron = () => { + // 1. 检查是否存在 process 对象且其版本包含 electron + const hasProcess = typeof process !== 'undefined' && process.versions && !!process.versions.electron; + + // 2. 检查 User Agent(最保险,防止 process 被某些构建工具 mock 掉) + const hasUserAgent = typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0; + + return hasProcess || hasUserAgent; +}; diff --git a/frontend/pc/IM/src/renderer/src/utils/formatDate.js b/frontend/pc/IM/src/renderer/src/utils/formatDate.js new file mode 100644 index 0000000..6ac814e --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/formatDate.js @@ -0,0 +1,18 @@ +export function formatDate(dateStr) { + const date = new Date(dateStr); + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); // 补零 + const day = String(date.getDate()).padStart(2, '0'); + const hours = String(date.getHours()).padStart(2, '0'); + const minutes = String(date.getMinutes()).padStart(2, '0'); + const seconds = String(date.getSeconds()).padStart(2, '0'); + const nowDate = new Date(); + if (year == nowDate.getFullYear() && month == String(nowDate.getMonth() + 1).padStart(2, '0') && day == String(nowDate.getDate()).padStart(2, '0')) { + return `${hours}:${minutes}:${seconds}`; + } + if (year == nowDate.getFullYear()) { + return `${month}/${day} ${hours}:${minutes}:${seconds}`; + } + + return `${year}/${month}/${day} ${hours}:${minutes}:${seconds}`; +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/utils/imageTools.js b/frontend/pc/IM/src/renderer/src/utils/imageTools.js new file mode 100644 index 0000000..eaad104 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/imageTools.js @@ -0,0 +1,119 @@ +export const loadImage = (url) => { + return new Promise((resolve, reject) => { + const img = new Image(); + img.onload = () => resolve(img); // 成功时返回 img 对象 + img.onerror = (err) => reject(err); // 失败时报错 + img.src = url; + }); +}; +/** +* 生成图片缩略图 (返回 Blob 文件) +*/ +export function generateImageThumbnailBlob(img, maxWidth = 200) { + return new Promise((resolve) => { + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + const scale = maxWidth / img.width; + canvas.width = maxWidth; + canvas.height = img.height * scale; + + ctx.drawImage(img, 0, 0, canvas.width, canvas.height); + + // 关键:导出为 Blob + canvas.toBlob((blob) => { + resolve(blob); + }, 'image/jpeg', 0.8); + }); +} + + +/** + * 获取视频缩略图 (返回 Blob 文件) + * 报错或无法渲染画面时自动生成全黑占位图 + */ +export function getVideoThumbnailBlob(file, seekTime = 1) { + return new Promise((resolve) => { + const video = document.createElement('video'); + const url = URL.createObjectURL(file); + video.muted = true; + video.src = url; + + // 统一定义一个生成黑色背景的方法 + const resolveBlackThumbnail = () => { + const canvas = document.createElement('canvas'); + // 如果视频元数据拿不到宽高,给一个默认的 16:9 尺寸 + canvas.width = video.videoWidth || 320; + canvas.height = video.videoHeight || 180; + const ctx = canvas.getContext('2d'); + ctx.fillStyle = '#000000'; // 全黑 + ctx.fillRect(0, 0, canvas.width, canvas.height); + + canvas.toBlob((blob) => { + URL.revokeObjectURL(url); + resolve(blob); + }, 'image/jpeg', 0.8); + }; + + video.onloadedmetadata = () => { + // 检查:如果元数据加载了但没有画面尺寸(只有音频的视频常现) + if (video.videoWidth === 0) { + resolveBlackThumbnail(); + } else { + video.currentTime = seekTime; + } + }; + + video.onseeked = () => { + try { + const canvas = document.createElement('canvas'); + canvas.width = video.videoWidth; + canvas.height = video.videoHeight; + const ctx = canvas.getContext('2d'); + + // 尝试绘制,如果解码失败这里可能抛出异常 + ctx.drawImage(video, 0, 0, canvas.width, canvas.height); + + canvas.toBlob((blob) => { + URL.revokeObjectURL(url); + // 如果导出的 blob 大小极小(可能是空的),可以在这里进一步检查 + resolve(blob); + }, 'image/jpeg', 0.8); + } catch (e) { + resolveBlackThumbnail(); + } + }; + + // 报错处理:不再 reject,而是给一张黑图 + video.onerror = () => { + console.warn("视频封面截取失败,已生成全黑占位图"); + resolveBlackThumbnail(); + }; + }); +} + +/** + * 获取视频时长 + * @param {File} file - 视频文件对象 + * @returns {Promise} - 返回秒数 (float) + */ +export function getVideoDuration(file) { + return new Promise((resolve, reject) => { + const video = document.createElement('video'); + const url = URL.createObjectURL(file); + + video.preload = 'metadata'; // 关键:只加载元数据 + video.src = url; + + // 当元数据加载完成后触发 + video.onloadedmetadata = () => { + const duration = video.duration; + URL.revokeObjectURL(url); // 释放内存 + resolve(duration); + }; + + video.onerror = () => { + URL.revokeObjectURL(url); + reject("无法解析视频元数据"); + }; + }); +} diff --git a/frontend/pc/IM/src/renderer/src/utils/sessionIdTools.js b/frontend/pc/IM/src/renderer/src/utils/sessionIdTools.js new file mode 100644 index 0000000..57b9fde --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/sessionIdTools.js @@ -0,0 +1,14 @@ +/** + * 生成唯一的会话 ID (私聊) + * @param {string|number} id1 用户A的ID + * @param {string|number} id2 用户B的ID + */ +export const generateSessionId = (id1, id2, isGroup = false) => { + // 1. 转换为字符串并放入数组 + // 2. 排序(确保顺序一致性) + // 3. 用下划线或其他分隔符拼接 + if (isGroup) { + return `g:${id2}`; + } + return [String(id1), String(id2)].sort().join('_'); +}; \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/utils/signalr/SignalMessageHandler.js b/frontend/pc/IM/src/renderer/src/utils/signalr/SignalMessageHandler.js new file mode 100644 index 0000000..3af6a9e --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/signalr/SignalMessageHandler.js @@ -0,0 +1,22 @@ +import { useBrowserNotification } from "@/services/useBrowserNotification"; + +import { useChatStore } from "@/stores/chat"; + +import { messageHandler } from "@/handler/messageHandler"; +import { generateSessionId } from "../sessionIdTools"; +import { useConversationStore } from "@/stores/conversation"; +import { MESSAGE_TYPE } from "@/constants/MessageType"; + +export const SignalRMessageHandler = (data) => { + const msg = data.data; + const chatStore = useChatStore() + const browserNotification = useBrowserNotification(); + const sessionId = generateSessionId(msg.senderId, msg.receiverId, msg.chatType == MESSAGE_TYPE.GROUP); + messageHandler(msg); + chatStore.pushAndSortMessagesAsync([msg], sessionId); + const conversation = useConversationStore().conversations.find(x => x.targetId == msg.senderId); + browserNotification.send(`${conversation.targetName}发来一条消息`, { + body: msg.content, + icon: conversation.targetAvatar + }); +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/utils/signalr/signalRConnectionEventHandler.js b/frontend/pc/IM/src/renderer/src/utils/signalr/signalRConnectionEventHandler.js new file mode 100644 index 0000000..3ad1354 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/signalr/signalRConnectionEventHandler.js @@ -0,0 +1,10 @@ +import { useConversationStore } from "@/stores/conversation" + +export const signalRConnectionEventHandler = () => { + const conversationStore = useConversationStore(); + conversationStore.fetchConversationsFromServier().then(res => { + conversationStore.conversations.forEach(element => { + element.isInitialized = false; + }); + }) +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/utils/uploadTools.js b/frontend/pc/IM/src/renderer/src/utils/uploadTools.js new file mode 100644 index 0000000..aaa88d9 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/utils/uploadTools.js @@ -0,0 +1,55 @@ +import SparkMD5 from "spark-md5"; + +export const getFileHash = (file) => { + return new Promise((resolve, reject) => { + const blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice; + const chunkSize = 2 * 1024 * 1024; // 每次读取 2MB + const chunks = Math.ceil(file.size / chunkSize); + let currentChunk = 0; + const spark = new SparkMD5.ArrayBuffer(); + const fileReader = new FileReader(); + + fileReader.onload = (e) => { + spark.append(e.target.result); // 将二进制数据添加到计算器 + currentChunk++; + + if (currentChunk < chunks) { + loadNext(); + } else { + resolve(spark.end()); // 完成计算,返回最终结果 + } + }; + + fileReader.onerror = () => { + reject('文件读取出错'); + }; + + function loadNext() { + const start = currentChunk * chunkSize; + const end = start + chunkSize >= file.size ? file.size : start + chunkSize; + fileReader.readAsArrayBuffer(blobSlice.call(file, start, end)); + } + + loadNext(); + }); +} + +/** + * 文件分片 + * @param {*} file 文件 + * @param {*} chunkSize 分片大小 + * @returns + */ +export const sliceFile = (file, chunkSize) => { + const chuncks = []; + let index = 0; + + while (index < file.size) { + chuncks.push(file.slice(index, index + chunkSize)); + index += chunkSize; + } + + return chuncks; +} + + diff --git a/frontend/pc/IM/src/renderer/src/views/Main.vue b/frontend/pc/IM/src/renderer/src/views/Main.vue new file mode 100644 index 0000000..8bfe2ea --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/Main.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/Test.vue b/frontend/pc/IM/src/renderer/src/views/Test.vue new file mode 100644 index 0000000..f60e362 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/Test.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/auth/Login.vue b/frontend/pc/IM/src/renderer/src/views/auth/Login.vue new file mode 100644 index 0000000..402c14b --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/auth/Login.vue @@ -0,0 +1,329 @@ + + + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/views/auth/Register.vue b/frontend/pc/IM/src/renderer/src/views/auth/Register.vue new file mode 100644 index 0000000..0fd3f73 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/auth/Register.vue @@ -0,0 +1,355 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/contact/ContactDefault.vue b/frontend/pc/IM/src/renderer/src/views/contact/ContactDefault.vue new file mode 100644 index 0000000..60a27d6 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/contact/ContactDefault.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/contact/ContactList.vue b/frontend/pc/IM/src/renderer/src/views/contact/ContactList.vue new file mode 100644 index 0000000..13cb7ad --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/contact/ContactList.vue @@ -0,0 +1,240 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/views/contact/FriendRequestList.vue b/frontend/pc/IM/src/renderer/src/views/contact/FriendRequestList.vue new file mode 100644 index 0000000..560641a --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/contact/FriendRequestList.vue @@ -0,0 +1,323 @@ + + + + + \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/views/contact/UserInfoContent.vue b/frontend/pc/IM/src/renderer/src/views/contact/UserInfoContent.vue new file mode 100644 index 0000000..fe7f311 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/contact/UserInfoContent.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/messages/MessageDefault.vue b/frontend/pc/IM/src/renderer/src/views/messages/MessageDefault.vue new file mode 100644 index 0000000..455ae82 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/messages/MessageDefault.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/messages/MessageList.vue b/frontend/pc/IM/src/renderer/src/views/messages/MessageList.vue new file mode 100644 index 0000000..8a34167 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/messages/MessageList.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/messages/messageContent/MessageContent.vue b/frontend/pc/IM/src/renderer/src/views/messages/messageContent/MessageContent.vue new file mode 100644 index 0000000..192f833 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/messages/messageContent/MessageContent.vue @@ -0,0 +1,889 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/messages/messageContent/hooks/useRightClickHandler.js b/frontend/pc/IM/src/renderer/src/views/messages/messageContent/hooks/useRightClickHandler.js new file mode 100644 index 0000000..1200802 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/messages/messageContent/hooks/useRightClickHandler.js @@ -0,0 +1,21 @@ +export function useRightClickHandler() { + const items = [ + { + label: '查看资料', + action: () => console.log('打开之前的悬浮卡片', user) + }, + { + label: '发送消息', + action: () => console.log('进入私聊', user.id) + }, + { + label: '修改备注', + action: () => { } + }, + { + label: '删除好友', + type: 'danger', + action: () => alert('删除成功') + } + ]; +} \ No newline at end of file diff --git a/frontend/pc/IM/src/renderer/src/views/messages/messageContent/hooks/useSendMessageHandler.js b/frontend/pc/IM/src/renderer/src/views/messages/messageContent/hooks/useSendMessageHandler.js new file mode 100644 index 0000000..b8569bd --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/messages/messageContent/hooks/useSendMessageHandler.js @@ -0,0 +1,109 @@ +import { useChatStore } from "@/stores/chat"; +import { generateSessionId } from "@/utils/sessionIdTools"; +import { MESSAGE_TYPE } from "@/constants/MessageType"; +import { messageService } from "@/services/message"; +import { SYSTEM_BASE_STATUS } from "@/constants/systemBaseStatus"; +import { uploadFile } from "@/services/upload/uploader"; +import { UPLOAD_STATUS } from "@/constants/uploadStatus"; +import { getMessageType } from "@/constants/fileTypeDefine"; +import { uploadService } from "@/services/upload/uploadService"; +import { getFileHash } from "@/utils/uploadTools"; + +export function useSendMessageHandler() { + const sendMessage = async (msg) => { + const chatStore = useChatStore(); + //设置消息为加载状态 + const msgServer = { ...msg } + msg.isLoading = true; + //将临时消息推送到消息列表(存库,方便后续重试) + await chatStore.pushAndSortMessagesAsync([msg], generateSessionId(msg.senderId, msg.receiverId, msg.chatType == MESSAGE_TYPE.GROUP), true); + //从列表取出消息 + let updateMsg = msg; + try { + const res = await messageService.sendMessage(msgServer); + if (res.code != SYSTEM_BASE_STATUS.SUCCESS) { + updateMsg.isError = true; + } else { + //发送成功将后端生成的sequenceId更新 + updateMsg = res.data; + } + } catch { + updateMsg.isError = true; + } finally { + updateMsg.isLoading = false; + chatStore.pushAndSortMessagesAsync([updateMsg], generateSessionId(msg.senderId, msg.receiverId, msg.chatType == MESSAGE_TYPE.GROUP), true); + + msg.isLoading = false; + } + } + + const sendTextMessage = async (text, conversationInfo) => { + const msg = { + type: 'Text', // 消息类型,例如 'Text', 'Image', 'File' + chatType: conversationInfo.value.chatType, // 'PRIVATE' 或 'GROUP' + senderId: conversationInfo.value.userId, // 当前用户ID (对应 int) + receiverId: conversationInfo.value.targetId, // 接收者ID (对应 int) + content: text, + timeStamp: new Date(), // 对应 DateTime + msgId: self.crypto.randomUUID() + }; + //更新当前会话最新消息 + conversationInfo.value.lastMessage = msg.content; + await sendMessage(msg); + } + const sendFileMessage = async (file, conversationInfo, info, localUrl) => { + const chatStore = useChatStore(); + const msg = { + type: getMessageType(file.type), // 消息类型,例如 'Text', 'Image', 'File' + chatType: conversationInfo.value.chatType, // 'PRIVATE' 或 'GROUP' + senderId: conversationInfo.value.userId, // 当前用户ID (对应 int) + receiverId: conversationInfo.value.targetId, // 接收者ID (对应 int) + content: '', + timeStamp: new Date(), // 对应 DateTime + msgId: self.crypto.randomUUID(), + localUrl: localUrl, + progress: 0 + }; + //更新当前会话最新消息 + conversationInfo.value.lastMessage = info.text; + msg.isImgLoading = true; + await chatStore.pushAndSortMessagesAsync([msg], generateSessionId(msg.senderId, msg.receiverId, msg.chatType == MESSAGE_TYPE.GROUP), true); + + if (info.thumb) { + const hash = await getFileHash(info.thumb); + try { + const { data } = await uploadService.uploadSmallFile(info.thumb, hash); + info.thumb = data.objectName; + } catch (e) { + console.error(e) + msg.isError = true; + msg.isLoading = false; + return; + } + + } + + await uploadFile(file, { + onProgress: async (e) => { + if (!e.status) return; + switch (e.status) { + case UPLOAD_STATUS.MERGING: + case UPLOAD_STATUS.UPLOADING: + msg.progress = e.progress; + break; + case UPLOAD_STATUS.COMPLETE: + msg.progress = 100; + msg.isImgLoading = false; + info.fileId = e.taskId; + msg.content = JSON.stringify(info); + await sendMessage(msg); + break; + default: + break; + } + } + }); + } + + return { sendMessage, sendFileMessage, sendTextMessage }; +} diff --git a/frontend/pc/IM/src/renderer/src/views/settings/SettingMenu.vue b/frontend/pc/IM/src/renderer/src/views/settings/SettingMenu.vue new file mode 100644 index 0000000..611d33f --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/settings/SettingMenu.vue @@ -0,0 +1,261 @@ + + + + + \ No newline at end of file From 2ecaa28091b41de707825db3628d380b62fa727f Mon Sep 17 00:00:00 2001 From: nanxun Date: Wed, 25 Feb 2026 20:54:52 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E5=89=8D=E7=AB=AF=EF=BC=9A=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96electron=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/pc/IM/src/main/index.js | 8 +- frontend/pc/IM/src/main/ipcHandlers/window.js | 65 ++- frontend/pc/IM/src/preload/index.js | 5 +- frontend/pc/IM/src/renderer/src/App.vue | 9 - .../src/components/WindowControls.vue | 16 +- .../src/components/electron/ImagePreview.vue | 39 ++ .../pc/IM/src/renderer/src/router/index.js | 3 + .../pc/IM/src/renderer/src/stores/signalr.js | 2 - .../pc/IM/src/renderer/src/views/Main.vue | 11 +- .../pc/IM/src/renderer/src/views/Test.vue | 340 ++++++++------- .../messageContent/MessageContent.vue | 393 ++++++++++-------- 11 files changed, 505 insertions(+), 386 deletions(-) create mode 100644 frontend/pc/IM/src/renderer/src/components/electron/ImagePreview.vue diff --git a/frontend/pc/IM/src/main/index.js b/frontend/pc/IM/src/main/index.js index 00e3911..1471672 100644 --- a/frontend/pc/IM/src/main/index.js +++ b/frontend/pc/IM/src/main/index.js @@ -27,6 +27,11 @@ function createWindow() { mainWindow.show() }) + mainWindow.on('close', (event) => { + event.preventDefault(); + mainWindow.hide() + }) + mainWindow.webContents.setWindowOpenHandler((details) => { shell.openExternal(details.url) return { action: 'deny' } @@ -75,9 +80,10 @@ app.whenReady().then(() => { // explicitly with Cmd + Q. app.on('window-all-closed', () => { if (process.platform !== 'darwin') { - app.quit() + //app.quit() } }) + // In this file you can include the rest of your app's specific main process // code. You can also put them in separate files and require them here. diff --git a/frontend/pc/IM/src/main/ipcHandlers/window.js b/frontend/pc/IM/src/main/ipcHandlers/window.js index 828cb62..2b71798 100644 --- a/frontend/pc/IM/src/main/ipcHandlers/window.js +++ b/frontend/pc/IM/src/main/ipcHandlers/window.js @@ -1,15 +1,68 @@ -import { ipcMain, BrowserWindow } from "electron"; +import { ipcMain, BrowserWindow } from 'electron' +import icon from '../../../resources/icon.png?asset' +import { join } from 'path' +import { is } from '@electron-toolkit/utils' + +export function registerWindowHandler() { + const windowMapData = new Map() -export function registerWindowHandler(){ ipcMain.on('window-action', (event, action) => { - const win = BrowserWindow.fromWebContents(event.sender); - if (!win) return; + const win = BrowserWindow.fromWebContents(event.sender) + if (!win) return const actions = { minimize: () => win.minimize(), maximize: () => (win.isMaximized() ? win.unmaximize() : win.maximize()), close: () => win.hide(), + closeThis: () => { + const mainWin = BrowserWindow.fromId(1); // 假设 ID 1 是主窗口 + const win = BrowserWindow.fromWebContents(event.sender) + if(win.id != mainWin?.id){ + win.destroy() + } + }, isMaximized: () => win.isMaximized() - }; - actions[action]?.(); + } + actions[action]?.() + }) + ipcMain.on('window-new', (event, { route, data }) => { + const win = new BrowserWindow({ + width: 900, + height: 670, + show: true, + autoHideMenuBar: true, + frame: false, + ...(process.platform === 'linux' ? { icon } : {}), // Linux 必须在这里设 + icon: join(__dirname, '../../../resources/icon.png'), // Windows 开发环境预览 + webPreferences: { + preload: join(__dirname, '../preload/index.js'), + sandbox: false + } + }) + + const winId = win.id + windowMapData.set(winId, data) + + // 窗口关闭时,记得清理内存,防止内存泄漏 + win.on('closed', () => { + windowMapData.delete(winId) + }) + + // 构建 Query 参数 + const queryStr = `?winId=${winId}` + + if (is.dev && process.env['ELECTRON_RENDERER_URL']) { + // 开发环境:通常使用 Hash 路由 (如 http://localhost:5173/#/your-route?winId=1) + win.loadURL(`${process.env['ELECTRON_RENDERER_URL']}#/${route}${queryStr}`) + } else { + // 生产环境:loadFile 必须通过 hash 参数来传递路由和参数 + // 注意:join 会合并路径,hash 部分需要单独传给 options + win.loadFile(join(__dirname, '../../renderer/index.html'), { + hash: `${route}${queryStr}` + }) + } +}) + // 3. 增加数据索要接口 + ipcMain.handle('get-window-data', (event, winId) => { + return windowMapData.get(Number(winId)) }) } diff --git a/frontend/pc/IM/src/preload/index.js b/frontend/pc/IM/src/preload/index.js index 737bed4..923143a 100644 --- a/frontend/pc/IM/src/preload/index.js +++ b/frontend/pc/IM/src/preload/index.js @@ -7,7 +7,10 @@ const api = { minimize: () => ipcRenderer.send('window-action', 'minimize'), maximize: () => ipcRenderer.send('window-action', 'maximize'), close: () => ipcRenderer.send('window-action', 'close'), - isMaximized: () => ipcRenderer.send('window-action', 'isMaximized') + closeThis: () => ipcRenderer.send('window-action', 'closeThis'), + isMaximized: () => ipcRenderer.send('window-action', 'isMaximized'), + newWindow: (route, data) => ipcRenderer.send('window-new', { route, data }), + getWindowData: (winId) => ipcRenderer.invoke('get-window-data', winId) } } diff --git a/frontend/pc/IM/src/renderer/src/App.vue b/frontend/pc/IM/src/renderer/src/App.vue index 103066d..1290f45 100644 --- a/frontend/pc/IM/src/renderer/src/App.vue +++ b/frontend/pc/IM/src/renderer/src/App.vue @@ -10,15 +10,6 @@ import Alert from '@/components/messages/Alert.vue'; import { onMounted } from 'vue'; import { useAuthStore } from './stores/auth'; //import { useSignalRStore } from './stores/signalr'; - -onMounted(async () => { - const { useSignalRStore } = await import('./stores/signalr'); - const authStore = useAuthStore(); - const signalRStore = useSignalRStore(); - if(authStore.token){ - signalRStore.initSignalR(); - } -}) diff --git a/frontend/pc/IM/src/renderer/src/router/index.js b/frontend/pc/IM/src/renderer/src/router/index.js index 0810e24..7544bdb 100644 --- a/frontend/pc/IM/src/renderer/src/router/index.js +++ b/frontend/pc/IM/src/renderer/src/router/index.js @@ -70,6 +70,9 @@ const routes = [ meta: { requiresAuth: true } }, { path: '/test', component: TestView }, + { + path: '/imgpre', component: () => import('@/components/electron/ImagePreview.vue') + } ] const router = createRouter({ diff --git a/frontend/pc/IM/src/renderer/src/stores/signalr.js b/frontend/pc/IM/src/renderer/src/stores/signalr.js index 3b4f66d..d6badf1 100644 --- a/frontend/pc/IM/src/renderer/src/stores/signalr.js +++ b/frontend/pc/IM/src/renderer/src/stores/signalr.js @@ -6,8 +6,6 @@ import { useChatStore } from "./chat"; import { authService } from "@/services/auth"; import { generateSessionId } from "@/utils/sessionIdTools"; import { messageHandler } from "@/handler/messageHandler"; -import { useBrowserNotification } from "@/services/useBrowserNotification"; -import { useConversationStore } from "./conversation"; import { SignalRMessageHandler } from "@/utils/signalr/SignalMessageHandler"; import { signalRConnectionEventHandler } from "@/utils/signalr/signalRConnectionEventHandler"; diff --git a/frontend/pc/IM/src/renderer/src/views/Main.vue b/frontend/pc/IM/src/renderer/src/views/Main.vue index 8bfe2ea..cfc15a3 100644 --- a/frontend/pc/IM/src/renderer/src/views/Main.vue +++ b/frontend/pc/IM/src/renderer/src/views/Main.vue @@ -20,7 +20,7 @@ diff --git a/frontend/pc/IM/src/renderer/src/views/messages/messageContent/MessageContent.vue b/frontend/pc/IM/src/renderer/src/views/messages/messageContent/MessageContent.vue index 192f833..63d17fc 100644 --- a/frontend/pc/IM/src/renderer/src/views/messages/messageContent/MessageContent.vue +++ b/frontend/pc/IM/src/renderer/src/views/messages/messageContent/MessageContent.vue @@ -4,120 +4,108 @@
{{ conversationInfo?.targetName || '未选择会话' }}
- - - + + +
-
+
- - - - - -
+ + + + + +
-
-
- 正在播放视频 - -
+
+
+ 正在播放视频 + +
-
- -
-
+
+ +
+
-
-
-
- -
- - -
-
{{ m.senderName }}
-
-
{{ m.content }}
-
{{ m.content }}
-
- 图片消息 - -
-
-
- - - - - {{ m.progress || 0 }}% -
-
- - -
-
- - -
- -
+ + + +
+ + +
+
{{ + m.senderName }}
+
+
{{ m.content }}
+
{{ m.content }}
+
+ 图片消息 + +
+
+
+ + + + + {{ m.progress || 0 }}% +
+
+ + +
+
+ + +
+ + +
- {{ formatDate(m.timeStamp) }} + {{ formatDate(m.timeStamp) }} +
-
-
-
- - - -
- -
- -
-
- +
+
+ + + +
+ +
+ +
+
+
@@ -150,10 +138,10 @@ import { isElectron } from '../../../utils/electronHelper'; const props = defineProps({ - id:{ - type: String, - required:true - } + id: { + type: String, + required: true + } }) const infoSideBarShow = ref(false); @@ -162,7 +150,7 @@ const chatStore = useChatStore(); const signalRStore = useSignalRStore(); const conversationStore = useConversationStore(); const message = useMessage(); -const {sendMessage, sendFileMessage, sendTextMessage} = useSendMessageHandler(); +const { sendMessage, sendFileMessage, sendTextMessage } = useSendMessageHandler(); const input = ref(''); // 输入框内容 const historyRef = ref(null); // 绑定 DOM 用于滚动 @@ -186,10 +174,10 @@ const videoUrl = ref(null); const videoOpen = ref(false) const infoShowHandler = () => { - if(infoSideBarShow.value) - infoSideBarShow.value = false; -else -infoSideBarShow.value =true; + if (infoSideBarShow.value) + infoSideBarShow.value = false; + else + infoSideBarShow.value = true; } @@ -221,22 +209,31 @@ const getImageStyle = (content) => { const imagePreview = (m) => { const imageList = chatStore.messages - .filter(x => x.type == 'Image') - ; + .filter(x => x.type == 'Image') + ; const index = imageList.indexOf(m); - previewImages({ - imgList: imageList.map(m => m.content.url), - nowImgIndex: index - }); + if (isElectron()) { + const safeData = JSON.parse(JSON.stringify( { + imageList, + index + })); + window.api.window.newWindow('imgpre',safeData); + } else { + previewImages({ + imgList: imageList.map(m => m.content.url), + nowImgIndex: index + }); + } + } const startRecord = async () => { - try{ - const stream = await navigator.mediaDevices.getUserMedia({audio:true}); + try { + const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); mediaRecorder = new MediaRecorder(stream); audioChunks = []; mediaRecorder.ondataavailable = e => { - if(e.data.size > 0) audioChunks.push(e.data); + if (e.data.size > 0) audioChunks.push(e.data); } // 录音结束后的处理 mediaRecorder.onstop = () => { @@ -251,13 +248,13 @@ const startRecord = async () => { }); handleFile([audioFile]).finally(() => { // 停止所有轨道以关闭麦克风图标 - stream.getTracks().forEach(track => track.stop()); + stream.getTracks().forEach(track => track.stop()); }); }; mediaRecorder.start(); isRecord.value = true; - }catch(e){ + } catch (e) { console.log(e) message.error('无法获取麦克风权限!'); } @@ -330,15 +327,15 @@ const handleRightClick = (e, m) => { }, { label: '多选', - action: () => {} + action: () => { } }, { label: '翻译', - action: () => {} + action: () => { } }, { label: '引用', - action: () => {} + action: () => { } }, { label: '删除', @@ -356,7 +353,7 @@ watch( conversationStore.conversations.find(x => x.id == conversationInfo.value.id).unreadCount = 0; signalRStore.clearUnreadCount(conversationInfo.value.id); }, - {deep: true} + { deep: true } ); // 自动滚动到底部 @@ -387,30 +384,30 @@ async function handleFile(files) { let info = {}; let localUrl = null; let img = null; - switch(getMessageType(file.type)){ + switch (getMessageType(file.type)) { case FILE_TYPE.Image: localUrl = URL.createObjectURL(file); img = await loadImage(localUrl); info = new ImageInfo(file.type, '[图片]', img.width, img.height, await generateImageThumbnailBlob(await loadImage(localUrl), 200)); break; - case FILE_TYPE.Video: { - const imgBlob = await getVideoThumbnailBlob(file); - localUrl = URL.createObjectURL(imgBlob); - img = await loadImage(localUrl); + case FILE_TYPE.Video: { + const imgBlob = await getVideoThumbnailBlob(file); + localUrl = URL.createObjectURL(imgBlob); + img = await loadImage(localUrl); - info = new VideoInfo(file.type,'[视频]', img.width, img.height, imgBlob, await getVideoDuration(file)); - break; - } - case FILE_TYPE.Voice: { - localUrl = URL.createObjectURL(file); - info = new VoiceInfo(file.type,'[语音消息]', await getVideoDuration(file)); - break; - } + info = new VideoInfo(file.type, '[视频]', img.width, img.height, imgBlob, await getVideoDuration(file)); + break; + } + case FILE_TYPE.Voice: { + localUrl = URL.createObjectURL(file); + info = new VoiceInfo(file.type, '[语音消息]', await getVideoDuration(file)); + break; + } } - await sendFileMessage(file, conversationInfo,info,localUrl); + await sendFileMessage(file, conversationInfo, info, localUrl); } function toggleEmoji() { @@ -422,20 +419,20 @@ async function loadConversation(conversationId) { const res = await messageService.getConversationById(conversationId); conversationInfo.value = res.data; */ - if(conversationStore.conversations.length == 0){ - await conversationStore.loadUserConversations(); - } - conversationInfo.value = conversationStore.conversations.find(x => x.id == Number(conversationId)); + if (conversationStore.conversations.length == 0) { + await conversationStore.loadUserConversations(); + } + conversationInfo.value = conversationStore.conversations.find(x => x.id == Number(conversationId)); } const initChat = async (newId) => { await loadConversation(newId); - if(conversationInfo.value){ + if (conversationInfo.value) { const sessionid = generateSessionId( - conversationInfo.value.userId, conversationInfo.value.targetId, conversationInfo.value.chatType == MESSAGE_TYPE.GROUP) - await chatStore.swtichSession(sessionid,newId); - isFinished.value = false; - scrollToBottom(); + conversationInfo.value.userId, conversationInfo.value.targetId, conversationInfo.value.chatType == MESSAGE_TYPE.GROUP) + await chatStore.swtichSession(sessionid, newId); + isFinished.value = false; + scrollToBottom(); } } @@ -446,7 +443,7 @@ watch( () => { // 如果没有 ID,或者 Store 还没加载,返回一个安全的默认值 if (!conversationStore.conversations.length) { - return [props.id,null]; + return [props.id, null]; } // 尝试找到当前会话 @@ -465,9 +462,9 @@ watch( // 场景 A:路由切换 (ID 变了) // 这里的逻辑是:只要切了 ID,先加载本地的给用户看 //if (newId !== oldId) { - // 注意:这里只是加载本地缓存,不负责去服务器拉新 - // 真正的“拉新”逻辑交给下面的 isInited 判断 - await initChat(newId); + // 注意:这里只是加载本地缓存,不负责去服务器拉新 + // 真正的“拉新”逻辑交给下面的 isInited 判断 + await initChat(newId); //} // 场景 B:检测到需要补洞 (isInited 变为 false) @@ -482,23 +479,23 @@ watch( const msgList = await chatStore.fetchNewMsgFromServier(newId); const session = conversationStore.conversations.find(x => x.id == Number(newId)); - if(msgList && msgList.length > 0){ - const minSequenceId = Math.min(...msgList.map(m => m.sequenceId)); - const locaMaxSequenceId = chatStore.maxSequenceId; - if(locaMaxSequenceId < (minSequenceId - 1)){ - chatStore.messages = [];; - } - await chatStore.pushAndSortMessagesAsync(msgList, generateSessionId(session.userId, session.targetId, session.chatType == MESSAGE_TYPE.GROUP), true); + if (msgList && msgList.length > 0) { + const minSequenceId = Math.min(...msgList.map(m => m.sequenceId)); + const locaMaxSequenceId = chatStore.maxSequenceId; + if (locaMaxSequenceId < (minSequenceId - 1)) { + chatStore.messages = [];; } - // 3. 如果有新消息,存入 Store + await chatStore.pushAndSortMessagesAsync(msgList, generateSessionId(session.userId, session.targetId, session.chatType == MESSAGE_TYPE.GROUP), true); + } + // 3. 如果有新消息,存入 Store // 4. 关键步骤:手动把状态回正! // 必须重新 find 一次对象,确保引用是对的 if (session) { - session.isInitialized = true; - console.log(`[同步完成] 会话 ${newId} 状态已重置为 true`); + session.isInitialized = true; + console.log(`[同步完成] 会话 ${newId} 状态已重置为 true`); } } } catch (err) { @@ -509,14 +506,14 @@ watch( ); const initObs = async () => { -await nextTick(); + await nextTick(); observer = new IntersectionObserver((entries) => { const entry = entries[0]; // 只有当 Loading 组件进入视口,且满足触发条件 if (entry.isIntersecting) { - loadHistoryMsg(); - } + loadHistoryMsg(); + } }, { root: historyRef.value, // 指定监听容器 threshold: 0.1 // 露出 10% 就算触发 @@ -527,7 +524,7 @@ await nextTick(); // 如果 sentinel 是组件,需要拿它底下的 $el observer.observe(loadingRef.value.$el || loadingRef.value); } -// 3. 【主动侦测逻辑】 + // 3. 【主动侦测逻辑】 // 如果当前没有在加载,且还没有结束,且内容还没有撑开容器 const el = historyRef.value; if (el && !isLoading.value && !isFinished.value) { @@ -555,7 +552,8 @@ onUnmounted(() => { .chat-panel { display: flex; flex-direction: column; - height: 100%; /* 确保占满父容器 */ + height: 100%; + /* 确保占满父容器 */ background: #f5f5f5; } @@ -584,6 +582,7 @@ onUnmounted(() => { border-bottom: 1px solid #e0e0e0; -webkit-app-region: drag; } + /* 遮罩层:全屏、黑色半透明、固定定位 */ .video-overlay { position: fixed; @@ -595,7 +594,8 @@ onUnmounted(() => { display: flex; align-items: center; justify-content: center; - z-index: 9999; /* 确保在最顶层 */ + z-index: 9999; + /* 确保在最顶层 */ } /* 播放器弹窗主体 */ @@ -606,7 +606,7 @@ onUnmounted(() => { background: #000; border-radius: 8px; overflow: hidden; - box-shadow: 0 10px 30px rgba(0,0,0,0.5); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); } /* 顶部状态栏(包含关闭按钮) */ @@ -637,15 +637,19 @@ onUnmounted(() => { .player-wrapper { width: 100%; - aspect-ratio: 16 / 9; /* 锁定 16:9 比例 */ + aspect-ratio: 16 / 9; + /* 锁定 16:9 比例 */ background: #000; } /* 进场动画 */ -.fade-enter-active, .fade-leave-active { +.fade-enter-active, +.fade-leave-active { transition: opacity 0.3s ease; } -.fade-enter-from, .fade-leave-to { + +.fade-enter-from, +.fade-leave-to { opacity: 0; } @@ -679,15 +683,23 @@ onUnmounted(() => { } @keyframes pulse { - 0% { transform: scale(1); } - 50% { transform: scale(1.1); } - 100% { transform: scale(1); } + 0% { + transform: scale(1); + } + + 50% { + transform: scale(1.1); + } + + 100% { + transform: scale(1); + } } .image-msg { - max-width: 100px; - max-height: 200px; - object-fit: cover; + max-width: 100px; + max-height: 200px; + object-fit: cover; } /* 容器:由计算属性决定宽高 */ @@ -705,14 +717,16 @@ onUnmounted(() => { .image-msg-content { width: 100%; height: 100%; - object-fit: cover; /* 关键:裁剪而非拉伸 */ + object-fit: cover; + /* 关键:裁剪而非拉伸 */ display: block; } /* 覆盖层 */ .image-overlay { position: absolute; - inset: 0; /* 铺满父容器 */ + inset: 0; + /* 铺满父容器 */ background: rgba(0, 0, 0, 0.3); display: flex; flex-direction: column; @@ -727,21 +741,27 @@ onUnmounted(() => { width: 40px; height: 40px; } + .circular-progress svg { transform: rotate(-90deg); } + .circular-progress circle { fill: none; stroke-width: 3; } + .circular-progress .bg { stroke: rgba(255, 255, 255, 0.3); } + .circular-progress .bar { stroke: #ffffff; - stroke-dasharray: 100; /* 这里的 100 对应周长 */ + stroke-dasharray: 100; + /* 这里的 100 对应周长 */ transition: stroke-dashoffset 0.2s; } + .circular-progress .pct { position: absolute; inset: 0; @@ -750,6 +770,7 @@ onUnmounted(() => { justify-content: center; font-size: 10px; } + .error-icon { color: #ff4d4f; } @@ -789,15 +810,18 @@ onUnmounted(() => { from { transform: rotate(0deg); } + to { transform: rotate(360deg); } } .loaderIcon { - display: inline-block; /* 必须是 block 或 inline-block 才能旋转 */ + display: inline-block; + /* 必须是 block 或 inline-block 才能旋转 */ line-height: 0; - animation: spin 1s linear infinite; /* 1秒转一圈,线性速度,无限循环 */ + animation: spin 1s linear infinite; + /* 1秒转一圈,线性速度,无限循环 */ } .status { @@ -809,6 +833,7 @@ onUnmounted(() => { .msg.mine { flex-direction: row-reverse; } + .msg.mine .msg-content { display: flex; justify-content: flex-end; From e43f7d63656bdab9f0c8a1379b8674d404641ca2 Mon Sep 17 00:00:00 2001 From: nanxun Date: Wed, 25 Feb 2026 20:54:52 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=89=8D=E7=AB=AF=EF=BC=9A=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96electron=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IMTest/bin/Debug/net8.0/IMTest.deps.json | 16 + backend/IMTest/bin/Debug/net8.0/IMTest.dll | Bin 46080 -> 46080 bytes backend/IMTest/bin/Debug/net8.0/IMTest.pdb | Bin 32580 -> 32628 bytes .../IMTest/bin/Debug/net8.0/IM_API.deps.json | 16 + backend/IMTest/bin/Debug/net8.0/IM_API.dll | Bin 529920 -> 573440 bytes backend/IMTest/bin/Debug/net8.0/IM_API.exe | Bin 151552 -> 151552 bytes backend/IMTest/bin/Debug/net8.0/IM_API.pdb | Bin 144348 -> 153256 bytes .../IMTest/bin/Debug/net8.0/appsettings.json | 4 +- .../obj/Debug/net8.0/IMTest.AssemblyInfo.cs | 2 +- .../net8.0/IMTest.AssemblyInfoInputs.cache | 2 +- .../IMTest.csproj.AssemblyReference.cache | Bin 36792 -> 43525 bytes .../IMTest.csproj.CoreCompileInputs.cache | 2 +- .../net8.0/IMTest.csproj.FileListAbsolute.txt | 1 + backend/IMTest/obj/Debug/net8.0/IMTest.dll | Bin 46080 -> 46080 bytes backend/IMTest/obj/Debug/net8.0/IMTest.pdb | Bin 32580 -> 32628 bytes .../IMTest/obj/Debug/net8.0/ref/IMTest.dll | Bin 17920 -> 17920 bytes .../IMTest/obj/Debug/net8.0/refint/IMTest.dll | Bin 17920 -> 17920 bytes backend/IM_API/Configs/MapperConfig.cs | 12 + backend/IM_API/Controllers/GroupController.cs | 10 + .../Interface/Services/IGroupService.cs | 2 + .../20260306065353_uploadtask-url.Designer.cs | 1173 +++++++++++++++++ .../20260306065353_uploadtask-url.cs | 30 + .../Migrations/ImContextModelSnapshot.cs | 3 + backend/IM_API/Models/Upload/UploadTask.cs | 1 + .../IM_API/Services/ConversationService.cs | 3 +- backend/IM_API/Services/GroupService.cs | 19 + .../IM_API/Services/LocalStorageService.cs | 10 +- backend/IM_API/VOs/Group/GroupMemberVo.cs | 14 + frontend/pc/IM/src/main/index.js | 4 +- frontend/pc/IM/src/main/ipcHandlers/window.js | 65 +- frontend/pc/IM/src/main/trayHandler.js | 6 +- frontend/pc/IM/src/preload/index.js | 5 +- frontend/pc/IM/src/renderer/index.html | 3 +- frontend/pc/IM/src/renderer/src/App.vue | 14 +- .../src/components/WindowControls.vue | 16 +- .../src/components/electron/ImagePreview.vue | 39 + .../renderer/src/handler/messageHandler.js | 4 +- .../pc/IM/src/renderer/src/router/index.js | 3 + .../src/renderer/src/services/userService.js | 6 + .../pc/IM/src/renderer/src/stores/auth.js | 18 +- .../pc/IM/src/renderer/src/stores/contact.js | 6 +- .../pc/IM/src/renderer/src/stores/settings.js | 20 + .../pc/IM/src/renderer/src/stores/signalr.js | 2 - .../pc/IM/src/renderer/src/views/Main.vue | 11 +- .../pc/IM/src/renderer/src/views/Test.vue | 340 +++-- .../messageContent/MessageContent.vue | 393 +++--- .../src/views/settings/AccountSecurity.vue | 237 ++++ .../src/views/settings/GeneralSettings.vue | 230 ++++ .../src/views/settings/NotificationEdit.vue | 204 +++ .../src/views/settings/SettingContent.vue | 151 +++ .../src/views/settings/SettingMenu.vue | 154 +-- .../src/views/settings/UserProfileEdit.vue | 221 ++++ 52 files changed, 2929 insertions(+), 543 deletions(-) create mode 100644 backend/IM_API/Migrations/20260306065353_uploadtask-url.Designer.cs create mode 100644 backend/IM_API/Migrations/20260306065353_uploadtask-url.cs create mode 100644 backend/IM_API/VOs/Group/GroupMemberVo.cs create mode 100644 frontend/pc/IM/src/renderer/src/components/electron/ImagePreview.vue create mode 100644 frontend/pc/IM/src/renderer/src/services/userService.js create mode 100644 frontend/pc/IM/src/renderer/src/stores/settings.js create mode 100644 frontend/pc/IM/src/renderer/src/views/settings/AccountSecurity.vue create mode 100644 frontend/pc/IM/src/renderer/src/views/settings/GeneralSettings.vue create mode 100644 frontend/pc/IM/src/renderer/src/views/settings/NotificationEdit.vue create mode 100644 frontend/pc/IM/src/renderer/src/views/settings/SettingContent.vue create mode 100644 frontend/pc/IM/src/renderer/src/views/settings/UserProfileEdit.vue diff --git a/backend/IMTest/bin/Debug/net8.0/IMTest.deps.json b/backend/IMTest/bin/Debug/net8.0/IMTest.deps.json index 8a8287e..f45fecd 100644 --- a/backend/IMTest/bin/Debug/net8.0/IMTest.deps.json +++ b/backend/IMTest/bin/Debug/net8.0/IMTest.deps.json @@ -1002,6 +1002,14 @@ "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, + "SixLabors.ImageSharp/3.1.12": { + "runtime": { + "lib/net6.0/SixLabors.ImageSharp.dll": { + "assemblyVersion": "3.0.0.0", + "fileVersion": "3.1.12.0" + } + } + }, "StackExchange.Redis/2.9.32": { "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "10.0.2", @@ -1692,6 +1700,7 @@ "Newtonsoft.Json": "13.0.4", "Pomelo.EntityFrameworkCore.MySql": "8.0.3", "RedLock.net": "2.3.2", + "SixLabors.ImageSharp": "3.1.12", "StackExchange.Redis": "2.9.32", "Swashbuckle.AspNetCore": "6.6.2", "System.IdentityModel.Tokens.Jwt": "8.14.0" @@ -2362,6 +2371,13 @@ "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", "hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" }, + "SixLabors.ImageSharp/3.1.12": { + "type": "package", + "serviceable": true, + "sha512": "sha512-iAg6zifihXEFS/t7fiHhZBGAdCp3FavsF4i2ZIDp0JfeYeDVzvmlbY1CNhhIKimaIzrzSi5M/NBFcWvZT2rB/A==", + "path": "sixlabors.imagesharp/3.1.12", + "hashPath": "sixlabors.imagesharp.3.1.12.nupkg.sha512" + }, "StackExchange.Redis/2.9.32": { "type": "package", "serviceable": true, diff --git a/backend/IMTest/bin/Debug/net8.0/IMTest.dll b/backend/IMTest/bin/Debug/net8.0/IMTest.dll index 20b497b9cf3d22b22413756cce0e2138aa3fc9d0..044ea8a1b8afc88822ae5b005141987fb522bb62 100644 GIT binary patch delta 248 zcmZp8!PM}AX+j6f@uSu!H}D%(cH*9je)_3k->d({zB!=4hs`FSq!Jn zYMi`eRe-?csH}|S`;*)oG&fCCxZJ8RnPqjb0#q>E0V)Vo&6upQNap_|n}dsI@^)-4 zU){^>Z^V$wkj#(>ghmV&3>~I6;^xf6(DeTLg}r;QHI|8Hmd!dvHP(6WR}&z3Q$39m>^KKvE5Fe`}xxfWjVHODBN7W zx|i8Mg~5cuh{2Mr}h^2aL6)j|a0YYl6;L@#I(fTaLrR#dOXIb~S+LgnRy}u+&^JkrN=5xRE zx%W5oo1En2{8Q>bPpR5M^%XO~i;MHjIsmY(&o%1r)GxKpY}={suTaN*w70CT_5x>0 zryyFOKqJ^B>cs$%!OL11+`^L;(S!ubz#=N(13W_|1;j~Y%vMMRyzB=YxiQEg(OpTV z;4M7`20h8-prFc~DX{Bt;S>u6?Ot)tTmR%U{Oe55GP1DUCkJHx>{t5aA)l4Wr+{AfwE_mb^`5s5 zdFvx@wTyU!JlC^O<*uH*-6wzJljoU8pBxG>`Q(52D`RAZilR6-n* zfq0R38w-yr5ib~6DvGGyLNXwTR?N9b21-OH=Brv4GC^?R{A>y2G^9ytqz=hIfy86p zj8wuFBm-rVh-Mp-fqKd6?pm?ifSGjdXg-$g7Q8qnIq{-WaANxuW(K+?mwSN=O)qA$ z02DM_LNahmQe)nXRKgEP(&f?oh{VrK65U-9yK}Xy`5(6v^ce8+H;Q*3@(^(=*TVQ>*h-x;HgZOMG4)q~fXhw3- zo~`C+SY}XjEQBLDm|?K1Xb3UdRV?&l=HQ_L{At)>1b-INksK5oMKq&G7Oo*V7&1E1 zWal{1BqBLT$x#Q;U~yu>9U(b5o+FN@;r(23JPXN44)nQBG(AWbK1XuUm8%YRSJE{#x4mRe& z1Tq8@SZK#ghD0xo!d@eU`Mmg9AQVLF+(T~wMZ7q%p&GqBnxL8C&tzJS@y2!$w<|n zyK_Oj{UCMW;Ox$T)+aaa-zyc`YYn znONp|#maBX-`zd$rD?Tq)L%UC>QA$xw?tQ|hPJFSEy^{`E}dl4EO-*SFD<4@<+nfn z&kds^_eKZ49z4C%5^*=MCoZG+3rqF~GI||TekCIyjXtwr(~22S?;dTs_}(eQz+YRM z;?;eVYkpNcKjp#aK~q}lTROYjk{`#urkisq>51`^{nhM(OKUgIZ`l>ID)L5h$HC5S z2VY`dcIbYKq5R2jPjwDv^(`8{5OcJyFL?BR6&HOy=Jvu}YtQNiVlq1)#Rqrb4XHFb%UwE7kL?8Ark z5!Bn|k!dN-ju-a-=43$o;e)Sran~D9olRKXl$7+DQokZJ!oND8e2HEh+;-^Gc6Qs* zS>sanCM6aQFWUIwaGd-zdQiO4G%aZO{>JZW#PE5U{g;mjwU6b;-?m0BUcA*@v%Ph@ z;+=%X!1dGPZbn6ZV%$3MmLmMCiqq+%C%)V{GhQ=NIrk5rt}9R6H+r_@>PyQTs>7fA z=cY9&x~Ms!OPXeWVXX*>@c;V1XD(Mp`Bw_I=&*i8{M@;5j?u7WiaKvgp42vJ$L->M zV3onhohuDBAybzf3I2BZ?p^0Y9bw_6F>`a?O_p@#qT*OhzGTQ+ZIp@%V>9#ckBmw! z+p`_4YWV&=O<&)2VNv5>j=fr0f3?eDOKOhVunqq!(yIv$6SNU@5s*KT^g9HP2}TeZ zN`grQGYMWNNF~q{6cbnp8VNcab@?Kd_AC$3CgDQu2C~}yfU$dP3yAZ%w{5BUZ_l>( zU%YL6l6b&TSx8fnzhv*W)_1l((@W~y?=tpkzHdd|o^*BOO?5Sn-xqcG%K-idyi4#l delta 2693 zcmb7_eN4sDRS-`_CG{F!sk{XE~_ z=Xvh$-rtoP92iH$kyxyV^zbiss;Nlnr0 z0f7%k_nSF-$UMF-31p5M%((GBJ4c&>qCHq&3mKNm#&6sdk}rnj#PabOPe{(J825Yc zWad0(Go69Fl9Qm}4Im4Tj|T)nj&y8tMqFHMBoi4+N_x zSU(C@`-xyU7p#MU%C^x^an0>bHRKA(yk*?a3(1E=vOgr7YscrehvWn+6$U#RGFWd9 zv8pC-V6CR>cf6XG)ZL!JZzLqo!S8D9!;!^(OC7;Sx8WyLVC3kx3P)d=IC{mIAg#Aw zUzvh)ZRArZjP?k6;wehjQ#ehL737Cy2e<$fXo>7XUIB)a3<^{szl+y8!Fk{~$O zGhjG*L4m%K6`22k;q)CS(2ueUX1CD;M#&!dUZWTJijh=2T>}OBpHYW=6AUM{qJxQ0 z^Z{enLq%gD&^?L*bw4Q3EX9F57Zm7m#e=-t=mn!>FXnG3q~>Y5Ne5_K}YvOsMnZ{P+mOb0T%fiyh5 z4hpo-q(jaH!|7d+b@edsgZR!&N}#Ktdk&d(y)a*wdSSjTr7)hp2L%$$x-dIW(I^7l zXI9WCGV6JPTFeg6VfKI<%#Lt;b)ZO}fD&Cbdtn@9UYI4IM3rTFfu~PFkq&|qeN^Ux zNho*0M1sta$dkLAM3EXniC!#MMBYwm6$;c1EF_Ak@L*^MC{hzB(WVNW#M8Z%I!UB| zBTMu{g)4%mp-NYTNV`CZ{#Hp7c#^AVf=Dw#i56BVFsDJ0_JR_5syr~itoFb}gAz@v z)na#LhitM#6sB}=GoLY)uLlh&@CS*3Gz)Z3# zFoU%U%y6wIFynz)VD$uMbd!1dr&Tvuqz+Ibx77>tc%2tU2TJsdI=vQuHK0gugZR$s zTre|iQ(aIAHk!gyDJYV`rXY8KBE979nb;O)-ygX?sUu#TR(Gj2|LKz&i~0E0EbFp@ z<>$^DMjw1*yJq!YV>Co(`}=pz@cPd57wykYOF!DbXz|DS>3M0ni@MbjYdr3r{LU-# zkI&El!k?P3v(7m3PSdDA)xWc;VAX|Fnj(Mct#xq`&vh=kIDFXs#lUNs%aU98mOj33 z!{!!yat_b)x~BS`#r@Yb_x?~@Jn9@g-+8j8IqSK9xKkhAIs8Za>BHY2?OcI=^XU(K zM_>88(h~QG@xa7ARQ0WM>Y>lCeck+C<9X*)L+4COOO|cog?F}GegEW}R>uM1Qi1DO z+-T*m2Qm|C{<|T|)xG%Hw3heE5|1Cv8d*L!|LQEC-8Uos#PR$h;SXsub3g9M@qH7v z>rG!*@|Lop%PZEl=cL5O?H)?@EiE?9IMulB*h7~u$0iLu^{dV8+VbSzZ|b@B3qjGUYOX{h!`X`ebOA4KNXE#3Bmp&&YGp%P&{JE%XrAz(u>wT++cKPCb zYX)E4y0&-jRjqw;V!mOH+K`>Cj)=(a{jy!_?^^0!p!R>5;ZDl#UD~VlXROs`8!qjO zoPKO^>Y|yi>*BL#=Qk9lp8DM*S3J4etpnQU*Y3!h(^#lI^3v@5!X17?;oyrgXB!Rv zJZ-1#!prSq^FdlO_1W@<#%fy~%_g(WT3=mT-jL3eb6)I0O-9xO8SatT0*-5QJ{JF{ z_`NqiJ41?!-pbon`b^lu`ENy?j$9vQ8E{A6^Fq4&NX{F{zgdp|3nfN|7KU{Utqd-P zZic@zu>T(=0}S6Vi~=ho8B!QB85S}WGSoA??EZ^Y;g;Ra1B~&w(U=a5J>bsXMm^gx zWN&Aa&3AY2{*zxDPf{A)J@q`7^i$s5dGYBrcXi0pz*+7bE%a3E^sHOTPFiYm|GDAN Gg#QD<+Tt?+ diff --git a/backend/IMTest/bin/Debug/net8.0/IM_API.deps.json b/backend/IMTest/bin/Debug/net8.0/IM_API.deps.json index 5086600..a5796bf 100644 --- a/backend/IMTest/bin/Debug/net8.0/IM_API.deps.json +++ b/backend/IMTest/bin/Debug/net8.0/IM_API.deps.json @@ -20,6 +20,7 @@ "Newtonsoft.Json": "13.0.4", "Pomelo.EntityFrameworkCore.MySql": "8.0.3", "RedLock.net": "2.3.2", + "SixLabors.ImageSharp": "3.1.12", "StackExchange.Redis": "2.9.32", "Swashbuckle.AspNetCore": "6.6.2", "System.IdentityModel.Tokens.Jwt": "8.14.0" @@ -870,6 +871,14 @@ } } }, + "SixLabors.ImageSharp/3.1.12": { + "runtime": { + "lib/net6.0/SixLabors.ImageSharp.dll": { + "assemblyVersion": "3.0.0.0", + "fileVersion": "3.1.12.0" + } + } + }, "StackExchange.Redis/2.9.32": { "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "10.0.2", @@ -1564,6 +1573,13 @@ "path": "redlock.net/2.3.2", "hashPath": "redlock.net.2.3.2.nupkg.sha512" }, + "SixLabors.ImageSharp/3.1.12": { + "type": "package", + "serviceable": true, + "sha512": "sha512-iAg6zifihXEFS/t7fiHhZBGAdCp3FavsF4i2ZIDp0JfeYeDVzvmlbY1CNhhIKimaIzrzSi5M/NBFcWvZT2rB/A==", + "path": "sixlabors.imagesharp/3.1.12", + "hashPath": "sixlabors.imagesharp.3.1.12.nupkg.sha512" + }, "StackExchange.Redis/2.9.32": { "type": "package", "serviceable": true, diff --git a/backend/IMTest/bin/Debug/net8.0/IM_API.dll b/backend/IMTest/bin/Debug/net8.0/IM_API.dll index ad7198412413ef8ee57c9f1bd631961c72e0e232..317926aba700437e0c3cef88100801a69899069a 100644 GIT binary patch literal 573440 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
*x#aG1e6g)WfV-d=$8Ry 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 z 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�C__CVc7Wob zlsr~2cGO!lEoSV`fe1x|o%!Q`4J-MoW2enluy+W`KJ(Dn3A6>6W9Vq{Sm^amSRJw+eOpfHSUCd8c|%bt!d2w1;;~zwuiGKwp*9-ldc(qe)UX%q%x` zBQaRciNVPe9RYPyetDrHshBFO+4sjgVimu5>i_xOC7=I?=VJ4!4}5t?^|pW5**Foa z_~+;D9+-OmpVG04@8B0T=yH5rpy&5LDd~!h2Rgq{z3nfak5wFf?%U6`Jbd%>v3ZRX zckHX)w(F6`Pw4c!dn8@)*N?;wX$r*nvuA?CY~jg+5AOY&&)j$*Hvh=O|9R({iGP01 z;7fk&fnPjjX}!DWZ+~~yeqw1{^7d!X{N27E{%&mk#q{|B)_rM5wA|EPSo-kXah9;o z_j`A5zlhjBcz)WHSG>EY@e@a%Ub!tc@95Jt`*wA`yXQwkv3VEMFYP$`H2WBo_Zeb&1a4^G=*68m!F(FzN^dN&ilJ(N3*sb`*Zxc2lr}<*Khyf zbEag@HfT|YTCLQaRZ1=F7ehf4vQ53 zl)(cmET#Tq#*}Tw>{T~#QKCk!!`}%h*$>@jPTf?zY#$79KlE5|7TFoY94S3+;9PQg zuyp3ZZ^eyb@HT{bG~ikdIp~pjE0h~1&dh0`FsZuEtW| z40@}~lcPrtY5T?@1=_s<)TD+HpQA&!OC6rQ)j`zgK}*BZ@_x{2LVg%^qb;{d%eUkC zK`oOO9Y1xGb>V#XCEs3e0d@~~9l(fMIa3ezgD1+f&y#cq@UWMFjMqR4>L&JAuOuyM zFW^t021kyy_JV4^Qq?|=s-^?Q9^(sRm^WHescU$J!_eZIgR=RQE@vk75&3!hk!G)u zZXj>gMcONTYBz|hshaPX0(;2;U<^Y8M!*wWCROT6w1i_d2rUs^yuq(SIe7HzIG+v( zrM=*YX>|iWL?)6Tmz1WrBHl>bGb+8N-s)AAbIy!XEn5!f891&ETW8NLCen+F(ISqu zGDtUQ=M}$q9h~6sM_RY-s_HiAS2O;vhFhxEbENGEQS#J-b(qccVd%J74QIdDi!A~< z0J?oj-9qcP7tU@caGQ|Ery7JFXVV5Z(rWE&c-rSE)B$ztY_&Sjj@1rz^K6)Q4$Mx^ zce>Rbv(pQ8kJ9rrV^(?G=d@6*nT>vkx7pX#Ypg???X-ASxrgoK^lM z?YV>W?zmpWZk^fI(kkwQy?+dI8Qzmvby`yD1?_co6oo_hJsq%mv>b&y7{R!Ciz%~I ziuP&IM%Wu|$+-{0@w-?ZRjWOsQS@&OR&exhGgn{#?@E`OJ>}P7I);4^SN?wd-HY~U z;iyBjd}ht6E7Ic)o7FCq4+1yTXk0-my3->xf7`9JLD>P2v2o0y{rAIO>9dm+Ab84>IZGFO{G@?@VIlBk+CmjVU?A2e!@z?+> zO)JL8hnB2|AsQRDoj0$=prE(@_(*N(m2PaApO!dfiHB}lO(oKHolizK2vSp7DXVDGnLzj7a_Z3l%; z>FH+l`62YZ3w_xu&<^yMId!LR;ltgeuPL;{c8v;Utm=yJCs9jsWOt=Sa73Sd9B&+D z_V^q*xtiG#MsiJmWnVRWf6d4)^XY~hdOfNpC-y)_@38VIZ-vaZs=M*r0ZCe&2`S%? z(aW0?qMM8j`B81xucG4>j^19hbB}reV|EWlvJ3uf*j7{zynZYUaXi_I?r^6`f04Vs zFw$*gDSMOr9!J~H)1FmfOHpoS&>1t6ZPcWQc8Ij1w7fpZ9*}!;N@FMFe;-o$`Mr=d zxz-wvIeklX6^@RBCpWC(I@X_OKV)`BY3P+W56{K)^LIP`ERWKO`V9t8q@-JzVQn`Y zafd-!(f=R8f9-vE@)EDXu2%NURTb$^R3?TG84K1P1!ejG{*jv!E{pGYOnuqqe~{gc z>X*7XI`+Ob_D1Rk!npz!(IBxeT(OFjRWPD6#+6FqUOH0P2V8;Gwx~O?XKcbA^mgnH znh?9XTYAp^Gp5@uYZxhTuf%mq$86OqMtK=U(jyR!nx(Lka;4--%osUNhUOf?e?;8p z^x*$~rS51~A4BcE_}hh+xN>tP;Ep34Q%l=MuMo4GgJ|8H3H*l-J_mb=avcj+kw`hC z!`uVu-r_W&mJm&yk#ayPIaXlC}XqAI5;# zpaqp&&AVa8|M=uTrQiE}g^JbMCCYB2R2dJgVr4vTi8cJ?XzbDW)nin44fS$480(77L925{5G?RRzy6jBVMw=y zVy{%KI*{m6+wjYn4jfN2pb=YWAX<&(6MJFRgKArO z-(NrX;U{A&fBwj+G|S^xk3M~WhM|)CGt5_AeQ+o9d`f-xuG&%@Nh4Rro?L4H1-;q+ zSI?C{%)_ks)oN9Vki$BR1szLHK=yD2rpr2v5hu|KOrLddIyNG;1`?*5PmESTKXTx$ zCn~PS=5;{D_3a8ZU-x<0V?0O%Z}ZvKUHd+{n>-@lK&`NWQBJuqv;)ra0vp_NsQF_L zbY(p0RmdS-7icZ9M|5$>XzTXtul^R6aT)!2_P7pMwM-xD-1W$V(6=p=f4NSnC7gCT zWS_@}8*kx2j!;*NWMUOOwrqX)Z#!ePOz}X}YOFq9T@AT)sMtJ~mOnf_P~8=~Z|B~v zau7;vYAvNs&AtBW)ZXh~_?ypA-q&A!ch4^dU)n)=GtGlkE%A5vd~e?m{s?lepbUk& zq&QNsMN#8w4WwE^crn*g&EvtWnFEsU_=5U9NTtFBQ_9G9tb%yo*oKmMfA)+^-@%lf zc|QN^l;)V)Qq?uTTl20t2aVgf^_b~MBv1O+jEi94qR?GoaD_%+4Es%e5A5m+4y)gz zoHsmh^0^=ERKG_XVd0Qx`O&8b9=IRlqYstCQBi-Ok9T!HI5xl7HoyBDIE3c`v>u`A zZKV2(Z4Yk$#HLwcdxXT>9?H2HN zr@8~YGu+x@o++eh-@@lDu$~+*j)GX}RSZFMMbT@?(EjURAVk|htq0l$avbd}6gftC z9faQ5gN@nxJ`*1LUO}!n8+pCq{tVlo++%C~Ik!$t?Tu>ZI%Tbewj3N8@Og~^MYMZc zxE@^p0=E;PeO?7yW^KE+thDRKdaPwS)R-p^-une!UeS{K$bnD)hi^ZpCHL+geKF)# zTHkrBWmbb_bYh}MmA>r2Tea^ltDEl6+$t+qI9I=Y`2LKxpOhK;J&$X})B~p;VOw@B zMtTq7a)kpj)jIyE^oj$z?!P>A->9B}KYi~1`vYye{`%R^zQ}d%`m0<)s;;g@ilyXX z1>DK&uM&ef%!Av$(sO&dEEB&7hjAmA;;g?7Qeb~ z+wc6&x@~sycdXeN^0%beftk#3=O;?8oGqYkIcF|gEOzi59-H}m!y5ex*w8__-t)ITmp?;Z z<*JYFWv#WoHuR&aIqqBo{^fID>4~iz{!D5|?-%IdQC~SCAAbIychcHxd#dyA?je?5 z-Pi8N3bBe*8b9%^-?ghmGrWa2{^;m)6<4pnTD^@Wwm#Fba@s!FwN)Q}{*HaNj@E#W z95_Av(Lt@_1*=TOf8Tzmc*C)I^hDVzycHas(d&wCA60FBcvmgrEyz)9LG&?7Bd(q_ zi;vCir4Hw*`F_xVo^$?oTrJ6`!YeUr<-pJ$z(lv#Hi)fmvgP!2W;h0{vRp8#{U9+9BSK$EMnginHqhu=E*Jq`0YZDQnR)~!z_UVNm)0XcK%|y!08jYM znJBgE7G8FTyoT_X+gi1Ry8_w*%7{k}v_m4TT5gWH$tItan<}SYO1aqGoQ7boImvO} z0;4uux!E^B=7(~Yb|W=NAsSLq^P`~}RYwho222!eo*U13)R}Sd^b5zRRm&{WCj5&E zw#mJUf^~9~idrWbp*n^GDQWH}=z~(*x1n8Lk8>loWTs;dEiJSQO|YRfjNOe^6N~G( zx#*_YMwp(N3CVP?vZc$0y;de4;j=dAHz=o-VpP!PN@5q=6&1r*n`dwJTIsN_q0alel%lOxhq$OY zFU+YWVcPfhfrXHH=y}g31GS+zjccvXzWBJ|PNQgFHhyqxvr|BOUazCJN_kgQqFR7j zH-;@2I~Ea~ZRykA?{ zIE)=* zH*FYo3?gE@m66sK#FWQT%)8fvcg~`mfW6Ab7e*QF8n|X6Cz{$*a zHqmSotv1nS6YXWGl31d|X793z4x89y6I*Pevm8~xU>tz#XJg51r%ez=Agm+_l92=n zOM?BB1X++oYgtMqvtNO*;`m>J|Mk*B_LVrqR1e{m#Nzcx%A6)A<( zPmls6`*rj46n;W*bt+E0FX^0qmH-n38+2Lrn}E(`15yD`a1{qmU2M+WI)(qS%JP^6 zv59Y^LIrG@PJtAWrE!$R=9WucJkX6qNnNZ$%}FG)-%B*q*Dp*~RgrLAN!^^f(z>#` zxpn1r@w$q-%DQ=Is09D#;D0Ipm*M|h{4dAZF+b;+pQYv} zb&VaEYkroSpOg~e73OE9`8n_U@)OCSGo!sI)w+q?3t-$;Pr!;x(-3 z1FFisQV>`X60phAWcE_BJDDz-t76IShQu7D5*4Z>nSB%g67v+wB~?-)O8g^C+GO^v zM7$;zTdI*3EmczXRYT@$^T|e7|7+4zE)G5g%EV*^(sPCWU^NIWRZF3`U}BKSlNGw?a3VtK zu!bHXbaDv@NR1<=*{`!%fG3w|w!d!R&kOu!i=KJjz&~r?lQ(O8$%kxDt}VsnPYbi_ zlauR3Qd=QxG;)trB~+?TZq3U-D7E^NlY^BM(&PkE33e=asa)i*B{n$$Rx;l#NhFA$ z`EKpxk+O0mzQ?i3d@rGY%$ZXji|b@P1c2EP*FRu-YcoH9T|STMc)~zmUtXDjZe@NL zOVnmgv7|(BDk~FZ@IEr9V4)H)^d*Tni4bqDMnGp_XB2ozRPrfCEHSsdG=WU1LM=Q> zK&1qEp>-Y_p3J<}P{u40d`>m{S?6gpAP%L4A|y$uG}SD14LuCcjMCWG|!B!Of85a+*3OVd6-yM$0sN zS?q4+E3~Ps@Sd%3LDcX)0w*CzRxJ@_s~6CUDglX5lAThpLJF2kdby;V=Y>czpp(r4 zZ!8zMsn;m5l+;T}x|I?ORtiKGmCTgD+XT`k={`yKNxE0ky^J5 zWN<}F#--$tUy_YW$ss9uO43hBIw$Fzq%)GvNcuIekGk$_0)N>Ga$1mI7T~LrepS+^ zC4E}b$9)z8UE{cvoE5CIl0G5n6OukD>64N^Bk42HxOie|d3i%wGPoxhY&PotCUQ2J zko9=-6*m{&Or_>RSw(%5!3K+Gf1)aMGm)G;bzONG)T#kEm@02Vln<0JA*xMB2WfaX z@IVq3u8@tqZ0gh`uh}IA>t3(w%bxoA%YLT?(e9;2lZ7Bk9Yg zqAtHIu=k|=y$UWBlka2tz;>9QROO`#6IxG)(z(gZ=St=#O6JBZDlN9qxFR&JFrDM{ zUR_pRBDMfCKQ6^Jnjx7d zxf%g2kQxglz1T>Ck}nZO%Pp3I<+@&_;L5zqHA}i#is31;pUFVPnrjuHh&?A0DYr|I zcL{vAq<2eNCRI)*RjyCqGTCx6!SJLc9*yYj1;Kh0CAFF3ScYLQlbMS)F>Mo<;}{f* zs8ma;6zT&b^KE(Nb1rkn2gy{;ob^HHq{VYS=%Row`k-k6LDj?l zTo%w}4-|+72FeGC8U%44Bq|du@Ii}7D}equ@U~g3Kq()zTtLh1xSgL)&=ZG zGWdQXRch+|0IM*n>9t!wIsU1g{1N`mFP~HIQx4gEi%4}T^h$dClSHB+0k@%{B*8)v0(auK&Ojh^NYQt^x)bh8pGvBMW!uv4zRU zA?qJ-Ct}I`x_%BC_4^^F?61GIWzDfN^yG&y&RE=}ladmHA<+G_^}l{b`h|<%L`!=7 ze~1+~QC~}6^Si#TgzEP*s-I*h{}B`J=gdKgbVi6ENh1Btv6O-T5;#6JJx$O=6dKMQ zjZD&#^5>ABHdEF%|4Y539yLoUe`0kGzNi;cW@XiRnRY2B9#!tRq>l?6mYqu-Bz^*6 z7%32EDR<2JXebcVmpc~co?$8(EK8P`VhS8XrI%ya+4IT0OR#KiO-wZ`RhVP-RjL#X z!mV0{?LRgGL@H0sfxE?+0~Vg_N;vYd>-t4kJsJOEey~6U^0S-m5DwXV-$N%6M&11BxN%f%bN=c8I3}VRC%Mx6R3Fj3>Q~ zR|Wp6q+gfx>ymy=(yvKc*5%w8Ny~zq6W=*^NpLO+T-Mv1_>s8_0;d#`Ia!+VWcm$( zzaeQ^#dG42=44^UlQ{1Pj`*Ot_ayzEz~7hj`;xvQ=_^c6l`@Sd)3Tc5$#jjtMF>+> zlCBcCEbmj|9Zt#ej3@DBUB;7XS?}>=S{8adnQjz1jgnp==@pU|^`EL|I#^iMT!Jt{ zZXx3dv3Mos!E$JXBwm*-BOn;r@5+Wd*HD{Vh7D#icWW}YB$>Op7Mpd{UWsW50Ja7T zYiUzyY?sTd#~?4#RzJH3&KpTuIJ5@MYFJ~l&{-%!8zD#{bs+01a~H8xRf4=Yh?(;> zu1M3Uuf@!BFrwG98`(y*$!eObgjY?95{3`SR5`rbU`5gq(?kG*6!G-28Vj)~cT7DG zD|5a83$x3$RhrLJDJ)JYna`ZTKGhMrf|2nENg+U{1Cr%12NxXaD}HwcAt5p;1!aqr zITQEWXHneBgc;j><_zqI*L;?R0I|23*F$Q4lY*1*DMTcpDV(<~opnUc=CgFxXX&gX zcozDV#}Yw)`D=ycuL;Yqg{|eYd{(5CIh)LuTBK~L&yo~bmLxOZjAph}^fSINR30hU z&^WNfl?=)HZ3||ioU<^VY@cUHwsT1c$+3tw)Jz}bMBl1HbQteE^vo$)KQS-cc9)0T!I&-pENIKwf!J zRZt#OdF2t!F!jSp7x(2ZrA|%Jc2HADn+T=Zb{@SwozM8laHa#k_2ZD4~y(l_G2L znDJyJg>X{}K#?9Atm9tO0!kEAi*#I93##&~`P~;BSqqTLoQR@kPPo;Jh0)eTXY%o# zAXyqQog@GdjSnbw+8N*J+Y1)Njp2zP`DTFy2#MxpPqzWE~39GDXiNgK4XA!E|lreNVC( z76N2fU1r5dzVFv~qp$|u$=b{tK2~Hk*L3NO)@HN=b}5-TXB9hhE;8X*WXC>W#*)pP zi;k-l0_2zb%$ah>7VGyhpp9s%u94y1uHLx}xeqYqHgDAV5WCJIXXiw#KPQM5 zkC&Gur`m8}rsGuEBRt*;PsXxxN|jAlS!e@1>WUhiybF#j_7-}&)E!%0@LBr;91j!=jVF}{oHrMwah**JBYiOp1MoY9g^;l^d?DflJpiyZ;^DT zq&p?uCFw3n?~?Q`N$-~QZb?5X=|?5qE9qWI4@i1I(&LgIm-Hb?ACmM_l733k8A)d( zos)D<($7fx8T2%JL3Zc3LBJh<<{vA01pyZclDQ4ow&Jz{5z~hKj?9<&_zD{O zYIP)6Bm8>BRX9}@RGuU2==&@Dfxw{d>7dq?OaP{;r8cxga;D(fNC9)Y;^ViJ&x^}G zFQ^62%W(pU7>`L~gBUC+sSU7ITn3qtRh&yg=tSU!4TD(OTvEaV%9^FI>dLS>&MLY4 zoT$hAVQe^exHfmh+mIfXbRe74CC(BpFGQgMwu@TCxmX7oiHZK%0y?qjx3qOh+*7-s6Gp zQpMnTAR?HT0yDYiA%Z$3Y1D%ox12H)^uY`vmUPnsBGr1R!=|l5z$w;cnGOKVCP zc=*Gj1G+ReSGG`<3oK`D*uk1rI~+Y24qPj6{U%dpOfo0DKBTA#1$|iVq_)hFAfwB@ zn#-HY6LESxoB(0>8^OK?opGsiP_ZbXM!SS%5C>SE(tZAtglY;EPKR#<(+VncMlOTV z9^f#>v=_2^COO$yfr+*hQd}BymCm_JIIq!_&V`lEq0$CO1FDS!9NjTVJ4M70+fiO2 z^-Zx;J#-U#U0)K9%XDQ>2^TpQ;B+td)nx9=sC_G@Ho{4{uh?yM=7g@`@@I4&wrH{5 zQ=M5vKQZ?TCj+`0!tbsryWna|23K$+(prTYFJnzqi5NxK(LrWsk)LS`G`((TC2$;m@}+~JjNDc`n&GBN=vMg zilh;! z3CIGpfNZWBM^susyi#|A6_PFXOxGgHp$NR1b)1$V0u%PwgHoeS?;P~{Xs;a{{l<3U zaWrSdlk8j~v(P9Ie_%!7Dxw#v5D%Ut>xHB`=aX$OzgSyUO~O!;ANsgT?~>rU>lSmT zw5{`7tb&L$FX-*}-WKE7$mP z!kv)j5782^+%AuktuSmjEXB$LC>Kd<3~{RquC_IqldT^jcaF4Y8{1q}`Y=XmQO=77 zX6T6Rv%>sjoAx7Gj33cLdkc>YLV;AVtcGp3`Q{v^6@+mMuGjMBTVdG9Uaw|v(VBfT z)a>(W_7$x;Fhk7&3>-a!%o&fwKv5DSGmseZYL47o?oQefMP8_@h;A^5%ifP$eK-^6 z*1*{xQHywFB+f)e;!NI1Kw{%!EaZUy%5tlO$t>LqZw#|^aFUaU(6C$Q&SIV8ZUvFh zFlwJUTO!WhS7Bwv;(j}syBS6|!4>1X+S$XCyQ|#yu!dma_@+lO8#ffQE({3}bss2eY5WI=QYfL{&bK*hm(;W2l6p2d z`Ba#L{A3T4EuGhlX_c8;3fFXr@Y!k{)XAs3v3=_1^2)q9m@%vbo`+&aszWAM%= zGqwah%e3Pbv##tWbk5`>KiEqRz#ujtSbIJ?({ru~I3$xftIcP*UxX;Zg_so%lc5*3S2h2!L(@K574YPji&Ra5rRV0W`s6E&v{y}aNIaeBSs@?$b{J4 zbDI0};?kH^9{sO}vuz!fWbTK_-1!F2QK|PQVleG%YA_wuROBa*)A!aA&0MsKdIAH- z>nys!2-Gd_7oGQa(baSU1d&O2=URXlJprB&{cN*hJaMbl$z@jvy7~5nSJ9(R3urLgku~&sLtx;Ox zw33C?;q<=ht%-=yI|~tytcjRIuY!%oOXA7QMGP~4c-*`y+_YP6UahBDCMh@DP8;Ds zGPWLO>}gF%&$a4M)~hhT{Ur zi4r6BL1&-g!3+3zQ_UR8_?z4?(n0WDQDVUfE~%)*G5-Y^@(a9?3m>c<5eifxBrY%5 z)YQe2UR-@yDwU)*%zzU7@&e zwxEZi5+$P3TkObQUIrVLPu&D}3dz3b5qi&(c<*{RH+4FA)qtBjc#i@XjO*Zs1j{fU zlE#fi8AaUm1pISd_ze#ArJHMj44hUz9w9IReXc)(~x{O$E^3of)f-6W|5;!n9 z-hsk}LHHo#-Sj%A>M(&!8@W=6n1#j)GpN)emfj$UG+e>snkJUAI2hIPk)*L~!Q%*f zp?eycSH33rCP+gWU%mN9+*KnJyw*MePI#TF0h=E@4Z+3eIoY-ZlDR76(2V7!ss{bi z`yhCUH7wyvLhxMP#C%WGYb%myNNG74D`Lr&)J|1IEK06setD@D0>~`@xr7;Ksp%V^ z+=3gm@#Lj#5gW`?GPf9rM{0urRclODnk^Ww+)rq0z9Lr5;@dIORjECsCU>McHb=y= z1qfS$V&Y?PPxbx_ycriT89Z;Mj2?Jxva}JCMl`q*>{#7kW!o!MM>CIW#*on+LBcYI zB+zYmCeWi=xvZu{Tjk;b4Gbk3!-=cr#;mYnOw9@_X*(wj&$;D#uqx*plaJZ@*-CGC zD#1zA#N?XwfJ?B|+lA(uIfHQ;B_hC2W7Ts=EaP1|9tmYm%~z$#oQWz!DmPnaDQLAm zOVDa1(i%#nHJNJ-7tWBlS)11AaBi0#A(_o!*GAF9=7?j} zeOE#C-Pcfkx2?XrwY-{RjRntyzhMxdw2$I)pV1#(2+KlV%v=-42ZKS!2S4zdS`61G z%}N353s};cL(l_FYC9JQ*hB#M-UzHBQVC<9OtY33jy&}6aD^DZ1S|vIsgunr*P_T0 zw>+}MEzeuxAgf2s%C;Pq1^uR6ar}ZM80Q^0TF6WZ-@1_fLj}f{v`kW1JMsjY%=H@C zLU8$#=nG#4t!mQqxd6nz236;AWQu^j`vgp zY`#w|5jGlMgrg9kEE9UJL707vv4cyoyJ3QNJ;M8QnPXVgSU-Vak0fx86w-H>ax%w~ zL28L^>{eVfq+)u_xr>V_Gw#P=j;3zK;>UUoLV6{xB>Ejeb2_vH%$1O73doBrCStu| z1F`yq2d|xKxlY1}sKv;kRA)k8+94U&ffH_2PFU-TV7S;t7vq34y4>-<-0*+G^3PJH z$su(7gjM$N7Sc)A#!1)i$xwzTLm8fg;9avPi#2=FHp^14SjoDTcMrIf~xpkZ^>~6&sXu zmOM+Xbf60olAuzAq%J!07ahYFoxC#_^~BETumvL<8WMNPsq=6GwKo@Xb`i~3QD$&f zAmet?a>i1_8FuD)XAJ5h38!usi}lQ_AL*IYXV1c3OuL>V``_?h0CF+6|H8 zblP${9p!Y|a_X)OA=p!7K6>>doJxIi8gg~naeCQtdO76uvd`(|(3V~fWqrArtS{Rh zu+)?FW!ryL7nD>c7K+);Uw>dVuqMG$=p}>2E>wq&cM&GUrjQAi zdQ8AjXePqWEpSXMa2;OY6+257Ebs<0SP;r&K`{;%STV5F;{c>J2VrZA9S4gY2aBEl z1dIJ<7d!n4>Rq*ZSFN6c#Nry4m&B2%Q&vd=+!9!9Cv>n_Pw1fDvdL1*=Het?6eOEW z`1Mn+zFBr7^;5Qf%GPJX@s@J@rb1ZQ&6MBGRM^esuG(^|2i^+;anYE7UmppVZ&hCu zT7n3@b~)e#>5z*!Dk3qtF@^1A=#`X|i(A!@Kp-SJwH~khRU-Hme4lSJCgkN-Nm|!Q zT(0#%6xPLC%e+aBmmv`NrXCi)I13C=2E}{umLs#9@%|)#G?;9OP}#dNgn%T;-I2^0xVphxaRu+pP_nc$pC?y@NsyZck({W zKy`MdCWZwn#{&=jjRb*_d&*Ve3rTAu+q9GTz>tenqVp%&?8~uamrU1*`jwENr7SeL zy~bd@YPX;a6X=%EfQcIG5Rr)*>x_#U>nsRJ1Ba=%*n%@eE1V(`@^=Af3lKcB44^QX zJB@ZCC^(@ImQm>8Vl?0)`$KUiuNeNWUwjtV*20!LlQ|v{7~yvs;deUWv)qWPbFo)Z z@6u8FI%@kt^iDsB-s!|4n|h*iw!Mt`#Z7)^9;a}feNNBi6~7TJej~3K@pHfSg(U^- z23PRQd82X}Q@l(Im5%Gr2S1*Y-p zBWhW_u_tmkk+c&7$B#KVt%4p0(}fMQ9A0K#!vggi4yGB9hVIGyeUELLx%{4A@V-~@ zzF%;~E4WgqBkgz%6BtoVAkf!@c8RNJS6VxfoWe_9VlhzFDI;p}+gzNt?GY_*OHRRQ zv|8L|w7AVxWVxx>7OB{poT>^dwwj8#Id2$YxvAK?ka0{%Df1HuipF8822~L*OHLiZ z5!oERhs|8}!319L76U#NTGOeT=l7F8uy-S{d~E5gi`IXlvp1%+n4|zY3mnItv{S?#Ji<%CtQj5swvAF zqh*a=z08}DvT!4tZRDpx9K}+D##^G885c~MWF1pj-p@EMI$MgDJ1udRAZsZy>ozk) zbX;h}^B&?^9KL8iP^;$Fg(@xG5u;|(LPBtjt+BfiyWc#;?WoOFU$QQa_aUNJmwhXrLpRiw;&JrVWJ zN6P%RY?t$1O9Z`|NS&a@XDZx2g7~QjV&;@V#IZHvf2K?_;NLI9#~Q3;8xwjl-j;X)-q_y zth`N4?h>d2lC`5NnbNR?_v#&*yin(tIW=I1o$i|#>5NiA$ej{9pw=SIm!jA#(>jW4 zbddlI2Hu2<6ho4h5?^Ms>2pXM&g=_m(d--1Z1_s}C8u4N5CwA6H@FmbAz+C&MOkL) znKJjj7|Sl0woI9OSBz!vN6X%~Mld+;_&APpw~!Bb@6EOjOOSPna@z9`S* z^3)fr^ev`i0(n`UFUeEiCps-@eP!n;G{o^ztN4o95f36?SHTNR*+DoC@)Kv9$R4IP zNgiR0Iq1*Sx4|)cH1%ClpE_mm`>RQF>iZhIpD(^;zKYk$%vUmlx9AeWd!G6Mwieid zezgWW;i>ar;hO{|r{2`ZZrNwCOuP4rBv*saH|fo89A8XCvFtj32*z-cx;7i&c20Jx zq}Z)#d5ed)-7OZ@Zm$kM`HH|eJzs=!XOs+D3o>@ItRr7v6J>iI5 zocalR^HY(`PkHyiZkv)*cftRX-I;jD*)Ku3ouN|lXI`oj7+5|txlH0V% z-rnFwZVK;ei@PYkVyt%R=Mh@=vdq+$8t$+S?o=n~fq8arlO^0q6ktf_r@DYb-xM8n zM7sDv7{DX6c6+oO>$@H6k9x&-*`^+K#l0*xg5o=ZaA_Ot4L_b8$CFb7nr+j|TJQW> zA3sNqnx_UtJy8=bvJiF&48?%y(I)Sb%+$EYVLS8&cmMD%79Iw<0|7wB60@h|cn=av zPK{T?5!J(c$g6JePfi_*$nq(m7-DxZ%yR+XAjRb3XOB(SpE3+3r!u4;j!vt^$T*Cg z!7x>GY>MM1n}%m}T@D+39)t2s{P@TBK3#jha$WqDQ-|Ab{o#LlH2$3>SL=^`=fB(= zf9=V-tKVPw!w2Gj^@Z=RX#0nnviQl1KY90OZ-3%{#9O}A_RuT0Z(AF0xcc{%1M2DW z_=+nGQKZ;WPJREiQkXkz508fz2z^y(-r^mftSDdY}f4% z#hYK*{`UXzAOF)&qx4UKv-(r0*K8iMQjBz zEkN5a^U+VF$?J<`+;Zi4E>aYPhy-sBdqgI%_%K)F=hr53o< zVwb9Ssgz4mEJ3McDFn?fQ>R%_#Yc@T4eBXAO^+zLmrUutF{S&#le2Y**A_#KDdd?+iwR3nzy(Tf@g?y|d?J>;^Fx>PR;vd{3bl_;Nf1)|D&A#$+KxfIk3vf$$^>s}=*!(;)Ps)?>#;{HEC1Fk_)XzL`6Q3nn_6Z-!Mw$1HGI-G6Eyd6#v&%6X z4>2(SV446gnL$6-H1q=MbpZpP|Eu;-y@mmXZVH+?!;zHt*gDqd<5j z-nl^2iQ-=u0lG?6UP}o!RK)>6LkTG{?@LLEDAW}&$znZ0L_7oqUmaI%dumE?T0Qi=^^J!pKv`DQo7kLy?A#2>}koMSr9y1bx)^4heml zkC*uPoIlcWLXKKpY(p+X%%IzXTA4e}2UC-8P`9ubX%`tIfk?lZlyCyM+9d-ro_Qgn zx$UfbiHvf9@a-n{87#M3-tnn1g3R@9Y7uXIV^*{a9s9OkdsKiIESIDoyvjyoQNnD+ zTAZAujp0N}n0X29g>!@8qYPpkCbcQb4|R1mS8qs=Zsv=4O88WacF)qXJQMxkiU7*%gFI|KaDsfkZZQl(0>FY>8^r1;RSY=EAr7tUM2cn4U5; zU3wl)nXBq_SEF*G*~@X#<+|_)UT5kqK1R@a7*Pz1+}4ZaPDFAiBe~OlE@<_0nKO~x z*+`D|ENt&$BsU$&UG{T;ylI$*9yVJJ8 zgs6Kb2h$x`F~`|z%GlO!J`^}6R=u4i!4*u6u%2YYig~57U}PT!pCbP;6q&efhf@nC47 zt9b_q^a>()^*%(O7u0z;0)f9-1lCvx%bYKuR_bHPIRM7c#}Zh=hsZ}A<9 zL=mhg4?GPhpvCin{F;EhmQVj|gfD$U06)n|&^spZtLn3Yq=#q@3<^M*Q}`smBS)-w zAbeE8hBONJh!;Rg^C0lW^Z1fehXSmKB*24wyU*7{9w)@}0f~j4 zMi4{CKYVp16vMr!7$Rn6gdz_lA^@IB`0U%Gi6XE!iohavM-CGr)XechMAQZrp=Mwg z{1y!CeP57r91v~695_U3nuCUdnh~Y4M+?3vd5nOtlP@8CvVaAF%LwcW&JnnR!w(y>+Utf{#i*=HWLq#Txi+HViGJu=pWYVrC;BytgzyZnk@M-RqDMZsf?tSH5{2Oy1~B{0H5}qqdFj%)X$ZgLqs;IQ zdgyK@hoCP4y$cLe!Y@yB&<%6~Cs`64n8ta>C0@=&;ETUCM1E={h*szHSiTcw3m=^T zTc&dXenpp%K#aqs-Z$iA5V1Aqz-PXMrg31#FjBAqqm;lalJwO%^l==ju@@Yt2Z5Rl zK8N!;YD(||UO@#j7<=I@8N6m+TTZqC7>B;-4z(hxa6NuslpFTU3tG_007nNe+PC{O z6*x=5MLX2^@N;CSdA#5Tv~r<+dmkrhP<`{X-G@N+YozeMK$Eu?(T72O`xTaJ$futOY2d~XxqmHCqV`WcW)$nljORK3mN#Z9gF zJn2N&ZJ#RT90mYOxHVLGntpxL3JC;*jRKigkBZdr+0L(qj3Xpt#f-^1&q*Yau*@;y z&=@KgU$cK*E~bNVEpogaC>n?hrKS8$6s2MnQd(dsu?jD1tMIavEY~H=r9|Y4qXj9^ z3Kj4pB{*Ktb@&+txZyhU8tGTc2Q&4l1GonlIvs+iJ@9l0zU+Z73t2H;IG&Kq8@i1* zB=f$`yl)L7-bFx5q9+zq>Oj(Cd}0MC$;>&a|BkNzj%41`nfFZlU!^K*wqRv4#|&7~ zA^3y`#y6#KnkOF`Iq88fdEORyPOChfpV+F`pf0oaZSlXgrb9b(%t zA$Wmwv{84oQ8FuZW`$&$bw++9gYUttpwe5~J_TQlk}c z8;Kyn6o>0IqfLe_8rI;b7T?dMF^CAh!Y)|Sll(ou^6PG}L$WCxzZw|4Df&v>oN7B{ zjQy)|@P}ivdk_yhtXtc4T;P1L*bDH@y+kb_A=D0MT%)!NDl)^JpVO6Z!0OwC9An!%+=?!8D3E}&~3F-&?jI9)bmdXw2_BIU0} za&XMRZgwk9g6*f1&_n;-%vW{6*XiZ! z&B*y=C%No&r`6b|G3Sn*Q3D5;a1LXLi6R3}^a5Lz(?sNP;ANL6IifO)E7NwtX4GKKwd$>r! zo=y}%8uKCeo`7ptYL$i<(0O@TA;b_!BFyU(iLiz}kI2JF6kzzR%1J~NgXa(hkk_JA z&w7056Nm+_C*Ju(SV^Bg=nwLXnDxsFc>r8=cVrONZs+cq28IK`3V7`x0!ZYSdtH-A zKR%G>2*9~w=p-M4h;=?rJ{3=d`urfM3410GZ{RcrKA+^MBD#$8g|HRLgOfZAzZJ&) z8B2FG(0$&w_v#3wuue@u9ltlE;&EcAdb|n*0Wd2yiS$>7G)?6HR6YdfF3~y>UZs}D ztD)knnK?bkYnhQUqX1H;G?K@;L8MhVHORy8dJ772Vi4*Orv3&y25p!6ClC40QmWHB57z#$MY)3w11 zpi(N(lt5pW^m0kRD(SeSUzg`=z^)`Y8&h)0=@5EZP<113Ncw%tP~0Y@NyLKKp?Bo@ zo+iNf$FVSZB21nPlc!x0Q5#`_)y{;;vtjaFn7kM!4ZEy%*+H?Jx5R>Ym|PGh7l+CE zFqsOIA~?iCoLo!?u=_{Mg95LTXN|)^WP@X3C=<_gpGnhaCQa{{G`(Ze^bSeOJd=ib zCKpI^jq+R}&t`d^GF9N172U+h%iD~Bd*NH<1xh>+zKDY z!r@F;$#tI??H<`SJao^Yp7h9g|L{;(-{|lYV=>^B%Sq1qm|EPl?VhfU!=vd9BO@yw zN{@~KZT-QvCcMqll~{1^X!l_HiQ&=5I{L>(2D%S#LpIJDDPY_hQ_I)vUvuZ}ZLN2% zTzluf-j%Iu*6v@~-Q2Tp<(joE>7M4bYwt|o(X7)s8Wo8|PVtRuZ|;($_B z;G?CfnSYg96H`r+xvjT#^_^>PZ(iHd(%jb8($dr0d&j=??cL3Hbnm}?UrS56rT32g z&AlyamHKc@E!+7-_gLS)iJr#>(oGx2Mz*EL*_$SS4;)C3-j^Oy3ddIHE}l5HYKf^8 znw6%V>CuDzJ?XKg4HM&iCUaZ+mf-{aLmS2p5A}Skckf;_(i&5%X05R!eV~7AJU!|v z-LBNVF|{GT(#GMTgAi~xN5VC?aUk72>X(c;GHaCTh^dcX6Pf$i?T~y(r1e+er6WC% z9#8vp950Z=eKB?Swes@d7{oC!uycGg-97kQ>BEi=MDwfA@p-xX@aA4e=Z;@NHX`B& zhrmkj#^H&faYv->S0J*r`?2DZxl^gmnEI`2lFWl6z1?{N-Vepunf91!!CY7uQ)}}H z-aFc#9_n>^bN9e-&tqu~bREJdZHTG%YpJSh-hG%O<;fM}a}AAaMagR%LvnXat^a_= z{i+46V?aI{Q@4Kr3Fx|RdJCqV>pR9_V@!SQTI=peKR%Hj8;_8n=&zv*o4SX32aMQ89#ePZ*S>Fbcw)rq z&cW`1e$#xUHU_^frq;|}c_Zf0cv=X$W-;_1TygWz!T#|y^)0kc7_?%Yjk3$W3S?_~ zaGz&pXPPO|+RzpOL`ND@z9**cn!T%fx=L-|5V>x*K-wRVsdckc(dr^pvYn`STZVhOVY`P%yAPzD(&%yT>>eH8JTx{w zI?=;rEbI#OzSu|>CAE2|f4r-E?6I&m1X;}NY)y}i`8;4O4JcG0=w30KkzbWUFtA9o z#pIt~m$OyIq<{bhu$aLpMxb-F{~#t#0SOG@9Wk{!e++h{d;7;WcK7s!BY@sJ)>l6Y zffpP4;`KP|gqR}$i5Hu)MXK*e4-OwpyNc*?u{CDKiiJ&IdyjW|J-+={=rQUQHVZ}h zt(dyEsGxVG_m8H>`nrZ6OM9-FSUSJR2>}!5SEIEfeGs&Z(gI&wV`|g2^YswTH&m%8 zH7udUG;$}GyP=-+=Fo$HI&DiI8sBLPT<0*tYh$W8pP>gw28O$PId7d!*w7n#WU#1r z##HMy)I!6N*$-7LrpZOx(*}9xc=z~3XaK-&u?a*4aEzi!<~I-RA9mfu7#36Hnd)h0 zWe6J}M*$;Ow99_WJJMt6@y_nCG3=s3VPTYtS<6VNzk#& z^|F|A5NXwuRCL9Jz1bX79cFwX$VlY>&lQ`bwC6Jx5d=6G9~~Y5w%);pd9#Tnw@@^1E{7MsT{qt(d+mpY_neieg*TUcMv->g<`9lP z!uw~t(UmO3fL6^=6FSa{&@0dBxR#2d53CCP@|=!qsjBxqtP6#^J*HZWEd09Kp${Rq zwHuGkbkm#kA<|gWjMc_WFTF`Wdp+%HdX1u=jLTdTuXa4pzZsOLkkL>om{wk(Wp*}Y z@5{bHyJwJzb=u7gxvd>zE-;Y^R3>verZRtNI#x_qAK7^rL7hP;5vG_pyJJm=CZ$LF zdz#qQP@Sc=5O0zvR~f+etVk7-Sdp?ZHU!Z4cSUOB#K1Ug==!1b#Q13Uz>1Vu%pOEd z#2s0`uX)Y>wfpbb-_p{%wz+#v_nz6OOF_@Q4V%#i?33-DrC85>p%m$so~+)!#~-YM z*1g?}-u;jVs8!}uG4;ECOL?ZkihujQ--h&^D0d)!(?6L0Hx#3{0l3zVcoPK5?zz#k z5(xLd6an;o1`A@=rjXWc?RiTU3>P-9Hq0~25Yo^Za`q?1>@2S5c7@HkDj`Uwk0E5I zImhrjm_sM8VGuuf4$aJ|8+wn(zv1xDumWi3)0cqkWHp%M2NSX~rWz;2DPDzOT=&4L zC&%F&Z|*&^Y6QFFu~kp<$F>Q^ERM`L+Jz12`5Lx_(Vibul^RUPSv-8Z=l_7w_ldEt z8~Pa*+nLzmzTeE;kQo9a-cu;Au_k(zVg9!Et!X2+8O(e>e&^`$ez-!c1PORy`;cg1 zBlq?X^%^#3m|gkJutwthM>gVu!kYD0J;v8H?ErrX;_z z@zL!}gtwOYE6l_b|0Xk06pAg%2>yoFvR-)9hI^bt4fOZOA&K5r=oJJ`t}(mXi!jhA zaA*I4q3(elrtG$MsLI&HpjEtmF}3Fd8?n|`_Wr%L6%cYhsBCSDH35s*9aFpil}$t& z?$}qX1sI(@F}3So*@BVIjQnGoeKMvV{y^%o#+$*=+e|Aa#uH{Fj{re`O!fXxkdL&f zdox;0Olawv#@g?Q?Sc=RMV-*Zu9({SD|N;;@j+6$CM6O+?;q|TvQ!J$GHbY~e-X#S%yWjByB+X#_@_Ov2`(V*D}v?r!Md2QTlY8zx% z5S;-=MQ4=IwU6!0ZOq<_YidE;P=xQSkR0ION_!l^f)+aNE~b?j;A_&Jnd#0h7TkHz ze{dIp-@#Kc0PLHrxEEl-3SgUNm85>zwPg6Qxf56vH}{6cyiR~C45dPsfZkJKyPY&>Pbl)S&=eUpCFSwk~+ex7o}YYDAlxY7#bcrJUBctmSX;6 z!3|jFe+fdHg$jJl6`(ng=DiF}R;LYkXaDawFw+LS2{$GzHq!uO*vApVVWs-FLj|cYYA&q07`k)?9s;j6=uVi-tV9vSTnM5) ztkDA!`fg3Vv&x4r?VQQa~GIt7Ms($hWqn3a5(o0V>U zuMV(R2WG93c{Zj7K7bd?1%HCIt=)&BgAoA$VGE+s-emH!v$8U?fc4I4!#KNR)3cJQ zkEumw`Pe$#n;t+gd{E}mA#9SC#Z>+3=GC`1uWoK_X>D#^edk`Dg7#zjh^ML4jWKn- zhjB-9+uokO?x6$ez1#*V^`V$*aOG>8Z*Ohg+uhr{GL(uwj0jO$)->O~cS3HQtnBgp z*Odbd+~YFLpgvvghe`8@uWebgx^?ZHwx&VSaX>@-j+WIeceJdrC_IZ|P^N3R1F0^g zw(sAMQxByO#=bSIvwF>%Hd`l(xsuUyrBX34*YrrDw&;Qa-?)zk>M8+QBJ zwzZB2L0Boz{@#_e)X{FWw6-+kua=qKv~#nr)Xg!KG9+7D*0ii`U2WU+v6jZvlJ1fI zRgXZBCZxD$)g#^F0PIm}VNBKJ7b~?`FCAs$JXNen9~wa|qfxCf@?!5vA&$(b3^iGX<`H`^B&S_)m^sI{Ezc zMTgsyTtu6>yTc^y+_@{_`(w?s)54Q*V9w&u%J$GXKYab@Z(l zo=5jI4jL~ig9eAEJN4GlKe_ac|9!O)!;F-Vo_K5WGn#U$Nb6N^|NirrzWGIsFr)b2 zI{K-%|Kb?9eEW+Tw7a_5b-HM~4qcN)7@%m6QV!1_SP=i_^ID?dr|39b|Mq7-GySb= zSBD>e?%3PU{GVXoSBIJ99L3h-Y~_p_jEPS^vSH=F>t6Xg%`5NRbKCNQF<<7Id+RfQ z3Vnt4O+WXwx4-bIx1agK+n+y^Yj0PkiL2wL33lV1|MKpU;V1w5 z@GXD*_h0`TuxkJOi0PEgMSuQR4^Q#bbo8D>>8;)ULuwGmwxj8EQ}4ilu5$HemAWfh z`+wz(1WH5?QV8@d2BZ@|O@aBr`GN3Z5jYVtd_?|e{Jw%BQc>y!Y>-~K3xg^fB~x)u zD-sW>ooX+h_oy96ZC2aWHsm+sc`wrZ^UczK_!q6!nwC!Eo}858i$VBlOAJVL2<#!% ztwuqoUk#`Y9G>YQ&c(XZUntSH6m>sMvuCYgHwV(o7GnIas%X!`|J2~yWm?+JAgH&dZgWv z2w(a2nsGfJH;_yZA40uR)C~L40#2IUf3`CZ_>{!B;0}SO0gp4Eev|4&nVw2`{RH*4 zpw0oQ!Jdt%!@}VK)dy-yrSSh_LVvq~Q);Ad`D0E?V5WAo+&WQz7_Co02IC%gg>uWP zRp2X%pD%?_2DgD`E7r3+)mliR8P68{ZHAV&Nva3sz3L8(VH)M#D7gdA{YdYV@-&_- z-;a`Bq!FIQpEenT4Uqd7>J0*S0Fp^Tr=z10^1(4t>ZOfw_1`?j{fGbSTkRh|G&o?d zaIF6jUS9Z63U{oAd;5nDtpCu1UH7hR`%r3Z9JhtL2Zo2z>pyfjJ@%oGf2_K)y0RS? zf^a!x;BX2ghQ`)^Xkv6|-54(W4R(*M9PIBI9UdFrKMuEja9#Jl=LAc0M~OC z1J`w?1BPFmtpxwo($)!a=JE44_ND-);44gVo0j+ohc3ske>tcxWr7_G@1t36} z1FSKUOF^qmeNxL(a};twq^(k7F>r(o*s?BCQYg)IOa|`b00v`PVoq@?)Kg$X^s%@G q=5&1&x7+B$0|BVOMjsYKcHm?~e?ozSfd^>o7c2T(J!<2?hX4S@J}ChJ diff --git a/backend/IMTest/bin/Debug/net8.0/IM_API.exe b/backend/IMTest/bin/Debug/net8.0/IM_API.exe index 201e73a91473f2108cc32d98ad21fc1edd8e7961..598449d8ba32e5e5f63f1fbbfb64aaa3d663c841 100644 GIT binary patch delta 99 zcmZozz}WyqEsR^3zWDeXF{CmiGb93`5rYMT0fQxjAwv>_36M+y%9sO1%z@%Y45mPS i5`!^=8CYEkkOfkm1m>p!b(;gl%^A|RJNq*2WdZ;KsuE!U delta 99 zcmZozz}WyqEsR^3zWDg3FqkkHF<3H~GMF(K07*k2G+?j*LJ%vNAq5D{8Il-Mf%1t! f8FL_+24p9J3b4Y diff --git a/backend/IMTest/bin/Debug/net8.0/IM_API.pdb b/backend/IMTest/bin/Debug/net8.0/IM_API.pdb index 008f17a0254324e64e349b56ef9fde4a49aed025..3ee5a3bac1418d19a11edf56a5589977a0d5ea02 100644 GIT binary patch literal 153256 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 bFxHUTF6|LT-;R5ZM_si(IWVaVS@^#JcTxjl literal 144348 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
{{ conversationInfo?.targetName || '未选择会话' }}
- - - + + +
-
+
- - - - - -
+ + + + + +
-
-
- 正在播放视频 - -
+
+
+ 正在播放视频 + +
-
- -
-
+
+ +
+
-
-
-
- -
- - -
-
{{ m.senderName }}
-
-
{{ m.content }}
-
{{ m.content }}
-
- 图片消息 - -
-
-
- - - - - {{ m.progress || 0 }}% -
-
- - -
-
- - -
- -
+ + + +
+ + +
+
{{ + m.senderName }}
+
+
{{ m.content }}
+
{{ m.content }}
+
+ 图片消息 + +
+
+
+ + + + + {{ m.progress || 0 }}% +
+
+ + +
+
+ + +
+ + +
- {{ formatDate(m.timeStamp) }} + {{ formatDate(m.timeStamp) }} +
-
-
-
- - - -
- -
- -
-
- +
+
+ + + +
+ +
+ +
+
+
@@ -150,10 +138,10 @@ import { isElectron } from '../../../utils/electronHelper'; const props = defineProps({ - id:{ - type: String, - required:true - } + id: { + type: String, + required: true + } }) const infoSideBarShow = ref(false); @@ -162,7 +150,7 @@ const chatStore = useChatStore(); const signalRStore = useSignalRStore(); const conversationStore = useConversationStore(); const message = useMessage(); -const {sendMessage, sendFileMessage, sendTextMessage} = useSendMessageHandler(); +const { sendMessage, sendFileMessage, sendTextMessage } = useSendMessageHandler(); const input = ref(''); // 输入框内容 const historyRef = ref(null); // 绑定 DOM 用于滚动 @@ -186,10 +174,10 @@ const videoUrl = ref(null); const videoOpen = ref(false) const infoShowHandler = () => { - if(infoSideBarShow.value) - infoSideBarShow.value = false; -else -infoSideBarShow.value =true; + if (infoSideBarShow.value) + infoSideBarShow.value = false; + else + infoSideBarShow.value = true; } @@ -221,22 +209,31 @@ const getImageStyle = (content) => { const imagePreview = (m) => { const imageList = chatStore.messages - .filter(x => x.type == 'Image') - ; + .filter(x => x.type == 'Image') + ; const index = imageList.indexOf(m); - previewImages({ - imgList: imageList.map(m => m.content.url), - nowImgIndex: index - }); + if (isElectron()) { + const safeData = JSON.parse(JSON.stringify( { + imageList, + index + })); + window.api.window.newWindow('imgpre',safeData); + } else { + previewImages({ + imgList: imageList.map(m => m.content.url), + nowImgIndex: index + }); + } + } const startRecord = async () => { - try{ - const stream = await navigator.mediaDevices.getUserMedia({audio:true}); + try { + const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); mediaRecorder = new MediaRecorder(stream); audioChunks = []; mediaRecorder.ondataavailable = e => { - if(e.data.size > 0) audioChunks.push(e.data); + if (e.data.size > 0) audioChunks.push(e.data); } // 录音结束后的处理 mediaRecorder.onstop = () => { @@ -251,13 +248,13 @@ const startRecord = async () => { }); handleFile([audioFile]).finally(() => { // 停止所有轨道以关闭麦克风图标 - stream.getTracks().forEach(track => track.stop()); + stream.getTracks().forEach(track => track.stop()); }); }; mediaRecorder.start(); isRecord.value = true; - }catch(e){ + } catch (e) { console.log(e) message.error('无法获取麦克风权限!'); } @@ -330,15 +327,15 @@ const handleRightClick = (e, m) => { }, { label: '多选', - action: () => {} + action: () => { } }, { label: '翻译', - action: () => {} + action: () => { } }, { label: '引用', - action: () => {} + action: () => { } }, { label: '删除', @@ -356,7 +353,7 @@ watch( conversationStore.conversations.find(x => x.id == conversationInfo.value.id).unreadCount = 0; signalRStore.clearUnreadCount(conversationInfo.value.id); }, - {deep: true} + { deep: true } ); // 自动滚动到底部 @@ -387,30 +384,30 @@ async function handleFile(files) { let info = {}; let localUrl = null; let img = null; - switch(getMessageType(file.type)){ + switch (getMessageType(file.type)) { case FILE_TYPE.Image: localUrl = URL.createObjectURL(file); img = await loadImage(localUrl); info = new ImageInfo(file.type, '[图片]', img.width, img.height, await generateImageThumbnailBlob(await loadImage(localUrl), 200)); break; - case FILE_TYPE.Video: { - const imgBlob = await getVideoThumbnailBlob(file); - localUrl = URL.createObjectURL(imgBlob); - img = await loadImage(localUrl); + case FILE_TYPE.Video: { + const imgBlob = await getVideoThumbnailBlob(file); + localUrl = URL.createObjectURL(imgBlob); + img = await loadImage(localUrl); - info = new VideoInfo(file.type,'[视频]', img.width, img.height, imgBlob, await getVideoDuration(file)); - break; - } - case FILE_TYPE.Voice: { - localUrl = URL.createObjectURL(file); - info = new VoiceInfo(file.type,'[语音消息]', await getVideoDuration(file)); - break; - } + info = new VideoInfo(file.type, '[视频]', img.width, img.height, imgBlob, await getVideoDuration(file)); + break; + } + case FILE_TYPE.Voice: { + localUrl = URL.createObjectURL(file); + info = new VoiceInfo(file.type, '[语音消息]', await getVideoDuration(file)); + break; + } } - await sendFileMessage(file, conversationInfo,info,localUrl); + await sendFileMessage(file, conversationInfo, info, localUrl); } function toggleEmoji() { @@ -422,20 +419,20 @@ async function loadConversation(conversationId) { const res = await messageService.getConversationById(conversationId); conversationInfo.value = res.data; */ - if(conversationStore.conversations.length == 0){ - await conversationStore.loadUserConversations(); - } - conversationInfo.value = conversationStore.conversations.find(x => x.id == Number(conversationId)); + if (conversationStore.conversations.length == 0) { + await conversationStore.loadUserConversations(); + } + conversationInfo.value = conversationStore.conversations.find(x => x.id == Number(conversationId)); } const initChat = async (newId) => { await loadConversation(newId); - if(conversationInfo.value){ + if (conversationInfo.value) { const sessionid = generateSessionId( - conversationInfo.value.userId, conversationInfo.value.targetId, conversationInfo.value.chatType == MESSAGE_TYPE.GROUP) - await chatStore.swtichSession(sessionid,newId); - isFinished.value = false; - scrollToBottom(); + conversationInfo.value.userId, conversationInfo.value.targetId, conversationInfo.value.chatType == MESSAGE_TYPE.GROUP) + await chatStore.swtichSession(sessionid, newId); + isFinished.value = false; + scrollToBottom(); } } @@ -446,7 +443,7 @@ watch( () => { // 如果没有 ID,或者 Store 还没加载,返回一个安全的默认值 if (!conversationStore.conversations.length) { - return [props.id,null]; + return [props.id, null]; } // 尝试找到当前会话 @@ -465,9 +462,9 @@ watch( // 场景 A:路由切换 (ID 变了) // 这里的逻辑是:只要切了 ID,先加载本地的给用户看 //if (newId !== oldId) { - // 注意:这里只是加载本地缓存,不负责去服务器拉新 - // 真正的“拉新”逻辑交给下面的 isInited 判断 - await initChat(newId); + // 注意:这里只是加载本地缓存,不负责去服务器拉新 + // 真正的“拉新”逻辑交给下面的 isInited 判断 + await initChat(newId); //} // 场景 B:检测到需要补洞 (isInited 变为 false) @@ -482,23 +479,23 @@ watch( const msgList = await chatStore.fetchNewMsgFromServier(newId); const session = conversationStore.conversations.find(x => x.id == Number(newId)); - if(msgList && msgList.length > 0){ - const minSequenceId = Math.min(...msgList.map(m => m.sequenceId)); - const locaMaxSequenceId = chatStore.maxSequenceId; - if(locaMaxSequenceId < (minSequenceId - 1)){ - chatStore.messages = [];; - } - await chatStore.pushAndSortMessagesAsync(msgList, generateSessionId(session.userId, session.targetId, session.chatType == MESSAGE_TYPE.GROUP), true); + if (msgList && msgList.length > 0) { + const minSequenceId = Math.min(...msgList.map(m => m.sequenceId)); + const locaMaxSequenceId = chatStore.maxSequenceId; + if (locaMaxSequenceId < (minSequenceId - 1)) { + chatStore.messages = [];; } - // 3. 如果有新消息,存入 Store + await chatStore.pushAndSortMessagesAsync(msgList, generateSessionId(session.userId, session.targetId, session.chatType == MESSAGE_TYPE.GROUP), true); + } + // 3. 如果有新消息,存入 Store // 4. 关键步骤:手动把状态回正! // 必须重新 find 一次对象,确保引用是对的 if (session) { - session.isInitialized = true; - console.log(`[同步完成] 会话 ${newId} 状态已重置为 true`); + session.isInitialized = true; + console.log(`[同步完成] 会话 ${newId} 状态已重置为 true`); } } } catch (err) { @@ -509,14 +506,14 @@ watch( ); const initObs = async () => { -await nextTick(); + await nextTick(); observer = new IntersectionObserver((entries) => { const entry = entries[0]; // 只有当 Loading 组件进入视口,且满足触发条件 if (entry.isIntersecting) { - loadHistoryMsg(); - } + loadHistoryMsg(); + } }, { root: historyRef.value, // 指定监听容器 threshold: 0.1 // 露出 10% 就算触发 @@ -527,7 +524,7 @@ await nextTick(); // 如果 sentinel 是组件,需要拿它底下的 $el observer.observe(loadingRef.value.$el || loadingRef.value); } -// 3. 【主动侦测逻辑】 + // 3. 【主动侦测逻辑】 // 如果当前没有在加载,且还没有结束,且内容还没有撑开容器 const el = historyRef.value; if (el && !isLoading.value && !isFinished.value) { @@ -555,7 +552,8 @@ onUnmounted(() => { .chat-panel { display: flex; flex-direction: column; - height: 100%; /* 确保占满父容器 */ + height: 100%; + /* 确保占满父容器 */ background: #f5f5f5; } @@ -584,6 +582,7 @@ onUnmounted(() => { border-bottom: 1px solid #e0e0e0; -webkit-app-region: drag; } + /* 遮罩层:全屏、黑色半透明、固定定位 */ .video-overlay { position: fixed; @@ -595,7 +594,8 @@ onUnmounted(() => { display: flex; align-items: center; justify-content: center; - z-index: 9999; /* 确保在最顶层 */ + z-index: 9999; + /* 确保在最顶层 */ } /* 播放器弹窗主体 */ @@ -606,7 +606,7 @@ onUnmounted(() => { background: #000; border-radius: 8px; overflow: hidden; - box-shadow: 0 10px 30px rgba(0,0,0,0.5); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); } /* 顶部状态栏(包含关闭按钮) */ @@ -637,15 +637,19 @@ onUnmounted(() => { .player-wrapper { width: 100%; - aspect-ratio: 16 / 9; /* 锁定 16:9 比例 */ + aspect-ratio: 16 / 9; + /* 锁定 16:9 比例 */ background: #000; } /* 进场动画 */ -.fade-enter-active, .fade-leave-active { +.fade-enter-active, +.fade-leave-active { transition: opacity 0.3s ease; } -.fade-enter-from, .fade-leave-to { + +.fade-enter-from, +.fade-leave-to { opacity: 0; } @@ -679,15 +683,23 @@ onUnmounted(() => { } @keyframes pulse { - 0% { transform: scale(1); } - 50% { transform: scale(1.1); } - 100% { transform: scale(1); } + 0% { + transform: scale(1); + } + + 50% { + transform: scale(1.1); + } + + 100% { + transform: scale(1); + } } .image-msg { - max-width: 100px; - max-height: 200px; - object-fit: cover; + max-width: 100px; + max-height: 200px; + object-fit: cover; } /* 容器:由计算属性决定宽高 */ @@ -705,14 +717,16 @@ onUnmounted(() => { .image-msg-content { width: 100%; height: 100%; - object-fit: cover; /* 关键:裁剪而非拉伸 */ + object-fit: cover; + /* 关键:裁剪而非拉伸 */ display: block; } /* 覆盖层 */ .image-overlay { position: absolute; - inset: 0; /* 铺满父容器 */ + inset: 0; + /* 铺满父容器 */ background: rgba(0, 0, 0, 0.3); display: flex; flex-direction: column; @@ -727,21 +741,27 @@ onUnmounted(() => { width: 40px; height: 40px; } + .circular-progress svg { transform: rotate(-90deg); } + .circular-progress circle { fill: none; stroke-width: 3; } + .circular-progress .bg { stroke: rgba(255, 255, 255, 0.3); } + .circular-progress .bar { stroke: #ffffff; - stroke-dasharray: 100; /* 这里的 100 对应周长 */ + stroke-dasharray: 100; + /* 这里的 100 对应周长 */ transition: stroke-dashoffset 0.2s; } + .circular-progress .pct { position: absolute; inset: 0; @@ -750,6 +770,7 @@ onUnmounted(() => { justify-content: center; font-size: 10px; } + .error-icon { color: #ff4d4f; } @@ -789,15 +810,18 @@ onUnmounted(() => { from { transform: rotate(0deg); } + to { transform: rotate(360deg); } } .loaderIcon { - display: inline-block; /* 必须是 block 或 inline-block 才能旋转 */ + display: inline-block; + /* 必须是 block 或 inline-block 才能旋转 */ line-height: 0; - animation: spin 1s linear infinite; /* 1秒转一圈,线性速度,无限循环 */ + animation: spin 1s linear infinite; + /* 1秒转一圈,线性速度,无限循环 */ } .status { @@ -809,6 +833,7 @@ onUnmounted(() => { .msg.mine { flex-direction: row-reverse; } + .msg.mine .msg-content { display: flex; justify-content: flex-end; diff --git a/frontend/pc/IM/src/renderer/src/views/settings/AccountSecurity.vue b/frontend/pc/IM/src/renderer/src/views/settings/AccountSecurity.vue new file mode 100644 index 0000000..3b29960 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/settings/AccountSecurity.vue @@ -0,0 +1,237 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/settings/GeneralSettings.vue b/frontend/pc/IM/src/renderer/src/views/settings/GeneralSettings.vue new file mode 100644 index 0000000..b39b86b --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/settings/GeneralSettings.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/settings/NotificationEdit.vue b/frontend/pc/IM/src/renderer/src/views/settings/NotificationEdit.vue new file mode 100644 index 0000000..e2dff8a --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/settings/NotificationEdit.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/settings/SettingContent.vue b/frontend/pc/IM/src/renderer/src/views/settings/SettingContent.vue new file mode 100644 index 0000000..cdfaeee --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/views/settings/SettingContent.vue @@ -0,0 +1,151 @@ + + + + + + diff --git a/frontend/pc/IM/src/renderer/src/views/settings/SettingMenu.vue b/frontend/pc/IM/src/renderer/src/views/settings/SettingMenu.vue index 611d33f..1da0780 100644 --- a/frontend/pc/IM/src/renderer/src/views/settings/SettingMenu.vue +++ b/frontend/pc/IM/src/renderer/src/views/settings/SettingMenu.vue @@ -3,8 +3,8 @@ + -
-
-

{{ currentMenuName }}

-

配置您的个性化通讯偏好

-
- -
-
-
-
-
{{ key }}
-
开启后系统将实时同步您的通知偏好
-
- -
-
- -
- ⚙️ -

{{ currentMenuName }} 功能开发中...

-
-
- -
- - -
-
+ +

Syg~;{-YYI8{;LukFG5 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 z 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 KFN(s^SN;PC>Q4>; delta 27 jcmZp@!n9*P(}WPVpZ(S*lM5zBoteBfKwxvTbWD%(cH*9je)_3k->d({zB!=4hs`FSq!Jn zYMi`eRe-?csH}|S`;*)oG&fCCxZJ8RnPqjb0#q>E0V)Vo&6upQNap_|n}dsI@^)-4 zU){^>Z^V$wkj#(>ghmV&3>~I6;^xf6(DeTLg}r;QHI|8Hmd!dvHP(6WR}&z3Q$39m>^KKvE5Fe`}xxfWjVHODBN7W zx|i8Mg~5cuh{2Mr}h^2aL6)j|a0YYl6;L@#I(fTaLrR#dOXIb~S+LgnRy}u+&^JkrN=5xRE zx%W5oo1En2{8Q>bPpR5M^%XO~i;MHjIsmY(&o%1r)GxKpY}={suTaN*w70CT_5x>0 zryyFOKqJ^B>cs$%!OL11+`^L;(S!ubz#=N(13W_|1;j~Y%vMMRyzB=YxiQEg(OpTV z;4M7`20h8-prFc~DX{Bt;S>u6?Ot)tTmR%U{Oe55GP1DUCkJHx>{t5aA)l4Wr+{AfwE_mb^`5s5 zdFvx@wTyU!JlC^O<*uH*-6wzJljoU8pBxG>`Q(52D`RAZilR6-n* zfq0R38w-yr5ib~6DvGGyLNXwTR?N9b21-OH=Brv4GC^?R{A>y2G^9ytqz=hIfy86p zj8wuFBm-rVh-Mp-fqKd6?pm?ifSGjdXg-$g7Q8qnIq{-WaANxuW(K+?mwSN=O)qA$ z02DM_LNahmQe)nXRKgEP(&f?oh{VrK65U-9yK}Xy`5(6v^ce8+H;Q*3@(^(=*TVQ>*h-x;HgZOMG4)q~fXhw3- zo~`C+SY}XjEQBLDm|?K1Xb3UdRV?&l=HQ_L{At)>1b-INksK5oMKq&G7Oo*V7&1E1 zWal{1BqBLT$x#Q;U~yu>9U(b5o+FN@;r(23JPXN44)nQBG(AWbK1XuUm8%YRSJE{#x4mRe& z1Tq8@SZK#ghD0xo!d@eU`Mmg9AQVLF+(T~wMZ7q%p&GqBnxL8C&tzJS@y2!$w<|n zyK_Oj{UCMW;Ox$T)+aaa-zyc`YYn znONp|#maBX-`zd$rD?Tq)L%UC>QA$xw?tQ|hPJFSEy^{`E}dl4EO-*SFD<4@<+nfn z&kds^_eKZ49z4C%5^*=MCoZG+3rqF~GI||TekCIyjXtwr(~22S?;dTs_}(eQz+YRM z;?;eVYkpNcKjp#aK~q}lTROYjk{`#urkisq>51`^{nhM(OKUgIZ`l>ID)L5h$HC5S z2VY`dcIbYKq5R2jPjwDv^(`8{5OcJyFL?BR6&HOy=Jvu}YtQNiVlq1)#Rqrb4XHFb%UwE7kL?8Ark z5!Bn|k!dN-ju-a-=43$o;e)Sran~D9olRKXl$7+DQokZJ!oND8e2HEh+;-^Gc6Qs* zS>sanCM6aQFWUIwaGd-zdQiO4G%aZO{>JZW#PE5U{g;mjwU6b;-?m0BUcA*@v%Ph@ z;+=%X!1dGPZbn6ZV%$3MmLmMCiqq+%C%)V{GhQ=NIrk5rt}9R6H+r_@>PyQTs>7fA z=cY9&x~Ms!OPXeWVXX*>@c;V1XD(Mp`Bw_I=&*i8{M@;5j?u7WiaKvgp42vJ$L->M zV3onhohuDBAybzf3I2BZ?p^0Y9bw_6F>`a?O_p@#qT*OhzGTQ+ZIp@%V>9#ckBmw! z+p`_4YWV&=O<&)2VNv5>j=fr0f3?eDOKOhVunqq!(yIv$6SNU@5s*KT^g9HP2}TeZ zN`grQGYMWNNF~q{6cbnp8VNcab@?Kd_AC$3CgDQu2C~}yfU$dP3yAZ%w{5BUZ_l>( zU%YL6l6b&TSx8fnzhv*W)_1l((@W~y?=tpkzHdd|o^*BOO?5Sn-xqcG%K-idyi4#l delta 2693 zcmb7_eN4sDRS-`_CG{F!sk{XE~_ z=Xvh$-rtoP92iH$kyxyV^zbiss;Nlnr0 z0f7%k_nSF-$UMF-31p5M%((GBJ4c&>qCHq&3mKNm#&6sdk}rnj#PabOPe{(J825Yc zWad0(Go69Fl9Qm}4Im4Tj|T)nj&y8tMqFHMBoi4+N_x zSU(C@`-xyU7p#MU%C^x^an0>bHRKA(yk*?a3(1E=vOgr7YscrehvWn+6$U#RGFWd9 zv8pC-V6CR>cf6XG)ZL!JZzLqo!S8D9!;!^(OC7;Sx8WyLVC3kx3P)d=IC{mIAg#Aw zUzvh)ZRArZjP?k6;wehjQ#ehL737Cy2e<$fXo>7XUIB)a3<^{szl+y8!Fk{~$O zGhjG*L4m%K6`22k;q)CS(2ueUX1CD;M#&!dUZWTJijh=2T>}OBpHYW=6AUM{qJxQ0 z^Z{enLq%gD&^?L*bw4Q3EX9F57Zm7m#e=-t=mn!>FXnG3q~>Y5Ne5_K}YvOsMnZ{P+mOb0T%fiyh5 z4hpo-q(jaH!|7d+b@edsgZR!&N}#Ktdk&d(y)a*wdSSjTr7)hp2L%$$x-dIW(I^7l zXI9WCGV6JPTFeg6VfKI<%#Lt;b)ZO}fD&Cbdtn@9UYI4IM3rTFfu~PFkq&|qeN^Ux zNho*0M1sta$dkLAM3EXniC!#MMBYwm6$;c1EF_Ak@L*^MC{hzB(WVNW#M8Z%I!UB| zBTMu{g)4%mp-NYTNV`CZ{#Hp7c#^AVf=Dw#i56BVFsDJ0_JR_5syr~itoFb}gAz@v z)na#LhitM#6sB}=GoLY)uLlh&@CS*3Gz)Z3# zFoU%U%y6wIFynz)VD$uMbd!1dr&Tvuqz+Ibx77>tc%2tU2TJsdI=vQuHK0gugZR$s zTre|iQ(aIAHk!gyDJYV`rXY8KBE979nb;O)-ygX?sUu#TR(Gj2|LKz&i~0E0EbFp@ z<>$^DMjw1*yJq!YV>Co(`}=pz@cPd57wykYOF!DbXz|DS>3M0ni@MbjYdr3r{LU-# zkI&El!k?P3v(7m3PSdDA)xWc;VAX|Fnj(Mct#xq`&vh=kIDFXs#lUNs%aU98mOj33 z!{!!yat_b)x~BS`#r@Yb_x?~@Jn9@g-+8j8IqSK9xKkhAIs8Za>BHY2?OcI=^XU(K zM_>88(h~QG@xa7ARQ0WM>Y>lCeck+C<9X*)L+4COOO|cog?F}GegEW}R>uM1Qi1DO z+-T*m2Qm|C{<|T|)xG%Hw3heE5|1Cv8d*L!|LQEC-8Uos#PR$h;SXsub3g9M@qH7v z>rG!*@|Lop%PZEl=cL5O?H)?@EiE?9IMulB*h7~u$0iLu^{dV8+VbSzZ|b@B3qjGUYOX{h!`X`ebOA4KNXE#3Bmp&&YGp%P&{JE%XrAz(u>wT++cKPCb zYX)E4y0&-jRjqw;V!mOH+K`>Cj)=(a{jy!_?^^0!p!R>5;ZDl#UD~VlXROs`8!qjO zoPKO^>Y|yi>*BL#=Qk9lp8DM*S3J4etpnQU*Y3!h(^#lI^3v@5!X17?;oyrgXB!Rv zJZ-1#!prSq^FdlO_1W@<#%fy~%_g(WT3=mT-jL3eb6)I0O-9xO8SatT0*-5QJ{JF{ z_`NqiJ41?!-pbon`b^lu`ENy?j$9vQ8E{A6^Fq4&NX{F{zgdp|3nfN|7KU{Utqd-P zZic@zu>T(=0}S6Vi~=ho8B!QB85S}WGSoA??EZ^Y;g;Ra1B~&w(U=a5J>bsXMm^gx zWN&Aa&3AY2{*zxDPf{A)J@q`7^i$s5dGYBrcXi0pz*+7bE%a3E^sHOTPFiYm|GDAN Gg#QD<+Tt?+ diff --git a/backend/IMTest/obj/Debug/net8.0/ref/IMTest.dll b/backend/IMTest/obj/Debug/net8.0/ref/IMTest.dll index 56782668bb28453ae252996c09b6d61dc8f618d8..2793b436d536fb2af9c00bad1fb9e1c31e9ca312 100644 GIT binary patch delta 197 zcmZqZVQlDOoY28?@v3Og#-0*pf!l?b%@v--xcBzG+Ep1^Q?^-<uu dest.Size, opt => opt.MapFrom(src => src.FileSize)); CreateMap(); + + //群成员模型 + CreateMap() + .ForMember(dest => dest.Nickname, opt => opt.MapFrom(src => src.NickName)) + .ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.Username)) + .ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.Id)) + .ForMember(dest => dest.Avatar, opt => opt.MapFrom(src => src.Avatar)); + + CreateMap() + .ForMember(dest => dest.Created, opt => opt.MapFrom(src => src.Created)) + .ForMember(dest => dest.Role, opt => opt.MapFrom(src => src.RoleEnum)); } } } diff --git a/backend/IM_API/Controllers/GroupController.cs b/backend/IM_API/Controllers/GroupController.cs index 0f7582f..6dfdf8f 100644 --- a/backend/IM_API/Controllers/GroupController.cs +++ b/backend/IM_API/Controllers/GroupController.cs @@ -1,6 +1,7 @@ using IM_API.Dtos; using IM_API.Dtos.Group; using IM_API.Interface.Services; +using IM_API.VOs.Group; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -67,5 +68,14 @@ namespace IM_API.Controllers var res = new BaseResponse(); return Ok(res); } + + [HttpGet] + [ProducesResponseType(typeof(BaseResponse>), StatusCodes.Status200OK)] + public async Task GetGroupMembers([FromQuery]int groupId) + { + var useridStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + var members = await _groupService.GetGroupMembers(int.Parse(useridStr), groupId); + return Ok(new BaseResponse>(members)); + } } } diff --git a/backend/IM_API/Interface/Services/IGroupService.cs b/backend/IM_API/Interface/Services/IGroupService.cs index 1b80b62..fa7e4e8 100644 --- a/backend/IM_API/Interface/Services/IGroupService.cs +++ b/backend/IM_API/Interface/Services/IGroupService.cs @@ -1,5 +1,6 @@ using IM_API.Dtos.Group; using IM_API.Models; +using IM_API.VOs.Group; namespace IM_API.Interface.Services { @@ -51,5 +52,6 @@ namespace IM_API.Interface.Services Task HandleGroupRequestAsync(int userid, HandleGroupRequestDto dto); Task MakeGroupRequestAsync(int userId,int? adminUserId,int groupId); Task MakeGroupMemberAsync(int userId, int groupId, GroupMemberRole? role); + Task> GetGroupMembers(int userId, int groupId); } } diff --git a/backend/IM_API/Migrations/20260306065353_uploadtask-url.Designer.cs b/backend/IM_API/Migrations/20260306065353_uploadtask-url.Designer.cs new file mode 100644 index 0000000..bf5ce4e --- /dev/null +++ b/backend/IM_API/Migrations/20260306065353_uploadtask-url.Designer.cs @@ -0,0 +1,1173 @@ +// +using System; +using IM_API.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IM_API.Migrations +{ + [DbContext(typeof(ImContext))] + [Migration("20260306065353_uploadtask-url")] + partial class uploadtaskurl + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("latin1_swedish_ci") + .HasAnnotation("ProductVersion", "8.0.21") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.HasCharSet(modelBuilder, "latin1"); + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("状态(0:正常,2:封禁) "); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("更新时间 "); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RoleId" }, "RoleId"); + + b.ToTable("admins", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("int(11)"); + + b.Property("LastMessage") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("最后一条最新消息"); + + b.Property("LastMessageTime") + .HasColumnType("datetime") + .HasComment("最后一条消息发送时间"); + + b.Property("LastReadSequenceId") + .HasColumnType("int(11)") + .HasColumnName("lastReadMessageId") + .HasComment("最后一条未读消息ID "); + + b.Property("MessageId") + .HasColumnType("int(11)"); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.Property("TargetId") + .HasColumnType("int(11)") + .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) "); + + b.Property("UnreadCount") + .HasColumnType("int(11)") + .HasComment("未读消息数 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("MessageId"); + + b.HasIndex(new[] { "LastReadSequenceId" }, "LastReadSequenceId"); + + b.HasIndex(new[] { "UserId" }, "Userid"); + + b.ToTable("conversations", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)"); + + b.Property("LastLogin") + .HasColumnType("datetime") + .HasComment("最后一次登录 "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("设备所属用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userid") + .HasDatabaseName("Userid1"); + + b.ToTable("devices", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("FileType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)") + .HasComment("文件类型 "); + + b.Property("MessageId") + .HasColumnType("int(11)") + .HasComment("关联消息ID "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("文件名 "); + + b.Property("Size") + .HasColumnType("int(11)") + .HasComment("文件大小(单位:KB) "); + + b.Property("Url") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("URL") + .HasComment("文件储存URL "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "MessageId" }, "Messageld"); + + b.ToTable("files", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("好友头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("好友关系创建时间"); + + b.Property("FriendId") + .HasColumnType("int(11)") + .HasComment("用户2ID"); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("好友备注名"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户ID"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID"); + + b.HasIndex(new[] { "UserId", "FriendId" }, "Userld"); + + b.HasIndex(new[] { "FriendId" }, "用户2id"); + + b.ToTable("friends", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("申请时间 "); + + b.Property("Description") + .HasColumnType("text") + .HasComment("申请附言 "); + + b.Property("RemarkName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("备注"); + + b.Property("RequestUser") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.Property("ResponseUser") + .HasColumnType("int(11)") + .HasComment("被申请人 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "RequestUser" }, "RequestUser"); + + b.HasIndex(new[] { "ResponseUser" }, "ResponseUser"); + + b.ToTable("friend_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("AllMembersBanned") + .HasColumnType("tinyint(4)") + .HasComment("全员禁言(0允许发言,2全员禁言)"); + + b.Property("Announcement") + .HasColumnType("text") + .HasComment("群公告"); + + b.Property("Auhority") + .HasColumnType("tinyint(4)") + .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)"); + + b.Property("Avatar") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("群头像"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("群聊创建时间"); + + b.Property("GroupMaster") + .HasColumnType("int(11)") + .HasComment("群主"); + + b.Property("LastMessage") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LastSenderName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("LastUpdateTime") + .HasColumnType("datetime(6)"); + + b.Property("MaxSequenceId") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("群聊名称"); + + b.Property("Status") + .HasColumnType("tinyint(4)") + .HasComment("群聊状态\r\n(1:正常,2:封禁)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupMaster" }, "GroupMaster"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID1"); + + b.ToTable("groups", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("InviteUser") + .HasColumnType("int(11)") + .HasComment("邀请用户"); + + b.Property("InvitedUser") + .HasColumnType("int(11)") + .HasComment("被邀请用户"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "GroupId"); + + b.HasIndex(new[] { "InviteUser" }, "InviteUser"); + + b.HasIndex(new[] { "InvitedUser" }, "InvitedUser"); + + b.ToTable("group_invite", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("加入群聊时间"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号"); + + b.Property("Role") + .HasColumnType("tinyint(4)") + .HasComment("成员角色(0:普通成员,1:管理员,2:群主)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("用户编号"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "GroupId" }, "Groupld"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID2"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld1"); + + b.ToTable("group_member", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("入群附言"); + + b.Property("GroupId") + .HasColumnType("int(11)") + .HasComment("群聊编号\r\n"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("申请人 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("UserId"); + + b.HasIndex(new[] { "GroupId" }, "GroupId") + .HasDatabaseName("GroupId1"); + + b.ToTable("group_request", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Dtype") + .HasColumnType("tinyint(4)") + .HasColumnName("DType") + .HasComment("设备类型(通Devices/DType) "); + + b.Property("Logined") + .HasColumnType("datetime") + .HasComment("登录时间 "); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) "); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("登录用户 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld2"); + + b.ToTable("login_log", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ChatType") + .HasColumnType("tinyint(4)") + .HasComment("聊天类型\r\n(0:私聊,1:群聊)"); + + b.Property("ClientMsgId") + .HasColumnType("char(36)"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("消息内容 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("发送时间 "); + + b.Property("MsgType") + .HasColumnType("tinyint(4)") + .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)"); + + b.Property("Recipient") + .HasColumnType("int(11)") + .HasComment("接收者(私聊为用户ID,群聊为群聊ID) "); + + b.Property("Sender") + .HasColumnType("int(11)") + .HasComment("发送者 "); + + b.Property("SequenceId") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("tinyint(4)") + .HasComment("消息状态(0:已发送,1:已撤回) "); + + b.Property("StreamKey") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("消息推送唯一标识符"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex("SequenceId", "StreamKey") + .IsUnique(); + + b.HasIndex(new[] { "Sender" }, "Sender"); + + b.ToTable("messages", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasColumnType("text") + .HasComment("通知内容"); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间"); + + b.Property("Ntype") + .HasColumnType("tinyint(4)") + .HasColumnName("NType") + .HasComment("通知类型(0:文本)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasComment("通知标题"); + + b.Property("UserId") + .HasColumnType("int(11)") + .HasComment("接收人(为空为全体通知)"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "UserId" }, "Userld") + .HasDatabaseName("Userld3"); + + b.ToTable("notifications", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Code") + .HasColumnType("int(11)") + .HasComment("权限编码 "); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("权限名称 "); + + b.Property("Ptype") + .HasColumnType("int(11)") + .HasColumnName("PType") + .HasComment("权限类型(0:增,1:删,2:改,3:查) "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("permissions", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.Property("Id") + .HasColumnType("int(11)") + .HasColumnName("ID"); + + b.Property("PermissionId") + .HasColumnType("int(11)") + .HasComment("权限 "); + + b.Property("RoleId") + .HasColumnType("int(11)") + .HasComment("角色 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "PermissionId" }, "Permissionld"); + + b.HasIndex(new[] { "RoleId" }, "Roleld"); + + b.ToTable("permissionarole", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime") + .HasComment("创建时间 "); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasComment("角色描述 "); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)") + .HasComment("角色名称 "); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("roles", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Upload.UploadTask", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ChunkSize") + .HasColumnType("int"); + + b.Property("ContentType") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("FileHash") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FileSize") + .HasColumnType("bigint"); + + b.Property("ObjectName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ProviderUploadId") + .HasColumnType("longtext"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("StorageProvider") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TotalChunks") + .HasColumnType("int"); + + b.Property("Url") + .HasColumnType("longtext"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.ToTable("upload_tasks", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int(11)") + .HasColumnName("ID"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Avatar") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasComment("用户头像链接"); + + b.Property("Created") + .ValueGeneratedOnAdd() + .HasColumnType("datetime") + .HasDefaultValueSql("'1970-01-01 00:00:00'") + .HasComment("创建时间"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(4)") + .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除"); + + b.Property("NickName") + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("用户昵称"); + + b.Property("OnlineStatus") + .HasColumnType("tinyint(4)") + .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("密码"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(4)") + .HasDefaultValueSql("'1'") + .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)"); + + b.Property("Updated") + .HasColumnType("datetime") + .HasComment("修改时间"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)") + .HasComment("唯一用户名"); + + b.HasKey("Id") + .HasName("PRIMARY"); + + b.HasIndex(new[] { "Id" }, "ID") + .HasDatabaseName("ID3"); + + b.HasIndex(new[] { "Username" }, "Username") + .IsUnique(); + + b.ToTable("users", (string)null); + + MySqlEntityTypeBuilderExtensions.HasCharSet(b, "utf8mb4"); + MySqlEntityTypeBuilderExtensions.UseCollation(b, "utf8mb4_general_ci"); + }); + + modelBuilder.Entity("IM_API.Models.Admin", b => + { + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Admins") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("admins_ibfk_1"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Conversation", b => + { + b.HasOne("IM_API.Models.Message", null) + .WithMany("Conversations") + .HasForeignKey("MessageId"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("Conversations") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("conversations_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Device", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Devices") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("devices_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.File", b => + { + b.HasOne("IM_API.Models.Message", "Message") + .WithMany("Files") + .HasForeignKey("MessageId") + .IsRequired() + .HasConstraintName("files_ibfk_1"); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("IM_API.Models.Friend", b => + { + b.HasOne("IM_API.Models.User", "FriendNavigation") + .WithMany("FriendFriendNavigations") + .HasForeignKey("FriendId") + .IsRequired() + .HasConstraintName("用户2id"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("FriendUsers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("用户id"); + + b.Navigation("FriendNavigation"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.FriendRequest", b => + { + b.HasOne("IM_API.Models.User", "RequestUserNavigation") + .WithMany("FriendRequestRequestUserNavigations") + .HasForeignKey("RequestUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "ResponseUserNavigation") + .WithMany("FriendRequestResponseUserNavigations") + .HasForeignKey("ResponseUser") + .IsRequired() + .HasConstraintName("friend_request_ibfk_2"); + + b.Navigation("RequestUserNavigation"); + + b.Navigation("ResponseUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.HasOne("IM_API.Models.User", "GroupMasterNavigation") + .WithMany("Groups") + .HasForeignKey("GroupMaster") + .IsRequired() + .HasConstraintName("groups_ibfk_1"); + + b.Navigation("GroupMasterNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupInvite", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupInvites") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_invite_ibfk_2"); + + b.HasOne("IM_API.Models.User", "InviteUserNavigation") + .WithMany("GroupInviteInviteUserNavigations") + .HasForeignKey("InviteUser") + .HasConstraintName("group_invite_ibfk_1"); + + b.HasOne("IM_API.Models.User", "InvitedUserNavigation") + .WithMany("GroupInviteInvitedUserNavigations") + .HasForeignKey("InvitedUser") + .HasConstraintName("group_invite_ibfk_3"); + + b.Navigation("Group"); + + b.Navigation("InviteUserNavigation"); + + b.Navigation("InvitedUserNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.GroupMember", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupMembers") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_member_ibfk_2"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupMembers") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_member_ibfk_1"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.GroupRequest", b => + { + b.HasOne("IM_API.Models.Group", "Group") + .WithMany("GroupRequests") + .HasForeignKey("GroupId") + .IsRequired() + .HasConstraintName("group_request_ibfk_1"); + + b.HasOne("IM_API.Models.User", "User") + .WithMany("GroupRequests") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("group_request_ibfk_2"); + + b.Navigation("Group"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.LoginLog", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("LoginLogs") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("login_log_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.HasOne("IM_API.Models.User", "SenderNavigation") + .WithMany("Messages") + .HasForeignKey("Sender") + .IsRequired() + .HasConstraintName("messages_ibfk_1"); + + b.Navigation("SenderNavigation"); + }); + + modelBuilder.Entity("IM_API.Models.Notification", b => + { + b.HasOne("IM_API.Models.User", "User") + .WithMany("Notifications") + .HasForeignKey("UserId") + .IsRequired() + .HasConstraintName("notifications_ibfk_1"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IM_API.Models.Permissionarole", b => + { + b.HasOne("IM_API.Models.Permission", "Permission") + .WithMany("Permissionaroles") + .HasForeignKey("PermissionId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_2"); + + b.HasOne("IM_API.Models.Role", "Role") + .WithMany("Permissionaroles") + .HasForeignKey("RoleId") + .IsRequired() + .HasConstraintName("permissionarole_ibfk_1"); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("IM_API.Models.Group", b => + { + b.Navigation("GroupInvites"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + }); + + modelBuilder.Entity("IM_API.Models.Message", b => + { + b.Navigation("Conversations"); + + b.Navigation("Files"); + }); + + modelBuilder.Entity("IM_API.Models.Permission", b => + { + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.Role", b => + { + b.Navigation("Admins"); + + b.Navigation("Permissionaroles"); + }); + + modelBuilder.Entity("IM_API.Models.User", b => + { + b.Navigation("Conversations"); + + b.Navigation("Devices"); + + b.Navigation("FriendFriendNavigations"); + + b.Navigation("FriendRequestRequestUserNavigations"); + + b.Navigation("FriendRequestResponseUserNavigations"); + + b.Navigation("FriendUsers"); + + b.Navigation("GroupInviteInviteUserNavigations"); + + b.Navigation("GroupInviteInvitedUserNavigations"); + + b.Navigation("GroupMembers"); + + b.Navigation("GroupRequests"); + + b.Navigation("Groups"); + + b.Navigation("LoginLogs"); + + b.Navigation("Messages"); + + b.Navigation("Notifications"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/IM_API/Migrations/20260306065353_uploadtask-url.cs b/backend/IM_API/Migrations/20260306065353_uploadtask-url.cs new file mode 100644 index 0000000..4f0f57e --- /dev/null +++ b/backend/IM_API/Migrations/20260306065353_uploadtask-url.cs @@ -0,0 +1,30 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IM_API.Migrations +{ + /// + public partial class uploadtaskurl : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Url", + table: "upload_tasks", + type: "longtext", + nullable: true, + collation: "utf8mb4_general_ci") + .Annotation("MySql:CharSet", "utf8mb4"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Url", + table: "upload_tasks"); + } + } +} diff --git a/backend/IM_API/Migrations/ImContextModelSnapshot.cs b/backend/IM_API/Migrations/ImContextModelSnapshot.cs index 6b71e71..53e6917 100644 --- a/backend/IM_API/Migrations/ImContextModelSnapshot.cs +++ b/backend/IM_API/Migrations/ImContextModelSnapshot.cs @@ -812,6 +812,9 @@ namespace IM_API.Migrations b.Property("TotalChunks") .HasColumnType("int"); + b.Property("Url") + .HasColumnType("longtext"); + b.HasKey("Id") .HasName("PRIMARY"); diff --git a/backend/IM_API/Models/Upload/UploadTask.cs b/backend/IM_API/Models/Upload/UploadTask.cs index 087b83b..0d44d32 100644 --- a/backend/IM_API/Models/Upload/UploadTask.cs +++ b/backend/IM_API/Models/Upload/UploadTask.cs @@ -20,5 +20,6 @@ public string? ProviderUploadId { get; set; } // OSS/S3 UploadId public DateTimeOffset CreatedAt { get; set; } + public string? Url { get; set; } } } diff --git a/backend/IM_API/Services/ConversationService.cs b/backend/IM_API/Services/ConversationService.cs index 52c6856..1cfbb43 100644 --- a/backend/IM_API/Services/ConversationService.cs +++ b/backend/IM_API/Services/ConversationService.cs @@ -34,8 +34,9 @@ namespace IM_API.Services var privateList = await (from c in _context.Conversations join f in _context.Friends on new { c.UserId, c.TargetId } equals new { UserId = f.UserId, TargetId = f.FriendId } + join u in _context.Users on c.TargetId equals u.Id where c.UserId == userId && c.ChatType == ChatType.PRIVATE - select new { c, f.Avatar, f.RemarkName }) + select new { c, u.Avatar, f.RemarkName }) .ToListAsync(); // 2. 获取群聊会话 diff --git a/backend/IM_API/Services/GroupService.cs b/backend/IM_API/Services/GroupService.cs index c78ebb9..4d09a8a 100644 --- a/backend/IM_API/Services/GroupService.cs +++ b/backend/IM_API/Services/GroupService.cs @@ -2,13 +2,16 @@ using AutoMapper.QueryableExtensions; using IM_API.Domain.Events; using IM_API.Dtos.Group; +using IM_API.Dtos.User; using IM_API.Exceptions; using IM_API.Interface.Services; using IM_API.Models; using IM_API.Tools; +using IM_API.VOs.Group; using MassTransit; using Microsoft.EntityFrameworkCore; using System; +using System.Linq; namespace IM_API.Services { @@ -247,5 +250,21 @@ namespace IM_API.Services }); return; } + + public async Task> GetGroupMembers(int userId, int groupId) + { + var members = await _context.GroupMembers + .Where(x => x.GroupId == groupId).ToListAsync(); + if (members is null || members.Count() == 0) + return []; + + var users = await _userService.GetUserInfoListAsync(members.Select(x => x.UserId).ToList()); + return users.Zip(members, (u, m) => + { + var user = _mapper.Map(u); + _mapper.Map(m, user); + return user; + }).ToList(); + } } } diff --git a/backend/IM_API/Services/LocalStorageService.cs b/backend/IM_API/Services/LocalStorageService.cs index 3947f37..1d877ad 100644 --- a/backend/IM_API/Services/LocalStorageService.cs +++ b/backend/IM_API/Services/LocalStorageService.cs @@ -157,9 +157,14 @@ namespace IM_API.Services public async Task UploadSmallFileAsync(Stream stream, string fileName, string fileType, long size, string hash) { + var request = _httpContext.HttpContext?.Request; + var baseUrl = $"{request.Scheme}://{request.Host}"; var taskOld = await _uploadTaskService.GetTaskAsync(hash); - - if (taskOld is not null) return taskOld; + if (taskOld is not null) { + taskOld.Url = UrlTools.GetFullUrl(taskOld.ObjectName, ProviderName, baseUrl); + return taskOld; + } + var userId = _httpContext.HttpContext?.User.FindFirstValue(ClaimTypes.NameIdentifier); var objectname = ObjectNameGenerator.Generate(new ObjectNameContext @@ -184,6 +189,7 @@ namespace IM_API.Services FileSize = size, Id = Guid.NewGuid(), ObjectName = objectname, + Url = UrlTools.GetFullUrl(objectname, ProviderName, baseUrl), ProviderUploadId = Guid.NewGuid().ToString(), Status = UploadStatus.Completed, StorageProvider = ProviderName, diff --git a/backend/IM_API/VOs/Group/GroupMemberVo.cs b/backend/IM_API/VOs/Group/GroupMemberVo.cs new file mode 100644 index 0000000..ab0e7eb --- /dev/null +++ b/backend/IM_API/VOs/Group/GroupMemberVo.cs @@ -0,0 +1,14 @@ +using IM_API.Models; + +namespace IM_API.VOs.Group +{ + public class GroupMemberVo + { + public int UserId { get; set; } + public string Username { get; set; } + public string Nickname { get; set; } + public string Avatar { get; set; } + public GroupMemberRole Role { get; set; } + public DateTimeOffset Created { get; set; } + } +} diff --git a/frontend/pc/IM/src/main/index.js b/frontend/pc/IM/src/main/index.js index 00e3911..f0878fd 100644 --- a/frontend/pc/IM/src/main/index.js +++ b/frontend/pc/IM/src/main/index.js @@ -27,6 +27,7 @@ function createWindow() { mainWindow.show() }) + mainWindow.webContents.setWindowOpenHandler((details) => { shell.openExternal(details.url) return { action: 'deny' } @@ -75,9 +76,10 @@ app.whenReady().then(() => { // explicitly with Cmd + Q. app.on('window-all-closed', () => { if (process.platform !== 'darwin') { - app.quit() + //app.quit() } }) + // In this file you can include the rest of your app's specific main process // code. You can also put them in separate files and require them here. diff --git a/frontend/pc/IM/src/main/ipcHandlers/window.js b/frontend/pc/IM/src/main/ipcHandlers/window.js index 828cb62..2b71798 100644 --- a/frontend/pc/IM/src/main/ipcHandlers/window.js +++ b/frontend/pc/IM/src/main/ipcHandlers/window.js @@ -1,15 +1,68 @@ -import { ipcMain, BrowserWindow } from "electron"; +import { ipcMain, BrowserWindow } from 'electron' +import icon from '../../../resources/icon.png?asset' +import { join } from 'path' +import { is } from '@electron-toolkit/utils' + +export function registerWindowHandler() { + const windowMapData = new Map() -export function registerWindowHandler(){ ipcMain.on('window-action', (event, action) => { - const win = BrowserWindow.fromWebContents(event.sender); - if (!win) return; + const win = BrowserWindow.fromWebContents(event.sender) + if (!win) return const actions = { minimize: () => win.minimize(), maximize: () => (win.isMaximized() ? win.unmaximize() : win.maximize()), close: () => win.hide(), + closeThis: () => { + const mainWin = BrowserWindow.fromId(1); // 假设 ID 1 是主窗口 + const win = BrowserWindow.fromWebContents(event.sender) + if(win.id != mainWin?.id){ + win.destroy() + } + }, isMaximized: () => win.isMaximized() - }; - actions[action]?.(); + } + actions[action]?.() + }) + ipcMain.on('window-new', (event, { route, data }) => { + const win = new BrowserWindow({ + width: 900, + height: 670, + show: true, + autoHideMenuBar: true, + frame: false, + ...(process.platform === 'linux' ? { icon } : {}), // Linux 必须在这里设 + icon: join(__dirname, '../../../resources/icon.png'), // Windows 开发环境预览 + webPreferences: { + preload: join(__dirname, '../preload/index.js'), + sandbox: false + } + }) + + const winId = win.id + windowMapData.set(winId, data) + + // 窗口关闭时,记得清理内存,防止内存泄漏 + win.on('closed', () => { + windowMapData.delete(winId) + }) + + // 构建 Query 参数 + const queryStr = `?winId=${winId}` + + if (is.dev && process.env['ELECTRON_RENDERER_URL']) { + // 开发环境:通常使用 Hash 路由 (如 http://localhost:5173/#/your-route?winId=1) + win.loadURL(`${process.env['ELECTRON_RENDERER_URL']}#/${route}${queryStr}`) + } else { + // 生产环境:loadFile 必须通过 hash 参数来传递路由和参数 + // 注意:join 会合并路径,hash 部分需要单独传给 options + win.loadFile(join(__dirname, '../../renderer/index.html'), { + hash: `${route}${queryStr}` + }) + } +}) + // 3. 增加数据索要接口 + ipcMain.handle('get-window-data', (event, winId) => { + return windowMapData.get(Number(winId)) }) } diff --git a/frontend/pc/IM/src/main/trayHandler.js b/frontend/pc/IM/src/main/trayHandler.js index 5487394..6fb67f1 100644 --- a/frontend/pc/IM/src/main/trayHandler.js +++ b/frontend/pc/IM/src/main/trayHandler.js @@ -1,5 +1,6 @@ import { app, Tray, Menu, nativeImage } from 'electron' import path from 'path' +import { useRouter } from 'vue-router'; let tray = null; @@ -12,7 +13,10 @@ export function createTry(mainWindow){ const menu = Menu.buildFromTemplate([ {label: '退出', click: () => app.quit()}, - {label: '设置', click: () => alert('还没写')} + {label: '设置', click: () => { + mainWindow.webContents.send('router-ctl', '/settings') + mainWindow.show() + }} ]); tray.setToolTip('IM'); tray.setContextMenu(menu); diff --git a/frontend/pc/IM/src/preload/index.js b/frontend/pc/IM/src/preload/index.js index 737bed4..923143a 100644 --- a/frontend/pc/IM/src/preload/index.js +++ b/frontend/pc/IM/src/preload/index.js @@ -7,7 +7,10 @@ const api = { minimize: () => ipcRenderer.send('window-action', 'minimize'), maximize: () => ipcRenderer.send('window-action', 'maximize'), close: () => ipcRenderer.send('window-action', 'close'), - isMaximized: () => ipcRenderer.send('window-action', 'isMaximized') + closeThis: () => ipcRenderer.send('window-action', 'closeThis'), + isMaximized: () => ipcRenderer.send('window-action', 'isMaximized'), + newWindow: (route, data) => ipcRenderer.send('window-new', { route, data }), + getWindowData: (winId) => ipcRenderer.invoke('get-window-data', winId) } } diff --git a/frontend/pc/IM/src/renderer/index.html b/frontend/pc/IM/src/renderer/index.html index 1c95fab..907a690 100644 --- a/frontend/pc/IM/src/renderer/index.html +++ b/frontend/pc/IM/src/renderer/index.html @@ -10,7 +10,8 @@ style-src 'self' 'unsafe-inline'; connect-src 'self' http://localhost:5202 ws://localhost:5202; img-src 'self' data: blob: https: http:; - font-src 'self' data:;"> + font-src 'self' data:; + media-src 'self' blob:;"> diff --git a/frontend/pc/IM/src/renderer/src/App.vue b/frontend/pc/IM/src/renderer/src/App.vue index 103066d..34d8f73 100644 --- a/frontend/pc/IM/src/renderer/src/App.vue +++ b/frontend/pc/IM/src/renderer/src/App.vue @@ -10,14 +10,16 @@ import Alert from '@/components/messages/Alert.vue'; import { onMounted } from 'vue'; import { useAuthStore } from './stores/auth'; //import { useSignalRStore } from './stores/signalr'; +import { useRouter } from 'vue-router'; -onMounted(async () => { - const { useSignalRStore } = await import('./stores/signalr'); - const authStore = useAuthStore(); - const signalRStore = useSignalRStore(); - if(authStore.token){ - signalRStore.initSignalR(); +onMounted(() => { + const router = useRouter() + if(window.electron){ + window.electron.ipcRenderer.on('router-ctl', (e, path) => { + router.push(path) + }) } + }) diff --git a/frontend/pc/IM/src/renderer/src/handler/messageHandler.js b/frontend/pc/IM/src/renderer/src/handler/messageHandler.js index 484f53e..aa8fe29 100644 --- a/frontend/pc/IM/src/renderer/src/handler/messageHandler.js +++ b/frontend/pc/IM/src/renderer/src/handler/messageHandler.js @@ -2,7 +2,7 @@ import { useConversationStore } from "@/stores/conversation" export const messageHandler = (msg) => { const conversationStore = useConversationStore(); - const conversation = conversationStore.conversations.find(x => x.targetId == msg.senderId || x.targetId == msg.receiverId); + const conversation = conversationStore.conversations.find(x => (x.targetId == msg.senderId || x.targetId == msg.receiverId) && msg.chatType == x.chatType); conversation.lastMessage = msg.content; if (conversation.targetId == msg.receiverId) { conversation.unreadCount = 0; @@ -11,4 +11,4 @@ export const messageHandler = (msg) => { } conversation.dateTime = new Date().toISOString(); -} \ No newline at end of file +} diff --git a/frontend/pc/IM/src/renderer/src/router/index.js b/frontend/pc/IM/src/renderer/src/router/index.js index 0810e24..7544bdb 100644 --- a/frontend/pc/IM/src/renderer/src/router/index.js +++ b/frontend/pc/IM/src/renderer/src/router/index.js @@ -70,6 +70,9 @@ const routes = [ meta: { requiresAuth: true } }, { path: '/test', component: TestView }, + { + path: '/imgpre', component: () => import('@/components/electron/ImagePreview.vue') + } ] const router = createRouter({ diff --git a/frontend/pc/IM/src/renderer/src/services/userService.js b/frontend/pc/IM/src/renderer/src/services/userService.js new file mode 100644 index 0000000..2109793 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/services/userService.js @@ -0,0 +1,6 @@ +import { request } from "./api"; + +export const userService = { + updateUserInfo: (params) => request.post('/User/Profile', params), + getInfo: () => request.get('/user/me') +} diff --git a/frontend/pc/IM/src/renderer/src/stores/auth.js b/frontend/pc/IM/src/renderer/src/stores/auth.js index 7b70aca..9d67a4b 100644 --- a/frontend/pc/IM/src/renderer/src/stores/auth.js +++ b/frontend/pc/IM/src/renderer/src/stores/auth.js @@ -36,7 +36,7 @@ export const useAuthStore = defineStore('auth', () => { /** * 登录成功保存状态 - * @param {String} newToken 用户凭证 + * @param {String} newToken 用户凭证 * @param {*} user 用户信息 */ function setLoginInfo(newToken, newRefreshToken, user) { @@ -47,6 +47,11 @@ export const useAuthStore = defineStore('auth', () => { localStorage.setItem('user_token', newToken); localStorage.setItem('refresh_token', newRefreshToken) localStorage.setItem('user_info', JSON.stringify(user)) + }; + + function setUserInfo(user){ + userInfo.value = user; + localStorage.setItem('user_info',JSON.stringify(user)); } /** @@ -61,5 +66,14 @@ export const useAuthStore = defineStore('auth', () => { localStorage.removeItem('user_info') } - return { token, refreshToken, userInfo, isLoggedIn, isTokenExpired, setLoginInfo, logout }; + return { + token, + refreshToken, + userInfo, + isLoggedIn, + isTokenExpired, + setLoginInfo, + setUserInfo, + logout + } }) diff --git a/frontend/pc/IM/src/renderer/src/stores/contact.js b/frontend/pc/IM/src/renderer/src/stores/contact.js index 50c39ba..ca56b02 100644 --- a/frontend/pc/IM/src/renderer/src/stores/contact.js +++ b/frontend/pc/IM/src/renderer/src/stores/contact.js @@ -4,8 +4,8 @@ import { friendService } from "@/services/friend"; import { useMessage } from "@/components/messages/useAlert"; export const useContactStore = defineStore('contact', { - state: () => ({ - contacts: [], + state: () => ({ + contacts: [] }), actions: { @@ -42,4 +42,4 @@ export const useContactStore = defineStore('contact', { } } } -}) \ No newline at end of file +}) diff --git a/frontend/pc/IM/src/renderer/src/stores/settings.js b/frontend/pc/IM/src/renderer/src/stores/settings.js new file mode 100644 index 0000000..4c758f5 --- /dev/null +++ b/frontend/pc/IM/src/renderer/src/stores/settings.js @@ -0,0 +1,20 @@ +import { defineStore } from "pinia"; +import { reactive } from "vue"; + +export const useSettingsStore = defineStore('settings', { + state: () => ({ + notificationOptions: reactive(JSON.parse(localStorage.getItem('notification_options')) || {}), + generalOptions: reactive(JSON.parse(localStorage.getItem('generaN_options')) || {}) + }), + + actions: { + setNotificationOptions(options) { + this.notificationOptions = options; + localStorage.setItem('notification_options', options) + }, + setGeneralOptions(options){ + this.generalOptions = options; + localStorage.setItem('generaN_options', options) + } + } +}) diff --git a/frontend/pc/IM/src/renderer/src/stores/signalr.js b/frontend/pc/IM/src/renderer/src/stores/signalr.js index 3b4f66d..d6badf1 100644 --- a/frontend/pc/IM/src/renderer/src/stores/signalr.js +++ b/frontend/pc/IM/src/renderer/src/stores/signalr.js @@ -6,8 +6,6 @@ import { useChatStore } from "./chat"; import { authService } from "@/services/auth"; import { generateSessionId } from "@/utils/sessionIdTools"; import { messageHandler } from "@/handler/messageHandler"; -import { useBrowserNotification } from "@/services/useBrowserNotification"; -import { useConversationStore } from "./conversation"; import { SignalRMessageHandler } from "@/utils/signalr/SignalMessageHandler"; import { signalRConnectionEventHandler } from "@/utils/signalr/signalRConnectionEventHandler"; diff --git a/frontend/pc/IM/src/renderer/src/views/Main.vue b/frontend/pc/IM/src/renderer/src/views/Main.vue index 8bfe2ea..cfc15a3 100644 --- a/frontend/pc/IM/src/renderer/src/views/Main.vue +++ b/frontend/pc/IM/src/renderer/src/views/Main.vue @@ -20,7 +20,7 @@ diff --git a/frontend/pc/IM/src/renderer/src/views/messages/messageContent/MessageContent.vue b/frontend/pc/IM/src/renderer/src/views/messages/messageContent/MessageContent.vue index 192f833..63d17fc 100644 --- a/frontend/pc/IM/src/renderer/src/views/messages/messageContent/MessageContent.vue +++ b/frontend/pc/IM/src/renderer/src/views/messages/messageContent/MessageContent.vue @@ -4,120 +4,108 @@