From c59762a39252f8b9820931c09ac71be22ac8c0f7 Mon Sep 17 00:00:00 2001 From: SpecialX <47072643+wangxiner55@users.noreply.github.com> Date: Sun, 31 Aug 2025 11:29:26 +0800 Subject: [PATCH] UI --- EmailLib/Dockerfile | 8 + Entities/Contracts/AppMainStruct.cs | 15 +- Entities/Contracts/Assignment.cs | 4 + Entities/Contracts/Question.cs | 2 +- Entities/Contracts/Submission.cs | 6 + Entities/Contracts/Textbook/Textbook.cs | 2 +- Entities/DTO/AssignmentDto.cs | 3 + Entities/DTO/AssignmentQuestionDto.cs | 1 + Entities/Dockerfile | 8 + TechHelper.Client/Dockerfile | 26 + TechHelper.Client/Exam/ExamParse.cs | 3 +- .../Pages/Author/Component.razor | 0 TechHelper.Client/Pages/Author/Login.razor | 99 +- TechHelper.Client/Pages/Author/Login.razor.cs | 2 + .../Pages/Author/Login.razor.css | 29 + .../Pages/Author/Registration.razor | 166 +-- .../Pages/Author/Registration.razor.cs | 27 +- .../Pages/Author/Registration.razor.css | 29 + .../Common/Exam/AssignmentInfoCard.razor | 143 ++ .../Exam/StudentSubmissionPreview.razor | 6 + .../Pages/Common/Exam/SubmissionPreview.razor | 6 + .../Pages/Common/PublishExamDialog.razor | 67 + .../Pages/Common/QuestionCardDialog.razor | 34 + .../Pages/Common/SimpleCard.razor | 22 + .../Pages/Common/TextEditorDialog.razor | 86 ++ .../Pages/Exam/AssignmentQuestionEdit.razor | 61 +- TechHelper.Client/Pages/Exam/ExamCreate.razor | 158 +- TechHelper.Client/Pages/Exam/ExamEdit.razor | 1 + .../Pages/Exam/ExamManager.razor | 5 +- .../Pages/Exam/ExamStructView.razor | 51 - .../Pages/Exam/ExamView/ExamStructView.razor | 87 ++ .../Pages/Exam/{ => ExamView}/ExamView.razor | 6 +- .../{ => QuestionCard}/QuestionCard.razor | 6 +- .../Exam/QuestionCard/QuestionEdit.razor | 18 + .../Pages/Exam/QuestionEdit.razor | 17 - TechHelper.Client/Pages/Home.razor | 15 +- TechHelper.Client/Pages/Manage/Index.razor | 84 +- .../Pages/Student/HomePage.razor | 141 ++ .../Properties/launchSettings.json | 4 +- TechHelper.Client/Services/ClasssServices.cs | 16 + TechHelper.Client/Services/ExamService.cs | 2 +- TechHelper.Client/Services/IClassServices.cs | 3 +- TechHelper.Client/Shared/ExamLayout.razor | 2 - TechHelper.Client/Shared/ManageLayout.razor | 5 +- TechHelper.Client/TechHelper.Client.csproj | 5 + TechHelper.Client/wwwroot/appsettings.json | 2 +- TechHelper.Client/wwwroot/ref/Border.png | Bin 0 -> 38840 bytes TechHelper.Client/wwwroot/ref/File.png | Bin 0 -> 8348 bytes TechHelper.Client/wwwroot/ref/Login.png | Bin 0 -> 101512 bytes TechHelper.Client/wwwroot/ref/UnFinish.png | Bin 0 -> 84662 bytes TechHelper.Client/wwwroot/ref/Working.png | Bin 0 -> 74557 bytes .../Controllers/ClassController.cs | 12 +- .../Controllers/ExamController.cs | 3 +- TechHelper.Server/Dockerfile | 9 +- ...0828025055_score_in_submission.Designer.cs | 1263 ++++++++++++++++ .../20250828025055_score_in_submission.cs | 104 ++ .../20250829043403_up_assign_data.Designer.cs | 1270 +++++++++++++++++ .../20250829043403_up_assign_data.cs | 93 ++ .../ApplicationContextModelSnapshot.cs | 22 +- TechHelper.Server/Program.cs | 4 +- .../Properties/launchSettings.json | 4 +- TechHelper.Server/Services/ClassService.cs | 16 + TechHelper.Server/Services/IClassService.cs | 2 + TechHelper.sln | 3 + docker-compose.yml | 38 + 65 files changed, 3996 insertions(+), 330 deletions(-) create mode 100644 EmailLib/Dockerfile create mode 100644 Entities/Dockerfile create mode 100644 TechHelper.Client/Dockerfile create mode 100644 TechHelper.Client/Pages/Author/Component.razor create mode 100644 TechHelper.Client/Pages/Author/Login.razor.css create mode 100644 TechHelper.Client/Pages/Author/Registration.razor.css create mode 100644 TechHelper.Client/Pages/Common/Exam/AssignmentInfoCard.razor create mode 100644 TechHelper.Client/Pages/Common/Exam/StudentSubmissionPreview.razor create mode 100644 TechHelper.Client/Pages/Common/Exam/SubmissionPreview.razor create mode 100644 TechHelper.Client/Pages/Common/PublishExamDialog.razor create mode 100644 TechHelper.Client/Pages/Common/QuestionCardDialog.razor create mode 100644 TechHelper.Client/Pages/Common/SimpleCard.razor create mode 100644 TechHelper.Client/Pages/Common/TextEditorDialog.razor delete mode 100644 TechHelper.Client/Pages/Exam/ExamStructView.razor create mode 100644 TechHelper.Client/Pages/Exam/ExamView/ExamStructView.razor rename TechHelper.Client/Pages/Exam/{ => ExamView}/ExamView.razor (83%) rename TechHelper.Client/Pages/Exam/{ => QuestionCard}/QuestionCard.razor (86%) create mode 100644 TechHelper.Client/Pages/Exam/QuestionCard/QuestionEdit.razor delete mode 100644 TechHelper.Client/Pages/Exam/QuestionEdit.razor create mode 100644 TechHelper.Client/Pages/Student/HomePage.razor create mode 100644 TechHelper.Client/wwwroot/ref/Border.png create mode 100644 TechHelper.Client/wwwroot/ref/File.png create mode 100644 TechHelper.Client/wwwroot/ref/Login.png create mode 100644 TechHelper.Client/wwwroot/ref/UnFinish.png create mode 100644 TechHelper.Client/wwwroot/ref/Working.png create mode 100644 TechHelper.Server/Migrations/20250828025055_score_in_submission.Designer.cs create mode 100644 TechHelper.Server/Migrations/20250828025055_score_in_submission.cs create mode 100644 TechHelper.Server/Migrations/20250829043403_up_assign_data.Designer.cs create mode 100644 TechHelper.Server/Migrations/20250829043403_up_assign_data.cs create mode 100644 docker-compose.yml diff --git a/EmailLib/Dockerfile b/EmailLib/Dockerfile new file mode 100644 index 0000000..4c0efc1 --- /dev/null +++ b/EmailLib/Dockerfile @@ -0,0 +1,8 @@ +# ./EmailLib/Dockerfile +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS eamillib +WORKDIR /src +COPY ../EmailLib/*.csproj ./EmailLib/ +RUN dotnet restore "EmailLib/EmailLib.csproj" + +COPY ../EmailLib/. ./EmailLib/ +RUN dotnet publish "EmailLib/EmailLib.csproj" -c Release -o /publish \ No newline at end of file diff --git a/Entities/Contracts/AppMainStruct.cs b/Entities/Contracts/AppMainStruct.cs index 9ca0285..65b1896 100644 --- a/Entities/Contracts/AppMainStruct.cs +++ b/Entities/Contracts/AppMainStruct.cs @@ -21,7 +21,7 @@ namespace Entities.Contracts 部编版, } - public enum Grade : byte + public enum GradeEnum : byte { Unknown = 0, 一年级 = 1, @@ -69,14 +69,25 @@ namespace Entities.Contracts public enum AssignmentStructType : byte { + Root, Question, - Composite, + Group, Struct, SubQuestion, Option } + public enum ExamType : byte + { + MidtermExam, // 期中 + FinalExam, // 期末 + MonthlyExam, // 月考 + WeeklyExam, // 周考 + DailyTest, // 平时测试 + AITest, // AI测试 + } + public enum SubmissionStatus { diff --git a/Entities/Contracts/Assignment.cs b/Entities/Contracts/Assignment.cs index aac37c0..1dbc9f7 100644 --- a/Entities/Contracts/Assignment.cs +++ b/Entities/Contracts/Assignment.cs @@ -41,6 +41,10 @@ namespace Entities.Contracts [Column("score")] public float Score { get; set; } + public string Name { get; set; } = string.Empty; + + public ExamType ExamType { get; set; } = ExamType.DailyTest; + [Column("created_by")] public Guid CreatorId { get; set; } diff --git a/Entities/Contracts/Question.cs b/Entities/Contracts/Question.cs index fe115ea..7d91b6d 100644 --- a/Entities/Contracts/Question.cs +++ b/Entities/Contracts/Question.cs @@ -48,7 +48,7 @@ namespace Entities.Contracts [Column("lesson")] public Guid? LessonId { get; set; } - + [Required] [Column("created_by")] public Guid CreatorId { get; set; } diff --git a/Entities/Contracts/Submission.cs b/Entities/Contracts/Submission.cs index 0b1ad3e..aea74bf 100644 --- a/Entities/Contracts/Submission.cs +++ b/Entities/Contracts/Submission.cs @@ -49,6 +49,12 @@ namespace Entities.Contracts [Column("deleted")] public bool IsDeleted { get; set; } + public byte TotalQuesNum { get; set; } + + public byte ErrorQuesNum { get; set; } + + public byte TotalScore { get; set; } + [Required] [Column("status")] public SubmissionStatus Status { get; set; } diff --git a/Entities/Contracts/Textbook/Textbook.cs b/Entities/Contracts/Textbook/Textbook.cs index 952f45b..5764381 100644 --- a/Entities/Contracts/Textbook/Textbook.cs +++ b/Entities/Contracts/Textbook/Textbook.cs @@ -15,7 +15,7 @@ namespace Entities.Contracts [Key] public Guid Id { get; set; } - public Grade Grade { get; set; } = Grade.Unknown; + public GradeEnum Grade { get; set; } = GradeEnum.Unknown; public string Title { get; set; } = string.Empty; diff --git a/Entities/DTO/AssignmentDto.cs b/Entities/DTO/AssignmentDto.cs index 4a32497..fab94bf 100644 --- a/Entities/DTO/AssignmentDto.cs +++ b/Entities/DTO/AssignmentDto.cs @@ -21,6 +21,9 @@ namespace Entities.DTO public DateTime DueDate { get; set; } public Guid CreatorId { get; set; } + public string Name { get; set; } = string.Empty; + public ExamType ExamType { get; set; } = ExamType.DailyTest; + public AssignmentQuestionDto ExamStruct { get; set; } = new AssignmentQuestionDto(); } } diff --git a/Entities/DTO/AssignmentQuestionDto.cs b/Entities/DTO/AssignmentQuestionDto.cs index 702e130..c38774a 100644 --- a/Entities/DTO/AssignmentQuestionDto.cs +++ b/Entities/DTO/AssignmentQuestionDto.cs @@ -16,6 +16,7 @@ namespace Entities.DTO public byte Index { get; set; } = 0; public float Score { get; set; } = 0; public string Sequence { get; set; } = string.Empty; + public bool BCorrect { get; set; } = true; public Layout Layout { get; set; } = Layout.horizontal; public AssignmentStructType StructType { get; set; } = AssignmentStructType.Question; diff --git a/Entities/Dockerfile b/Entities/Dockerfile new file mode 100644 index 0000000..67a8faa --- /dev/null +++ b/Entities/Dockerfile @@ -0,0 +1,8 @@ +# ./Entities/Dockerfile +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS entities +WORKDIR /src +COPY ../Entities/*.csproj ./Entities/ +RUN dotnet restore "Entities/Entities.csproj" + +COPY ../Entities/. ./Entities/ +RUN dotnet publish "Entities/Entities.csproj" -c Release -o /publish \ No newline at end of file diff --git a/TechHelper.Client/Dockerfile b/TechHelper.Client/Dockerfile new file mode 100644 index 0000000..e5d4062 --- /dev/null +++ b/TechHelper.Client/Dockerfile @@ -0,0 +1,26 @@ +# 构建阶段 +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS client + + +#COPY --from=entitieslib:latest /publish /publish/entities +#COPY --from=emaillib:latest /publish /publish/emaillib + +WORKDIR /app + +# 复制依赖文件 & 恢复 +#COPY ./TechHelper.Client.sln ./ +COPY ../TechHelper.Client/*.csproj ../TechHelper.Client/ + +RUN dotnet nuget locals all --clear +RUN dotnet restore "/app/TechHelper.Client/TechHelper.Client.csproj" + +# 复制代码 & 发布 +COPY . ./ +WORKDIR /app/TechHelper.Client +RUN dotnet publish "/app/TechHelper.Client/TechHelper.Client.csproj" -c Release -o /publish + +FROM nginx:alpine AS final +RUN rm -rf /usr/share/nginx/html +COPY --from=client /publish/wwwroot /usr/share/nginx/html + +EXPOSE 80 \ No newline at end of file diff --git a/TechHelper.Client/Exam/ExamParse.cs b/TechHelper.Client/Exam/ExamParse.cs index 69b9770..7c1a910 100644 --- a/TechHelper.Client/Exam/ExamParse.cs +++ b/TechHelper.Client/Exam/ExamParse.cs @@ -50,6 +50,7 @@ namespace TechHelper.Client.Exam public List Errors { get; set; } = new List(); } + // 试题的包裹器, 或者 单独作为一个试题结构存在 public class AssignmentQuestionEx { public string Title { get; set; } = string.Empty; @@ -115,7 +116,7 @@ namespace TechHelper.Client.Exam QuestionPatterns.Add(new RegexPatternConfig(@"^([一二三四五六七八九十]+)[.\、]\s*(.+)", 1, AssignmentStructType.Struct)); // 例如:(一) 这是第一子题组 - QuestionPatterns.Add(new RegexPatternConfig(@"^\(([一二三四五六七八九十]{1,2}|十[一二三四五六七八九])\)\s*(.+)", 2, AssignmentStructType.Composite)); + QuestionPatterns.Add(new RegexPatternConfig(@"^\(([一二三四五六七八九十]{1,2}|十[一二三四五六七八九])\)\s*(.+)", 2, AssignmentStructType.Group)); // 例如:1. 这是第一道题目 或 1 这是第一道题目 QuestionPatterns.Add(new RegexPatternConfig(@"^(\d+)\.?\s*(.+)", 3, AssignmentStructType.Question)); diff --git a/TechHelper.Client/Pages/Author/Component.razor b/TechHelper.Client/Pages/Author/Component.razor new file mode 100644 index 0000000..e69de29 diff --git a/TechHelper.Client/Pages/Author/Login.razor b/TechHelper.Client/Pages/Author/Login.razor index 7f358b1..40f3750 100644 --- a/TechHelper.Client/Pages/Author/Login.razor +++ b/TechHelper.Client/Pages/Author/Login.razor @@ -1,48 +1,59 @@ @page "/login" - Login Account +
- - - - - - - - - - - Register - +
+ - - - - - - Validation Summary - @if (!ShowRegistrationErrors) - { - Success - } - else - { - - - - } - - - - - Fill out the form correctly to see the success message. - - - - + + + + TechHelper + 轻松管理,高效学习。 + + 教育不是注满一桶水, + 而是点燃一把火。 + + + + + + + + + + + + 登录账户 + + + + + + + 点击登录,即表示你同意我们的服务条款和隐私政策。 + + + LOGIN + + + + + + 还没有账户? + Sign in + + + + + + + + + + + +
+
diff --git a/TechHelper.Client/Pages/Author/Login.razor.cs b/TechHelper.Client/Pages/Author/Login.razor.cs index 7036b38..34cfb3f 100644 --- a/TechHelper.Client/Pages/Author/Login.razor.cs +++ b/TechHelper.Client/Pages/Author/Login.razor.cs @@ -16,6 +16,8 @@ namespace TechHelper.Client.Pages.Author [Inject] public NavigationManager NavigationManager { get; set; } + + public bool Basic_CheckBox2 { get; set; } = true; public bool ShowRegistrationErrors { get; set; } public string Error { get; set; } diff --git a/TechHelper.Client/Pages/Author/Login.razor.css b/TechHelper.Client/Pages/Author/Login.razor.css new file mode 100644 index 0000000..42b0f51 --- /dev/null +++ b/TechHelper.Client/Pages/Author/Login.razor.css @@ -0,0 +1,29 @@ +.page-containerr { + width: 100%; + height: 100%; /* ӿڸ߶ȣȷ㹻ĸ߶Ԫ */ + display: flex; + flex-direction: column; /* ֱԪ */ + align-items: center; /* ˮƽ */ + justify-content: center; /* ֱ */ + background-color: white; +} + +.mud-paper-full-width { + width: 80%; /* һpaperĿ */ + height: auto; + padding: 20px; +} + +.mud-paper-80-percent-centeredd { + width: 80%; + min-height: 80%; + padding: 0px; + margin: 0 auto; + background-color: #959dff; + border: 1px solid #ccc; + display: flex; + align-items: center; + border-radius: 40px; + justify-content: center; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); +} diff --git a/TechHelper.Client/Pages/Author/Registration.razor b/TechHelper.Client/Pages/Author/Registration.razor index d647f92..cbaf041 100644 --- a/TechHelper.Client/Pages/Author/Registration.razor +++ b/TechHelper.Client/Pages/Author/Registration.razor @@ -1,96 +1,96 @@ @page "/register" @using System.ComponentModel.DataAnnotations +@using Microsoft.AspNetCore.Components @using Entities.Contracts +@using System.Globalization; + + @inject ISnackbar Snackbar +
- Create Account +
+ - - - - - - - - - - - - @foreach (UserRoles item in Enum.GetValues(typeof(UserRoles))) - { - if (item != UserRoles.Administrator) - { - @item.ToString() - } - } - - + + + + TechHelper + 快速注册,开始你的管理之旅。 + + 学而不思则罔, + 思而不学则殆。 + + + - + - - + + + + + 注册账户 + + + + + + Student + Teacher + - - - - Register - - - - - - - Validation Summary - @if (success) - { - Success - } - else - { - - - - } - - - - - Fill out the form correctly to see the success message. - - - - - + + + @foreach (GradeEnum item in Enum.GetValues(typeof(GradeEnum))) + { + @item + } + + + @foreach (byte item in Classes) + { + @item + } + + + + + + + + + + 点击注册,即表示你同意我们的服务条款和隐私政策。 + + + LOGIN + + + + + + 已有账户? + Sign up + + + + + + + + + + + + + +
+
diff --git a/TechHelper.Client/Pages/Author/Registration.razor.cs b/TechHelper.Client/Pages/Author/Registration.razor.cs index e9035a8..b65c532 100644 --- a/TechHelper.Client/Pages/Author/Registration.razor.cs +++ b/TechHelper.Client/Pages/Author/Registration.razor.cs @@ -5,6 +5,7 @@ using MudBlazor; using System.Text.RegularExpressions; using TechHelper.Features; using Entities.Contracts; +using TechHelper.Client.Services; namespace TechHelper.Client.Pages.Author { @@ -12,14 +13,19 @@ namespace TechHelper.Client.Pages.Author { private UserForRegistrationDto _userForRegistration = new UserForRegistrationDto(); - + private GradeEnum grade = GradeEnum.Unknown; [Inject] public IAuthenticationClientService AuthenticationService { get; set; } [Inject] public NavigationManager NavigationManager { get; set; } + [Inject] + public IClassServices ClassServices { get; set; } + public bool Basic_CheckBox2 { get; set; } = true; + public byte selectclass { get; set; } = 0; + public List Classes { get; set; } = new List(); public bool ShowRegistrationErrors { get; set; } public string[] Errors { get; set; } @@ -51,6 +57,25 @@ namespace TechHelper.Client.Pages.Author [Inject] public IEmailSender emailSender { get; set; } + private async void HandleSelectedValuesChanged(GradeEnum selectedValues) + { + grade = selectedValues; + Snackbar.Add("ȴ,ڻȡ꼶༶", Severity.Info); + var result = await ClassServices.GetGradeClasses((byte)selectedValues); + if (result.Status) + { + Classes = result.Result as List ?? new List(); + Snackbar.Add("ȡɹ", Severity.Success); + return; + } + Snackbar.Add("ȡʧ", Severity.Error); + } + private void HandleListSelectedValuesChanged(byte selectedValues) + { + selectclass = selectedValues; + + } + public async void SendEmail() { string eamilTo = "1928360026@qq.com"; diff --git a/TechHelper.Client/Pages/Author/Registration.razor.css b/TechHelper.Client/Pages/Author/Registration.razor.css new file mode 100644 index 0000000..d15a69b --- /dev/null +++ b/TechHelper.Client/Pages/Author/Registration.razor.css @@ -0,0 +1,29 @@ +.page-container { + width: 100%; + height: 100%; /* ӿڸ߶ȣȷ㹻ĸ߶Ԫ */ + display: flex; + flex-direction: column; /* ֱԪ */ + align-items: center; /* ˮƽ */ + justify-content: center; /* ֱ */ + background-color: white; +} + +.mud-paper-full-width { + width: 80%; /* һpaperĿ */ + height: auto; + padding: 20px; +} + +.mud-paper-80-percent-centered { + width: 80%; + min-height: 80%; + padding: 0px; + margin: 0 auto; + background-color: #959dff; + border: 1px solid #ccc; + display: flex; + align-items: center; + border-radius: 40px; + justify-content: center; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); +} diff --git a/TechHelper.Client/Pages/Common/Exam/AssignmentInfoCard.razor b/TechHelper.Client/Pages/Common/Exam/AssignmentInfoCard.razor new file mode 100644 index 0000000..f70f9f0 --- /dev/null +++ b/TechHelper.Client/Pages/Common/Exam/AssignmentInfoCard.razor @@ -0,0 +1,143 @@ + + + + + + + 期中测试BETA版本 + 75 + + + + + + + TotalNumber: + 15 + + + + + TotalScore: + 15 + + + + + + + + 中位数: + 15 + + + + + 方差: + 15 + + + + + + + + + + + + + + + + 成绩的整体分布情况 + + + + + + + + 类型分布 + 课时分布 + 成绩趋势 + 分值区间 + Success + Warning + Error + Dark + + + + + + +@code { + public double[] data = { 25, 77, 28, 5 }; + public string[] labels = { "Oil", "Coal", "Gas", "Biomass" }; + private AxisChartOptions _axisChartOptions = new AxisChartOptions + { + }; + private ChartOptions options = new ChartOptions + { + InterpolationOption = InterpolationOption.NaturalSpline, + YAxisFormat = "c2", + ShowLegend = false, + YAxisLines = false, + XAxisLines = false, + XAxisLabelPosition = XAxisLabelPosition.None, + YAxisLabelPosition = YAxisLabelPosition.None, + YAxisTicks = 100, + ShowLabels = false, + ShowLegendLabels = false + + }; + public List Series = new List() + { + new ChartSeries() { Name = "类型错误数量分布", Data = new double[] { 35, 41, 35, 51, 49, 62, 69, 91, 148 } }, + new ChartSeries() { Name = "类型错误成绩分布", Data = new double[] { 55, 21, 45, 11, 45, 23, 11, 56, 13 } }, + }; + public string[] XAxisLabels = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep" }; + + Random random = new Random(); + protected override void OnInitialized() + { + options.InterpolationOption = InterpolationOption.NaturalSpline; + options.YAxisFormat = "c2"; + options.ShowLegend = false; + options.YAxisLines = false; + options.XAxisLines = false; + options.XAxisLabelPosition = XAxisLabelPosition.None; + options.YAxisLabelPosition = YAxisLabelPosition.None; + options.ShowLabels = false; + options.ShowLegendLabels = false; + options.LineStrokeWidth = 1; + _axisChartOptions.MatchBoundsToSize = true; + + Series[0].LineDisplayType = LineDisplayType.Area; + + } + + private IReadOnlyCollection _selected; + + private void HandleSelectedValuesChanged(IReadOnlyCollection selected) + { + Series.ForEach(x => x.Visible = false); + + foreach(var item in selected) + { + var sv = Series.FirstOrDefault(predicate: x => x.Name == item); + if(sv != null) + { + sv.Visible = true; + } + } + } +} \ No newline at end of file diff --git a/TechHelper.Client/Pages/Common/Exam/StudentSubmissionPreview.razor b/TechHelper.Client/Pages/Common/Exam/StudentSubmissionPreview.razor new file mode 100644 index 0000000..c42d7bf --- /dev/null +++ b/TechHelper.Client/Pages/Common/Exam/StudentSubmissionPreview.razor @@ -0,0 +1,6 @@ + + + Name + 错误数量 + 分数 + \ No newline at end of file diff --git a/TechHelper.Client/Pages/Common/Exam/SubmissionPreview.razor b/TechHelper.Client/Pages/Common/Exam/SubmissionPreview.razor new file mode 100644 index 0000000..b95acd8 --- /dev/null +++ b/TechHelper.Client/Pages/Common/Exam/SubmissionPreview.razor @@ -0,0 +1,6 @@ + + + Name + 平均数 + 中为数 + \ No newline at end of file diff --git a/TechHelper.Client/Pages/Common/PublishExamDialog.razor b/TechHelper.Client/Pages/Common/PublishExamDialog.razor new file mode 100644 index 0000000..b093d23 --- /dev/null +++ b/TechHelper.Client/Pages/Common/PublishExamDialog.razor @@ -0,0 +1,67 @@ +@using Entities.DTO +@inject ISnackbar Snackbar +@using Entities.Contracts + + + + + + + + 发布! + + + + + + + + + + + + + @SubjectAreaEnum.Literature + @SubjectAreaEnum.Mathematics + @SubjectAreaEnum.English + @SubjectAreaEnum.ComputerScience + + + + + + + + @ExamType.DailyTest + @ExamType.WeeklyExam + @ExamType.MonthlyExam + @ExamType.MidtermExam + @ExamType.FinalExam + @ExamType.AITest + + + + + + Cancel + 确认 + + + +@code { + [CascadingParameter] + private IMudDialogInstance MudDialog { get; set; } + + [Parameter] + public AssignmentDto Exam { get; set; } = new AssignmentDto(); + + + public SubjectAreaEnum SubjectArea { get; set; } + private void Cancel() => MudDialog.Cancel(); + + private void Confirm() + { + Snackbar.Add("属性已更新", Severity.Success); + MudDialog.Close(DialogResult.Ok(Exam)); + } +} \ No newline at end of file diff --git a/TechHelper.Client/Pages/Common/QuestionCardDialog.razor b/TechHelper.Client/Pages/Common/QuestionCardDialog.razor new file mode 100644 index 0000000..ac77875 --- /dev/null +++ b/TechHelper.Client/Pages/Common/QuestionCardDialog.razor @@ -0,0 +1,34 @@ +@using Entities.DTO +@inject ISnackbar Snackbar + + + + + + 编辑属性 + + + + + + + Cancel + 确认 + + + +@code { + [CascadingParameter] + private IMudDialogInstance MudDialog { get; set; } + + [Parameter] + public AssignmentQuestionDto Questions { get; set; } = new AssignmentQuestionDto(); + + private void Cancel() => MudDialog.Cancel(); + + private void Confirm() + { + Snackbar.Add("属性已更新", Severity.Success); + MudDialog.Close(DialogResult.Ok(Questions)); + } +} \ No newline at end of file diff --git a/TechHelper.Client/Pages/Common/SimpleCard.razor b/TechHelper.Client/Pages/Common/SimpleCard.razor new file mode 100644 index 0000000..b370d2b --- /dev/null +++ b/TechHelper.Client/Pages/Common/SimpleCard.razor @@ -0,0 +1,22 @@ + + @TitleContent + @BodyContent + @FooterContent + + + +@code { + [Parameter] + public string Style { get; set; } + [Parameter] + public string Height { get; set; } = "200px"; + + [Parameter] + public RenderFragment TitleContent { get; set; } + + [Parameter] + public RenderFragment BodyContent { get; set; } + + [Parameter] + public RenderFragment FooterContent { get; set; } +} \ No newline at end of file diff --git a/TechHelper.Client/Pages/Common/TextEditorDialog.razor b/TechHelper.Client/Pages/Common/TextEditorDialog.razor new file mode 100644 index 0000000..b6dcf99 --- /dev/null +++ b/TechHelper.Client/Pages/Common/TextEditorDialog.razor @@ -0,0 +1,86 @@ +@using Entities.DTO +@inject ISnackbar Snackbar + + + + + + 编辑属性 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cancel + 确认 + + + +@code { + [CascadingParameter] + private IMudDialogInstance MudDialog { get; set; } + + [Parameter] + public BlazoredTextEditor TextEditor { get; set; } = new BlazoredTextEditor(); + [Parameter] + public string EditorText { get; set; } = "{}"; + + private void HandleClick() + { + TextEditor.InsertText(EditorText); + } + + private void Cancel() => MudDialog.Cancel(); + + + protected async override Task OnInitializedAsync() + { + await DelayInsert(); + await base.OnInitializedAsync(); + } + + + private async Task DelayInsert() + { + await Task.Delay(100); + HandleClick(); + } + + private async void Confirm() + { + Snackbar.Add("属性已更新", Severity.Success); + EditorText = await TextEditor.GetText(); + MudDialog.Close(DialogResult.Ok(TextEditor)); + } +} \ No newline at end of file diff --git a/TechHelper.Client/Pages/Exam/AssignmentQuestionEdit.razor b/TechHelper.Client/Pages/Exam/AssignmentQuestionEdit.razor index 3abc642..86e5af7 100644 --- a/TechHelper.Client/Pages/Exam/AssignmentQuestionEdit.razor +++ b/TechHelper.Client/Pages/Exam/AssignmentQuestionEdit.razor @@ -1,17 +1,66 @@ @using Entities.DTO +@using Entities.Contracts @using TechHelper.Client.Exam +@using TechHelper.Client.Pages.Exam.QuestionCard - - @AssignmentQuestion.Id - - - - + + @* @AssignmentQuestion.Id *@ + + 包裹器属性 + + + + + @AssignmentStructType.Struct + @AssignmentStructType.Group + @AssignmentStructType.Question + @AssignmentStructType.SubQuestion + @AssignmentStructType.Option + + + @if (AssignmentQuestion.Question != null) + { + + } @code { [Parameter] public AssignmentQuestionDto AssignmentQuestion { get; set; } = new AssignmentQuestionDto(); + public QuestionDto TempQuesdto; + protected override void OnInitialized() + { + base.OnInitialized(); + if (AssignmentQuestion.Question != null) + { + TempQuesdto = AssignmentQuestion.Question; + } + } + + private void HandleSelectedValueChanged(AssignmentStructType type) + { + AssignmentQuestion.StructType = type; + if (type != AssignmentStructType.Question && AssignmentQuestion.Question != null) + { + AssignmentQuestion.Title = AssignmentQuestion.Question.Title; + AssignmentQuestion.Question = null; + } + + if (type == AssignmentStructType.Question && AssignmentQuestion.Question == null) + { + if (TempQuesdto != null) + { + AssignmentQuestion.Question = TempQuesdto; + if (AssignmentQuestion.Title == AssignmentQuestion.Question.Title) + { + AssignmentQuestion.Title = ""; + } + } + else + AssignmentQuestion.Question = new QuestionDto { }; + } + StateHasChanged(); + } } diff --git a/TechHelper.Client/Pages/Exam/ExamCreate.razor b/TechHelper.Client/Pages/Exam/ExamCreate.razor index 836385f..ea870a9 100644 --- a/TechHelper.Client/Pages/Exam/ExamCreate.razor +++ b/TechHelper.Client/Pages/Exam/ExamCreate.razor @@ -1,5 +1,7 @@ @page "/exam/create" @using AutoMapper +@using TechHelper.Client.Pages.Common +@using TechHelper.Client.Pages.Exam.ExamView @using TechHelper.Client.Services @using Blazored.TextEditor @using Entities.DTO @@ -9,9 +11,9 @@ @using Microsoft.AspNetCore.Components @using System.Globalization; @using TechHelper.Client.Pages.Editor +@inject IDialogService DialogService - - + @@ -34,45 +36,18 @@ - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + 文本编辑器 + 载入 + 发布 + 指派 + + + @if (_parsedExam.Errors.Any()) @@ -83,12 +58,6 @@ } } - - - - - - @@ -99,7 +68,7 @@ private Task authenticationStateTask { get; set; } private AssignmentQuestionDto selectedAssignmentQuestion = new AssignmentQuestionDto(); - + private IReadOnlyCollection _selected; private bool _open = false; private bool _edit = false; @@ -113,16 +82,53 @@ private AssignmentDto ExamContent = new AssignmentDto(); private ExamParserConfig _examParserConfig { get; set; } = new ExamParserConfig(); + private string EditorText = ""; + [Inject] public IMapper Mapper { get; set; } - private void HandleClickedStruct(AssignmentQuestionDto dto) + private async void OpenEditor() { - _open = true; - _edit = true; - selectedAssignmentQuestion = dto; + var parameters = new DialogParameters { { x => x.TextEditor, _textEditor } }; + parameters.Add("EditorText", EditorText); + + var dialog = await DialogService.ShowAsync("TextEditor", parameters); + var result = await dialog.Result; + if (!result.Canceled) + { + _textEditor = result.Data as BlazoredTextEditor ?? new BlazoredTextEditor(); + await ParseExam(); + } + StateHasChanged(); + } + private async void OpenPublish() + { + var parameters = new DialogParameters { { x => x.Exam, ExamContent } }; + + var dialog = await DialogService.ShowAsync("PublishExam", parameters); + var result = await dialog.Result; + if (!result.Canceled) + { + await Publish(); + } + StateHasChanged(); + } + + private async void HandleClickedStruct(AssignmentQuestionDto dto) + { + // _open = true; + // _edit = true; + // StateHasChanged(); + + var parameters = new DialogParameters { { x => x.Questions, dto } }; + + var dialog = await DialogService.ShowAsync("Edit_Question", parameters); + var result = await dialog.Result; + if (!result.Canceled) + { + } StateHasChanged(); } @@ -130,7 +136,7 @@ { var plainText = await _textEditor.GetText(); - + EditorText = plainText; if (!string.IsNullOrWhiteSpace(plainText)) { @@ -170,4 +176,54 @@ Snackbar.Add(apiRespon.Message); } -} \ No newline at end of file +} + + + + + + + +@* + + + + + *@ +@* + + + + + + + + + + + + + + + + + + + + + + + + + + + *@ + + \ No newline at end of file diff --git a/TechHelper.Client/Pages/Exam/ExamEdit.razor b/TechHelper.Client/Pages/Exam/ExamEdit.razor index 31c205b..91f3734 100644 --- a/TechHelper.Client/Pages/Exam/ExamEdit.razor +++ b/TechHelper.Client/Pages/Exam/ExamEdit.razor @@ -1,5 +1,6 @@ @page "/exam/edit/{ExamId}" @using Entities.DTO +@using TechHelper.Client.Pages.Exam.ExamView @using TechHelper.Client.Services @using Entities.DTO @using TechHelper.Client.Exam diff --git a/TechHelper.Client/Pages/Exam/ExamManager.razor b/TechHelper.Client/Pages/Exam/ExamManager.razor index 352c196..8bda813 100644 --- a/TechHelper.Client/Pages/Exam/ExamManager.razor +++ b/TechHelper.Client/Pages/Exam/ExamManager.razor @@ -1,7 +1,7 @@ @using Entities.DTO @using Microsoft.AspNetCore.Authorization @using TechHelper.Client.Exam - +@using TechHelper.Client.Pages.Common.Exam @page "/exam/manage" @using Entities.DTO @@ -21,7 +21,8 @@ else @foreach (var item in examDtos) { - + @* *@ + } diff --git a/TechHelper.Client/Pages/Exam/ExamStructView.razor b/TechHelper.Client/Pages/Exam/ExamStructView.razor deleted file mode 100644 index 3e6b123..0000000 --- a/TechHelper.Client/Pages/Exam/ExamStructView.razor +++ /dev/null @@ -1,51 +0,0 @@ -@using Entities.DTO -@using TechHelper.Client.Exam - - - - - - @ExamStruct.Title - @if (ExamStruct.Score > 0) - { - 总分: @ExamStruct.Score 分 - } - - - @if (ExamStruct.Question != null) - { - - } - - @foreach (var examStruct in ExamStruct.ChildrenAssignmentQuestion) - { - - } - - - - -@code { - [Parameter] - public AssignmentQuestionDto ExamStruct { get; set; } = new AssignmentQuestionDto(); - - [Parameter] - public EventCallback ClickedStruct { get; set; } - - [Parameter] - public string Class { get; set; } = "my-2 pa-1"; - - [Parameter] - public int Elevation { get; set; } = 0; - - - private async void HandleClick() - { - await ClickedStruct.InvokeAsync(ExamStruct); - } - - private async void HandleChildStructClick(AssignmentQuestionDto clickedChildExamStruct) - { - await ClickedStruct.InvokeAsync(clickedChildExamStruct); - } -} \ No newline at end of file diff --git a/TechHelper.Client/Pages/Exam/ExamView/ExamStructView.razor b/TechHelper.Client/Pages/Exam/ExamView/ExamStructView.razor new file mode 100644 index 0000000..d35d260 --- /dev/null +++ b/TechHelper.Client/Pages/Exam/ExamView/ExamStructView.razor @@ -0,0 +1,87 @@ +@using Entities.Contracts +@using Entities.DTO +@using TechHelper.Client.Exam +@using TechHelper.Client.Pages.Exam.QuestionCard + + + + + + @ExamStruct.Title + + Num: @ExamStruct.ChildrenAssignmentQuestion.Count + 总分: @ExamStruct.Score 分 + + + + + + @ExamStruct.StructType + + + + @if (ExamStruct.Question != null) + { + + } + + @foreach (var examStruct in ExamStruct.ChildrenAssignmentQuestion) + { + "background-color: #ececec", + AssignmentStructType.Group => "background-color: #ffffff", + AssignmentStructType.Struct => "background-color: #cccccccc", + AssignmentStructType.SubQuestion => "background-color: #ffffff", + AssignmentStructType.Option => "background-color: #ffffff", + _ => "background-color: transparent" + }) /> + } + + + + + +@* Style=@(examStruct.StructType switch + { + AssignmentStructType.Question => "background-color: #ffffff", + AssignmentStructType.Composite => "background-color: #ececec", + AssignmentStructType.Struct => "background-color: #dcdcdc", + AssignmentStructType.SubQuestion => "background-color: #ffffff", + AssignmentStructType.Option => "background-color: #dddddd", + _ => "background-color: transparent" + }) *@ + +@code { + [Parameter] + public AssignmentQuestionDto ExamStruct { get; set; } = new AssignmentQuestionDto(); + + [Parameter] + public EventCallback ClickedStruct { get; set; } + + [Parameter] + public string Class { get; set; } = "my-2 pa-1"; + + [Parameter] + public int Elevation { get; set; } = 0; + + [Parameter] + public string Style { get; set; } = "background-color : #eeeeee"; + + private async void HandleClick() + { + await ClickedStruct.InvokeAsync(ExamStruct); + } + + private async void HandleChildStructClick(AssignmentQuestionDto clickedChildExamStruct) + { + await ClickedStruct.InvokeAsync(clickedChildExamStruct); + } +} \ No newline at end of file diff --git a/TechHelper.Client/Pages/Exam/ExamView.razor b/TechHelper.Client/Pages/Exam/ExamView/ExamView.razor similarity index 83% rename from TechHelper.Client/Pages/Exam/ExamView.razor rename to TechHelper.Client/Pages/Exam/ExamView/ExamView.razor index cce015b..77569c4 100644 --- a/TechHelper.Client/Pages/Exam/ExamView.razor +++ b/TechHelper.Client/Pages/Exam/ExamView/ExamView.razor @@ -4,11 +4,11 @@ @if (ParsedExam != null) { - - @ParsedExam.Title + + @ParsedExam.Title @ParsedExam.Description - + } diff --git a/TechHelper.Client/Pages/Exam/QuestionCard.razor b/TechHelper.Client/Pages/Exam/QuestionCard/QuestionCard.razor similarity index 86% rename from TechHelper.Client/Pages/Exam/QuestionCard.razor rename to TechHelper.Client/Pages/Exam/QuestionCard/QuestionCard.razor index 47d3134..6e64b6d 100644 --- a/TechHelper.Client/Pages/Exam/QuestionCard.razor +++ b/TechHelper.Client/Pages/Exam/QuestionCard/QuestionCard.razor @@ -1,4 +1,5 @@ -@using Entities.DTO +@using Entities.Contracts +@using Entities.DTO @using TechHelper.Client.Exam @@ -28,6 +29,9 @@ [Parameter] public QuestionDto Question { get; set; } = new QuestionDto(); + [Parameter] + public AssignmentStructType Type { get; set; } = AssignmentStructType.Question; + [Parameter] public byte Index { get; set; } = 0; diff --git a/TechHelper.Client/Pages/Exam/QuestionCard/QuestionEdit.razor b/TechHelper.Client/Pages/Exam/QuestionCard/QuestionEdit.razor new file mode 100644 index 0000000..0e96fce --- /dev/null +++ b/TechHelper.Client/Pages/Exam/QuestionCard/QuestionEdit.razor @@ -0,0 +1,18 @@ +@using Entities.DTO +@using TechHelper.Client.Exam + + + + @* @Question.Id *@ + 问题属性 + + + + + + + +@code { + [Parameter] + public QuestionDto Question { get; set; } = new QuestionDto(); +} diff --git a/TechHelper.Client/Pages/Exam/QuestionEdit.razor b/TechHelper.Client/Pages/Exam/QuestionEdit.razor deleted file mode 100644 index 838dc5e..0000000 --- a/TechHelper.Client/Pages/Exam/QuestionEdit.razor +++ /dev/null @@ -1,17 +0,0 @@ -@using Entities.DTO -@using TechHelper.Client.Exam - - - - @Question.Id - - - - - - - -@code { - [Parameter] - public QuestionDto Question { get; set; } = new QuestionDto(); -} diff --git a/TechHelper.Client/Pages/Home.razor b/TechHelper.Client/Pages/Home.razor index 8b26af7..9ae147c 100644 --- a/TechHelper.Client/Pages/Home.razor +++ b/TechHelper.Client/Pages/Home.razor @@ -1,10 +1,23 @@ @page "/" @using Microsoft.AspNetCore.Authorization +@using TechHelper.Client.Pages.Common.Exam - + + + + + + + @code { [CascadingParameter] private Task authenticationStateTask { get; set; } + + protected override Task OnInitializedAsync() + { + return base.OnInitializedAsync(); + Console.WriteLine(authenticationStateTask.Result.User.IsInRole("Student")); + } } \ No newline at end of file diff --git a/TechHelper.Client/Pages/Manage/Index.razor b/TechHelper.Client/Pages/Manage/Index.razor index 93c1ce6..6129d10 100644 --- a/TechHelper.Client/Pages/Manage/Index.razor +++ b/TechHelper.Client/Pages/Manage/Index.razor @@ -3,58 +3,56 @@ @using System.ComponentModel.DataAnnotations @using Microsoft.AspNetCore.Identity + -Profile - -

Profile

- -
-
- - - -
- - -
-
- - - -
- -
-
-
+
+
+ + + +
+ + +
+
+ + + +
+ +
+
+
+
@code { - private string? username; - private string? phoneNumber; + private string? username; + private string? phoneNumber; - [CascadingParameter] - private Task authenticationStateTask { get; set; } + [CascadingParameter] + private Task authenticationStateTask { get; set; } - [SupplyParameterFromForm] - private InputModel Input { get; set; } = new(); + [SupplyParameterFromForm] + private InputModel Input { get; set; } = new(); - protected override async Task OnInitializedAsync() - { - username = authenticationStateTask.Result.User.Identity.Name; - phoneNumber = authenticationStateTask.Result.User.Identity.IsAuthenticated.ToString(); + protected override async Task OnInitializedAsync() + { + username = authenticationStateTask.Result.User.Identity.Name; + phoneNumber = authenticationStateTask.Result.User.Identity.IsAuthenticated.ToString(); - Input.PhoneNumber ??= phoneNumber; - } + Input.PhoneNumber ??= phoneNumber; + } - private async Task OnValidSubmitAsync() - { + private async Task OnValidSubmitAsync() + { - } + } - private sealed class InputModel - { - [Phone] - [Display(Name = "Phone number")] - public string? PhoneNumber { get; set; } - } + private sealed class InputModel + { + [Phone] + [Display(Name = "Phone number")] + public string? PhoneNumber { get; set; } + } } diff --git a/TechHelper.Client/Pages/Student/HomePage.razor b/TechHelper.Client/Pages/Student/HomePage.razor new file mode 100644 index 0000000..ec43a5a --- /dev/null +++ b/TechHelper.Client/Pages/Student/HomePage.razor @@ -0,0 +1,141 @@ + + + + + + + + + + Total + @data.Sum().ToString() + + + + + + + + BodyContent + + + TitleContent + + + FooterContent + + + + + + BodyContent + + + TitleContent + + + FooterContent + + + + + + TitleContent + + + BodyContent + + + leran about this curson + + + + + + + + + + + Visits Summary: + + + + + + leran about this curson + + + + +@* + + Visits Summary: + + + + + + + + + + + + + + + + + + leran about this curson + + *@ + + + + + + + + +@code { + public double[] data = { 25, 77, 28, 5 }; + public string[] labels = { "Oil", "Coal", "Gas", "Biomass" }; + private AxisChartOptions _axisChartOptions = new AxisChartOptions(); + private ChartOptions options = new ChartOptions(); + public List Series = new List() + { + new ChartSeries() { Name = "Series 1", Data = new double[] { 90, 79, 72, 69, 62, 62, 55, 65, 70 } }, + new ChartSeries() { Name = "Series 2", Data = new double[] { 35, 41, 35, 51, 49, 62, 69, 91, 148 } }, + }; + public string[] XAxisLabels = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep" }; + + Random random = new Random(); + protected override void OnInitialized() + { + options.InterpolationOption = InterpolationOption.NaturalSpline; + options.YAxisFormat = "c2"; + _axisChartOptions.MatchBoundsToSize = true; + } + + public void RandomizeData() + { + foreach (var series in Series) + { + for (int i = 0; i < series.Data.Length - 1; i++) + { + series.Data[i] = random.NextDouble() * 100 + 10; + } + } + + StateHasChanged(); + } + + void OnClickMenu(InterpolationOption interpolationOption) + { + options.InterpolationOption = interpolationOption; + StateHasChanged(); + } + +} \ No newline at end of file diff --git a/TechHelper.Client/Properties/launchSettings.json b/TechHelper.Client/Properties/launchSettings.json index e395441..100d6be 100644 --- a/TechHelper.Client/Properties/launchSettings.json +++ b/TechHelper.Client/Properties/launchSettings.json @@ -14,7 +14,7 @@ "dotnetRunMessages": true, "launchBrowser": true, "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "applicationUrl": "https://localhost:7047;http://localhost:5190", + "applicationUrl": "https://localhost:7047", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } @@ -28,4 +28,6 @@ } } } + + } diff --git a/TechHelper.Client/Services/ClasssServices.cs b/TechHelper.Client/Services/ClasssServices.cs index 89bb362..4801eb0 100644 --- a/TechHelper.Client/Services/ClasssServices.cs +++ b/TechHelper.Client/Services/ClasssServices.cs @@ -38,6 +38,22 @@ namespace TechHelper.Client.Services } } + public async Task GetGradeClasses(byte grade) + { + try + { + var result = await _client.PostAsJsonAsync("class/GetGradeClasses", grade); + var content = await result.Content.ReadAsStringAsync(); + Console.WriteLine($"服务器返回的原始内容是: {content}"); + var users = JsonConvert.DeserializeObject>(content); + return ApiResponse.Success(result: users); + } + catch (Exception ex) + { + return ApiResponse.Error($"获取失败,{ex.Message}, InnerException: {ex.InnerException}"); + } + } + public async Task UserRegister(UserRegistrationToClassDto userRegistrationToClassDto) { try diff --git a/TechHelper.Client/Services/ExamService.cs b/TechHelper.Client/Services/ExamService.cs index cdc4b97..e1ecbe8 100644 --- a/TechHelper.Client/Services/ExamService.cs +++ b/TechHelper.Client/Services/ExamService.cs @@ -126,7 +126,7 @@ namespace TechHelper.Client.Services public async Task GetExam(Guid guid) { - var response = await _client.GetAsync($"exam/get?id={guid}"); + var response = await _client.GetAsync($"exam/{guid}"); if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); diff --git a/TechHelper.Client/Services/IClassServices.cs b/TechHelper.Client/Services/IClassServices.cs index 3123b40..2fda8f8 100644 --- a/TechHelper.Client/Services/IClassServices.cs +++ b/TechHelper.Client/Services/IClassServices.cs @@ -8,6 +8,7 @@ namespace TechHelper.Client.Services { public Task UserRegister(UserRegistrationToClassDto userRegistrationToClassDto); public Task CreateClass(UserRegistrationToClassDto userClass); - public Task GetClassStudents(); + public Task GetClassStudents(); + public Task GetGradeClasses(byte grade); } } diff --git a/TechHelper.Client/Shared/ExamLayout.razor b/TechHelper.Client/Shared/ExamLayout.razor index 3fd6818..d43426e 100644 --- a/TechHelper.Client/Shared/ExamLayout.razor +++ b/TechHelper.Client/Shared/ExamLayout.razor @@ -5,8 +5,6 @@ -

Manage your account

-

Change your account settings

diff --git a/TechHelper.Client/Shared/ManageLayout.razor b/TechHelper.Client/Shared/ManageLayout.razor index 004df6c..ccdb53c 100644 --- a/TechHelper.Client/Shared/ManageLayout.razor +++ b/TechHelper.Client/Shared/ManageLayout.razor @@ -3,11 +3,8 @@ - -

Manage your account

-

Change your account settings

- + @Body diff --git a/TechHelper.Client/TechHelper.Client.csproj b/TechHelper.Client/TechHelper.Client.csproj index 1631edf..a8f305d 100644 --- a/TechHelper.Client/TechHelper.Client.csproj +++ b/TechHelper.Client/TechHelper.Client.csproj @@ -4,6 +4,7 @@ net8.0 enable enable + Linux @@ -39,4 +40,8 @@ + + + + diff --git a/TechHelper.Client/wwwroot/appsettings.json b/TechHelper.Client/wwwroot/appsettings.json index ef7732f..a245e04 100644 --- a/TechHelper.Client/wwwroot/appsettings.json +++ b/TechHelper.Client/wwwroot/appsettings.json @@ -4,6 +4,6 @@ "ClientId": "33333333-3333-3333-33333333333333333" }, "ApiConfiguration": { - "BaseAddress": "http://localhost:5099" + "BaseAddress": "http://localhost:8080" } } diff --git a/TechHelper.Client/wwwroot/ref/Border.png b/TechHelper.Client/wwwroot/ref/Border.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa54d4708f0989001a5cdc9eef28743c71507c4 GIT binary patch literal 38840 zcmYH_by$_l({#7e-O^GbaVY6j>L47tySux)TM&@$P7x%eySp3d_ItVa`uiRp|KN3Y zYG-CAb_x5aAc>AbgaQQxg)S{6rUV5Aefjba2?6*rII|iK1%(AAEheJk3Vq~-oJpcu z|6F{MW=NMtn-D}p<45T1R}~)apXS%;8y*gGk{-4etthq)%8{kJAKMKU$Z6f95u6PX z_#K8KsEdFrCfrbkm^r|K~R-Yzi2vXB<9kI+(u@GX7A=?KE#|abBQb z{{NW@%UJXVpU|BCKNu`3IH^5KBIb8V|Kap~1w-RVZ%Cl{?*cIjF{IeB4_xY&jKK1L z@X`Y-6#8$86_5Xt5fJwcJYmRGk@#=T7Xe_+U_fhUy%PVwt5ir~Xf8{L?VVHqCBujf zjpI%mUDD~5=lm~kNE84B6b4F$*k8gr0G&Ik-p6Mu;r}Ro!~$Uabqy&0iqj?P8%S36 zTi4=I+;<`DML^sLKw|xnWK!yXnDsLUAhhMb4tLx~K-Is31{VGb1t22VYR&&5(WVp@ zy+M&apait@FD1V+fdASb-C}=1)`bB&(RTVwVZNP6A75n3l?1-rQyL=vqgFr>p|N9b zcv#R>YdkPhfbN8mu_$s=pbXVS{uAfB4Iqv;wcHZ`d;2dhx&Yxu-8KAwRfOedOD!yl zd2?HR^%ul%i~{&F{INRsuckAB4d*xLe*MDOzpR{LLF2T9=qlm<#bOU&Wy3!&OL@`s z8XL@%wh1t$)QSk^?wN;;lIPXUTURxFV1(00GNGV~O<_$s<5#H-=CaK=B_X z4`=`e6)H;nufTBVz!r{41RhiVqiJX#?4pmyG?yr(>dq1WZgL4K0O1tH<01R64xXt# zz5^g?L`K8^*(*RO*AOV=Wq#)3u)o&ViDWpgAUXaA$3MUfl0fdmqSycI{39X2K9d2-JnDZ+u!k$j94qy_ zocH?g0|B5FT+YNJqW6gqOuy({lArq0x3!l(PL_ zW*`BuFG*~Y+RX_P5lI;aj95pasVEdU% zP=tEX=OWsv%+XP;QNmChAd-7lX%4hVc6(u=XT+wbrwf*s^u3L=4mC?JcOQyE!t%qS z0(^h{OZ9*l1u=}wTo#4x@{M2JE3xHbqXlluSI(7WHwVAnLxWorhh}^9*?SHtc>q=X z3K7=hP8dV&jw%Qh{(|-KJe$gncF&r2S7EvFphM^8u)dm<30%QN(MRe6$vClFvOB8o ztMJ?V%@?KPvk^vrZJ})q7**hlOh|}P@^mooV9fn0RoRp3zDYs450m<5<>ch*7^E9% zkus7S(TQ%vzKCMm%I@JVcmaMN_zIfVE~3BwN{bN&XBJdu4GUKxreL87y)FS)f(+o~ zj(Yb%7luQTq#y{?c76C9kE8+*lS&Ql3cqBCAYpY<-&BQ$ z;+F;@ssgZAyp;L~R38Q5rl|TjH@ps%`V5T9TXbw*@#0q{*+A4ev5}}?riJ%Jda|sj zV0f{i(k$o%sG}u^-KDp}5nl8|0@w(@XgAyo5wx8!g2S7QeEL27sx7JN#X?nIqF6WO z?43L$&?9f$baib_muF!4gKepB5>7L>PKA~gct7f=zAIY!7Srr+Z*JMcwEn5k>dg@`X@tWoHs($geiNWJF&iLVv z`?kqXN42cU*8n*BX82dGNKQh;sN&*1;Oo$r0MXyz_({cWe-;pevt2(?LpA+Ho1RYZH2h4eZMNF}78l*92Y3g}BM`Zjpm%7S~c(PW#tF$K<`)RGN? z+=Q|@+3I+ZK~?AFoeH#Z_~A5z*nYo&^Xg<>ovw@qlN*I~MoZ=>)c_G2Nr+bDdy32& z84p@_I?wD=y6A4*@5iR(#>+k4#^66qJA<~L7_gCmRLT)Egc&Dn=^(eoP}Q}!-NV+l zDr3f-gLxfgc4p?sbhLy^aVf~g2E!U@YIx-z>roMGI&e@o zZF8?A^jeY?)DI!(IT&(d2Ex7Xuqz?W9H-*8Z*o%E8u2D*AxCbjui;4P8)AT<^yB5o zh|W@$?qsVemq7z%YP$FfrT&)bO^$$QZ3Dt0aP&oyxCft`FXOkxV(?jhvLHW=KJD>r z3oZwD<+1W-c>qrMBM9)9&EFHKCkQdB#wy>gbgi>kZzK2Mn3M)^)au(yKsJXYJg|H# zsm}XO>^diNZm~}OZQrz^OWj*3HIPuR`081wzJ~l`X2dUMCRqk&eY1sUK-Lv*MHSw%sEabqFsaNQZp;~a z$=QAb78B9;HX*pJyh=_6(pz7`k9Qip%jlZoo5YcUbFM-ANiJb6?V_#F;G^22x#qQ7 zLbLpqhLH6e;f;0*>oyp*FJu0dh4dai+b;M^VvKYDrYUV z!@5GfItpu~j~LsONEVJ?c-}<=IH-Um1Rq+vA#Zqi*tRugK_-M-Qfc(v+X8vm;yj5= z)VWriw)b>#?3KIIB0Cxw$-Hf#F(4tn9*&UetL;HxafRacit1c9v_0}G5y zRkBmXX6)>gth_w>PP@4D@>QE#9;-!%mWOmHL-FahQk3e z#jh&OB%3T`{f094GCmh&GQ9R3*@hu457;^qo>QzZbW|Umfxsw;DIzN?+o_@H_SsDP z9RpF6+K|J+f!+6qqwWo-D&`%}r5(N#+l)g6Nb{h`j`{fJsWMB1_90aoEC>a=ND06| zOK@x7vQqEissNfw=F`snYKXz~+AzCuyObc&5q3OJv^~z@IIX(efo1k^h7Zi4Q+@|; z?bT=$n}Z_?H)lw-1_LmU8r#;dWIXHPL4#Ax`mB9fkjQr?$#r1li)%hCZLzH0Ro=R0 zJs@`2kRZ%uTT-00m#(Q5@7k_1e18^{LO#^-)qRj76)9W0nnK4x3V z5NJ_Ij=oM7#$G6eLmU)newQ(qu<4K2u<)LpeLXyL{MJ>#I?2w$>`*?S-c_Nm-g1)H zl&63SOPBtixQdL3V-u_F&$tM$euxouxa>DnKJJgYf&zCls4=&59cAe%UW(&T8eZx^ zt(T?gwAaRKjS~UkS zC7jCjY}-w!9UMiq&XTz!Y{zIs8d7IR7GHf;yDzuCSJu?bnB8cW;~Q7VYHWPwP_=n; z&$SeQzpy7*HD`Pf0=6U0;a((PBH=M$uRYB*F|b(1X-)ow89#0oK95eSUH>ibvWk-y zI7GEMioP+y6d!(C!S`fQzARMJ1;?^1K@78@D9%tfagH79C)ulaMh&V{OH~gF&74av zTb)L~y@SawXZ0wP{Z8WfZ3eUSHJ(tJ++%%-S9h#N9aW6TO0XUyyQ1?bS0pR#wRMkT zui>)-*6kGf*e~4R(%*w+QPtop;hMj_0I@HwfW7=QP>)4$>TERYs)=pUXqtH}ogptm z=OL0&QO2KPj)H|Yl4jM3$0?Y8M?2uzJ3|G}!|JX+v!|7P|EUKjwi&@PvXv_mf1H4C zHRhuF!*9vfR<4{Z$y$|byqr)?9uzs<=D>m*GER&{jMuD859EGtg;x-rIv~qOUWF}l z34;VUcHCN2k66&;z=809R6#twO?4&EKPk@>KEnC_JyNBgMIOcmx-=z4QGwUnU(H!U zvu$`1G97Mg!Ln4Qk9Me1n$yEe!bj%inw448890Z=2FB69c>QIykQY0;2Iknixjfjv zVc_HpSwOuyEMzGb{=+_q4(2hGHX=ZSg`u>dMg~E_s?jOg^m#f#wXn(TG)aj6tp-$&+Q9ZamshMK+DML!ePH*2MQ4!*b@~k|0zxlc?F~JDDcE*&9Z3y zL3-w62>wi+dEId|{#@OVQRrK=Zrpuy!BX-Tm!!_riX!~)RJ(9`yGp7P4(woqHU%Hk zb9PQtO#0$_w;atIk3>93DSGnA2gaoX`P02k|&(N*UgtykUxHq zeQSbX@v*yXcysPunoE8B9<#+Vz9seL^x1=u4Cn2|S&A*iELcUGgyt2wGL;2D zw4%2qmM>)sg4a%X($s9x)qFwm%un!5hxN86D`?$()SUKi!R=4t%>hXx6DqiGflA>| zI>(3F<-$y!4{jP4oQ%l#&^sgbQS;t9;R&t8wSlaveNjk>byC!ql?qoQ|n4NdP?>40j`xT@w@^o^PF@_R-!KZ2#wFG@(~+LV_M!B z8jA;_czb(ww1x*+_Wn5Iyq0LsJZke#3myq6GWZ>k{+U$y}Drvs{lBvr_4PG>DS&h_sWt$-G zZyIs9cYnb%d_MT3Z9_4$=N9C%ChOscCPijgkzO9;(!@J%D{kFa7FscRcUrfa5`V|X z*;oo9e0AvNR2E2IP2c^)mKW;{Wp2t>kM)Y$>gsBq-;k=+ivwP*Ds8H;AX^zmt)B;h z+4@e2t!+4t88~&HN}TuZ0yF$rf0C0$S0IwPe!y-OHjBN_EjBWqb;%+HOVEBQN`EEli*UK$oA-?7_ZA7ueR@6l2d zt${;s#_i0;n-(^`Nkk?sK&Ik{c6n)1?JwTTjV0SFnB&im>vXVpTo7F1GAAtlYkjeB z*QK#H`=>>W2q9TRsD9y;mu>E(KZa7lJZRLz;(MxK8KdJoGK2HxmAs4!Jle9MyepNj zFj(&(2QnwF2AR+}A$xWr7Z*wXdK>WUK?)9C51$x5R*_Qz84X#UNC2vKxl^0Nq65BX z@y>XA-NW5EBf6~eG`vp#X(_n;F+8UbX^=q8f?s;CLPAhIEpe*43K>5}lqF1# zlyN|yMPt`d)>t&h&QIjKef#cj6DD`qF>wyep)*yd4?t^@^!c^LGOGSfmg%d?^sAu~ zHPrSm@N$%-_U~E)kw{tvT6(dlXJ3Om&4@@7c%W!4NlK|;FaXt&`Z5?fvOCe1IYC^* zvpc&Vo!PAhRNs-scpSjLMe$_PtZ?SYLV|)G`X>1mK|qhtTXW~$AVqSaN{P&kL5u<}{0@n7J@rFENYDuB42Kq3TNjG~y!Q&TVOeb4OQXk+@#U<`g|%*7Ps(2p zcac9z7pin=Z4JV7U*0kLuU*tn4pdCfsX--TDAld@-I8C&^`E(D(aFj27ws@W=vER~ z&{QAG0qIH&w_f!`&wBmP9~D13)^1rr^+}UULc?eUYHgs60|jI*h!nxnLGnin#zWQo zIQ)<;L5&#=&`TBl0)PVmq?iUvft8gf?|X#IdE;Ba6)sC8aM(l*|FrWyN&{4w%(yO& zP@e~exrQxI%UKt$6qtlYMfCn{QuzS@sBjfZ;p;j}b!^dUd}W9FQuC)N)255CE!Cg@ zk$K`J@nKo^4ywwZ$!UHeOS+s*S@Yav3m4wPet=+XnuOnWqlMY|m z0)TAbOM99?a`@Z3R@?SQyfyb5D-5mWJNQ@kz3n?2h|U@GLREd9!@Zy#ex8$eLbq#V z7Y4+LLov!F2mvvB>YXN=U+#Jl5r@G7ZL3?Cv5K>JB`hzkvxzm5bPdM&EALS}hw%@s z!<>mtLNu@J<0$PL^nM}h{}Q2^&`(!l3mz)GjS%rYvzlsPj%#Y`j~pzSD{9;H6S=4f zxlXO@unB3F8%4GjqfkK-6P?z0*Fb}GyY7DTb^Tz(XCZ3kA!G=ajNt8PX?e;`uef$$ z4`@`Lcc)koF0yIrr#vsa26gGx&Z&P$$Z)}Q2#g1b8W3FdNO{Q@j}s1;FYt(i<0iK& z#5x#p5+cw)L|^AYJ8{@4eT~$H;DQ7<)^vpDU4jU$jFFBT=OV~wNv00UGFI#c z(o>Knwc3ws|F^>=r|xXJ)2(38-e|t*rl7;m4tBSUc()IQj*WJ<#fx}ug&ePN2>V}; zHvJM8-kr&y(?3^ZO)Xtw$M6^hbVV+bvv}%v2%`S&K6X^M@7szv9Ms#CSxN6?m3wbN zv!Xv7m$8XYuelX;V9@+a^n0YN78m2LflS{+_9trWHyF_E*SOz&3z*3LAQdiY-0 zQmvng@Ofvsj1&Z^^X}?XNeUlQ#L##Zk)K{|;#d*0f8AiNe~^!JmMLOaHzGR60f8~5 z_tW^6TUXJ{LQ~KAZs1cBkP;F6q|8e6So9<)QVy5jMpoqJ=EhgR&18gXCa^CzEqba7 zup-j+8KIUwT++~PMfAju?s-R@tYUF)Cq5}rH`DrO_=1bQ!==>O-^+e8TKQt|hYW-- z7}1U$_o`=G(gq<}h|4g0ox_8orW!jb21xhM`{okJ=pd(NYSrZsmL2O5c>8Fhqne;2 zVq)TNkdqs>PI*~gF~TWT2LwU6zTZ68OYFd3T3!$ToBF$04q zt7fdDNiq9kUsQmwARFWeKlQcZ2IDyRl?Z=3-V8%$38QO9Zf&pQlj#CueJ|fM(e9uq zN^r*yRH7O=k6SX@t4XIEhX}Es34K%!YOin6EOoH}H%HWaZC?kS%m!Hq2nfh(IGV3D zv8tK--H#|jD1|ZYM%!xF?xAH;h)}|#+fM59$GTQttDyYaF8S%Rdz>JXEMG#XFbB-; zo|}`gec*@Nu~wHfMBaS%bfm=BK!}iDcdi(sGhB9|&sV&mqaljAW(d17-M7|6%W71> z<0reLcmq3rJ~jz^K5J`I9hfnARpFEuwU9X=zsS*@o*l_@!teInMn~1RJ!RZKm^cL9 z9_m9AqdN1EH*i{)hBHDGRT0e>*O~{Y$g2C2hcL8*>yuM||ie=%iE3!fX*(Qd@ z7Uiqw2qi96uH9Ms@{M$>lD9Rg-S@WpbvXW!#%d>(FZf#TCe{MsrrJ z((B#FL3|nJ-Ldd|Z0^<#0&>(a3P^jH7mzU78J?arJKmN-uE~mmC=+jUKeHYmmPaf< z9LiW{oaCaFk`e^CZyW(_==D{&a9HF>-~ifH=6FS{Ht`eN=~gpwW#w0p6|8SZ7RSW! z$KSr;wP-vlU%f*^#;Ye(h!SqYd1i9T;f^VEc%eA;M%5%saW2W$i;dxx4EH!U5tR17ulhfKIZjK=SZnnezw@bRUC*{xRn{CB!VO2wf8TjQyZ=kK} z9ltI85G-OV_%#wJD@a|zWp>Ei=PJdHP&=CPH?*%Xo}G(K>VpxwQ+s}U_7u(L2#@5?9X zuDQT%dIT0VDuUbYqw#%CN-$t1pBS^5B3j-)KHJ;y3=YK_PviZ0o4us>vUqf=&@k>~ z(&gEx^DQOcq#YU@L9^)xI!^=Oz2)4IjBmSECe zdvBj<=U(SiOLYHAW+&L*$6YYtVsHP;+g=Aa`>eifusREho_t~a$Dqr0)rX)U2W4y5 zOVx)RsfA!YU2W~!*Bw7Mf1?i+?9NCtg_Ls1#of(#ag zVtEWdrcZvv=J~>iTiRh0Bh=;8P>(FAOR@W@H)#?O$FS< zircRG@g(4&jT7Y=R;2c>tD%UuU?b0&y}=X z@UaUFJ;q38r~Wz4(fP9@s#3C;6{wA5%e)DUSzDM=+XnOVI}of5r}v62G_K%{V2kmW z@pJ) z18L^Y=KeZdL+|cg)*Y(wnosru6TgH$d?IsO|AXMoFpteL@7vAx<2&<+9(j%ZJOAFt z3gD<|^&fbUs}h{nunC|oS&%+L5!F8gL#jgG+U;3`>0i+&E%Hgq@?#9$vl1KTx&{hA z_+8b!osF0Sm7tmnJ|~rqdYAo~PeQ_{rdvJMM)PFOc$s|T*~-Mh$#PZeVmKTI;dn5l zYlQO&@4&N|mU0jI|8iR{PGPA?sLW}RVioEL+Mq_r;j`=TJliX?xxR8V^|^1=#9MJ5 z{ZM%+%CK}2<=E;0P3x2o6ex<&`6MA>@D3IwnRBRg7erx=Vzeg*pVyQkPtTjV?a%Z0 z!eaJsgbv6 zL-gPpezIiVd-b;q^`1s8##x$@N+!o~DvCQkgP`&*T2C=b;kh*4kzDd%4n2 zVC;-8(7)WUl(dHa*Q|ny~9f zE?^7tDAA%}m`h}-+^`s=a3>1kP}vjJ7lrTB#5`aovT(LUyfsx2Ly2It#!x>eoDr2t zK4DEKG*D`Xk@FCmnT3Vc-?gk*!0cJ;R2q73)^^u;FlXnPZqW9&OU6J-1KhUf-|!kvo}x(tfEYO zjxIMGtGKXJfj)*{7;L9(pfD>F2q&z}c``9*=S)Q8DPsy1!z{6~!!h^q;15d{CAm-EaAphYDt=2@v6HT`X0xu$y-8QXy`OMQzWW z*8?UtL`fMrnX##9D-#{Lyc{;qKQ7^P45$FjFm+6S6;J|c87T(%`{Jv$V8{GsdlNxC z7S8rG7v1Ffr-I#WvGRJ*$cG^AkC&k+f+S~^D+*3u_IXJnK_{ks%koojlgwoTQ2u`j zn31pVsZJL(sO2hWN=edw6*VS08mjFiX}$6)C1-_)4*!pFXWO5ar}K!1KBK|di&uz* znIUx!_TC#FB67B9-X&8oybacP6H-6h*;Mu&qf|daaUj%_r-2 z&6hXS=OY%^gVQcCgRl56XnyBk3%0s6Fl&A~xJpLY9Z%@>?fUUDlL{u5b@TPrBY@Z3 z4@O!IIPM|{RQ>5HxAn)7>~ZoB5998WV-CdWA$6%yoEmg6w%%8HE|p-xU5;+zHI>k5 z;-p2*sYU|$L^$!pnd2M10{#xm-T|4>?PyF)7)!Gbq|23yP{*g$*tQ+|ZhP_3qNVH0 zOOz{5C!;|jj+-^hfsXvNU=gNee8W;n2IO}4UcOimFt(3o%V0;N-h{Y!uzj&Ra1|SV z>?OjMsbY7%{rzogwbh6EoAwl~h2S4pw_KaA-$h-Bz-$|hXtVu#lBByqj5mBh^tn-I zH<19!Y(hOf!(y!OntO7SLxVE2kJ)L8PM=C@0@CHvcwjZyU1@dLK-s*$BWcvl zcG7T-wA%RlPT1+FryD$EI+}$k$cQ+FHXM4fsjE2b=Up^hG8swe*lHpk8a59o-sD4w z8SMw*a%)K@Ev+L9Wg=1Ffap1uy`BQMCA9+?DQv(_%Bs+g!zA{#6`Mf)BB6jOobvu@Fn?L{Q zxC_1VS$!a7j=v!oITx67kd>^XfDMMTQ5S|aS&ukvI;tk+2OZS+m!fjn{*eG1GF_5W%I_YY1J=i<=U;1k2Wg zC&c)7JF9(gK2`A$R@WVp{`_RQ84=C{9PHCw|^it|dyH1!xFRUbOc zB~^zyK##or4OQ&aqx>LvB(!At?kv(k2!n2eib=?d#3D@Zv6qn{Qd64b)BmOmfy>buUg;k z{5)?K!idkKiiH-d7grxAaCQ5<`F8OnK6mxhGze`^p4ctf+ZWsMkzn zRvi;Skt~_c-pt2zmM$*kK#1QxmNzG6#0lR@Rwn?tGTcXgkAt zxr=??r=Rc-JlEm>tmbAfrPN|X(UB_zDGFZwkq<%)xf#s;9a0$mgo4(4kW$C2!G4Fy z4p7LOeI20YjzTBkC;{A-h(uQw5dK~>A#ThXozO#{HbrfGE>t8R$6tO4r^e7Kl(b)8 zW|HM*C?op_%G9yxC$!qnC$r#ll=%5!^iFZF=n7?8`AhtHOuHz#S9$$~N zQ>ik{25R+0AFcaEpxFJ#j)@*c4x!!Da=!r7(&a<*$U0|IuOCb%J*4jsI+FwiKGoWe zi%1@4eySctEX3Y6cgbO|czp$r?Ox!R{q%+sM#52^tbUl{*0by~mBEWz;&{5-c$md) zs;?~k`+@Sq_VTyu0c0i)k0jYUeL|~|DK%nT-iNnO>EUT;Xfvc-gi@ZTuEqvbTTdsU z;^Vos(PdA^J{`r+tKK(BH#+mR>w`I(H{&i|yTiMg&l&jS9=EH>q*Ya`Z_#pgW`Ufc zoqQsEN=me{Uk_dTTN&WiN57_P)`JZUFS^L%qhNOyJP?N%^j!=JVp7K~LJY5`sek{f z8*Z^{P-6*;Ryy{VHv4cB*WD0m zof_2Q4Jb>N)f?)Hv?>(Kf}{G)Go~^!GT1RsUF`x@1*y1iik`z)8?1>h>td?<*@PbA z7_um?a&#Vfy1W@Vu;(;3R8PXpjZ`gE@TQo=7qG*gy4c)5Q*kwGR*k&nEBxCFsC?h} z5HImzgug-U`KkWu{3m#J@Gz!036^N$FsqE^$>XxuMxgp8xb)fNG-_47^x-1drm2L5 zL$G7)?Uo$&1qVxRC-kQFa-S;1#+X^K_G^VKhXFSwR&n7-P35+@?u3k@OM5q?&(WL> z>h%B%7y7;o-Ib-9yOk$|Ep?!PiRbZ0LwmLpM)F+}{z^(ArlI$C#wl*odcv#rjx?#6 zET+tX<7Z3H{Yd?coL_%vIZ<~A&KJI#8y$bXvY#g2>DN?Dr7dTPBXp18C1|-@D6LHQ( zz9Pk;;h=yjgA}Q?tNLMogd>{`-4{0UYH;i5Ol#XL`Df}?Z>y}wt2_iVq4iJ(ZsMH1 z6!99XgZG-c3g!K~qp2)D+MJRrHxr-F^I)mwYdkWXhq>nX>YH(d9<&p*NLAu zBiD&5G_WERN%VWSqY9-`e*GyD2n$DN$JbY+gqg>Bvrd>o4CRuq@J!S=fjjH9kpSTsP&B|;QMV#T0(J~sBTH31C`txmMfR93Dh zF7@X+tkSCah?5jnu%brL_j12CyrxN2fabz#^aV_oe z53$XVN*#DE+4P&i0L5t8YHOdpa}8E?r#ykVr_XmkJhbWQ$?ak@YnT}aiO|8*v13|Y zJ#v&Uk4gMR&P&2%zQ6Me2wgWhQd`bqJf@mpyz}{32n=pmm!N1u$y)3J#`c5P(3MH> zo28RS6>3k0nhZO1XJyc0V2v2G?xe3X8&g0*Bd->Ex1JFrG!u7?GHUkuPQ|(Bjd-Ml_n4yWW2v94ZXFYRC<-9XmI(_wNy@8Gyr}8j+M2bjxkkLUp7^TB%vf>i05= zs8+bxu_~}2oVS?i<&1NmD$16e^ZmeJbSSKHa+qw9Zt86U)d7oUvF{@1IcCe<* zxi8Wj+vR5s`2hPY`0CqCy-#DPP zm}K2d9Df68*`ueEFzhc&lFQe&=@}Vg#%(6;wEwKpsSDbqWp{>I+H{^9e41JQ#4x+K zfwJFcci}wnL9#LqlkL7dljG)-o3-b?opr3hhGlz1Bg7!C#cK$JjRaf?y{w8-PrjxL zT}uBmV`*D($of&UW_!g-^SHX{y9`@VF2%(Yjy$zf6fXnSPMLoqLfhEyKC;vqQGxK_ zlpbB5OFs`os*_!#$F^Gc2E4OXj#YvvF}x6+>>3$kRy9E;?KY^&<8TBla$2!1(sMj_%G6zAwZ z7WJXaYOllHF5`|l=-=(@Bc}P7Jh(YulzWvtEQe23!e)0$bT(uAol#;T>mjF|`O7-8-tX9j) zLIIW{2URnj_M4wLH{xccEvXs@h~Z8W@qg#0N|Mh97iw%I55=Y7@qPUA-=v(ScsMF5 zsy$e*Y`n-jY0Ubnw+9)$*Y(peVsT7CtotXFS3vL2uP!Rf z-KC%@B41*|e1Ls8t83%XkP)r)wSz0>;pSeSKlERo5%J9x38!|v)Kh118Y-oR?87K^ zK5kYfPumDCP&vfj2gCVw%k)L)3ePx0=mcV)lZbT^85m5Kz!fdDCfPN{MVd4);}XmY zcc?1N(E+AP((l?zMZTq;#hB9;k5o? zV;l@e0(~n^*4#){B^?6-iI8`Ki8Jn5*a`aOj>oO<%RMDE&hl^Z%Drb9@9tc*snM^f zh#f14tsR=i^m0G&Z*at2Bhdbl`~7B9qUyahP|G_f)O)(^kQz*Tt!(s_d!5f}bxYC$ z>2#m*e$@A=I3DQkw=F8lr8pFYeOv_5ENS2Ck3kfcvE28tZ>N0)g{C=T*jb)Ed$<=oDuW#nW%-PTtI@Z-|Zsn=^@>Ac_|pI~&fsedCA zIG~v6_~QqQ+P9o-k&T9{EV(re`hHE9iiRr|78V*u@JF|lu)q`2WWNbG3oYW;EzM4q zWsb4#OI)x059V1rk1XeFJ0-58Bw3U?f9KN1FL|gRQ#fPs{unR|3f3#=zKZtB<@01g zMD>zxWhQBJI-uor_OflR-2Y?JY<**<+!Nij;zxbVtbII7$E1YH6RXA-3b7F^!xyFf zygDF1O7CeQn3gt644gVEYXnj(G6#pi2oZ7y-`-RJ$vXcbBe`f0jN^`*wx6o3^K`8| zb`_7(|41*?*_!XPqdFfUNR!v|T+(eZ5$^Y0=;=`$hSy>e3}3Te+->ww#X}#BLsNF4 z;=%**+G{3Q zR1znDW?0k~uUgV(fcsE;T?GxW|emVZNd zXYr;N`%=_ceODSKYa^lNmbhma0dnAORkd>iDvLUC#_SrB#6<>?*NJBG7+HhP95l5* z@6W{gO_d98`*g|laUN{%nZ=f0;!B7}Ym+32J1l3RH45^6;tHgYQw1hd7K!yq!!jYN z6;|Eh9y*Xe=2`fUJCdk`-nf9Fx9jfx_*_+7Y!SpNS*LH{PJ~W>>o%RcZ+%k-Lu7ZT{7SoN8C+aqsX0*Y*fgt` zWbyU<^IGBjvK4Ssw~J|ymB+#DWe#g0_TdYgUOD0ly3i;ADs+06-UWU#!d z|JPZlKC)nLOdaIeH*i{zJ0o_Vcp+JSjhm+XKtuR^+Np9J)kA ze*~wHMV3eb{U=!r({r&Hu#9e2_p>|XkQS^WtLP+naD6%Hsu}ssGJpdCjt=K2CseFtTqtL z0?I@dkZfE%D}}A++E%GtV+GDNONe(vN!&h4OFxxyf_%0H4`gz624hL?{_qH95;N2jiqql|CQ3NM?mUW{{Um9EhD|>)}=b1_HrE*E_`lRytgc+`QEQh zq5M9#!8B|1IHREhIBm>62+z5xLIG78#z3jAcbWxnw?@t>}#>;ysLkydoS@&W#AHdV@ z4Ag$pCQiYMA9;V?x9t=C#rp-8ud}qbUf>-~jooPe5mC&qY;_f~WzvfZGm6XE96A{P z8->Gs!D-NS19%{-K1#p!`Is1cFyhN3jN59c>sYT9bz0K*bL}J}yCwL(>0i6rswvG? z5$d$#ZA*KJpi@=^D`$sf7<{SZyBY2J9Mnb<5u>aR=8 z&z4y$BDX8HN)_T~v=P$JZgUs^08PF7aqD{!6@?S6ZV1Uqo}Drj>FIk}IDgyVc-yCd z{`JpL)duNMfiX>J^Pm_a0v9#6F1y;T0Ja<}(65HF@mS8pHM_?_ml522-W12A_!MF- zmZi4y2tym#ouMlp*+Bt*Ioveh?CRIMYEZr=Y1MW;V^;Z0=5jG8)3+(-)lF3#c!29q zVG-M4ag@{|~|%Hyn6R%K5}{zWm;ro=TrxlDj>#TKK;C^HynD=3on_gxN{~K9iN>l#{>} zZwTt1vEmo(FQmvI;Q;K*!ZpM)H4jAZp@o@v)-M20v)<~47(ap{@Ze&aMBxq5CxQi= z#;_$Ito8$HtLwwHHMIE22pob+18pCqN!42Ar>dGL-v?7fI>z$mS1nA)_$^g>J4#uv zV%MH24t_N3X&9#hA_D}t;>dmaBYPQY4;`NQB9Hl*q+F+R*7qF*)qcyso)AbQQ=l)a zz+vRI&qd{K*GloNI%+K-GIimrM2$nNj3tpXicLci5-B1#;W;ce;WFD z#_N5ff!OE^O!zSOz6Tb3E}(G{D!(*r6PX*>!l+Te!xEGtaT6xNij}It2(G2}y@DR# z^(_GBXYYTi-)iy1z!w`yy<88Sia4enGy(2$W}}l9 zZU+f7HkZ~<_(k|J{;+7OGyp26EQTw6CFZ$5%qfL@=7ED&_L&mY^@8~VN&=63xa0rQknN?t@~*? z9d5wDjuaS84oqqFe0Zya`FYax#AY%wbW+R7vQ+})=~+G$OS&Q;TQxRXOh{o6Tchk= zaci%!Yb@aHUU7YwsvTOoTFl!{VgEGT5Oi$Bu0UFn?26-FAL$5nkL*7i(Q^+s;9^QJ zQRoqx`=BBs0C#bPb!bC~u3U0}n*jUp>JKxHFFSJ~@);MT#$H4L_osl9FR_0n?rmZh z76WSTCMLLT562pK+&a?O;RbC==m^|hhvF+`#_&sGk*Fj%zu2g&axBJn-G{!aCr;&_J+o|EO8akZ^s!$Y^AX^uZ!wUgbcbh z=)p4<))k=Bc_)VO(qvGfZCcXHGI6N?hC#$^h2>%H*|2HJ7C)di5>eM8MWQUCU1VPl zTe|Rd+%)G9W|EKvM^Sy#isF2qCiuroiZ}EX{L?Ci;5-uN9yARlLW|X+c_`o}a8W%W z@*KN$PK(~R$?|h5rP2tE13XAHn%P?ZE~@9Ee9}sM2uuK@ok*4I;Ya0^2oJ5ig-3f8 z-Z;T?Ovr@Vp{<%;>0~{d5tF1{fj=;36-C6MD04|jLUQCNvV-SmAt+!UT+fh9tAN8c zPLWhhgyWv(Yf`^L@g-1uT+O{+WA}P~y;mm0DB1;j&gfTlOz7vxpq0ahVVNCQ0rYr{ z9xB@`#XiwV1{fP_YweWuxW1$aU(Q^xbWLXq= zV>$O}RAR1bMCAVG%qK^;+9KXd&D!ahq$6aG(Mt_*n#tjr$nzB}dv=UxzVuq?>r+SpFXkorLd92q~jbj+y zH!;x{*V_uNl`?nOC7@*4vOv|wCMi>elrb;b5^7ccP z_tl|NG@`EX3n913D5x=3aF;};h|MlxzPs}cpoiI72?Xa%{>JSyo{{v$N15_3|Hso; z#!RPFqVO_9MFHPK;I8-p4#&)Dni+?ADRhpO#S_juY}PfKq6IPj~C&0nRPUoM8U4mlvz6?s5@UdfTDf3 z^5yc<--(!Vg$IX>BvWhIdFLotGCr`awDzS3uazXQJA;W#9?p5z2wH$jm(yx>`@U60 z`_Qtm?4_&F_{9)HH0HIyc{&qrZ?HN_9$%6;=}_DT{2!IIV$`1a31?!Qw!Qny=+>dt zMZm!&frlHmh~?^-m18z=6qla_*UT*{n|^>_pJ2_q<1?iNH~mJPHZ%0QuYSJP^`U1| z{bwu_?E}LeSHp}mCrF#K(%#NGeIGRHP$RPeL)igroL$-_Qvnf-CT0QFt0ry;mLwn+EcrUn28|a zQJPDN)%mU_Wop_Y8xvGbcnxpUKq$Nhy>4sC%ufyO@`QV#;JCeQ=#~R|+~>#Jqv}=Q z;i|~;>Y^Ubqn32#I^c%ThoS4!G*s@8c5nI{E=z)2;^I6D?tuO1ZM-cfU6RWepET)& z$$x0o{{raQbtSi(&Wj!Dsxo2tdm&dF0RC~wUf3dnhg(`N41DK*GsL{@GHWpPj>-ox z2S|aUIR!;9RWKPL8|O-1u@Z&C3_I7)MKI&m3yjYh|0FFJwrR7pI?m()?7oDiwFm#2 z`roSQs6DL>m9W^tFC^v5+1;}o<#o=RWQ0-&U$=&igt+6 zZ7mlnBW3yX4QK+C@Ok_0oiEQuI(=!l+K{r$mih583YOrzw{LZ61jxSbl33@KVgJq8 zIxZa{q};Q7*;q2P8&+-{sCYt)I{Fa*kiOs*u?L;CcCUdm%t_`Rn3geqa*Y3zMFT&l z3KOw_Gf)raDGq}eKfbkiD((H$5U7>cdH%A7q!KV>!)S1mxTn=~+MTV71-P=L!(%n4 zF?ih~s~z{E+kF!Zjm$0Gb_Iz&d(PecW^pA_<{p1ODSKOA*iN`sAW`nUk{C`n zHD$1{O&G~HUO2#rB)ov8I#Nh1qbhUF_%YmkBpEo`z5QA%?ERc?q3J)d8`1lSX+?QA z9i3k1<^9wRMJGIv{9SuEjUPX2?m)Jt6}r>EoJajgnGJTK(WBf1>c)P6MiAqHlLP1T zIDuw5cC$1)xEt~HO%*2O;*LFVt$ttab6L+!^I zluVGB_=O(sx=HP=bg0RIiu{nJ$sn1~oh?_K2Pi649t=0PdZlpPj_+YsfnDTVm=30t zFm{6nQ=NQOo?I^cwx>%N^L@ZK-DsL9H-k`Z;`z#FAH zdXS>#rl!dfP!!7qzB5kr#*5NJ&ZD;9Sg2g<;@jZ(sm~~Dh(C|Ry50`MTM|2l`7##LpCcV(uqY_UKX+r1l=<2Z{WF?|ilqLT8HvMXpy)HdB zUeRad^pN%QL*#Pq>)M`HAayIuqHI%BPxKIBHhy}w(-UOpX~!J2zF9dkMKszyP2Sr^ zgV%|w=_{qELK*tjB;-aYK1zgX`hLP; z|3(29Ng|wo;Z=@r+Mjd4eTs|NAIpB#qkMU|Fh2}Q9u({yAank5v6snZPKi{CFP9&E7_f_oWPGPg*ErCfr?8DJSyFQTyV4FYY@?MXtst$zkEcC3B@%tKcd1(k?X_dwW}3| z3)T!}=d}yxMzyd<)p8lba>CBtPsf|CE}M4uH0o}R^_VbsfBIXzpXX`>^zQlJp$e?k z)*i6~w0S&D=+)My_Fwt7-HKp)o!hAncQ*v(79ANKq$a5!7E5g$7ICj)7LeYjGZOkl zR$qU|lI)pkjOr$fzPVzZgzdxCN`{6o^h$vEi2#+ATM;?rJ}4sE=o_Y1(bn#~JP^r8 zH4mTgXwYxYg#jgh1EA{%ylVb=UBj`h0dc%J?P`W9qwsqp<&<&5wFu6a`rl>#lbnas zj>OO;)$!mI+KrAiI*aY5z1SfpTX_CgR=lNAooCC0&Fl}w#T19Q_BmV+O0c(i0#U9F zKBOzy^&8|Kd(^hAhJjUai{0%m^$S(RZHd(vG0S`N&&>5z3`$JTGlM}DbOf$P%JQeHvc z#ZqtQd9t+aQPOHO)Ws;Rp;(532*1DR-Z`x86Zj36Gs5>J1Ikr))c{d}o{W0KX5mb% z|4K1Un9!NKRShl#YHql&Kjg`emZ7-R|)x9qgwZPZcK z63IYjuP6P4QHpcNB8xme`=EHZ3?(3PgO?+3e|t5Dhd9|HCut}$6JVwPs$cpbHp1nJ z$foU6&_5JY>==?{5eS2=>ZlH6tN-o)3=jYud1w+CPUeS9o>~Ye1FNXab6XIiq+psn z>>F46AK^W&kqf?AK}dfnyeLsDN-e3$P?@=QX?@Xut+bSmjnkVpcsoI(Ff}dL_BC-K z_fk$-hl?@GPn*-Ei-+-II%QOl-8#&do@-zqi))1Jz1kxxSHxm2UhWf4Z>G5`KSmK9 z=OHBBu7~Oo3S29N&N0mZq=Kf!C9rS)f|uKnEA}93u^KUl!%dpMpH51+Z`}1?{fwS2 z^7XRgnJJ0>>(*{_P+PiHccq2%{G>t1O9HmcgA)0X6Dbqj-=x{6r4Ho#QMQp4=HB&E zz`x+bT5~&{i%POyhNF=UKG}d_C!UHnHJk@u@jt&yeAa(bc?b{~`+5CCm#nJwTX>=t znhr)xJE}>z==)9MGv-L6hL$a5J!ATZ5Q(s+zDFlO+AJh~svgc>Y;>@z0VgQaFZBNW z-a(7PFpdv=m=HTCq(5G-bcV%={e9F6_Jzx#8mw!SoHEL!PC;manEkEP@dy0s#!F$Tpj5__%VPl4 zCZ8)aGjVQ63-qN4A?7nm^83GD0QZnjiD?mMK)^??_%F0|mkIO+{J2t1=qJnDB&dM^ z_eSUM$Km8#i)l6z7e5Afoq)#znw@w}WPP_WlG2?9lQ-pN>bk*&m_N$rFWy_B zwflAqo~7_Km(KELEzxVRam$Jx`Qf`ml`Oo?M<7r=pDXX5qlEbrbG~9I%*P1Syv#Fc z7&W3rRQPF3m)-jP&jdl8QejlsOMkVJB6tAm*rS)8WTKo{r{1MKwp# zsTy+lMoa|xM4c)o_(aekn%;GJYM%@-4gI0;7yuH72R%S58E)nM>x8D`I}Jx0*EXf% z=HwI{Ts(#pkI9l&wTQ|X?n@kKf%ML5OX#9OaKa;HM!{bY4K-AsJ?T>`%7bt|L|yBB z!=5R^Ot6~ga0DuX_EDT8uzMXtL8~%ol9e_>$bStFNSYVi?WX+RZJ0ZR4xY}+SZ5?) zBYGVxiafaOE8z&eHd*#3Ki<7tsDK{%)r%SVfpYM-emRqM8w_Ju8J zJ(n^{vxZ*@@t&sOo%2_Twc>!x1kKBPvzdk}p`Iy@m`ZA3LdOWlTWNy{mc(Wh8wO7h zQcN(a!I+72;}SaQXF9&R8BB^iBA zj=XgM3Gf}(Ir~H6mIE-^p~UG&Q>hYvQy+&v=U^PN)TJYx&~M7im`2f`hxdQ!#U9_ul#x;^Z*ff;|8Zu!tg)Dg+Mk-m}J_!A33aDg6?4kRP&Pquo z&v4&1T7QxH^i{m1hZD=(aXATbp#1fKY?4AYD`H{;P6bWSWjBJY@N#iZ;$W`6YN9u8zUAq zo?vzAe@6zez$u!}Z!tvdMCpgm_LmyTPy1zj;EypD-^!4d924Dq{BDWoM`xz6xJ36z zSrn&g(<>|_sljEyRcEsyG-Tte*1Z8^08 z@jf7?qCDXm_ioNNnT&dmB#X*lNG;RFx$=YQ$`Opv0Oh%son2pk@nF)DlFIk|YbqSHC$W&-jcBtkT`AmDRoO6O5=m z3m$T^(x10Eb7dkOIa~*PjlL&x?N_+%2?mRLo9|yJ?YxZ)8Ue|>1D9y^4luL zJ_jW}JPgOGdA$R$BgieS-*wmzpbzoPHH5$wzN&C3H0wI(g5sa3^dDKo4n59+gp}0P zHNDeLSvak#D;X+MVpQX%eX0ELIF!OGsHI%x_rAdy1@1SvH)L&vycXD7GS3k^4L_b+ zhXsh#B7e~%Dno9^)NvDPw%yj3e)x3u)7}z#PYlYr#YS=eE1SIGBIkc4)XC&!bgUQ5 zx3Xg$&K1#fwvV>S0?0#3<@4o1@>YiQPQ72H2?)DLl8!(6WsS~sh0j}|gy_8l)8Aah zi~px*ER8AB^XGb0V_Y7{pBIi~`E+;NHbi+;%Q?wF?Ht_|yYkS2C!}`xvi@Ee#h7M5 z6{4KrN5%3O6ofEHR6fVFlr_cb^k;is>P&D)^8$}<%~A(U?^+Rxjn>UlL=2H{K*fsQ z?ca>v0rlW%b{x8b){EW%z1H zRKL?nQFGg7lH6c04HXeTNM?IF9&$Xrf7D#Y38#fSzI+%^f06#P&zZr`9;i@RhLT!8 z2Y5JlZkNUaqc4BHZNKV}i^!uR+XS4!S`B#%GC%?X_CyU*}68-ehYCH|AN9sDf0)KO>et3fnyWOXNdKUwB$QnBu1-z~lg z&%UUh8z+5UKov@7p+i_&ezp>=d+O2aJ|P=7rv^`p-P09~_HV+4V?!yg5NqWB2H9S4>#-j)?RuV5(<$ok)2 zzh*}*uxi2J4uVEBOC7xVj->N}QMMU&)$boP8sNtiv!`|RDY0hbIw^;hW5gF?T0{uW z=*VWC9Nj_BE>{E@B_V&Lh?Z+}!xJ05#OR#J7OZhe?y~TgZlq_kb%1 z1&pb)$`TBS6m9X#h-*spsebVCr4)8cSIqPQ+Yi%z?uy8D@=dnAhr3Idq+A~rnPk{0 z&17F08H$a| zCtT1U?Zc_%ldX@hhD9M4CR)OkrgQ~bLmZtK^atatxJ>79zN!(iu7w$=38u~v#F8i`?PJycp8oHtBi>WdEmzv_6f{|Kj{?Dpf|jeF|CBb;?$#;Z}ZRu>mOwN}!(xtVD^ZI}WmBGIc26;4)Mtf>uq)KCQ-`-MkY zO=(3b{h6=xRbov(ZCj-E%HHs0)6QPX(KfGt%J}%=~A|`5^HPX|& z?&$6W>fgea4Dy#?8{?tBz(sZzmBKT&%!`{MCenE%@H~JsY6G9UL?vca49ohFmtwAp zf6@R4uCQ7Nb1c_(ya`8AfoapmL&!n53m?p`;?=okN(L+p+rH%KYMi*#EdhAh^Rq_x zuKr0vUx|@BP)bR-!*9=YWmMU>Il_)rbeR@6De=vg>vh~F5_Eje6DE6nfL*tCol~p% z;b**dy>C}He*Z2v$LtSpwjrJi5^$C^Gc)^$_x9Kd(9YG-&Pdd?&yua-5)jp`&zVnU zyg#ZW!T#=qrpnFUJ}{-&ut%JENFG?{qZJFeg%>7b@B4pqa3}gzR%%q>rkxrTe+b=T z7i3i7O8@F7dsIMNdc~hqZ1}>7>Vpnn7=#a3~Q%Qp!Bc*Qx%8L5-W2IsK(RKK9wU>N-k6EWDd!}_SXJXxx!@YaEIO(zW%nF0ZLo?Y%h z&Oz_lK|JU1$KV*?l*@UMs}^k{*vm4^COp5GC)8^Y_f!clKn!^$r{eJ7Zqh`E_$}9- zjK`V^f=fk&(6!>W>OOK!A3F&mgL9p4=Co)4^TRg>kMf^rLL#OZ5XHrR!sSBD;)8Jx zS&7C{x!e7v9eCcywkmJ>4F1I!cSS^sriX{ztFwc1hD5KfmCPYA$+2Nvgk{vD$$9Zd zyU$drM5)W<9D37n(akIGhwX?g0|=_|8uV00#@+kOEL-OkpX`hCKZ)-B4}69i;p;qu z{s*Kucz^#5RRxo8RTTN4>Li&umKP4E@m|Se=GVC!{y%vrf>k+Cty*{TY!(tm) zDd@B)VAl;={@ztlC#ve7R`rVW@y`8-V?Hz;)-0tUINDEUv!5v^DaU5#NTW)tNp8P~ zdm2a7+iaO$>e<@bN=9O2DZl+z+PU|5_@u5lz|*NT+Z;+P|DvUm^E4xBbgR+s_&{JLH|PjZ%ailK*(;TWrJ*Zv zngQ_m&%OkMl}@j6eTZ~Nov5GPOT{(mpvU!fPAS?@mPC*XYC zpA<==hzj@ZhFiCXH$Cb^F(0(f9t&r6voc-1JS#1mLI)Y4}X%l;@>`dgfx7g~JTs18n_3&^o;8eNTn>KscqPx&NHWiD593I=pzvDeC- zm2F#FjSDi|-Xb^5n}WVGpE0}m5Nc+W$jARmtLb!qfrTYS8kWm%i!aF{BgXs^_Rx#s8||^{f1(efv;kqvB&-f zZpiX zFzKI1c0ad2uT0^vWGKAkR@ikISkz1dRM=QL_a)Q@5=1s7eejsag{=O&x)(b=36l57 z6-sJvRa-xSoO^T2Z5og)A4PT|RcgJ&Ep*08<^u#<@__hRMRv z@Js7)sY2a1Jl-K54x`Ny0%IDTD=3nQY$x$t#azvUL-551Y*C+qH~#0&O;)PW?ltQ< z_RL#(hjBkyRryP_{xr1o$J-&_eDKIkCjm%{)wuc&*%@ZZ$b=6$ja7*!XRfC%AOU9h zR}};BgXEB}XxvgV$cBKP4>RvPEoTzwpno5l_MNit1P(}3*BC%Unua?WeFA+S@8w)C z+J9~e*in88uO?LE(mkjjA4-7GJJb|jpDp?Msur7Z;2D(d*Ni-qUn6rB_{Gu|q@z8B z@@C(~+rkqCoo27hi#fP(0hOyJDDRNDScXL{5%t$xIC#C?9&#%x!cAZQ`+6}m=XDgN z3G4!+vUfF?CyqXAwe-1El<#4QfLHxqedyJvEUS%-I-#s{wY9g%vdSH`~LE%^KLhh6(p^A?b zfXC??7qga(q{K;lO)txkAs)DyZ#Z^dFMsSb#wQK3)S5l|8~daCjN8T7kU)R&!|^SD zDKo?39{&+X?~{r$zw|>;SAy1si<>J9rgPQa`Hpg`ikcfg2#>BFs83&defXdmO#s;= z8Si6yT^jzQe{PL_FatbO(A$hF=4p5NQ)1)7Mk@w35ZvCh1kfH7iY>8(f6s7AjmeK% zikVGLJQoCs96#n8jxHCukVJNt1~#JhZo>62z>p*rZ#Y%bDB$WoK|cW2)g=p{%>O#m z+MA@3Ugx)p*lx5LO2$WERRC6Fyv7TXz+E|woqu>=)_O!Udaz#hx4+w zln(F((4O zEEBEDKZ&=IsJ@RKw_d%AHjiO%PWr(r12-M~9RTO7HfkTvk1P*3t?P?-${px@H&y+Kvy%UW5=pX-4(!Zd@)m*fD3F}Kf_#6ZZq*@gm0YiRsdVgX zYAySi5H=e`4Tyk-^ye?W^2ju+36$NFpH#949EBQc3|v0TM1XtqR+#lXC^3OAnS#Am zGxfqx?!6a{W+SzVi+V097;zKldNSYv(0P5_!x!ZK@87qWiFkl`0?p(uK|9;n*^o1w8I?8;5Vn!^}D=~I5;x-*yg+R4R1 znjVW}=DHZtxgX~MA%xI_I+OZepTP-!_jT*w$Fc}+Pdm634q=brPEUEuT886z3}DkH4hZ`?fe#l@Z+V;ZFDa9qPEoim&Sn+GJC4m zSK6U)zF*VM^&JK(%WZ7u@L--+T{cCksvJ*)gwr(#+a%}1(Yerm9>tdaAR>nEQt7k% z{7?OLkd|l6Ah?$Y*7-p-(ETo>tJA7V-{;8_Zu#P;?(r(`RNaWBscJf@DEJ?Bq=37J zvQp{>FDbsTuL!|6sW%W$c+YaoNC~zBoA6Rc40Rw~HJm#6E32paTx#6YONXDS*N)Mr zVC{O^z;zuR3fUIei8`P<>Uvc1F!WbQ^Y&0-a{X#LlWycHbU4vq%$fSj$;+}d^+i^v zH<^B_6o!2wS>~GN!=lMrlRpcY$I9{clODf}nH2u}A;^;=I_#vuwW#^`;`#5~V-=k) zcTiE>DYTU0i9^oRu+wPs&t}{?pG7V`s(y@hw#zUt^(AkuEa_6OiKoDcr35MbE#;97 zCJFL}-Z9KnJ*`YyEqw5Hb(W}IYtwr%+`rzh;0XMi;qCgEB!?FW6?fZrh~S$Zy=okS zUP0A}#`Z@*U*U#EYK+rFF+&)CDX?}NBR z=rOH#7>7|0aPkAoc&FCsXq7X8IbU;pI=PU_5{NxLu z_!o>q&g;5!K%&hJ+bPAAaDW8vLeM;WgctQ?F1+3FuN6B0@hGR``& z5d)3-WT)=5R(WR%)$;Mi^O2Rgcl0&%A55`Y{9>rcza!yCc)c&E6_>vLp(xrSO6)hz z*9f&frA8{P`TUWTI7WbvKITl`Yk-=|h1+L_s}*6+;>E_4lAQc3OxtgD{7&ulb-%OG z8LnGQbff6fKG!-FB?;EOq;&j-(?*FBp7(4uj72#} z^KFF>CL$L6`uqg8M?_E*rhjou?gd-@ykzm2o}7fc;^!E)9hI775)QV1N@t!q**lQq zjNbhj7}cPV@}@Ib>iZg;i)tMqH5tH}x&nXRcWIy>EzZ-lPPukk{TB;uE%M-xS2m(P zvD~#b^H=n4pJ0*_?Btzdsjyu$FKk!>Z{1ceP~UNri*^~%t+MoDCbo5#PB90K-@NLU zdAq-5V0N|hE2HDs>}q*DhyBh&AF{zmn-6=!>f`=R^}6oqt>~1Z$_%?S3%Pm`?WJ~V zw^5LO*f0drzBG(Dx1Y{f$WML5J{dIqEZY!YiJ9%unfhi~ ziI9~qXKm=&sUy_QQX$?{H%U?H{567TirgJ41e|`%jxD_XeUio+EO-Iyyo6Dnj6pp}BfW_GD=o*#r z(>IR-$i@DtR?^fKQ`z;XM^3xQU-UL(pI{1i=V?!ix+Aak$qSqD`t#M9{9+XsyqOfd z8_Z_Yg*fH0#I{ESCA4-X+J_0|=+9%ctnS(eGHe+PL&BAo{2g~K6HBWmkf=BCcMB;D zX9CT~EvG-Q~Eh%-!?Vy(U!5-qz4LFn7B5x@2blvG_c(*Q*K%79ENp+ z{5ztw#9s%{*D(`-D~} z2oyItNlQdI_n(pfvBbmTtDc~wNPvDc7^hUoI3;F(v5IhlVPq1&>lY)+WAngZx0Y^K zcBHqD3SX_7w&PXD7}6Kk8@Z>Ent(Z=VrFJd1!%~~-u?1Y5hv=Rb(7WQA<6I_X zJ*y24ma5H9NP7eD2{Zuuy@Lo1$ilyk8|4s*LH%G`U>4?kg>LafXBSf8@zPPktr;FN zYT^+xiirzK12R{8w!zIJfBb`~g9~ofnSjB+T9?>G1M+sl`#(|bMSYJ%CJdE8rKnn0 zBO1hvq0c<^zFBIWj`oL;Yh-;ZLh{uU8>MyyOj{<}H4c=rd3S76)T5d3paFh`yv0Mw zd@cS?aAxR%zVv7TJWFXxo52M!@2^IA+<43J4;o0YOcoiWSQHph6tu2mQ_Ju@8?Q|$ru#o?C&4}Ffdfz7RWja${ zOr()9TB0p{E=`>KYWKjKE_|nwda_BVe8+c`?lK9E?y5zq|nii z1{lR5IyY=XbEY|Wjdf*@=Cwn)q$IHS>%+=sOHFFi(LSAq^+(F~nvAP_N!fr#li`kr zzoFDoFx<^!b+RQjq=knrMlxX8$9>_grlPIJNjFOt>JWg@%el}9%fyCw7&N9+lC($? zp78>ZLp~gQGVZ6Q+Qb#@FWm7-5FpCoFL(QO7$>w}0)jjPF zr|D`Wh%vVy8YK5|#onCG9}pDvcpx9Mq9K$DuUx9L}iK3#=uAUtT1>!en=y z(xa(NL)SbMpyjByuMIm;-H#FVchM=$uxB}iPv&rsM=0rVN5&X9Q;uhKim@3j*F6D} z7P_65!h8o4*vs`RTnWBh4I9^TUOG3$$TcEk%1E03p3+H&jcb9Tca3wY1On5TPsx`) zSG(2`^{hgmP_I^4qRZ*(6$bit4h;ub^H8cZ6al_^V(BP{8w!N^6x`HYru9!r{BOT; zYf{Y$(d!MsUt5WR909OtmODBt3ht z$XKAY^Yd+uLU=~Em#_ZsHI4K0in_$Kkb`lOh{@FJWDA?_oD_DxJ-qG_HaMo`BxPF~ zcYg1B0X5}MsKWFzXY~$y!kjsq(vULjsW#+0C!Ko8Al*1k$a#M~YK$+iaeDjy_Aq=> zm`BmV;PvR;Y5TbU`#9&fH{{q>1FI*0shuaEmIJI0!)(|G+I0IKip&liG=}yj!Q+q79%iO?x-);adM8F|PgE z9({Mmbi_}f+6~OEX&()P7gz+@qYXzjI8}a?tZz5Z)wJ8tk-3P_00{&A(zpm0xY`_g zYxa0EB?gDRdSX`&ZeUvN%l0cee+gP7oY0W}1S9h1C8)HPKG;4jO!O6Mjf%gNLr;H&mEclGh8;*EG)U~+9bM1Y~;8IO@eDQIGQ}7?K@~{#K zaZW-uC}woA^^82(4ws)aT?CBMFz_Q{C~l7<+O=h|%-+9TV+k~W;b+oIG1)dE(Kc{6 z-^ny&EBIN|MR+R9bT~0&wb9LdTVdGBd?< zSSLkree$oxyyIBs)@XmH#0&WAV&rmQe|n*0lDIAv7bxRqtJZVrlRU3*Dr~e6oSh#^ zxzSJ&nMP7N`{@#uD&o_;b^lbJ;z50n_|g-jxv^vHq#mc%TD)yiJo!9}ozVh)ddqaG zo1W!FpEa9ok5fJj)xw#avl!+21T{kA4{hhrZU_OSbpntM&omxt{qY;!0`0^35*~gn z2_R}c#e@oDogI$u>IOP;I06FRMsFz4g0k^>m2?mJhzaU}az_Ne)jSJWP&sVaQSqgA#TI;N46bN48iysjsWg5KM^ zu~(2`U7h!Twndokn1DJ}OPqCa*~n3#;HAC5Hdcf~ zT`1&pykV8rz%CkY+geli*SF}qkd-bc>E(#%4E6{+3ignOD0t|I^pi%Rr20Nd)m~gM zVAi6pWeIOkv$>&5g|bp3KG6QXA{Y+n{ycL7Jg6$}zh<^k0jRtz)ayq>DlG!ibioR^ zo^lFavs`zCbJR9fh!WU%8;i4Px1x?VL#Az8 z%WP2SswN%ndL_~<%oh#VX`k_GJM6nhZ?xzxMJdPMOf$UlsmaO` zbvX?zzA8Jm>=tyIe8lWWL*BlhPB9b=@VS(_Y%}%1lnUC*VK*jTaO#^r50`(@_dR)B zsI|7i*p26Bme7zY3g*?jvvSbY{v%?dWCHf}UPI$U!kxaDPF`$Pq5 ze%tJAGbIQ|nmS@LR+H0qfKrN-H=RE?PN?Fe_eqJKC!>DsQ)($ZfBUq7l69Bx#%QpjRX{D>z2jyMu($yo& zo-yOn$N=6ADaN{4ullp&Pq8ModzPx_d~r zI(li=2I|#hHP5y!*eavj*T;pQ8UrT+9^Q@9*X3+;7x1e_ViZ{Cv*@d4zku_OttJxR zPQY$u=$5(!;x=WYA~za`_nfPY=6=>f-x}qAbeVTLKzj>6l8j>{hc$0{d~AAiao~LP z%Au_gtIiOyv-Lt&XuBVlJNwhUj*89Wbe21M zkZgIjhBBo9O<73xsE;JNnzem@!@^E+{%bTKz*zw8gWD6uvgkGuX9=&bP^0I_wN$s* zHn@E*fjM-Y0vzqgBehT8wdug~k?wimD#Raub@KwhRJhkeYRQR=z;25oa6Fg{>Bz@K zy&5!4L#`>;T_NWIVy~@9e#bX8zS4a(C^hUwMLRE>6QB3+-4&$*J_*X2d4|8vTFzMW-=0(@p7eQ10Cp87d8!?i*T?l39X0^d%Y9d zIFLW^%_B`S66sXw!6xeR;lE}0PE3`V5V64Yx?dD><&f*P9qN@J@REXJ(snuEm|H~U zgY@}306B1!E8(VNc|~e4anf#Nm>zF=9pS@`3=3YqXBmGjUDOkjJA*A;Wa6c6Lc`o% z+tdLM9CChQkc2^#KB2Zdmw}&!%P=|Ka(sTmWSRY^Y4z)<>)3S+$?AtK#p6Zdvg_?T z4CT?OBOzJ;J{AEg2vB&u)k;6_m@Mtp-#T9Za^$94{S`*!Mkq!0rrA`wvS8Drx>xuc*|MddIdMmZDfsX^} zJj6_bjLN_c)Bc(_@ct>vcfw*?YAx+^ugnSc&Xf(#Z7kZipVlv((^bZ(%BZ56{sg>k z=nDI!`O)EU?o~Mt{C0x`+5TS94el0gU2U7?0dEgB{RO zw?Dd4Bk(^Bgk13+^|>%a;ytEJY9(8*<0$AjQHd-C$8 z=_DGs#rbgFo^H%(VJVD-?W*ms8OIo^U0WDY21KkvB|3B8qHDR$OE+gmdew}Jd-@C> zvcpb#+d9OGC?sR%o9ETR=75`H_#uDxdQi9R?Sv4%_q;!Z(Bc3-8Qlkx)+o621$jLB zm&}=)Z-h{`u2a|;aJK9oM9|!oAHhe>>!ViOE$*9-HS%#jnyUwN6 zk2kZ8s;hX{c-;YOA{%V5wasD&gpU{61ZYm`1fh~|S=)%%HWld>{+rj+?YTlkLawqU-yP{jx;Spq3SDN$oI4ow%` zzK_$g_KHnRExWQ3lTAf)+RDc0bPq39OsZCB^sQX2X`YMTFrA62JbuUQFpRMkW9x7l z4znMLqnL1>okw58^_dmYWcOq|2|F+G@yjwqU56F|OUHFc??_{PbH}}PA&99UYuLKR zR*8$9I@?m)U6r5gK3&$UYV1?n_&!tqT-%KGhHmQ2=_LWvYwZ<5YMtGh2I*^l$7?HP zpvry(lc=gr-Q{b^rKno_w|FPbV~vNZ@ok=Sw%A^o0qk<&;;W2teA4Z@Co7HCa{Ku` zgO2T@MlB1eiI~%^8wK@1MGFZF`^!H=YN@xl(#1Axya~2xspfnl-Gr;p5|H^ImYn4OUd(Lm=Ru2bUtLWz8G-x{k^333mad zWyD(%FOg}1+WR!A?=<)-Yu~9uwAxkn4Hv!R$3@j4niN2r2O*7@TGxp2?dG1|3N~S* zz--8C2S0ND3%!jSrfZ9ophiTj__A)B*~u6I@g6KQe9BpyGanaOYonx zQFs(O5;P+?w5xe+hVfPYthxJn&UA$Ic=i2cvpiU&u+FQ02X_$@gHjFf|LVH#sHT%| z4?+Mz1#}e%5D*J)l%|QuVkiQ#7K$2*hyg^TMA{0npc0CpNb@a5o*=ywLU08Q2!v*M z7LXpL7%Di%*h#U!O`7OdsxVcy6Q+nR`ZNJ*9%BpYGJrPfoU*3bhcJo4eorid;vSzu_7^1}F z)Wi7T&Y559r6(7Uqo_u_iqoTNxKpXYos40e*@xkRr7+)NI+|Y|Lx0}^#TC5&gqWuw z0vco^udtKv*)b@@CHDN)q9r${=D=loC@zkQ!*~%V){~7Bdt?Yn~*XzEuGiDw-*=% zCzp2zkL}R}fqX}7p0@w?3Nh3>CC2rE#cn_K=M~zkzI8Y}(~ZP=J=J*0Zdraxe$*4n zciJASKq+sh_b>=Q*d=uo$MIFTX8jO?sR5OGfhyn-;l>W}=pb{bbgfVJ$Y8wx%Nreo zNr~CVSq2SL{(Xrfs0fc%dK}+M?>;J``^}m0)5)BMi8VJo-KQ3djw}Q4TuY$xoW~zP zS5f#t!reW*YI0{Zc z^0T0V+xV9&>}_}lILSWzS#g6i!>(`fEWW@Y#oh?bkRRavfj28U@Fx0Y$I&DTnPfk2gnl|X19*;=6#kB{{OTC3FdTMlm;Z_l>cd0p0l7c^m z;2*)i#ts@IBWu=O*5Jl4Ed(yRhh_*#c2YWU{p?TWA->sqK3pY-#Vh;_>OG)JSq%N3 zRRkYwNGfodH&k#Ak3}#I;R3=Mj+mXlkg)Z8S~S#OmSWu9-V& zhlcx-WF)lac&}0P{^Ur@YCxS z2GY21{*fSGY<2QczR%u@;#a}kfMdFNnP^PGmXuJ8`h#vYy zfbt62wn#-gqtlAmmB!THu0hoPmJp$J4K|O5uEHDA?h;?E+GPB6Om0^jyo2O=Z1?P( zb3<^A@VMTSZvA9|{aR)GlHpU+?mx+;d}~G}Z7~^2FNo2gUag~8LFBTlnx=Pj+mId~)!%FMzAhcmS>{mU%K?kr~RcI6RZ!W~( zu+c#xZOWwMjXEvF-=aUj!DcElwJy6&v(@~$&#j4%Un;am(x8!+c5R#$OYWQO=eTZi z=0s-}M|!*9bZ;a$?7J8Hq5PD1O5T_rmMsU*>0ca&hLyd4fZ$^A{ZPU2ksMMmsdv!` zYGMH~O-i5QpU2S0jzv_Eo1j*mkd^mp?CO#Ku{aU>hCa>Tqwre+cN#ffXl0y`$d#Nxw!K z;d#mOL7UcJKE!3L>SXYb`%CPZ^BDX32APyugv?mb+I{4=mM0%LH6Nvsf(Hn}fjYrM zrfGS&UOy_J)TDCE&L@(*RHZ!ahDfrC%^9fA={}ir=`z9N$RXDf4!AK<%3Sl-+%LOF zOwy4_kaKR`b>P4WwV_;uB&JvPpaOcT9!{GgxjNuH$_~UnTbSi@>IBiUdybn2?R!80 z8P_lN6<+D3X{WO^P;UrUeOF%@HGC>fe(`#b1zZO^C2WNsP@`T11c7=;HSe1z=!!MPi`ruf6f1a zDfQCril}OYOm@x&>-sj*%IjTvI~~LE6ULVyldwHiS(R&UdDA83_2^!^3q~rFx}6?) ze1?+TXiCq@KE%BKa~52hVHib^dF7EXVPy8>NZ%hi?2ggbY3%JC1NxDd6ggox78FSy zkM~BVvHiap%Kp_Bcss6m%rJ?5G_sfNuTkP<+Y*TBwRLDliqT?@A$QQE)N=B|JG&V) z-+$Jik(o^3WG9A6;g+Kft_)McG9+2>H#jC+>FdBvh{qL;(MO^2*k|#A{3TpF(zX}Y zP1X*c@6``5k*ZlB|Ju#G#gYJZ)HO;SqiuN}8Sq_j&%=%tpGllCh}@oSud1u(1~h)y za-)7&^IGz)60_S&qR%;qiAjr}u{1}^*EKfsRq&DArXSLjGpv)v;jm{Q(8a>#eQG&~ zc^Li;l4pxIMtquw z)*Z0`MU%FNYu+}Riqe${v9M3Sy1>~5u&HaV>d@s_t>SO3(WSI9&6p~9uU+#M=V(rk z7O!GgKjkFJ{(g-(BY9(Xh0TJKgX0Y65?!Q}C9v-N{x)UTvhc<{kE9O6nj=DRUIpM} zOX#dx>`v05{@F0WOL)4bhtKgckf)jJjgq_Cx(Y7h=J%oW*((O`~_Tj@kjrflLiCeNJk5M zEtbO~Z)eMZCf?wENFU}mKvC41fm9UV=*kUx>(vEzT{IBQU?+;zXoCzjyVJ2AA_9<237XJnOuG`?MB)(9S*45Dd1iDG` zL=F5DeYe*;PI%Q2lGR&lKI>|r*(PreJTyB4a*EO=Z#bS3w&~Uc_a`^Wv({7mpRt3R zT>iI4pmZN3`t077vnujGV?|sanwbNu$i*bbiC9F*NXh{XGnd?9oBD`b1AP|7udy~M z$RMwUDRltHvNsl4K_NOHe2-GvzIXS!q=4>_DX`>nYBWVBcfAw2m}2Qh*QdGtqB&^c zTc@)c9ypHmyhtMj1z>A&6`AAzie>;rOEgdQ;#oy)Xw(Ee6hgB%*tfaxsIZVI^K+FK zU(0NrPxK>D`3`fT^qT!)C#c_%v zdCf%mrOM_TmesrqL}@j=annF?QAylSdyA!}u(pSV(aoEPO;MhK0q<|k`+(iJB7qmT z0#n*GUDVkmxd>#@J1|(02#mkJl>J*UiSXy*mr#+lOVxykJoa>ME10sbl4cj6kU*Wh zskSMts6%m^>$=rMT=oN7YKdPD-gKF{umi&V3+}4xE)()`0I3TNvQp2k?%yJu7yTYM z6|?5~5e8nciR6_4AHYxwtxdxI^=3k~K^yIzp#R2;4F!cze*=<8m^%;M5M6-9wG^%c zam``suaZS*;#%d#RHtMtl{BJCZqDer?{XZ z$4%+^T95Oy?q_e2k>7;zMiKmE|AXt&i)%fOiE6)}ouBnU1RWsn|Fs!TSxxaznQy?$ zOtJ;Ew?fr>wm;pqq2Yf6sF*+?5}Qo^AA&f_y2sb|;ixtc*0j4QU{lxwLbz$=@`&*p z5X~I~d%=mL(!>`nV`c>&Pk>V7E3bF;*^1!QEZk9CgKKh|`h5p>&EBPTV*^{lmGl56 zh4oAS^@i|Q{84!^!m0>=AX>?R5kD2*pJ^iF!=b=mR`PnrlOS-duOuTZrZbuZxw07` za@~P9AQtU0!cb9~C7cK9p9nO>!~_EAlV)jRVq#Ll!%#v@qp8K#TEnv*jEJ4FvbC%{ H{;azH{NX9(AZAcrD&V33drOaEGhU#<0OD`*L7#S^XK(bkG-tM#_kdbLG@ zMX_2>taqDh!>tB15+y(gR{}z~0y%g7?=#8BZZf;snVp$Evitj>eGNKVfJ>&fI4I(SxnQORTnN$8AN!$mYBKpk&b@D2tEnP!Yv&*y5|MMx474Xb8 zdZpF^J(9Q}E7LE9w_2Ezl#0i^hNXO(JOCD=#I2mW3Zo2#|W# zmALAP`BxDI3+J5GwLCr9r^gZ(Hyv6P+7*O_rUikai4mrTlQW2d1-0_@WWOFwT-{_y8% z>?S_u`wbfvlZ&QH5-nl!a_Ko`1h^hc+|DBi(73Q~=Uk#bOon^?b0)5XJ9B0Od3l2% zQR~qvp~zn}Y!(U{wg~gu+Gqx3vIgFUW4J>XaV1HLW%LeZoRmVby%UMN;ct%;m8~O! zU8~$gwUGuTEZmQc)j~CsJ)i4Q#N=JV$FO#qiF^4krT-+KOf8ItP{x5nbjz{hMBZ@0 zY$9OT5TaAYoVbS=X;{WHWH1?^l~063#u;ngd_kZ*3iFR9;IobVS8j%$kHB!#b>({^mw1fxg z^MZ}mhW8$7+IM@US~*-qXCA2%7JIEkXawL#HIIv8DtRpX!x^je9QqsO8X;wQA)!RwaC4dBf<-5S>3$$!i&LZ@7o#9R-+Tb#DvUxKFVT z2^QSTV#aw7mT4+^4IwT}0BBTiHwjaz2=7cq`2Ur^i19#roxiryh6I#F&@&-&?kP(^`)1)A; zd&QxN(HX=3F4(s2Vahq;Sb<0x4pZ7K%#MbWH(=tT0YTm?FKyon0}{dy+Si}X*oLo( zus*x zpEH!WC;~Jm$cv*lyB6`Hh{zTw;97Bao4UhQ9Iug~+Zj$=*t->M&G<{&XSk{ZClHy9 zXy;5fM?x~8;l$Ni%WJM6+VPqBNKeyRvS|EJZh@c^HzA(LDunWlFuQD6IL=taDCE2@ zz*-2LV;c{40kdCNIZecEY@&#qYr-hV*wKW=ArwiU1iNHsa)PW96Lm>P-LUWM*KO^a zC-cch@-AQ|@HWO0r0Iwk(g#h%{nKxR$KvB?D`v`q2_y49)giB;s91Qt@JUGDDUF4L z7LAQ1EH(s(R(eK{dX!eJ%2;4nH?IHuvvg9I=Zw3<;8n)Ytbr3lp znwYgSULb<>-KGmx1kJ=nK`)slytw!=;YKxlQcR1hYp6jjEEN4_Uo0#~ogxJ?X^9*i z8kWa*wABm*?jWxnrh~TB*2UIET?J^f1|ElE!)0yweG|J6ls;; z&E9G*p-vYiuFi%FVzTQw?-lN7Yg{|G_0WsAy89V<-n8$=i>1~r7wC}5Nz8Fk;+oU0 zW=g%Cg^zVdujHS7o-pv4E8P8zJnuE=1JM?L&R!idmG!xt)L0iKuCeVIk-CT39IWA;1?&i&#nYcByd-rZSeE3jE;=q9e zgmTu_*3zLvhdl1k(W6JmYIqc&n~SQds^4>zyA>qZrRS1HOUDw2tvO$a>GzYyx;a?N zc()R+^VsvId@)Rxk&!_S4Gpr!?ccvYoqY1iA%pn%1lqrUKV@Xtsc+xDd|y4?=+UFe zYIv5w_tng+C>zTmnXHQ#h1lJT6x*aFP)YQ=A$!F2fp+mdG2?vj=ZFCp82rs5Xaq~L} zn~w_$gD=C0+gL5gi3`S=5!$~*Y%w)ZvJ6{D1yng{5DLpWfpg8~Tg2tl3 zT#y7>%C_zjChsDR$^D9+mX^lz?Ptq2Z&}$&xufJ)LO&zb@KD?rUwlC+DShQ1idqNE zmnd}FLIp`lNxq62mSLt47cGHzQsIp#eD2`+Zuy03AhCj<-!yRU(l^q*{{O=ZFZZLT zUhLyF9RC^d_zQ9L?+-`Q$1BgIdmn0`h4=5LKRns$GY!)D!hMe%ryK69p}#Cnq{4Mm z=%qJ@b}Mi3zXs70e~b4T5C1%bH?(tGM4dq`U^7ULsu*ZqHvDJE1h!EzYvJvx5d-v0 zOiZK^BSsKLAz)V?#$TLkl<9K02;;K*_U)to{Rhy10Rv=t8pWtacdj9s)Of)jel)6) z^m+E!RHhPFX;lyy8W>D)_q6aF_s4fE$5paoYqcnw!e^U%F1^w|CV z>B^t%pdUHDqMPO(_AC9>KdqzbXRV?ee{qPOd3YH8@t)p(rBljq&CmAI?bkJVq?vP3 z4Jr7|O*QoVgEjPzM|RUE#f|iX%Npg$l^PyWGZIRB`*TcBPk)c&IZeh$mT!u)gt(@Z z+>6jYefrR;r=G$+|ADk|LB1X=SaQFE81atO#q8D$3+}*m1asy8%*b%GlgIRtY7~b!30pkaIA6b ze1WuDJ719D3nNAhXY-{ire+PHC4Y{m6`!W4hI>ork3VVneEjjpYdLzE$=J^FO>q%R zT(lN!-ptHQo+cj6J4V5p`NAK(0MQN`?vg%4G;x(CNli_q z2@_7G#>QsCm~3KVZyGmlECqAs3;#;wgw9h6Y4LH)m@#*9mKdrG6fDMi*CU8q$1`7_ zefBwz$tKeoXPnOFLmO?_u(8XEE+d;CwzUV?)^@+fng_t$&#ZH`nKL8n8Vp$xO~1O`BO5Ew`Hw%$bqanbqGy6jM`sqtur`G8#)ShRld;6b%$e)(ba!WZ`M zKR|%5I9kK}DOh!NH7!_xSKZ376~f9FetuPRJgoi$K>VO+->@dG()q#-#v}qdU;ZvT z^?8vz|1Za~8v7K=}tmMyQpMduCE!diq69z2-T z@NM;Ans>)wdg{d_di$d!`TWJ#)Z?n9_vP1J`R2`=M}>ujM9|=R000mGNklmvo9e! zvYF`pWkgu0gBi40SL&7OU%DAHW{}-(Cx^p927f?am<C*Ez%cB;GpK|=J?sK|v&R6u}@@9{4Y|iu|UXyozem*T)WICscxKL2%0H2!cLYlbP zvxUdAk)5wVn=_tgu%La%jT%6J*I`{HQ!Wy9oi#n1ite~wJb zw8v6?!>Mwd^mP0|BnA8_C@7G%ZC+kpz_Pj#0IgfVaSY!i%QCyTkR@(go5Y%JJ0&M4 zaVKYxys8U!rUy1}reIyy*B_ukg9geCiZ|`V$0x|=oxiXQc?+T*O@qR65-7| zeA86jh@nK={g~50Cr!*!6`|X+sHlkM&b34dqKweGfa&D5A-7Njh%ju}P+8j!9y}<8{TKyQ86hn{_@>wCs_)y7iZ?StsSyAOC24XeXEJi_Aw#5HZNnbHJN z;wmj+@Uin&o2gkt=;K#oNHV_%1 znl?&Y3-1iZZ87PPGv!34ILFv7I&UX@qi5Z5YhysShEG$tT=T*Qk)rBl^@oIW(X#Dca zuP6$AZGiS$u;5l&x)k#Qo;+f0jD_S_ykI0sIhQI%cQON>e-2sV?%lhW+S*#>ow!&d z(7Bf$z3%$55v5Ir4<9DC8{XdDyLWGbsZhid5lpD>U21A-8DC&Kj*-BNgZ-6<<&azi zeJ*5)i|VAO^OO^x;5GVx?dxHy~_1nUI9BGU^bixG3*R`&mgP_UsfP!#C_|nH`CDIS}F-!w|zZqjjUbj z>kn#49&vH;h8irZ#2*Bne){Q5+!0>uh-Hlcc0zcKq%Q!PHkFeGWV3R5P0mW<+PP$? zBz~RJuYR@QmHG4MlOPE4_84e`f`S5$;@h2A4?C7BDk`X|s!D#HzVB3#7g}AtoyyBM zP-bSPY)&O5_35^fuysM+%P+s2uDIfg;oTMH8)BM8vecA7M4B4L*VZfK-- z-kO`+-!!>t($}y?S-mM5^KQ=3Py!buZ#TI|B;EUy>m{v@Gr^?xCV(UuQWW zFZ^%ga~$*ds4AEJ19oN-*TJPjqu}`u()u<0;cz$zTd1?LvgG|;ETdbOoSZB_E;0P0 zcQa$RnFKKc`T}d$uA{iPUUEJA_3IaKX_hZvjvg*X0YE+wQevUFUmzw3m&eyQ0w5y7 zam0PZ{e%MIDBnAf7k*E&4`c$04E8eCnMGVQ1S*NbqcWOGZMWO$mRoM2?Cfczr8AM9 zo-UL9`0>V$&Rac&^T)mOHEGf$8aZ;L8Px$1L12&(M@%3fpXvDOz*0U648-wvKOGzn zlH;C38$&M6O(CyY#Ko@`g$KAk`rN{W3#q!gn*6bOl^oD{8#{IkjUPXbJ8xghCIn`X zl<;sl*3{IIXTJfqE~YUxL*Z)1UW%s90B;Tw@(M6Lk6Hk#JMTtHG{bL z1Tn7^ej~qT2*PPV#?t{$2|O*#$Va!>Oo4;`n0AJAEYtsAH$ykrA2Z%s|@ zowoxAg4=n6_J@YWUs+*22I?sY=mP~>)1ap}oxDa97cEwRFC&2)3gQBR%0=gG%$PCM z{w5l9-Zm4)NCTCtH9b0C(Eh2Zsq!1qu^vOKj1Z4+DtV12F2-y8(zbT{u)>s-6c;89 z)PUD|;w?2w*coS>K`U0gCwE*Fzd(-o&okV37^`!SF4Hn>I zL4N1B-0qSf2;ZUpCc`xH8ckfZ18iIzy9H~$7`8p*)gTD;k|4zVQVA&>KR-D} zxi<0`8yl0ug)I^U+oy?%3FjCoTalHTnvzB&{GIp{6JwjB_?vm;dYvZ-LP_U5*eo&Q zzH`k~ohjrsx&oSacXGovtAU%q#h+FsOp>ILTeog)QLc?VPMtcnOcZlwaDMObFw|`V=hzdb&K!Wrn=8g?(PCA=NxVW^``3aj3lS$>n{>e<(XNZKwf*?G>g#GEXY16h) z^rO}S?&Q@>S_m|QxKR0+@`cvLuL=3+!pkqeG>#MEM_{S8X_-uT9+*mdNhOqYCR9d?7CO*DNB(NDF&EfD{dBmVc z{iiAg_EE^IS&CW2#klCzT$$3CBWb^Gt)-peyo)7gBukUMDqUAc0l!T;hA8ubsgQW!y8g|r~&^IXBj zjPn`p4y08G44V}OIl`e~al~U5=>f!pU&w$7IXg8qm9@Vs7Fw3c`jUI$c;@YMHXl&u z*W21$A8}{xAr6m-WnNs5kaU3(*PXPeAP9N}pD2XnQxAu509qAxA^@TS@b`!u?2EFp zvP>r7>pWs`JD25ZChSeDWsmT=s^hTdo0=Nge4s(4rOrww{3WUpqn-h`Kp@2JOj;BM zk9-`VRdEbkFzFV$Tv8R0ty~myCX1r@sXvuD_uO;qI4*ZgZFg||e5bSQpQ~4|9>(WU zXJ8BHC2qu$*6DPLrKL_MYuQ{j3nuVH!UKBRTNJb3V-0*7lYd)FOY08S+za%`iKbC+ z0X@WxNYYkRRK)Sfz!OZ^67Fa%7R8(&Gw~|ao6UdU+}xb|T&}h=ImImgK@{>2;~YMZ zx&T{1D{&)|w8h2FpB*?*-(<5*N7}-|LOVagm&e4=Jxth{tYNQbf|<4vjm?L@Ns?<2n;`v$ z3`uV-DJjD^x7K?Wjn6IMFL5J|wEW1vEjG3nk15+KnXqRtVL#;dFx}=0cl%&{6qBsphahBgbCh&il zzygu5nX#SAbQ?uKez$->#Ki_k2vo*qLvY9o#q$kGl59+lN4S^2GA2e?#-y2*n|sbi z->J+GOE_KorFdqL?#_%XS^lyp^%(@YoA4tk?Gr(NL(61!eGuxG07~UYv&w zX$uQi4=X8gE@NBr-`x4SkZsv(`4PPjl?X*}+5R3E*J}Wgt?wzPG&Vb(PP}tA6pI@4 zGWknf6cpqQ8`74Pl-v><+q#2EyN$J(Ad2F9s6?n^%9JVl*?hQ;O$XM%^smy=vgNB* zty0XiP%pk^<)6D*n8+1X!;tbN&hxRyvLWxM@}_uqd% zo_g>ntckmJ?b@_W;0u_*%kjfy^I=pZ)J;nr!j8Bl zC9BTF&ElK(tR&f{@J;-+mI_BoTqf{GV!QcpACa)7xY)UnJ>Eov0000vNkl`+tAeHMzXD`+LVZpYu6!pKr8*o+cGJD>(!Lq0-h;yAFX6ae{v+1PS;? zvf`dG1cHQUt0@~{pvzB4vFC0KM>LN5$S824wP4D~ML1_JDpacyGR2HHVOX{)Du|*| zS1X?`HKkQkMjNEDqThHiq!_4BapE=`>c{qb{&b5BEPVMw5%A}&VZ+Ab>@mLu zxrv9jUK{yq=p1rF=}`akQ9^vtBR}DW(jl;rY@Yx8gxjUdMMSR-RW9(LVLV7B*s?fT z5`-)XO9vNFNn;^lRfZ9MIQ{hTHsvIvrJylM&Rp_*|C!?SKln6=dekdSd}lT9|NbC` zFbHSisRG|du|v0`;9A(z4_X_>z!M1X-hbBxU;m~@ zq(5Nb%wxU4s`EcTO!1>>>5j#3(NMyErht9_`w0&P(+EUFYY@J~*1+$a`R6xNUNo&; zI?G1tzax{-c=#PCS@EGbLo*)$p5n(MjtCe*cAFXctFkh((sx8UoSg|GQLvq14cb#>%ViH?(7>6n)W(9 zg+42sAiMuhmmkOs!mD)CwvxdxtS77p_m4=qbg^7K{jFVJ2|t{EviO@G1K9=B<|5W& zB}e}cBzno>=s5S!1ph~5|NI9V2{bPs-t|Vii3fTc0Op^yai(CN=)wDym4DH|4X@HX zRRxj(AR@P;((>PtK-JvP?T2tlAPQFa@&8$1R};(Cru1Dy=YRB-gf0T-YV+S6_M?lU zhi<3;2PlkSmN#+mm4CM(Kxgxm0HRzHuq>+qCg$Ifr@(5tiuN8ouVTc(Ir4XR|ALp6 z8vvyo>frl-fKqS;%cVA$oM%Zm6;cEC_TfMCT}9?1#G%n<{{R-uj&^{(jfb~r06DvG zYXoTjMe^Ujs987{mx_uax#ZLT*^iwX7_AZ3U6O)bf}3*w7obBZfI}kI*d#Oy8AB}Z zXXYy@UCa(*CTTbq<$Y3$ez~N~KgV@mTXWB!$?&fzm<{*e6Y<`heQqce>u2sl}%axS`Hh?YXVIH^zZw`zR>hqTwuoHtIwMKj$-S#c=Nql{>a(mR^% zAI%y>L+-gJ14EA$Gh-y%Rffnc;>DUqvDtwb)MRxN6RfrBwI(})LYHILHe*rx4KW2A z;Sxbgy#0(rBcxYplRikfQCFrV?k|AA-z)UFh->~BhKmXFyLu3rilZj_z}4ZhR)>;Vb6f09BSA5sA6g)cyj z^P)F~Bu|N=*A9q@1_&R6$h?t?R)AI6M)(rRd|pwI4SFE>Q{b-ub1T}M56Te3cc@<| zJTl7-lX0K=N0m(`Re`X|Kdg2ESsMqF79y~$L1~H|G_s(5j;A5@%!@YMEHH8(Tho$2{}b54d_5=pi7SK zFb{Uo3?J2W5!N?EeXai~bChP>>uzT=;j{2Nyr-bXCW7Y!!@FPR>!Nr3Z)w)CBT_!; z-g_HxZe`r|u#D~pep5u(h^yh2!G^1C-LtWP?F5404^d6h)4&9IO1OK1Yc(MH9py$v zf3{eJ5%ugPc{fV95H!N5UO9s#AKfII-`{OY1TK|6E|>h*k1+57tHw{3?cwQ~=sm6u zEBCvpwT?2HyQV^3x^7X=c7;Ay65Zc{{Grd@Drfn}`q~}q zS(wGRr`@#m9$%k}az7^|^cPxD0)S(psD*3i6ru845kJDFTZ7(TD@+bO1xl4BR_fH^ z9)kHE5-DltUVye?&={LzB?S&|@imomu=G&4^2()>)bv;XutgIajQsl*+Wg7fULGj~ zYKUdvF5XUg{L&k7KHCp48{E68w#;)-WeO9Dj>dCIWM%c#Qw@ z>lg>^CI;x$wXpW$XZ%8#W{00scpU!#lIxu(UYHD{2@yJ& zCeHliReanW$`E^L$uheLup}xUJ|seifC3RADd}`KGazcDFWZ_9rtaw!J%N9rZ35$6 zlrQ^xh7!{vb?i!bJpb`b=t~H-YvJKx^2J7>*r}tYG!|aUd|Dm@b%>6t{f**;oX6;_ zv`hMBF-V%fQftuy0Ev61k$sN7DfPCz?aQ53@y;0XswG}%prg2Yp(QH53+KY1CNiq2U~t}5xAwVyX9V5 z2(%X<&E4_Dq&Vj8w;GTMw>BBhq;qTBNdE86Hm?6rCq5JGsIiXwn>nT?^i}JVN06y_ zGt8&Bj1hip`dcww3Nk~Ql^<;>|4`%PIcN-Wb*SPtF~Vlg5`jd}5`W1f6TXh)F7 zu(#Q8ttLyb`#c!}I+nK+6Dd)Gj9^RHi z4-Jok$fK%;$&)`zro#idA>#R^1uy)_NIi-340fm#*#1Ux1;DRehlbTo@k5|68m-*` ziEl)%T20)rsMO!*1hgFW^~x%kUWxd_9}WJEc>WD^B9bA*S}dCJ(xkc&H@j7~Z*5v` z?}ar&rL~f`ok;$2%m-ixb#q-KL0m~f3=i0mPi-n6YS9T~sD(^%S_L9{w0Pt`>j9J% z=wY`%MggmgBawS!`SGmpC#;&c*RW_KnTf^J6qkhsKz!tufJZiQ~SC?xky-9j>9tH0PPy9(kL2?-{H2aud0pPf140WG8Q zXrJ&@NO6fi#O}E-N?-gs2W{!!u;*VlU!a^@tHhrb^CCj(Z74in*TyvNm(BsxvoW*n zuc9!QNMKH%z~SuVcWwV%wnMK!xSmyu9@R#r!8>&hoO5V(<8FB}aOa&>W7P!!^n^Kk zJ>^o1ch6;HLZI$QXD@Uo65slA1y(|jWm!Dap<`mLw~KD_t}99+;G0Vy;Co&5Y%%q; zB}y-oCZ36QI|3fc3pB(T%3C3;ATd;KvqVrgk`DmGmbEx*G=}Z0ykER5iO*Ab8V{Bf z{-j=387Vid>CE!k@E?$h0ZH6qA@()m!={%ZNkfY}efp*8qU4~$3l!r0Pel;V-cKLj zvpE?=p@p>2x?pDK1d8G}T-aBI_;8~q^B@|+hQje>xglk!CknDSfor{LkJSFglw!D! z*d**;glMG}ttbpd;ek!SKE^lDcN5gel-X4$ncKYaEtDq4Wx7}(D~;@f{CXG#?- ztfGk}No^8?V#H~y#>X-jYJ(zP-v<)L!lwx_^7u??;OZK~4L@!t6xhLeShdQvNyg^J zCAxW+hk_rken*JO5GD=}0|2`8>3oJUR~e(ef&H+b&m%b3Rfs#+xq8`Vqb`JRswDsr zAzB@j00`>pFm0lNAvq8(ThBz^E5mpum7teY#0KedXg|g7_B<6K;2qryHXF*0yYqI{ zUsTMpb?b^5K@1*nd=qYstCNa?>eP&S2w_A*7L_S4_B<OPF9I^S#a_8C#SU9Dbh1RRqL z3||~joF%ZB@tQe5|_RQawBw0;?e4;QoI@oLowBQS0g9aN61?K;tytFYT-HkV0= zjJo^n6zQTAq1;x_Unz-V)@(NezObL3ClD}Cn`2S>s?#c3*^ezuDycXXEl+l9Lw#}i zGg-#U%U6;)6VUBP0O0=M==m})^Ok8t`)FzCuFN=rzzMqmM=2sjnL1J$a&{7^2v&nW zB+TjdC4I^Lb(@XX9LWQcWNbbFii&kVv*FvAB)%BdE0y5jXX$N-`v?)h${LmWDiYgi z5p6)p7|#QBK%jytt!Octy9cTdZSyz@fVCm`1Sg|l$2iRZg#5WLj5B>^+bQ6%H-OHf z=y5E{KcfoMD<%FCwmv}tF`4Ny+}KxH-RtnD`IZpW7Iu{aXvD|0qfR zf-+wmY%dvwoe%-I`phh5D@12$$4^jglMoCys6$J~vX7C8TckJp6xw#6(=?t6QZ&5W z%R*6p1){*dyvQswDFR-HfF$hL&QVb=DeZFaj!6djw(kLEV2sVWZ}sH7rYq z!XZJ%Pd1hNU~JazHBTKU;y|E3nC`wtQ&0a$>Dk3Wc`ke$imAKj{V>z1d7`uo6JOX=h?EETLk3%{MvOpE!sD zG^O!~C5fE!{-cZ(l70b#e50T^Omq?pWx;RDwnLYz@djghgmeu!)-0x&otViZuAxL9 zw_!QLSc62MH-CFNr&v5(qW|2j1!uZRZ90Q=$oP%$^X7+R&wnHOE`Vbd5DFQ;I|PSB zzqH>rC}33n2kijrKcB-^Af{p=*hSTL^3ikAu9ttsH0bCWEHCob2>4 zyg;?4)U_X;l-!W3N4+b+175so*6nbUzVth$0}h8OHW! z@XMooWo$k8x=a-~BxeyY6{)=WQypq;hW+-8U0rY`xH~P@nRRA8STra$7pI; zPtpFx5jVh5{4e|?d)O|~N)?^)X=YANkL8BDbBzW0O?fns(=g~#$Ux0GWWms6w(H)P z!}t1kXNnTk--Z*2u8teK`07cJEEqa2e!Cm2-^U5oPbjB+k-ixk?lE+SKqy2o4Bk$7 zA$IWXS)-5nU=R<|i7+4gxQ$$9m%aCq%{}1kCgUJFsaORV5@o7f7*b|a3d z&K_fccOz~{DZI-G~ zH)FC|K3)Z1&=P7{Yf$R^fUJlI{2|J3SBi8qPJ<3NvPoa=daiMa+bdw)6bP~C65Pqt z(`8AXM>^Nt5hjD{p(03nh3Hz99W%imG=N7q^B|1W71_beLNiUG`5m|;U|pLrY5{?* zy>cU<=ty9Jlwh^dugom|XZrFSJ^%sBqtK;Mqy_{KV%Onz!YXMT*#@jp%-&OrRs!*_ z`c8$3gdUFHD$+vZhlPO*P{8P6&Fo_uo{wV~$C|wh9RX2jflLUazH60SgTa9M6iNjQ z;*!h~^m@_s+EkE|=pH}`LL6sT&V!HHq@E=nclc1#;!mJFG%rw7`PPr*LH$0(l?0jtqdbh6N`OEkm}Q0|YM&1m7ZYowFkM@GUCea<6SVHpUqi)7&$5aXVfT6LBx_7TqK zQ#{DOl+bT;xoy$3`Mx8;fOu>&ATJ%_;U$@0m<&-Ix?sOiT!g(PI75P_J58Zz$JEnd zVQAU=3hhnaY|EzMa69#;nXlKwF_f1s49<{Q+}!UBJ`H4s$WU=KxFviXe#du6Gj%%^ zeTe`X&!1@(ta?F*%7&c+3!lnJPBknKoFB>nG$@;+VTyo=*3MuUvRgSy1h!*?PTA=aUB`S3AZysr%uom@v1&DO0DE!xdgz75 z<{(M&rfCFVG4Nn7DUp;2T@nK*=OSQKCG3om$!>m2Zii-`VRhT@wIcglGxPa~dxLjr9WM&eTz zGPNx0ZytRW(zsMhFg;$9l1L27$v+o9w2J@}(=z?6REC74xiA0+M8Fj;iLS$W90@OJ zm80vw(CY%eBnDBRfEdD7y4l>oKP%wMC_y$@I3+CWLF^^kDB9z5Vg>g>_1^}RZ=x8@ zztl29kJpCD$@G)3{_s1rWEeF_2oXwcpJW|oJALh9Q3k*o0bE>{3W9xJ8=#G%o{Ch6 zoURTXL{L)JTfhz98C8mC1q?|8+X(`K+#1HmkijtIx4GCV2{r-3r^k@cLE5(olitgk zb+yav0I;es_84SjMtRjbeA53F;#zRl9TZ{c?iEPauFv*tIBu!I&e5I_Rf8J~HVJRa zmym0Y!Ww2RM1;i=SrES8thl9W*n|ij{(hMsok0pXP)aKu^|STER=NaSemcNY1JZ`u zg1)Ks&7X$4U#CH@#ljT0JiuWHan3?jZU2&dSij{|$CXo~`VALTF9elhe1eUj+qZ+R z<2^#S3NB@|v`F=cD;ModY#Htl5w;l~37J;A98f8dHN#Mhk7E_#1;s)T?6wXzniDyb zUGP!tCPye{6Pz9nN#9gd1Y!s;kb(MtQnnu$V^DgHEGSM(hf zoeTOAq)EL$_R8Uaqfy`I;N#-@3%OvS5G$`&@*je$J%XMopPq{umX+}llUx-ieQ?GX zDBk^qWayXD%?0V0YOC4CLaU_Gu`N=+8Bs-H$HSS(^^nA4OZMOuv&HT$3+KYSWhTe_ z%k}G9wW6udjt?1!Pd+?N+gLqFm9O7UpYpE)MJFJ;Ne+;I!B?4^8$v`X2@zo<(A%#1 zWv-P1F~+44$3N+2N+;OIm~KChIm45bKh26JizO@LT$ze~*=KzRf6R(xeoeibQ{6te zZw9WzuuiZqES@lYojs!nMst!kT9z6l`&{aPF0QvO204;=Hp8js$^G`aL)^Z<(hu7E zI?;)~uoUF@j>&4tRMfh9!`Hu7DQMPz_~(xoPv&S&`2zbCj^qbnQWb4m;_k4I{HR^2 zc2fY5$N0qrBMKsDoeg>OY{1EHdylEcQu4I9kBNu6+xvr>a|bks>e4%gaq!D5gs2qd z1D}j;CpV|GN*wF0Y^4Qp=5>1;zcrkru+z#hB>eRr&ZSw# zGi0;ZdM<6LCzDyG?vF*bF>9#6{-?3b&jF>!5yDm-(U;kG*$d2xN2-d!1NzHMCiy?7x4LFmGDC1W`-0-ElA%E0CGd!k9cZh`kBLI0 z+u3j<5RB&UBhK4!z#s}@_Envtg?xuF08hWQ;p~opqa;))Xhko zLwiWI;dw3HK=s)g&m=dfG;r8PmY*;B{AV!rxo*%Cj~1zklqKc~4h>1Fdky;!Yv)u$ zP8v2BNZICR)amd~Ar?G13~iH~28hSFYe&ER!1~WNC@?l!Vs3`7M1lWF# zWi#pcdABE(-?;vl`qq_ieybJg9*2VyX@i#8>1B}`X=E-|AB>YaH4i}Jv@lq5=G-rCPkHyJQ(3s)h#=&4sJC#9Xj+=%@dr$lRQ%AV z1P*{-zS?a=&IH^4`QA_LX?msWadpwJpOZd=c?C3vl?0x7dN1C@6Um4N*AwVlri%*e z&(5|Xwu{potN_j9>3TnEx#>+F?Ff=c)Op>J1vP(=Q_8*1D>~B{M;rI&!J6a58k^tk zvFoC5sCA#bx_M$*9kOSbS1uzQp(5F|gq!_#yS}7yVQ@3&QgQa2y&Be%>Ks%)u+`Z- zut)1xL;^|VUsv>%qO$z`<(Ia8*LEBz=DXrW<(Jh5^9nb@LTU~E_<7s@S~ecEi6X&> zP7=F!X?*h=Ol({*_9kQ$C^b0#!+p~@1|;Vht{JB{NM#H-dAMVd{5ytm8u_EO{N%Zn zrP;%S<5@6c@kXo6A^Oh?q`Q1Dk{yXk5PEY>*(~a&=?u9(poBIY_JYQ~NB`JU<|3vu zk&2axJd^wYWlBx~;~85d_&CyOB6rkxoou1CO3ji?t{=B2$iGKQa;{I_?Q!wW;r~L5 zg}B@A-+1;tLtZ`c2Df6J2Fx9m)W!Tlhn`yt$>;v-;(-<{7=(mtVHNrJCaEec>t)y0 zGX?F?$7_dSF?5LWq8;lHoP5Lj-Xs;-L*ifr5`~j#`xax?@dZ>sLBfiUn9Mt86?iF0 z2=TO7-M?yBmV=;ah}lOzk_zJH$0nsFu)QwBor0mD7cQ3Ytzx1?!A=rBbO<-~CYNx)|tdQlAa;1RVuwd3~5WpF#g|)HKdY zQ@^CHPBd(2=FmIJV#0D!R6Rn@oVqXqet^6i0yDw^)8DQ)rhy zMUMGF%+v0@9~qh=BBK==itaP|3U3q+2f3t)%289RWC4T#;|45_4b*`utgQ&*4}Amk z<{CQNMc%R@o+U(L*LU~a63j{FOFWm>QISP3`}_rrom?B~`0YR1b48MpaFExBKWMuD zQ%m0%j}kLM%&*=z#q@nW4Z3=(T9rQu|!~j(OG5?QT&;E+xO& z{oaw)2UEc$`2n^{O9bxW$EAF~Cy!YE)1{;7rYFV?9eDO`z;-{cm}io3>7ZY>Z*o4T zgr%Gv?~l?diJI^~erWLFg;A(=Y0dpdH+T2ALsCbr{EM_pFgIU9qT4T3X7V7tVfci} zRc}pwy$~qZv{wGO<8~sPmA1ey6Oo?q>UY*?RQ65zYwerthheyU&6e&9bVdqv+wtK` zS{s?&tP;8>}L?6B)eosot8L$Dq9MG_0XyCrR$A)HovX z2W&fH34Hrl#k{A#lrUHtmi&`ng}dD(P|IIdmnV;! z=bIxCba-~~+vxYUM9VldHb|?CQMxsl$W~jfN%p2H`>dvHnx;YljW^r9yn915qc)=N z%c%SesJB?WBOL-k@i=1sA#qYZM;c0ObO7FiSjzE>K~989*S z-=59nxQf>p_U`m@6HL5T+!!#;RK55>)9#x+Z4}K7i__0_MdtiA zJ92-6xwpf#=R`TqA#w7iEA7m8mbNf~)<+Q_&C24(K5!CKr;rK4C)vbi%e4(YDt#cU zohu6s7e`C7s1Sv=AkRcJVIj@lQFh^%bFXeZQWsG9VqnLv32*QiI&f%oa`Q4GrN|_^ zdDt;A+x#QvJck;7V@+-$R?rGL`GOxLOduNl$v2{YjPuPDzy3mzcQQUj$Sh(N24tAP(_E`c>CyglPAg zCK~v|_FQcsQpt z>HC{)X)4#utV4#08Eb z#j$16#U(*M&%{00Hh+OAZ;yX*7P-6T?)Z5)GG{rLgozjj65Ub`%NHu$c1@#n;4Phh(RUgThI}HNnl? z(<|v+%-pmys-#-!CSXj%Wcxo+M3tq9HP`}$f@#Dm%E-U)?y z5cjwwMnVZB3gQ|!bw<37_tU`6c-|1~D8h7bPcbH*$ZDK42gz#M>|%Q74toKiZ)5k& zO-_=j;iw9k7%sJP(Sq1{0qa3W>KviWr<*tCR*c4)Kvr8>^k?LG%|q`M!)}U}*QVZ) zF@zd`7CKiZj?GEFyq(_vC;A5i|NY{&xQA1H=*RIFBqhs9+@Xpqj4DJzSyUA90z&a5 zGy1gs5Nc6B{mJL`)TsxG$DRaET4js9L!mGnTs=8q67k+QiuBq?3`QB5_U8-xX(=5P z;0n&`fd+|1HOmnu{Uc8E$s5g7m%}M@HY4M|m34G5Z@s>Tzln~b(tpBA$BI9@sKRZ+ zu*n$M^4+9#0xH|;#1hCBrGrNOA!yKANSm4r+4IL;&9*s6!^x(f1$ ztcvj0R#i9|IyD^!l_qI5D4py2)~yuSdj8qpsz-My?zLz{kq(hrpmNH-h`2n+4gEp- zenx&hm$EaTeRJ^E#+R3%zSxJt^J8Gei%ffC(bjbEVtXY_Y>Q*FI*k?m%SCxn#lru)wp zR7}xu<+vuMD1Kp2iUR=&=aAv$8~|FKggJRm>|6kc!p4vFKQi?nQ}>_UT&&oBx1Oq5 zLZQnnPIY&q=3VEIj%bvGs8fs*`NR8WB391r4>Gby4 z&U;m5XnWPUdNOz`?AsL7Z2cRTgGRU&(jlUyj`NH5-wp$3LUoS4;TPM}D|~ZxzK<`^ z1g+D_1}CcKPuMd1V6&r47i68;*l;qs{@(1sf5ezU@MK>h#Gr;vC&#=XE-3JS4h>4OZT&VEJ$vB^ zelusQ_f#h`?@Eb#41Hzb-uh&(svmjyTS;cH_UtdebXY$pdek&#rZe}HqdXM=xbVd!M zvVrEQH?+A5@nkN`OUUP+sxhEJ7gXG0lFW@T7rfxNK}fJS7ofyXp%n1&anP^Nd6g4F zVJGXGW9zfOGwa@rd(>yeI8-N*5|^D7O(DHec?BRZ3yIy`U0-4D((RexNM*0g1}z5a zh76qLEc3fw9EfpeEOpuar0dcBdf{_`Pe>ufyNJq| zlM;Vrg3a>Anb-<4WzOE1E<|(xgGoJr$$4w+C9jjJG3t~;z2gXZpLw_0*vLBl5eX6Z zU)u$W$420m^u|lOpiQ=gM7!27TG-EjTc!V2GP3{H0^rW{lV)^LfA5v$W8F&gvudfx$nX95n^HnQiS(BgK$U1()=nD91k+sg z&$W3tVbbVP%&zLuZxyL6k&KAld%1kL72=wr`-nyPwvu75VY%M!&_fCD$i-lvhxZ8m z3E@rgqT{8pl!*Aw&FKgSk99@O&sL+W`4mZ=cZV9+9vtjZCr1U64pIHBQm4O*cnmQf zs5yLI+Bs5sWLP4<$F_bPltAg1*g0>1`TJ^4RdwLxjAN2vxfpS*o5qfN*|5*Wee0sXCtPD({g;bj@sQdYfN9|I3n|FXWKTZu@Ava8~3bGcnD^2725iJ%{uMQ zAz+Jza5Luq?M`Jse7vfga&NPlzmtli4sCU`{w@@nEh$-TW6iwXXN)v|0yOz_^2(sNOnN&h3@Jbw8`*&&&)$*Xl6+#Wsc!7pP|8lCfJmsRyLRDDJ)Qpk3W z_m2JgEK5Ab>RgLa)#gsAomH&H^ys>)1V`vfZxh5biNyx^ic`ngTmvGVhoi0}^r?OJ z)6C)g5WLIfcl3B^c7C8i^iqWB!=KU(e!SiuhZE02NMbS~U{KxF;>lO0CTwRi9C=gg9fNJYQsn;wS?bI(ZYbZ+a8jK2*U z8&<5IswTa<;FhtrRy!}#H9fMWI^h{=BbafQv4V?mZ+80mw=XUU*eSv5K7K#Zw_fSn zol5+4FHHDoUCLv|iMjKG)avJk0aj6NzmNHHmKVQ`et4dkMYh_m+30@ULG}me7=*Qi ztFZsPBm^2k=q=hmkNS@5H()wGdz`eN=t~FA@cGSqnsi9L%Hg+GI+T=k&Lq0^sqMA@ zT$xvmbtMmf%S| zsSm8HkBJt#2A&>0tHXa3n)^g!B@ink?E90rF=JkVkUaRX8kZZTsFVxrsc3ubbjEjDrf#h8amXBYNkJifP}?$XdMYG$2Zfua z)kZM9PxNi}pbPsK=I16G@6mxS{cy^*4szY9U!hv`>O+wQxbCAzjuAO&D2>>Ar@a7@ zpwy~ne|DIH&L9-av4#@-h?~?nE3=GOX_AA|5QUR~tct{SXf%NIh5kk$I!i!Y>vnuW zCuv^4jA`#HUuATCiQnx>ZDs4J^u=G@pw47)BPJ4{gYYrP2A8t;F31yZvcs@H)==2B!)#$fp`q?e_l8_D7U@j@}X%!HxT;T2wPQlW^>*7e)E>gplN5_a{hliwc+ija_acnLa$mB2}YxSv|r;T~0MKOo!ze9it9*4E#YKvsAB($~lATW$H)81zht_f3f zX#95JQZ1ObaP$B!^EL3%>fsVB0_l}i5&^+nHEjKMVL_^rgpP%?>~>|x+y{m&uc@ao z5+{B6lRven3HDY1B3`u@eYqk$;B7JHku3@Kwv|grxRJe|MVmxjel+#Zv#nh?2N%ze zDHM{X>IyIfcA`I<5ngTo`}?DW;Gk;TIPH1~PY7-BxGB?N)l2GK}VPAzKaH-WYM`^K?YSdj54d>VnuD`SeV`r=iD&{(#54 zwzljEy>|8H&3o4LJYtwWoqYWsLJS#&;1mFfncC^CJ(3va+8%Z(n&^DGTABIan{6wF z1|sGDsDmh&V?9m1LJH>ijP|&DK- zY5#z?+`XPBqduP^Zgz&|%I`mWDK%@QDK)<(v`@AjYbHMjE_9{r^}q7U>-RXct+`i& z*&F(tQayQ7+wwqD`*`PCa!JCq?pbo)<}8u1UT*x&DdNOu5_l|lH!;>qkgV;&`@-mi zwD~~UQ!_d;$@l(S^M^$?_`l-f3cYHvv z4smGP+@F18OO@Ks`U;rD=f|6J+95kc%oz($CG0w z5bb?8u(I1#wFcwokK=JW&VC-^lXpuo=+RqtaSQW=%jk`QK+}F^Yk}9W@)-`)aSRMQ%A=eJC1o z#eAOq+BWOsz_-tPj-Njd*|OIj^9bX4o4uo^88GJD63AKZ;Q6pwDkN=_*g746*2H}L zedaC21KKA#tIrZU)^!ysYM$wH%?*-opSt?v!SE!hUfPeIllMh6-VK!7+m~PG zIH>B`bkFCHhn+E83Q*ppWkuffgECQ=s*y*xHF6s)+81}L7-ZC3BcONLg{Ha)3Z*nSBe74%jo zwwR>4V!dYZ`N^KGS>+O?-_hG0o%ZyQl$IKA!7NR-KpqbHxBB#~cct{(0ex;lHcE~k^U2>=zxKxRTxfcZ`S{5NC%>M&&>MLvGAFup zLe?hVCJ~QboF7=O)Ym!a2^P4UAgf}`UY6-nJt_ZL#7{Q#i9;rOa`ywjLj<21N(^72 z^0+Yl!lB{bIZlilV*N+w%=c<Zm9BBK!chW>-q-h}KVdkh@-sVSPLO;d)s*xHgx@yWR2f*~1_Iu5y9;8VqBT44IvI`}rbpb75U?tG z&~ub@iz0r(%S7_b7gyiR=f^(j$F2z(Cw{MvRTPKo#91tc-rR$|I1XNHn7?A?-Dcr1 zc9O$$M5Aa^dx6O)5@Mx=0d634(YTDfg~%d`Ix21b-MrA9JW5bSI8B6a+I2f?p%UPa zuYP<~H6|&$br?JN(OCG(dLJpz(N>T4lDH?&(X&;pX+IMALOGl7!eOAaX(qQbCQ*gg zzWd;zg)9ttHZv!i2|@jwzeHg5=?U5Rynu`;cz-hjfwx{jB3wbTP(**9E-m<{(To!qSaW7PJ6Gm>R@b*5szzP+P{=CSawW6t$f z0dw1INE;$$h5Ra$8tU*th~O0m6-shDqsgFQ+uHDNo%R@~tJ1A5|8{{}`6R&Wcx`rg zAK0@$oTpbAUYly+>UnS2OB11*G-qyA#~Otu1%W&i%y4pR#BTThB~f zMY18npPt;gCO81rLBJ7pq92s5rhAwPTbZjAsuYl(IL^{Co=^#Cz20MlmsC>vxIUBzLt$ZZj)6{^=fr zHI}8i&-;}s-UG$L9{Nn;$w_qDg)1O_5hYzsP5Ui>DdJVzIU!RW7c#Yi83s;T)~k&* zuw*RrC*_+(&a3HjY_)Ug-j?eX8CHYaCN6&%A6t+1i7wTW+_L|`hnAcw|E%>0HC*td zU3abp`9#Sex884>F3 zz&WhPNJ|&K6%W`<*vk;X?OvMwmS}om!5kN;w|OaXHOSI@eDC(>z^R#(x(%iuZyeS8 zID0*3s4CWzh@Q`wG$vh_W_yxQ&YwVLQ^OoO)pMeDU2p&wzz5HvF6zJWCG+`ZnuKfL z%b`W!eK!J^aS<&#$dGstg8-a-+?c8vnha@%xI+`$bLWo)?pPsZ?seSNA3cytB(FPv z$I)B!DW8wOS6-!2NTOOIx~b_||HZ7#$3D-NZy&f97v{SEAb!cm!pYOTpPt7|(&8yq z5X4L=ZJGW3Ozq3}NK{sYgJ5O$LlRQny{560Kf}*<*IYRY z>JRQCuGsHTb(qW}eKxGUecG=M;{t7xNKAV6N3S>Wk3PV1qB6hxblx2qSoO9%>K}YM zSV!C3z?8KgC@{Y~nr`QacLO9tzcF|VQlX^rN^LAenN~%v^RbP{5 zvE%UzX2=$TxLQ`?==kI1*4Bl4-s7w3Wx#8OV%NV^KTXcy-pTxusmS|U&XsO)WxP{5 zM@$tp?&nc@A^qLzQ=#m}ZAP3}vhZph{O5cm)snOYXeq{2x*T>EiVvmMZS(p&e-ZfBMgtsX;dO+%G1uxnFH0Fo3`qHv0jN?LLNh z5{fl}s8HhYcyiR&Td|*rxv1)lvipe>H70DVkU~UmjLYgAo7gpP%g}Pm@)w%YURye^ z_!>w&#^D={_@=R!_iG#IzBgfcIO;5z*+kmeg&z(iWNxkoUm&BfI%61dksgE;y=$?t z4r2!inJStAsgLW3;o>2KePP038+0-N3h83A|;U?dRh5J7cNxzDUW5blH%a{Byf^X z)Xh_%K)`^JG4x0#6NyC6a9a>A)p$Zk$HOxaEqlwczW<6LpEFCs}XV zD{60jJx;S3xzX~R|D~TBcr#*|_E*R({>VhyYq3ykD#DC$wB+w;G9KBv4{vKExl5PkuYorBOpeolJc`nTOc##sARWud95qW$Bilv2*T4 zV=Fhv;(XrNpP|F2p@X|w%{*J&`#oE?zK+^bC8L@gFx=vC%i%O&OM%#BM|!~8_n#eh z?z=YAAE|IY7iWKRE|h=rv%0?4?}iZVb&elezt^pG_W38$zsM+xifkzIh&_W^8`)(;PpPx>#UVE=~+F09xnJDbg#@+99?&#d0Qv0nDj1s3kFM4Xt6pv#e z`FYpoTz{Vyb8+YRs+M!*(d+1$Ym%d%PgN4ngskK@uomOb9Q+yoRh<6wEbs3{>E2`B zKURT0@=(icx>UK{;5#3-WjLRb*arA?@Y8)x>|lifd0BYyn=pl=OFY|5Em*3`2tmL-`qlJgRU5>egE^Vh>PEp20JkTN-2!gWHdZ zcn>e6oPX=)MQ|aK{0TUZ<}%d?Nz(bzFntJb>EWQ9uJ5t*o*i>_U z^tJ8-1c|&C=de}viXjzv8zC1njsFi?2?fA^f!Dr;WRiUYyvOA&MMgLgU3eNGIgY=j zx&9YoHlBxbRTLxdc295AJuBFpv%ej(1Wk+P2z!*uy0AO{~4A1!e0S-4$oJQ zy%V{DWu%i3_I(2t8~zLQA@~$@bF%JHsQ8|Nn(9~J3OE4@4&OvL+i;rtOCNZJ?);B{ zf<^X2pGtG_D?fPy?~vfDZn5$=A@IXi#nZIEQf0y{W%GPtnR&12J4?AD63@xOuS;JU zhv3CtGt{NC-DruFl5StllLsJ|H-NvsGNV+|MR({)ix$_d&(ki;Eh>}}w^Ug04x?@z zIf=eK)4>(JRgv~=P}UBkPLFRmQIq$-bs6Qkq#C`x@Rg1+tN+vC%q42yjrG8X5;IKs z{8I5`f??f{R%KI7+0}$LfDj;d5P1!McJAG;?d9GT=tWZPSGYK2MGbFK@%OL5p~|4E z^#Sui`NMqZ`;DUtZQ#WwA$E!Bbmpw^H<`Z*4BzfeF4BLF4|$)b2u5FroDKQ7Wwyj? z7Mn47c}p9O?50UXP~-W}9tXbDucCB`ZHd>u4lI@58E)lN-PXH~cX*z1;uKe>? zqFzpK&B;ukCQ|-qGVnKM11QlYK|t|nB`Rw(&*duTP6bD)Iq+%c>4QPu?0M?~`#KpE zHc^$~6$Q%{9htYuH@7>5^S}M2eWEb$)11qB^~zIWs<3ApIm>=1F3n|u&$&8~aq}1j zaEL|I-44*;1a7En8!#49lq9Xay-!$ceut_G`ZFUMHk#AE3rKD9K zB-E>gS6EFe1{4E|6|i_9%92uP6?;_|S|O6&?j*GoKN&M9gWF&0TPg0o!jikragblR zvLekR=cpv!orDBlo->3V)*GnR{)Xwi!WnBS^KrZ;m-yw8^)&U+N0;PrR?^Q+-r=q$ zLU{mEn=s=l1D9uBcDKHvTPHvvN5~%fa<4piLt_VK&}2N2cr*$*ZdOh!?#AoYc6K$p z;J|!BpT}SQVZL_F8K)9>|EDb2{w)s*@dX;I z3|xPHo9f<|6GoCoF7JccpQ5{fQzF4>z;kROdKd8kSpOuA5do9_`_^-JGM;d;pjDLX zbY_gIdj@z;a8Ygqg^{y!kTZ^BK-6aM=&Q@5~RH zezF=a74#4Q$LjTDtl2HXNZ`K$KjVzQ+}3IGb}JSqT6!yi_ku%7fCd!~p6eyT5WwS; z76Qy9i0?h6^;Cqkj10-SF>$g10TSc)XwN<(bRc$jLjo3#BY|Zp6mLWXF5G$}DU!k( z2zfKXIVdfawpTBXu4aK6VSa%%1g)9IBUyGM-RPH5Q?keTI@jd6T5eaC*)N<7<%4WUu{%+Ea0rY{&WG#ggUzEe$@smX@4Cu= za_>C9n{QCl_K7%*s2l+U;=pJ`8z<;$qR3)wChNSYe!2={7^}1A1LtpvevH6VIYED* zncW?VCGx}qw0uDELJn;;EcA{0SmsK3<9|pgPCvX_xni#g#|C{#(^Aq-a6JN^mG8fIw%> zTyCDEVdcs?hr|!FC#Nf#SH@qTtLCozFH&7+pE}3<`8S2K%vg41yD4Wf-{AO8ifEUX zBkE7g>B6zRkZ0Bx^TzUzZo6fHXa{fphXr(TOJl2OY;>ho6Av14ssEcPQ=x_917 zJh=ci13FYf$}Ro#T~2({YFZ_PS1i<|u?GRU)ef7efO7qp>n$(I%>Cenlv| z+~CPEiYj^ojz7@eR{mh}-OX3K)ovT#60>+MGBR)dwnzTtuCXH`#{C~X(GHSuePh0= zEl!hu*DycwwnufOh?gG0a;kB#OLhcsZ`;U$m!dWez5F5uLyvDcA&eJV^@o?+e+UyZ zpWueIaR6}KA30;7Ov?kRYacsqVP#1rSbOEGZL-3N=ioeG+NBpnb5R>At^BCHR z^w99VedD4lpXHL2>*q-nG`y?6LWXkmmq~3K4t|;nK^fwEoiTn-Pt* zS;5^U^)vBy3bozAEx{P_$4@fjD+$DPhldG?A2GI3Ednj9x~M0|G%3IsN40X1VzC}= z>X=IG+DbwChQ&V`D-69F+x2dPnAvVRyCx1tFKk;gw5$%8xL6;kH7agRfChqBFnU7K z+P$So_dv>Y|8xPIoW25WFHBaGdY!z&Z!l4w0xC`@T|UnEa3?D&i~wyCC=))OTu+yT zR$Kg0s$(Yw0cle#@T^S2PJcw~qZN!zTEtGXEZj#dzY7jk0ak+JgZ`nhA<#0c(@4L1 z!*!0MUPe6sX#JzrPO?2?6l>4NEN$@4$1(f^gz;f zVu5j@)3rMAfWM!KI?A9QB1&LIvp285_UV!7pyNtz#p7CH8{1Cu{L^-c4Il&MNl6O( zT|Z}iky0Co2FT$-f&sEk-wh>${`;7SzrTU8i+`d`&ll=V<+bd$KdKe3l`-0OjkVtD zdSbHKcBKGm2{n%;4feV_7C_;f(htWpPzzo0G)$rox<&2^kYD%CD4~QJk65gyKH_g^J4ErAXkiyco`d&Mh z%JNXz`?z)Ln z{$!(7mveylzm=h*wRri2GU1@86sPc<_uuQk0o<-|FmHK=y;*mgx|i?g>Q0yGD;}ep z;@pF}zKJ&|q9E!`1tG5YS3E@f4w8b!d5LhYG_;ui&3`?~2)Z;gd*>fSd0^D+>)#y6 z?^r}9J=SqK2Hl>naBHfKdJmv;`5@2Y1@J*PTN;jBSA7y?{OG7786J z`>PjCzC!Oi!?~-|G4`Ji0ZWek5C8#%47yIU{uY%VvrVr?jXphXdC}ti zGkO9Qh=Exe)$GHIx!m#1tlEVe>T*ofngCtY!Y58f1tw%C@mGI);3Ff37MO(cfIw6g z0Ei)|K(~YvU!%GIll))bKz(DBTz;L_Isaf^&e^RDpGO*e+vc6J7i|p zNegWa%FF*LvMG^l`KPE?DE%-+ZJRt`Gh6>CFSPoVYb#Ru)&i|jHB-9raQfoC(vMPX zl8$aGgS>w|tmJO}+^UuH5L;=%GZIcy*OROH^C29mAxEL$*Q+1bqstXj!pEGu@Vpm zLBsA{>Ub*mPr*Y<7B)!-0LiLjWgJ)Kj!%+i@A>mp(pk)UVyO5ls=sS?YfuszEfD|) zlZHqaP++L41xs7;&XAzaiPI6WhJ(1H1q`KO!dEM%^7DVROVdqm2_T37gsX-&x6^3w zj{1L+#On||4!!IQWuV2dL%f7Z{D=;!PgL=FAdJCNkwM<~KK=RE`d4vnfBHyrlhC;B z))Ux*z_oyDvyeP`{U^771CT-h;?{Hog6)OeFhb>lOUQTQI$t`svGaJJ<(d9B^`%gN zXKuMbu=c9gJnf&6`LF?^9U#>USeHo&mPBVBM99e~jVHH5PR=ZP#*5#+ImlF1Rl_^b zvHKZ@pqGcuf*+8xN4aC61dfosMB$$x+oMge8K03;q|)t90kD84O;r5GF=+WFPTvy6 z+}Qw)u54-~vVfF~cIR^rN>C&M3jEg0S{S+cwjwZR@a9Emilqigz#nUV`~jw*rfzZ6 zH^H-6kbh4s)b{MOCq!p~hb%oqa`BS05(T~s{IiTHZ)+IKh3EJBZAP1B>5A}K-1a*w zM*3IN7AI}7Tk~PDv+qu?>$|FV0o5A07&{S7tthIZNHRVzDb^;& zSfI}^rCjERvbN&~gq<{S42Ss!c}}%W6fvDw9!@lNp5j2W$^XqDC}RV(RXKzPB4BCy z$cL8|Zy9;ERWr9^3Z}z!Tc+Hx)>;^Gdq|LgxT{`A)(ivVv_Lk+K~9Iqx=S>{V#Hy6 z1$A1DiJaM4p8Fn>IG%^e&KDoi=hT44(F19WU@Yk%{mC2-2+=q$A$C`|zWKzrr?Nyj zlYlw#)9H|0#Ni3T zBA2*rs4GK)5eIHwQc^q`ydQy}Mh`_N$~n*J8%|n4XHHBrclHoM0o*#*@jvu*ezSty zn_z}B9bWR;@o1u?a!^R(X7lf`Ur256zUksXjZUpU7>Cu6eE5F)YKp1`ICw&xKyl=> zFO+><&(@o$x=mk=w&s#|>h})4p?T(4{2eDEBU&?yqEwI$7=|JW`2Hn=l2m4{3@O!# zE*%n)bm9qww7l3CydkJ?wL=o#1lisjzzLS~1rL?N4;z$;i?oG-6zL&_W(ci3#4O|w z;HI6B_Sk!XzPdr9FR2U0DToF1Dz?}1y5re{^yb5mof!%A`&TkySVTlHGNIBy0Vu&PV z_|(7&V^Rwn0PRGrk<+t$dLm$7ykFwzX*jo~Qx<_{-{SPl&~0}7^J3})b!Oc${_b;2 zS~-}t-);UpSoF0+0ND=sgko}A|DS9?zz&#>RZ95AMUBO?k;4H1k<@*C%-+&~M&tIR zdhyNoA6f_j6#&{XGW~FwgnMy&Oq#&sx2TKEPkE2A+m2BD1r5qpy%{rLsba9DwSw)o zkNL9&fiauhJGbqczI~sRpoplQ7Yh%sP14_MUxUJUR)+29?TbGm2e< zVkn82iuE_YisJrDi$>r#krSppMbZ}xh0|n1~ZsrROh>W&^PSlV67&;KX#h{ zp(7xsL&NhSk9$4)`8|6E>6+&=Yufui5m~=|>!cy+ubTDcgpJYx1ZnElDE3ee(8CW0+hG zt8u#y2}-!cu;)qO;L!7MQ4!C0;1FvGWdfA%nd&q%(eR_5A$#A)a>Qu!Dzr366Az0~ zZ5~FQ_`U<|Jam3BiVGr8x_|&VQOsVZP~_dTq#=dCkl@m)<_iA8p+f?@ZfIn9bs8W~Pky2>p76cuOe+iI2Y^$Um z!Cj%AwRK;ZY3?`GQg<5LNI6fL2g)J{J@5!(K-xzSZ*35D4*~n}C)AgqZ(=kYiW<{LG*vj@gsS1IP z0tG)sba_D6L-}|ga6g*A{p{sBS6Jb^r*p{~?eU>2dMNxdb{-ghE|W%#{EQ>|w<1YU zvK4$AaPHIOrY+_5;t4X4N;8a$Zu7X~fprkG7dY@DaBpgcIqdB${Lr9LCEv0#4&-xx zG56w|gr95v^b4XDEUSMyolyvLX}QDfp2G)MQ|v=>l~tSIohFJ-wZ-8mLR8S%}f~rB_riyN=g)6DjR!ev&zD zNpZ;%DXH8w6#eKd-T*l0LPU^q;jsX!7gQf;W%jw1-27H=c*m-12)mA(Eb*u2xVs65iWHXKFpA+RxYehcuys=;@DHt(b zZqI6=PN9epnd153X`RzhkoIH3oNJ~cD;oRjpp)RexfvlGxmfiMna3+5?E@L{7MXVC zOnFH3)2mb@l%KeRj`T0e zW)(yt#eE_=X1BnTO!a69ITdj~l`m{HCFccF_fH43TK7p=&Yv-M5(p&GqE~`bhJ}#7 z?qv>#z3Nyd2Zj}MzRU|*OfEe}7sxkl7krQx1o}t@io}S*Dm)7=hV)XX$4o3V4#(0H z%p0f(wfoYl$uaKm4V-F%6@o}w2ZvxTIJQR%hJ+0U0?M94y5yb?q#4$o1}>{L0LWg^A%bDiXQI zDm4}H!%qT(PEU1_6<`f0Eh||BRy!}7Qu{YPV<>F#>g0X&s&x0mrgT63frFP>tFCO? zVKIq75mKiL`%P#5t5HI(FYJ(9b)M}Y#-jL*G~#;t*vw%2bjf%!(Mty#yE73@y4y3Y z*LvK44Jn7L&3)A(GsRNynXkXcmhMFa)DIugU##Y|e{8>CK%EK+h? z)6vs94K4F$`p}-U3|S{u1DF~ue|HRf|CBoBC^oFs)?TFxM*{x> z#srd#fPNX4oZ-@8>$kr-WRs{rpcUFU^^cA5JM{8g2_XyB<*OACJIcr;B)77ckk9n- z3;BBy+Orn4cv}R2TJ@gR`oe2W$^3C*4HacV>TOdYHD=xny4gS0`8niQP6`p^JLK_C z@267ns^SkTOC{?Xb~iMN7ZzF^-7+Uxo*NgmEZIi@aR}k#svyt*#-_25WX8iLjhu%Fcda0K?7O(Euy$^X`yU!J_hFyO6R9khL zSN;IEaxOl(NH&cx@CtRn$VNxLjEIe&{M?=)OP8w=-`R0*&Hm@_j}0XfM_Wy{F?=3+ z>~R=0fgF^N2!@#~4)ew;^%8|0&=TG)S2m;s9HrFH!zFoaWldM`PS|z`iN%{}g&J?DSDCODK9^qG`am$1N;L6A&wyYyZD z_b$zwI-aB=K{L(AU^KOtpA1E9a`wip_K|&a1R@ARu*Ax*c}&H1si^Sx_pvnG6i}SP zR4hfOb5LKa$G}$&9rsqb0S|+0xZcyKZ)81%1~Ks+75=*xkrYPp%fStqEi#;uK1_AZ zj0t68&OaWce)g0q8#a#%*qEr*={Vf8ivi-o23U$&>OoUlM4s>CM}#?&FaKDr!@s%vq64VFo9lnf3E`af2sv72WDmzr_XI=gIs_tX#1;b2CGE#2It8PF30%T zjf9wLbcTqw>J6o9EbP&LU@fk`DZ?7EkZ!!hBY= zo#%dVT3hu?Sknu6Cgr;O%{eOAR~8*y>C_hLi{Fe>zXCRmK%Eqlj#u)iD3-8g zADpD$RN}wfmqyyE*dB{$DwN*KDg+tK>c&yke1f&!%rZOwG8E}|7#7pDw9~)v*&;vY zCROCo90+^P_}>oQB8Gf|^mz%9*lAoNJ3^Lz8}8)H&LofQ1`W0X|B7N z!ewZa%Miu-4z4&{mZ~bbiNv7>aGf@9s6P)gE;Do=Q9lNO)Ohi`Fcl8=im6Eg(W z{adl3?Qoq2y!GSBj_Fl>rmCN4GinEcl;FxiYB*rHijvK6XghGA2U+d*Oz!Lf$iDF z;!#Y`6U(52+)S+83K(dn9M9o;u)sDjXUBkcwqCEuYFoX+OJEm-v936;kBjetU_!9S zyZpN&DMuCNN(Z+!y{r6gqTi~OTlqul)kB~(FB;%v&P6+R{b{Q0`AfYb4c#BOu4pam zl$>|Kaz|LJwO_*b19cg}EAEWYA-*E8DTZNUe{N5V2I0A%&`8+H!#GcJa_d z{Oj#;i_j8otbg)*{Q^RYBeRF|tWlusS6SMB%SNZ0ghuXb)U zW)?do6%-T8d6cDuX;P&8Te&AhkVMEa8FHV_g*tc&4iSB?AE@;3^z^B40EcQ~#}GuF zbhzxmDWl=)M*-~?Woiu```9`crWHLtA`a?{<3CaDaCpTyp+IRurPvysI)a zMzRu2J-|IzXx7vJd%~6?m3>b2)2}11FOlyJ-jSzPd_Y8vE4&v93(qWg#V}ia z;m=Ji{bQ+LH7BIVtR57fh-!$)z%=OK+DDecS|@znK^_vY8YGqs^|kKS=wOz%vBE+`6%TQTBFgDxQbuY7%m0^@cKTPCmk zV#~XIVIjM*{8wY$;Ugr3K!Y87mm0Q>lo2d;kmn@o8=W7*zmw9eq zECU~7Arp@m9HQ<<^=nu(@u=d4m?ISg+(H79q)X%CR^M+ZI>;gK#ACwsBz|kgwq~h? zlK*Fq5J&zBj}2r*hn?nR?#+TRCgcZY|!S_Q9G~GgAl^&zg zc01iBaGtmE3x*_gbFGrYSPpU~Kb-qIL_n`{u!%D&cWAjqX*e@4Fxubfc&-0E3Py~6 zdB^5yS{z=6l7;+31o;4A_FBV^!{1#I*rDAjPdJjE9jy^3iOem41PPAIQBAY)&r!^h# z`u+|~oDscF^?FhXknx9FtHvX1>_0n|E~o=#)x!tv1;r4B%R*-U=b%iYmrkjMUn*0g zLlX3->@&VKhG^$nOku$J*2oHnAg=z}H4FV>5f2b8G3^UgYlbcCFUqDm@?r%ZjMzkcpo{OF6tlrQ{O>hXbrfV~@r zdWG}un^x9bU5Z3gc=M`ZJf%RME|KBodxSG+k!XeF4Zm4j04;p-ogSM`9F?2#>_ch1 zE;-B;=s~DVFlmNL&o^$t_xAfnlC(yE>?Y=m0Lg91IIBi`5*;D;;yKL*!$q9IZd1DD zuZH1q<7-s#%7JuDRvTK$gxnhcAmhl>dDRl9@dvp2^syO&eR}8{jOa8F1aDj9vX**E z_xb4+W_M&ACU1b36up$_FBskaMJCzV8<>vuhRO*R7zxgFIirB{y|8p90D7Z z!n2-_mD`{Wr88;_rH*^UVIoNI0dfpy45owQExww1%jWpra4NN;V+0H|#GYLTcgU8y z;d$5^lW?`;Ps51^U-2_YJ7a5tZKr% zU)`6z+a80n{VGD`Jf=eM`ih@(KPkDbnI_yg3vJ;TT{YzP3Baa-at|vcW&i=wkS#iK zYr~bTwl!R3cNHkmuq%9ifiame7ksu<)Z*=8tQF~8)h{*ceH|Ikv1*fFkce%R|K_RFjWgvi5?3$yt8Nz4R2 z%Gt3S3=cP@yiMOpvjXKH5!G~xn{9cBKwM*ZzP%=t>QJx_4yB&DEoKu{5vzfFw>ss@ znYQ`T#xuF$?oioSoEe&KL2H?y43$F*NW*wqMiqfRX5dQJ#}!R3ASeimIb>U*g(1p$ zDZc9mZQ^51nZpCN0(6xyDODwPXl%?(nDrUZ$c+tn3}R903OowfO1W&!@fIlyIkGly z<#<$q3tsvBO1yIFWmalK)Z#vr{wqbGxmRK`cvJ6@B1kk}?F~gqv;|HAYpRaC7$_w| z^Du1+wW;BfHHU8ZIcoma(&5Kg{mMtLsRoqOhIUsp*f#NWp969|nGu+WfU-couB2-l zhG~c#F&)^DXfV>RwnY~sO>$`;}_ zZ%LoGW#6~~i<*5?IekeBik1$Sx-GN9F_YSJI{m7_^XcU4#>j;8?36XNsB;Vgs$Py) zij}WNJM;re{eJuD`>MgR1tDcoxL4^!fm-UZxrRWtH-eW|-FIQnNsK%21PUXC!$t&0 zNKlkjFI7Zhx_?Q^`mK(L4Xrd?Cx(%nLoJCr+b$2%wV#G)rD8@>qlcf2;plg+e2b1H zgwR7YcIo`9onZZC2pvWd1NXYI{2ou~N&L32$1|9W^l5bX& zPp6z%5VPEykMb&MY%43cOdl7+h62Mqfs*?p!<38~H5zFjsTNj?U_Td>35a~gzX`C2C>$r z7}Uh@VxPQ7vcc2OMpGra_6SzAbP_X5Ykmpchbrm>qeE%;+~7X(d!N?5yX4`43mUOW z9}`8PiQx>KzLQ@&A9F)gAflBWk&XP`51sUYR*qi+4zTS(GKFmuBuz_iYE`;}rx|*j zS)fPGEGSLm)?4L-0yi5F1~)yF;wTojeUk>TC!NgI=UkNo*nTw$*!Fi6zO@|ONn4n- zUhh_^*SE~b{MhVpm$T>96#@hcf$H0;v^|e_u#|G!=i`i|b!fJ1*K>NQ_?%l>*T+&h zazraUYFe_Oas~heu3LCl>=?4Gl~_(a_=LIIb^&aLqm}+4B{t%L<5*UTmrmE?EO)+F zYDIaL{+MSiKO%X`Wc1YT6Zx5fV)jA)+>J6p@ly6SQFE7mJ7mJC4zq-&D_TR2A!K1d5SU6Rlttn6^ji=@#IF zwq0jsm><%jb7H5I&VAQ`h7)>-!^D5q8qycIKO;C^W@3cTeAC|hO3)m-L9_lRQUBZn zI?bMTJE)lG(x$Jz!0Mm0+wg(}R=YLU*l#tE1*Pv+Br5-~qSjhyGdA#P9hgvT(*i%r zZ6S+Cs0Paf!^O&YU#++nBU*jQKHO|$7g{GZ!k2K6T^|{RzhSNXIPwwv)|=OH{lV9L zOiSRHL({17iL%Euk*K@x+EF+vGJ_Y0!avT+gdEzj;Ea`bgnfD#7K|Wmrqv;Md}!W2 z@Hmbm(})zlw<q;%FKajXBDi|jSJjtR^lQ4 znt$lvL-T;8PKgS+>O)1z00eLhSTuE7uPCSmF3wqhz!3UCIX&0D;L8d=vRCkOHqhs+ z7Sq5LVN5IO3NxWG1!G@{^CS>X?ROeo*Lq}3i-^Vq8xY)T2`d?i4`xdn!0?m>u1Ljez;Ipr+qEvETIHmg~!Ch{`a zSTt2Gn;QLh#t-k8hYdTMwBj(PUxcjG1fAQ!cuzvM=ni&6DUgWXgYTN^B8xiPT;Cyu zzp{HA24k%1@?Lojt zjwP?W=Qe{2IaP4JEhi$jmNrgXF?#L+c2r;dO2}dm)PpfrQsy=W%&2(0_+31vU|{%r zPTywH)sQpaERlyjf6l6V3%aE6dgSo{*BN+$P{fHQ?~dco@mx3ZF>b%|Y5z*6+vlaJ3jc`UZh=p%#ktd;YMiX*fN}dpo*TMxSN-$IV zV9#}fC#Y)lU$m*3AXMeZe5i%#ep$05E#C$}%YQ@ci}?;^oey!{xJ_^7A16`N7@_eq z@)AZHV&uPQugs>IzG1=(=YZi6nLxtrETyH*Z{B_U8~axa*!}S zGQ7p?GX5!W{5n%4Z#|qfcRxi!VfQn+!Y=akZ2Th0bF^afwaxq{xbNq0BOVbNc%l3= zIG<;C*@&RZ;n~BP%?nQK6&a0BIf-fFrl)1cznzp|h0HO>W}`eM9~Ar2L+bB~gJ+8Q zP9=RZxSldtQGFx|k4sCX%nT++xB+th=F_}K|Quht~z*?iFp%}tUz{-_{yBNcP7 z_Uo0cC)MB2^!7lTzLx8#u^DZoVjB$tTlf)u37nLaI9Xa8TbAY@d)&V`cUzC9&6u^s z$(Liuk1eL=`X3fBocMPZvmyNJh14TDkRc@ZFTo&URizQfblZ=g&F^vSjzZdQxNTm` z=#74^HyAA@xa+}J4IhaVYGed7Pz2pwiYf$vN%57o!8`tMyF0QtA2__7*?I53jrIlK zpmqNuSrONmlmp>II+uu>XmqanlP;gridQ#5kE9=gKx3&eSigFzjI^{(welSV~SNH87cq&QO}6RL-m5lgvyn#tm3)R;(wO_AqP% zQf~B0NpWalMz?2^lcjg|BCh&iNLZNOP-&pyW+sk5LwC>KCY%ud&i3u=x$Efesph&T zPly7IASD>qRI6TzsGCw@nc$i^8Su&vyQTVw1TQ1S-h8b1(X2;A&_qLs2OS${LVwS#oMH@2sy zl)42kK$1!yPM$sJq9d>*q(wKoCaW>wZoR%*Y-Fe}cmZ*sGL2UuyYQ9_}(WiRYmjev6FC8qiB)sDmRMX zZ7*C7^z)y_6wN6XlZKElJubADspY5|{G~lQI+yMj|L42{QTvn7R_r~_WP|ovSi8py z9+6hsVhBd1$ahZ(n0WWEo8{|AN-id;hOJGskw&E#_>IwDZ2oCKXpKctTOR30g~$X4 zcnWV<)SJz|WLIwk2c|qpR2rM7J}L`q@T7l;HWx~j>hsdmqG&xi!jUS;EpA-XZf)FDFwvuXiwk;TNI-D$@>x@uqGA4G+XpLJxtkM<#ZmCru^A7@^Eqzj zj&7dKe?(}C!wv)kuc`B}w0yl7qx{timredLLI=5*>J=Ih7&Gmd!-+Z&)T+cL!>+2S{$~B~ty&6NC)UP|J~xp-A(Tcgr6TC*hE~7+U{S4rrHl}V zx%Hc*3E`AQQS@-}sPEJ_U*0P{)-kB$Y7v0a9Yv4-Tvs*8t`Cwc)}HJ_U=Fn>7FUJLmFSE)B~x1?d= zm=&wm7mYm$?oIgebh3WuFE1bo7pn8i^0mHRcZ|H^=sxp&b^6*23#if{B|e0OwV5^? zx4rSXsy1r8Ds}GZ3$l1*8YaDRA1NmQ(TaJDgN@6E*rq>yKL@b$krAcR3wjFGFGco%`Z; zkMzF%-uJSdcsKat#j8GC5XGg7JXa3KGv?QHo%=>`lBbb3yLUMExY+0_eK>sxOlw9= zxqu`3*(z-*c=K)v5rbv3zWm@VH}wJ`yUC&#KHD-Q5@pj4{c&=R9|LFolb?XRXz%^} z?`wwLov_=iJ55II`;Xkf0XQ@zhqYUb`3et_6wuFJfggLUp1&f~sqGkQ;(ldyC_@?Uu|ud?&oKdJF@%F@nhQ{N>il&mXpbdyTF9 zD}}wsN1W(a=bpW`uhDNEZr0`^5!3F1%*F*gt)|gtn(bfnqjf`46FA(1n>xvvRYvYc z_8J02x#By)KQKy@cV4iCKPM4mK6obz5hiNzFW0do3~fwQP-l|*ZTh&zYt-g4`427y z#;iyh!T^1g|AbihHY9)wSBBj63L;hDJgaTmPYGP$SGk}2R1Ub(Vf{A~mN$DuinGbR zc$VSKw~TjFi6`&<|7MAn?dje>A*jf!PVOs7Hrmn&uiCrLhj}kM&7Bv8U7B@FS1rxc zoVy%Huz+9VzBCdPM$GT8do>$=(|*AT0n-KNEG{PgdJmlvqn+bs>^$WB#Iip^lG88u z)dWk6{aYhmsXIv)S3bXuY8eH4*N%+C+4Y>|&R7{V67#8BjVA#3kJ7oA@M!W z;-9}?oPRmAFiCiBJwV;G)5optqwaS;&F+S;Q}0^H=D*$5F!jUr^V^>W6{}ZS&gRb7 zAC6Chqip22S&i!bRF|ybI(00~5 zO%v5zpW5me^C{VY>}9cXz^Pz>ZkMB;YOqqtqa~ae3#4hD{E7JhbCQ(QE=E*VW01!6UCuEqrJ6((KZQj53R%}r*aFW*}Ao1NaN`aQd>47@$jjRQ1S$!~AGR$m@89W*T8-e3KB3J^rg zf(}=JAgydgz+a~7FyQNEN?}>@FH$!&7`FS^qe66vd zrmb@sEXnUy`CO0oGbK_ zXfUK;m}oz3-=1vjZTv97G{<4?Qd2E8C#TO9PwM^1Vc%0iujHt{s$QDRy60N1cH>3O z_Z#VF``cFjy7|KqndB7eAfoi#ccW{vdZ!S{@RXm_4R#P=*&|PuR4xmV%;@3U?EuQZ zgMRgYTQZ7mE;pMA^P|*-KE~8gJ)5I)==~eAfcdqND&rst4f#uoCv>;MTeg(cGNZOa zY%))Cpt#Cr4gV7ax%}PU>-p?#Zq+=m#sKMakWEP}*^gJ8?>t*Er-akOj7svZtW5hQ z;}I`KY8t=Zue86O-BUBiGr5Dk(_CsF zR`$?glGoFY=7QBX&+Se3Emn)+VYnV=01GMS`5WsCJdD`|u>lgMARA9Yr&d_7fkyC= zPRum+C&kYB0Z2ZDchwK#^a0e+m%OD2(fd;k>0#m?^2nWb1CYVK2`C`*`sgypw9e3O zEuSTOjy`Mw9qV?Z{1hG8dMC`rb5c%bf?Gyq@#`L9$W9yXi-2&Pbfc}-h=5Gof|!#+ z4Dx)}SWL=i4l#XpY8xhq{8&zUUp71&3~)|XlriX;`gs)8$J9w%xClQs*ko>TYwR~^ zS17EoWOyI88@^9{9k_hMwYXVHNn)on-bMW#(s~FUneTS&q=rFYS*`?+@#9(VJ?uy; zarZ`o*OGFq7TH@b`YIj>;|uXFVJLgZ>eiNQ6QN_lJQf{t-G_D#e-08y$MwcaA-2r> zt&I6$@?Nf`UK-uM#IWPmk;O-*r3gpmNWA-ip5g(qHF}r>>{Wmpumw$XDz8 zBSN97I0r}Nv3YX5Z_-YVO-psEZ_e3Us^~hE@%b(f-L14sAbHnipSAY)?k^i>7F9v< zo*KSM#`*6w_t5hHDj(3Aamis%WMI483mk3IF+jqQP!yHbL_tDAi$*TRPvp}V4%~ig zem^OJ8yjDrrisRg&dKBw3w_gn-n~85Z4qbBZx~;Ekg*snmnl7j1WoiW1ZB>syeW{& zvvQ#$o0WCDo!hA2xKfvEMkfG&>C`>c=7sSLPq)@i7x?K_wdd(H{VF|rC)m!wqqIw3gk+=*L+drPn4&{8D-4n5Cd zLmU=0R=@4%fiDT2yi^+X9M;DRIXwqkXG&92WT`edvMGjzGPvzfZ29q~9Za41S%)cR z{_f?Ll^qhwDHbw};Lkpm{qiP*BN|jd{658uOPx8TG!q;%RMoav;`gx!MK$V6@OULH zjWY@ILUqy$sh|A{ca1=0MFBt#)P4q5Vys^Vjmp#=sYgA-^B8DKgDItIx7d+SJujo4Fm2SJG8artC`-0rQwUnQjJZWXqB$m^nf`3k!)<%$13G!n!)tN2OD zW>`wpU)0&~%~{S_BmN12${p4qPvCK_nOw{`k0*Bn8ZB7(_+54bSZ1^1gA!Ag_@|m9EWuW&;k>qE*OnVqkTuj(rnOCTgkF+*XD0{ zH`IOGW{2Y1Mk74U8Vp^9w;Z|gblSjzH%|{Ro#*Jre`Xc@e0k{`#b6s0irOj#3K)yHSSJyeRSe!Hyn~81|BCPqSABQqPxNS`t z)GiNXV+Rj3j!b(_7evWDPPGW)QpEQFvxSC)aHr7BIef^Olbl`-UO=3q^W`8W#+yxG zFqlf{wF{|-*we9C4PkGjR_DO|vP!TVk&CTr*HTfX`X1VV?#KeXhC@DFNe7yo&w*N_<(XpCWf@BO^6_ZL-r)xzfS2JunrA?kGrY3FE6ANlALc8K1$ z>z$2_cEXgbKy{z1pI@(EMRWBHtaVxg+>7r{lfSNKPw?(DQlCWw7SA5sYkf6}f8)&` zR580F;ezD=6yVG?8pV{JR?R~00O+V*LU=THJ;C;H+T8b#nnbFv8^YP%W#~^MkdwxL+2X9D!y@oG{=oPLQ@GbrlGm z%-BunA{LBvSyp7k;=-Imo@+p^QIlB>|N5xPyddyF3W+`(Kxn^>+nu29p_^;E!S|bN%e6#&y_3h}6??BEQWA$yH2i~E8ga<>**U)(;hxyFB;`N<-O0GjD1D5Ue%J~HNk_PT4<@j}{ z`{w@Bd@DJM0|xW>tDauUjl81L)rze{V(_1tt7Jb~sR$c^#;@rI(w`;j`m!)7#-^2H zQ&#}~_(^dO#~n9&;@uR(RY_s^rGEqh3`V+DGA-hlYPD<5%r4$riC0w-7s zm>jtP*f>beOM@`H0`^A$LQD}IXZ#<5zDU~rHKnTe(4kwm(%0LF zlIqWok)s8G=ubAee1_7X&fc?fo$fVj5890%c6x&U*q{*sZ{)?6OSL%xHo3ucdIo+( zwpR6S^St>hM^pYPLn!gb`=1U65I!<6vrnL%J0a{rXt7BtN`aiV7m zv5ZlC(x+>4VdW5o^5*&CJU*y__ml#P5ivo|oQH_jeOiRSEgw|k{{`ED=6r_7IJ=C` z^-F}8CcmENts4WPyUj^_b8J^n?+rVoWN8k)18(Jm%X%Mc1P}UtK~)SXBOQQ3#EtzU z&!?TmI)mSW1YJ=k=L|EytcyP^l&}UMRQbRh^Zh0@u3qsOf-j-xz{a3x1ii_zIl2Oi zrM2b{K3tDjr;N-WO5c)0IsC~`{c2(g3syE#8eZipMEx3?LGjrVsA zJF|AF3ENP7G5Te{V`2#DS#w%aQc5v;VnEj<}+0nVxya&*5|X)l`&~NmF}?|AO8xY}e-iz7Rw>9~U>T z^W`x?@rjpxoE z4c#$fl$8#kcSxltG#|@gV@9aRd|2I1Kpses(Vbcyu>T=6mZ86ZV-l7?V3im$UTLHJ&n;Snau0R+c7WwufbU) zZy~acIFI|ttfEp+QbDHrhfsS3ox84(>KZQ z3KYYdB8HQTiqSs^8^~Zen+Im-^nAb4C}#LSD6M!1QPV1>-6sfi8aoj%a60m0Y*-#h z+r`t+lZ(dL0muL(;5UvQ;7x|+*YD?SW{7`J1RR%=&)NP{m7)1)zh(tXxwX zKAScs|MYTr>ua6fDZWinQ+|@vVnKQ#^u=VapAo`TUvtSwqfvpuFaLl9M}i&7%)tzY zGnil9OMZfWv_V_`Yos2^I11wA$dvjImi!9gO37lEQ9wL(Fhe1@U|rW|%S;JWf?8x3 zx}4?*#v5zu))>(q>z{iARVy%2_YNh3tG?xhl%JK~GOJ98OVHKSSQe?~b55c*2ifgpFTA|V0Of>6 zJ5JE)NS-owyE>to%pbi#W04q0q4i(=+Ee&BI5C&ivcnZLrMM?t-2`r_yFk$o!2S(+ zL+Qu6E5%ORdvt4V5{7h_2dtly?X;f*B@cHi-^>CJY`&`gL)b-@Q_R~vOJj6rU;atV zov?89+8udry%}{&j)1mLgU$v-&BTR=gUjC;cPysQw(bMR1&zX_fqgWN69I0(Hh z)Cdnv{XU65>j){}o-jU7FUI0|e6VfOo{ae*rU1U?ayf(N+rJ4n8DU$z6!g)MIFUkX zjI&cR-uI?&6^f|`gY3N*=IYH#_P1owH?@MF@A%i7)p|j1m!S!>H z6DJICKGzxQ#cuu}IK9>_fo5Lae)$+5orDJ!A1|;ua=N4rwIUg9SGtRh z=S9Ayth0d{$}A-w9_K`yjT)=WCs+1{;i{fzNrHv6h7EfMlx*a}0__4DXVkEV%-lY35pt2(i7@~Ae#@@T%`(JbV#@zr4<_`_&5s=#+}H1%Dk$wP%45^@|GLK*nDKv+ zVWNQ@^6EEb_anPr{9DX5J_%$|q{*9_B;6u}%%_|4Qt3CBb|QWVmSlg2h(4D3V* zx>t9&Qe2>K|7`J6=8HGekQ;CorPAP6*WF_96G7$Rci4xwm3RyeSh!1*^x9jEiWvE= zq=J!v=69%%O+f)xc3kU4Q)VC8V`8)Qmx-gRKR;ujho1uEPq`IA5!&RQO>6dFwb_r? zANSa5?=kCiEl{q3LY7_ifdBkcA$g66chGsNuoz11Lh4!H4or#g1U1yFYHBd(nEkqT&wwwr8O zC}Sa(rj@GeiMPep68IK6fsw`q<*Q;3P#~G+R1erfaVv!!WN)R}{-Wk)WK3Km*TAGs}Cgyd%>?yV86=Ga#<-ILAAcsk5GRI+WI88?6LR$0k$GsBXz=AAH@7xH4~EUwz|@`Xf6!6n zkr_l7D?|Wqt$D#j86f%AeO{-jru>Lfho?pzGPPT8vWoM{q=W5 z6YSUUr$lPI$!-4)6AB+>>Rc9iudl}PhcvzR^fz6J>%aci0ejG8Bj*4V0IJcZRi+*! z9TD{){fzumDb&ow`dQ-bdW#~SN#O05@iV3!?@4gDxu5fvRQWS-46YTFoRL*VAqJ){&^F2cB z?`BCX)+xWUA0`!38OYd%TZpmG;@ml?GhTiv+aRE`H)a}nV5U3Z#ALr33W>oO;n;~p{K#w#l}5EC|reZ;I-bi)%B)0+A@GE-1BH zhWT2Mn>Z@SNbA>Mob}dCsOEG0x|mXJlZO75?d3^GVlDMu4E{5u{NNOAm%ds%eo5QJ zJrk|LCKHhF@$e~Ol80%7JAhX~{El_J|7_PBV))NbuJ*ZC)-j$+ zfs&^heO=Lkp{(7!l$TX+=k`n48>+CAwa&;$RYjpOk8E#6i9r{C_edR`9!H;tvDDO& z=PvrHX<~p;VMcm`ZarwR&v`ft+Q2((EAKpuh5`sXd3_rWXKo+DP3i^VkQ_HW3$Nao zrbXMydq3V{l8=HM{^=cEhuj>HnwzDKtY{+Y6EEjDY@(@0DW!`K*K`1e!#K}%de6Zu zv~W|tKDqgzeI{G&isj|rfA|+381!dk+h^*c&*3rZYlSMg^uJ%aYQ&xS`7f4Ibr(kt zm_jmawuF(H>Uy;bnZvRGb8vFVP9l%Z3KA-#K<}jAeXB?EtATV6+|l+t2FX#+JLm(g zjP`b1AA#&AgA}+o9gB7)P#dOWcVP2tU^CmZ^s@Gp?dCK3&=h2EBt0t>yd0Rv_%(0F}fELX+uccIC1>Bft$w8MRDf*4~hCfo{vPdvv_Pk7H5_iA^2yOONl# z>665Pv5QFq5E^to9Uq zzKA-7#XLc#WHdK@1c;<6;14YlERrgE@#YyfA9YPmbk`WudiSH#Pb(HKHC6qKge%kWB4G>f9&4&@%?O&`kyTgxP;XezF33F2>Fv^Ufkhh3QLz*Z} zoj;q0B7Ey~;-P;d%^baxE=wE~Ck8X14J^}wARh3HlAxV6dp0KRB`Q&CD+DUw%=R56 ztj~$@^;(8YAWl~<5LRekzY`_Q3+!M5!rnGrO#Q?zeFzewV_?>+sIW3l)Ncoo_DgBl zy12X=?xuH_cI?9UuDLf%*d+O0SqJ1fvh{t?h@me$+K=3xZDkzR;mp~y7$H`F>jU)Q zk6x;U_IjR$gT}ugVn$hfHdrli@fIg1s!LO&b}E%b`k`#^c5GGJu^dRTPy0ij<`J2* zPA#GXKyZ45B2<|;5dd4jJagXH*|(^Baham-*zaOccCS0;!CCVm6vl;^WA@e4s6n=u zUlkA87z2rLv1$7|3$l7IyXUOA?NVv}L(*2;e%W0oIOTeRyAC1rgZtfv$SlzN4{OZUwh5Bhn%_vAWVUq+M-uE&C zNzBA|H`*NML`_ghm73XN+WXpRaF1^g2GUjcw+~}_7+QP zf}E zc9MtACN%)R)58D``4vE#+4%pQ|@e8imab;4ck zk0m+)!5BKk@2xX9LXDgI(sRV*@wYztl8`&63_;xM1k{_bKa zzqAC7+>0Y|Lh8ZD+{`7uB7=+0x6y;bxlkwwrRT#?Jm*S?(C8swcbDI~9W5!GU=mtx zwYg2)-Awz~?5AY`Fs!9ECJr?#jV|UsJIu4;u2pW9s~_1{j6k_neGrd^ zk=;-dr)c7Z<{fmKR`sQe{FygD!;@VFRMQghwP+i83vm+Zk&P|_hlphKT!zznjJbiK zO%10d@tnDYVO4y(F7*eXSz8?b^H94y9vo76Il+RabM54UIm_sneZB#c+dB8Az1sS- z{9DdS6=R)`L_5EZ&*tfSQl&hNj(o90UJ0FEzyzIgU5w$gq=9n~y8*^d^Q~i0QEYCe z{Cn9mMMQGNL)+T8J7bjxKld@TW@vcTka(KwYnP-qC#?V4_&GLts(TU!rt?4NSF=4| zwC-A2>YVzv10$BF_$+&G8DDeBQO~tjfVl_#vI4V-2PUzAE5E3)_tw&CDHGAf5=(4~ z>0N-j)C`Q!MuIHR`f2KS^WE$V>MoiXtXe1?bJje29-Xv6$McvbwKpxRl>B3OKjj|v z$3>B6@_}yQdv2h=^K1=w)S0y3DWQP8>5yGQ5AeD6ZpX8siwNXvu>EJL!=uwQ2r7!* zJmngJ=3<$i3Zbu8_GCq$s`o-EWeiYYcQl(TKND&}r0-VJs=)UuI=#lB6U24^>`IOj zz_jhpS`1>S_rn(cAf4V) z<%8f~=S^5B+RS^s4i&OP?dNElu&CD1eQzV~JcOY`6)0vB_a75Q?%UT27uUKyEcmmc z9E!hsV;Zx!i8+lp2EY7>TbQ~t4;P)RrL`!H7Vw)WZS94qdY#3JGTB8Mi++Px&7b(X zK*Z^KwEuaPB{#SdA9nzp`{SQ{b33M5~RLCn^`B*4h+NA%E>`_{9$iX+M3;FG`n!ZT_2-LN`nKC6|1E8TNlLcYb* zrHonIEMHW(5M(?ahGjmQ{axVZhmA^gIQal)oxE76xeAd+?Y#Oc>_4V?xFqstaPyKj z`y*Mh;%GY$6dN>d*xC}#@BF25rt-0#tB7%=&n ze+e(HBXS9P!IFTsD`*1rpe!0~!XL&yb*@1(NzNmDH55pew$$D>w)qWSpDt&skm4GS z)Ef*BeeUrKk|y0uw^SlmpQPI>Qsi8iMBj{PIc;N?1*uqhSNw$nF>=Z3yP#I4gRInc zH<0Bh2kvfjBrI=fGz>XIxEMWY)0s@$^97|}%zl&e&_Wl6gGHDPZIF5eMM9}rj{v@6 z^fDh*l3eUP9D__(f0lJT5aP7u?e%H01P>6K9n%RGJpB5~yEg+3O@y>kEpC6=?Ct2G za;p<;;d0SD_dn#@7YK6$z&66XdZy-kC!GneBg-aEax#YbSx6!A^G=j~fDE!-OL@dr zSm$ICt4f3iI}&UWrhp}7A0;SVfQ{?&)p%4lX{t%Oz!R~pA`>?Ou8L6%Da|7UMffWG z*Y2_)R^a6X2^S3e_X2>xZ=o*>o+qZHi$quSF4#VUAvSLLUvSGB55B5zJf(F0^>DT1 z-+SE?|2T1xFLlGY#mn8@d(oFyVxyP!qRAqrInCe(dS!&yHMdX&-H+WAptE?4{2(E118rp4#TWHN&d=k0dq z`+M7-VZibh*fY(J6$- z0S2s=s5V_RP(SCK^t%_|c0a#{T!Q+a7I3XzjDXr^Fb2E#|F8fq|A8=)XcDN9ObKog ziW0Vg<(nz;s>%U$waFI0%2K|zh&G6DG)lDx4CUSj1j4D1x4e?3xJ8)B zb-n&cQE26!vOV*qSf+HrP(}QrIOR$yOTu$x6;8D#36)_Co<{ zR2xczp~)5={Mv2HpEMSwZSDFV!Pq&dS4VA?nUwPsa2=aDDO!RL-kM`LA41-@-aqKq zZCVh(E)v%zX?5!?{UQp5TWAZ#qY_eKgct*M;KM%F$b{M6EeYgg?alfD)$535R)rWP zn{%mGgK7%sIjHUoGe9XazhBKi?P@X#m?yEM!6SvsI{vv*pNs=(%xGKgy+glGq;iXy ztyNz3pKnkyucX3~Bp*|;jzi;P4-f*o_*mH1rpl^OkuRtX1y#S6tyCMfuPDCm#97cZ zsQ4J#(fpw(rA|+4Vw%OJGS(lb)2k1-X4HaHiKf?R9=w?a2n?KNAe7R(wUH0pGl>XM z1^i-4O&Mb_K82_VS8m)vTf3D*j?gmaDX5BbcnTMLAxf}OKiAVhF42G`#fDJpv$*7o zBi>vOc?t84C?9McnmkC5rqf^TF8BZr3gZt#qs8KkWY*CtEYR-+#zq%>ys79bC{B4! z5OaRY)PM|GBn8@+sN^PzFRe7r2x9}a+mchVklh5MP$@4h8VO#(K^+$ z|MOb3IZf-C{cXz4EIM@fzEj=sUd}GA)f0X~yefsJ_Wm*8BB03XdLUz)Erk^>ZtG~A ztoI-*wDqb(G37KbFoNs|8LjW8<9V9-@bg{!kWn=qDH!dD6K1|JGug?%bNgBDN{MZn zRn#czY^jwI&OR3x{wAFK6hSjUG1t(e_^i>DKO;RIT&|@w*8Gw($ftFUP-RG0J2_nU z30Plz1~2x_94JoHZb_ByepSto=S-i)1}`dFrqvAik?@rCfi=r<9@-c$AXpRHA!8xo zT&A3h7+hW38duQ3rgYCPI32}(FmE)a`13_ z4B&3bwR@POwZwAS8};v2rWfF*#frxwEY#<_hEQzs+d0!G5(Ee&@T1L zp{_bz2yoz-jz_mZoflx`e_B0J3EcQpuQVYZ+@6dM^Pz=iAq;Sbfc3bDS)X)Q1qa6{Yri9 zaV8esRB&3&26}soK7%<69FEX^J|cwXF<=fSnVgrCpXzN0IwHZs@!WT90&p%-N2m;ivA3I@aP^DD`{G`k zJeg+HCz|w9*rf&S>wap|Yb?ia%~?ca<6k$?B87gcRsI321EZ@!nm0y|>do zcTf6hqoz2Ovt&W9=|PP&U4O4gZdLrps+T|L&_xK7)h|N?)Ecc+)mkwZ2+^#Sn))8! zoY;lu0TVj=!eM4jx6?Y)p*`0cZO(vl{TjT_uNxu+E3Y&`#4~D4>ra2^Wf-0AsD+B9 zxamqS+kEcUyq7Y{15X{DATP1*?>kuQLlv0|;mr!@$S=wto=&vgN^46|tS94N@DC$~ z9CdEYs3|b^C%hAd!iW#ZM(XzCnTe_3laS}OF21irTgh10v(AU!`Jl0i`!oahKJxU& z!PPYd>Y_6DYxH^kcPSgXO~(Clp`wZy0TH0aR*$^O{+6mMXo$v+*sVi=XND#h)qy)Y zF%W8pUi%TM#GKD>;Ix~)hse*dy%%c}KIU#(PIHaPPYrD^V~0mIVTgs=jfVvoa%?8a z5VA3yqY+O%P{{VqQ!%ch{t`Rv)PDuQv_VhlHFZihO*&uIhE+PfbsfdKW}>vfy*$pG zdF(YA#kj!V2Or;pGppp_emx2tL)#%CKbj<1>i=wdc1@JHMt6^?2}65-p>H zI!8gT&mM)BOJo*?(YU!lS-|k8Ur2&fk>mqD3=ndb9w2~nr6C>gwMa$7Hn&JcZT`-h z6f@v_P6l}kV+Om(PqNih3S0PvFL7<52JBd$`ubNfNxr6Gz9Q-LIM=^4>ixGkVCU$k zv8N#qR(NQ#D#Apq7mT==iin^rf5ZEDqsht7N8(UU=YJLMO&1t|% z^3UoxluEvCYDuHldRUZVswby2Zlw-UDFy82JaSfJLewQ}vTZTs;In@_qlR@01^L8& z2Xh5rlJr8PQ-(zfWgcx-6mro?&Ia(6EC5>xMraTkoH6jY%2APAkbKDnY&|IWB!m z4>jDO?{?slm(G=F0NOCl3~^{(swPyh6g!r`Q;L$&CimatJqd;GV*25T;M7&PT~j11 zBrGb1Yl@H$dR}iwFEciw9~V-g;uyT)@U&Lq^_T3;ZnIV>R%gE5yC$=&DIb?A?ghdr z6wy&BhWNNAyvSrvP`}Z9=G(FP-HRfzknG;{!w0{y?$D?b2l~ilPan3=3*eC=Bh7Z} z__F=)*De0|DK9RBm#8G)c01x2eX%A*G8bSZ;4J#k6buLbyqDgVq$@u+A<`MoVj^S@0?d7$?74%umO4srsdzyHeRr5q9z&!A}L zq;R>+!>O$j7wa2FgMm?BvR$@7@LQNIp>R-kMw-FWhUd^X32OCho0$6dCXk%3szh&9 z-K>@hDhHeXxxr{RbKa31wcLM0ak5@?D*N)D6b0jxG`jqU*}8ZjLAO6k6z*h##ii1x zid-6d;W(C*!D3G!d3~plwv;KWN|);=adrOieD`Jm-++3Lr@fn98KZzkGvK`FJ3Rid zjK?;^2+~7MgI@qz;(&^Zik>Y(@sBkL)qp$W8ga#mYRF)}4HOFp)7u?xw4$&eP3mPQ zXbIt>21t?2sHbHf)Lr@2N+R+9oaw-`|6DdN7A0$Qq?~YOV(JIy%ikrH?iKk1k={>2 zGXWJwfMKGRJcP$$g!&xbfB_-{bShpvmggatP8uFo>SRDCO8+55wZD>Bw^XpaMc2Ja z@aj1lwrCcWiLu9Y;!S8;cWyO1K)g3Pg}Tst4kvbIwI)gGEy8*^X%`awGG-i5`$MSp z{97pCxq1XQzdCGjhI!QwGGyR4up?H9_bL7D>poP62MOI{Snn6^;gemFsm9ai<>60H zOvulVj>m@+O2|hd+|I!4=?CO{rNq((jmx=Yc!)xM#y;bCwSCDr_h=KxXFyeezC~so zRIK4t6QWEtD0eV_r!6HD-8#eC#ofat0yODB@-ie(G7|CCQ^T*WHIkwLIz+ia9b|a{ zr2p+-@NzBbH=~@C^iylnAD`5IbK_V$f|a|U=V;2U;enFQl<^iL4`;dVEn7+YFlX^= zb@$R)=!y-s7^GQ~`@XN>hur*FkFNL+|9rW_cl|FUkq|72@y#Sq+*EMoMzP2MT{*Sd zOWQTG>?K(VT%LcSZ2Jw&B97!wyRD-a>{vv^Q@0lP|ir_t1>I@6#D1Y z%TLaSy}&wRe6IUQQ8bemtrtkt2J5;ji5PP7LR;>sG-=FP!U`l(u)8>eXL!SDTwX=0 zO=$GCH8vJ~;`}_p>y=MXG@?T5_oX_L|-#usE zY``t&WB_I4I@0JYqK7k|jlaJmQfZd%>u7Q|YP%hca>nI`%cQ(VeLlaJ~UW4En&_(O190|GdLkBb98D_}we&%?M* zCB|8)s;r#C4b9{RR4{A6~)q+n{Xa)9LbEA2x`%#^leE?q9W8g+xhex){1 zZ#1L%k2w{e1>Fy3$`|`o8*}i75mUh0&JvDrz9s(R*p%Amjd?#E%B}90)Wv^4t{KQ= zh_@RiKf@wBe7^60ILx%Y6h2kRJ*sQTberClSz{m=P#jmy zI#d^pr|Zlz*w-9pFA}nJ*6-Sf6bsUx)N@2i=3r!8|9h5YTAquWGJ4<1g`ru03=hkG)<>J%?bRZ&TCv zPE38nPNaK8Zx$w`uRypAc9B*wXXgjc7GC@dG%&^Zyf#06v#$O8UzeWo)1qtBIc~@a z;1XfIlDG3*@XczS*V8Z;@#>wPxzMIJI8BH z5Z?ixYd2x{Hi>{|D~W4mzF9JZhAt!=M_aJ`5fx?!K;~dan$gaMAwM-*aet>Q?3(K3 zWhsw$5gL%*-n#WrH96G(2#j5WZ9KgnO3i?+v+M0|BdgzOZANmByHM(upwHE{mEaL+| z*n3Ou5U#p9;VWmWtf6!Dpu`l}h>Tcf=CFJ}756Ad8KCjDDG+vv>AAVJH1p`vqNH^9 zYx9H%=Ac6*boGVzCm$Vbw9HWm?0q^!>%@ejR4{+&@32@H8w;9nSwP6yab6Pp+j~;P zRBXu>G5fdWQqDW=MQ9zXv$Zh_Q)nZ%#>*3~Gvm+5PH!?{u;*Um;J}?avo(|6R9hL< z4mY_ek8?_wq?~8D`yUoCxLWu&*fjQCF*o5X%b(_VLl%!D_|P}1+~Qe~|BO3|cI`hJ z$4{F4gR}jlK2mZU2&tSqrroJJE(6&ZTk(*-jfA{RhSn;*(t zQw|qpNZy5-&}XIpvAX-@cz;X+G*2+AHH9Lo>W2UP7m8dYqH#u*?bZ^q(U?dS?(MT4 zN{c_t#V-h(6t>?&5EtTVhof{Mk&AgLT9~R=r7h_caF?7lHR{3S*Tsi3=Bj|CgdP{g zCOlwPLL0O)e%millz*2fbk{~ySf>cyafho~r@s&brhhf=c!|0GCw_ZwiYMW22^SWIDojCcV~d?R6UXM@ui@S=z^U8)Jf_n~cu7#h4ge!y@Lt zQ%*`65l%yerR_8il)Qh6GoY`v>qBKhSOc$vR%j%l0>vC2j=Yi$Wxi1a2aK<*En&jq zpDEr%{I+3EWVL$#&6M_LF281gdWV|3`{!579=9;z)Kp=_Fi}xFan`RJicPL@;ozl` z6FBL*?;Y%~4M;}T;aDs1lPQk zg+UWT83E}oi-^>yn?C|W56Gsz#h!YRW}c~ox8PS}`-QW?rp7=Y)f2X%h61qeIuWh}u zsH~(g(If{&1-eUnH>T-b=(p#whz{4ac|SLrAB>%fGF zx#V<4qV_C%X6^A$ygHxtGRr|CGpi(87FIH{KMg#i^^p&U-#1;lqtS>G+r;r=#5N)+ z*yEp4yg=bH7g9JV-G9d?>gQ_mF~h%cQeGUS!N1BX=(^73;RzuZah38L*~#khh2r-# zSd$V7pr>U35USRtXdR8M$5sGXN$n!<1I(Y{1nYze7!tsVL{L%X{RmIR&fr*M5V&OAZ?#T{4f>!TL>y`d2XpGAWV1mjc@U9y)|{fntatV@ zwwiYtv6N)^Mb0jI^$DO4NNI|^I3*G&*3C$2Dhqa=lCm(?i0eohcOCU8)jEX4i%~M1 zHLcWVF#)GTD}K&Zms>(T_MKD zim)(h)*V}-pgC?;Jh{bMsKWC;TcOALWiKZt$p zbZd0Akhe?#&s<^HX7S(kc_DyH2t4fUDqb^DCDNznb^EfJvg+ODf!&VbUcTnO1=a{1 zLP`ooqwds|9F{e|1Y@c(o|REE>lu8FS!*}KZs|2_2>BQ@Uh!)SE;MP90T*->NZ$32Zmu_W01 z=!?r#{?d(%iP)~!<(+ZYK|vlpCTLlxFT)mvZMGR>x4+s5JMI>IdaGyO=&W+ptk=~` z{OZMB4$jP;q@oeIbr^Up{Kw~L@ctpN_3Sj1mNM=TsXkD*XM~vhquK_0Yh=d*Lev-& z0VRh+X6=if=-UNB-8xJ56y(UPjFCbNpO)hm*cut$twO!VbAZ8e)gsu4@qnu|xE`0` zRLVt7xDjYQJl`WNFqcp$Y@qxz=DTFb7o;luCBV0wjJSSu5Uh>9Ci%aza8VtF0)6K9l_U5Dng4k?n!>(6qk+Q|IjzRC4Gv%BCZQ1rW++n{SU@<5UaFHco~obz#j1cwg}U z5_}{J!0w~|%DL&qj51F>^){IQrTZJVtC+MhHz65Tr@D4&8}M`Yn^E(iTdIhYyqS-2 zml+9vz;+t{+Kg8BVFFKukfZv{Zt4DK#19CW&PP{Qd!SAp9@H-zG*QH2bU2B@CSD z(iW}`%IZeQDOYJI+^5X^WhtB~>VRl}kHSUtdo>N4X%>eI5Hw^;$l4w9pr`s350;aS zF^BdK>wphmIu2G&@HbSkF)G*2Bge8ysRj}^U~SOFl;0tqk4L53*7@^9gHK7;KAp-8 z7Iv~DDP^6JJaz92==Lf#cZ^y`2ZiDkqUxgTVn97|n;%J%Nvf*e%BK8NNs0u6FZNNF zWi@?bg0jN&<+Gx44xV*nR`(TB;Y-P8&S3U184JQLi@6a7_RWj72H*D8VwWkGRTGu- z+z)k>QN|>oS|j$&LHd+Strp%1p8bsbyNa=^IqY9VSbdsK%~zVqkHvJ;SXkNkJ^|yc zO>QzN731uqkk`yOCc9GneKiV9m*w2*c>`OWTt4EWROLi#E#va|;24As`HXxs3HoY! zMeF=GiasWT#^(~UiNGXl>E)Dg$&G-9^_W;J9Z6f)%#d>t`2TxXt90DqEl|R8NR$Zdgyy4(XlZ_mZtZ+#w5!#Kq@W9fm2ub3o^n5J zVFRgom%`YHZvI9FZS6sK2BT(a0qmuud=2J)2?q|D)C*tnGC!J{si2Nqb40F# zRlWv)D7%qZxx?|2FCK`xdAc2qWntB$mjGAT;xPd-7lr%l*p12)Maj4ovasABhb1{N zMl&(!t}6O*QflUbPGMAdAxd8iBUwD~gx;m0Cd+NT8BO(>5xXwXf@uA2ap_#rqOydE zeVu!`HP)G{PCOP@4$*L|f1IPxmROjVLCz3Ik{1>>Yb#4_hmnG|BNsunzc)*)=c1(| zKVQ$Z`VT0JSdQ%^*u^tz)goH_#T8(vwL!_b_@gMQJbU6fDM*Zo7aW3>LTZZRMKpV2 zCu>qM7ZocF)W|WnaLyB3k&~QtKps@PXnJ4*jEi(?8Q1XVp8t-T)2{O$=!vzAR`nUZ z3h69*W=`P303qz+?rytNga(8_=N znT@3&z`lp-+Yuk{muUayJ|;ep5+IknPX(zl|2R86=1~?s@o{9t+8xpy6J`s*pOl4c z-LBUEHwM*{j4{<48PQEmP(1a0vCu8Vlw7h86J7FkMzdhd}}1AZBjk zOPmGEyhd|9Z-MXQ%E99bHhM^y`tBolXW*~tjn9J13FD()1x`>$6o%yxr#=dH5Hdah zQB0a#8i=vQJ2+zbBT)Hbq$#?qM2d&vG-JQ2WcnTh_3`xry*zACe4sA(qhwI;Q8I68 zZ-|xKLAGb|X;@hG)@FelT7zTYHnV?zo<(=+^iN6;R3Y7VQ`*By_)+BWF!lf^;$(pN zy3V9T9Kd`mzILUClOY9UHo(Sm*TLcfrBeJ410|{@Zpen#{Dg};#MBPvz46Oq1s~V#<{DXWQ4c)c+OP6}Dr zm}orq8yQ=7R9_-~QhA|bDD$s*_yxwjw6nE5z>TX#O4ul!gO5W1Wb7`kt2e$5}|7N8LkpNVL3C>>&MEt%`%CDAdmY zR!CB>_HcGinN>CUx)&>ox&o&Y){nT;W~TMWA1PDc{(xt0`Oh*A7yyc4`Qe`mBH9y^ z`!2$H!^2eO{)mIJx5ZAR#RJyqcld@s+q}^{@OL6w?x-^s5_sx>#SloQl$_r#uWu7z zXSIOpdP{8WN&nBRmpA4``@7X*8wukzJpAeNc#6;7F#kIz@Vp8Qe7e#7dn0?w>3t`+ z~HkcbtKN>EZ$cM zwmyMETs1!0EG30a0!fA4o|J(uyFZ4yY{cohm-@g*H7%|_Y&_62o&qR~qh z=*QS6Cj*gRb@fS$s%9pT)Wi$UC%E*$c^NpJaxv2-#Mwj&iNYO)XsNUxD678=9}ZO# z%(b{5;diJTRilT8(tv1v(}YpKWO5l06-n8%iiNusQ}8Wwhf7-xyCAGT_>m0tBxiT@7Kbd)GR@n7+c*pdNp4wEGaNGd3a8~&OQ&xT*!vsM3_tLsdo19~&A zyf~(=Nr99JeE;IS-|+?!$E06AaZQEZZDac@aDbQzg?x`$YOk+2|IKNTcHJH0Gyr+g zgdd_p&R^*~gFvW@q|7h}LyUxyy6TcL;6-coS$ndjjs*3JgHD6b>ds|4 zJ=IhXHA(JVkQpeUN|(3zygopDrk|Sj{LimQucg%*ppw=Iv`Tv_OY~<^d{|JsdGL#m zo`Y4Yqk~SzN*XnWW~QTiGJ&t9VZ9+0R*M#)Fd4#ldV`k_?~SRw*0HP)?k zil!l<6w#B@2?|L`!4*=}dh>B^W$+C?7gmFe(vk;dNvP#0Y}7jQp{@SThD`pUyVgcmk;=>s&+)X zy#f8^Vzol0&5@6_CWG*OQAm=6@FUjnwSO@kD(bLU)-br|*g0qUSDT*ZCb~QLI(hIA zY+;V(Z>KFLEo}7xl`PP_xFKRvVZ07WLW~!+f;w-+=RF~+;e88R`{$FjAkEgJPp}ze z8ikV*bSPT~QN#^v2vH^h#OKEFWi89XN_D@=8?Jne@R7+NI*SN;gAnn7nI}mI5D>Nl z-LuO;3Z(|Vv7J+cDu7$EVeZNKDPy@>;7=!F0UjrA3qrSwjFIeA6Z~$#k;twaXldUa z$IWitcBY5adgglvpl{R3d7FlfCSEBp{CH>#nz&ZiFyxG~e)R*da|D-b$8$gAi4;Wa=eaw^$ag=_ASQix7#ND({XBxLJoiQFy{#@rz%?UFK+UY$7=|28m!<7=WE$iJbK(u zmRJl?TkOra{T)$m%Qm*KhOH}=H+QM=Hzrv)y-8>>=)6HclB44XY1iw#3hiO-qJ0E{ z_zJW$=cXrdM{+3c$TGlFXqg9Lw@=wrS+|>Q9{yvIcCUdn0J_b_<|d?KkQ|~nZ}0^{ z7J%GPSdvvii0m)lV*a`$?qouq1pQ-@N*Hwj`MTcW2K}me=Ikx zhBp4pA>UZ?WLl>r*I9Ca*)IO;LHkZtC9QWC0JFiR=-}z zCYT5UMXyXYyxZs$>CFr&iEr-zO=sso*NyZ`a?pu_&($tB-kv{5mypqSc?V!f7oTLC z+RL(|%7`Eqk9*+QX1D7%NH()V<1e~G?TN{*n%SyD%TxLPt=0!tsidi=A_R$pxW8tC z!T^=$j+LJ=+5X7n>wxGSn+Bc6N!gNC!wIAPJdXW5jdOD^gj?xNlkYfM1TC^OND8-K z?KN6Kz%38H1tJDYXi(4>M42pDh-p}@t7;)!evy#5V~*7G|KBoW+kc;aFbQ6dw}*Xw zklQRJiWu6mT=k&f_;6C5_-q|WT{qk#K2cq9mCO5wk;D#&9|9;{kB|-copi*u^4CQf zj?kf*BoWll1H5gq%&8XgzsxFLe1HhXv+rSdjkme&*-s+R8J^D$okgTO@{|UOU-jdm+#2g|H@KVhAr6){$~Fnbz>8X?;_4tf z8ajk&w{cI_P)!`u9vGQGybvC9SQVC3@@jTXi;AkXQpa54{c`FKDpyn-J1lE4>GolCsSe9*>fgmDHstnA;m`);#f3w5T!<%z7YDhhpQ5S2%h+2s9^Tr|_Aj zSgavPxsSJgNA~~MVfup|pBQjS90WkNPtdT$6EDRLCD4KW^yskTJm`D=+u!*#Po3Gn zaQj(}N=E(ZwH$O?Y1|UppTx;zg;UDsV(IM|3_ol@IV>j7AfHJK>4G>9R4Xp2$veid znGR_;oj)lX#c$ham7%>ipM5CMOCBXNwy#xRt!n|Dmt&DtVBQV+$3=^h6#3Fqo z&5d4X;gIz#E$m6RnP8ryqDMt7ds^VhNHcE9y+bonYoWV=a`R_i;i#i0_Ux(iv}`or zT}Ms)JVn~fE@^Uk%@`vcbWRc=+%EgO-g4ya2BiD)XeN-gw_k>wofT#H?w!s&sZMw~D;xVD_;Qr9|V4jCmR&KEeq>%`Vmv_hK z;&lP6*B~I4K5DT;6BngN2tUPixjZhh&S#7nzThaL1Ky4f`~d=is6oJnxEqlxQ-o%Y z!1?-wCDVeNp4JlWHdp!djyM!Ezz1D1pu0-5o<7R(yDsG!38a&WR@@9#sh-(V-V>WD zmi7Mzn|e-YSiL`XC?)9S$-_ zYFimGU}F2ohIf3e_wL$|0s>LoyVqtQ#9x?s1l#`JcyG-Ba}@?1c!-;K;}>~S}5y*QV* zUCNNTSns_tE>)GAu&lJI^Z@r#wVfUiC+5FOnk@$%*HN^;&HazCcz=>3 zsVn$UPY#1$Yg>dlk~As&nvqH}sH+Bq>%K(>bP-;1t7yx3`NUI0qu*u357GxGFrph8 zVxr(l7TaNZ$Pj4}tJi~WYqkJ27h8(&?S8tgpP@eg(#dYcRD59H|J;>zZ5_B~T3(O9 z^XDAb@v%v7t{JEP&boWwiuYx3nZyM}^^FJfEFDUd0n8{{d^J$F)H)3yHNt2FvQEFe?VEk6XF5K&o| z5^}GI2m*=WA}O|6ti5cPO0O{I1?LRvRPpPB0oX&{Fo-&3KGvzzgT0bQ)SFisx-4W1 zNxg?Ivwk`c&3yb&5)pvPyPlYGdh2^FC2DQGPmuKaB=kQvn$ES(&8d+SW%Wrk6aAH2 zXiIa4@kzyx)z|XOt|lrayJm+k!0=k1b~23L)gI?P@9B8vN|J!$Bi93`l`jNGfD% ztcuP?dAB!`E3K+X6oG^HhCeu`BDNo?a;DBl8~Ri#bXp_Ox?lISuIpHpGa(lrR&bo2 z98SYGni?nHlYY%dYfyJ$h5DoMKm9t7{ErIa2O$#1MzulC)W7q8X|~ox%_^XS-9Er) z(kA0V0sVron6p48wUc(si(+RK{dK{?0P>niy_9nyJXuGQxJB?6a*Y{rC%cH)GMx;g zp}d!jPChfkxTshD%0RH7%c%=*p4G`;`e%D>V!b7dJ$b7U<^CVj6(AatE|n^i!vP z%XcZo=afuKEPtmI)(OY%S4h(}ulIgP_FOV15E`y{9U`#TITo{h& zqfyMp$XKYU>44J}*s|P>b>9QWgh>WPWuyj%8U(Y7+9s zA%X*7?#MJ7P_lh0NGU63klf&hc@t;WrO@J94q5)#4}HWW38RofMtr z_v!`K|JaC1`HlcX=+OA1eOzt;MwGUc=Xb``t;ObZX|rdWTY;7$wt(^zeg3&< z%yo`1Fx{sx)LR)%#+q$tkl9uUb40-YGB=~_m9LYo1n?Zzg~9V}HEneTNW#7eg?s*Ed#u_XUUegcri zhGWQr1M_U^sGtXS>(n!LJf{A0)1XlXqC0KGp;aRlBcm|T?sRxFUN?&qB9Dgt{G%fH zxcK*}*67e173}`l6)7xWTk!|~_HSVCxrPcfu2XbG%mVj9KqIOeP%WlsH>m67BNB`f8aE=$9 zZu(DLV)9Sx%W-VC^~iPllSq975w*aPiJGONSbFCOEj1ra8vUk5&9Jd>Vfk zdF=I3Koq7`$HR(EnB3b|E?WlnwTglneaql&a5Iap2!6U!l%zam;5sV3+;YCQTBaBF z`l|9OG5-BQ{foP{&XHtNoO&DP>Whxm^?tFc#=H#N2gS|nB)?P&3%#G!4kR?6Xt=nf zQBh&Sq>y`8ak)Rw4OhV*?Rb%ff~8X`R@VS@?gsxl{++^Sep;ZxLyPk(sJ9_BsDbMA zmUZe4{^3KUT<9tuJ)OQ-=Nmp43f|fwM`^tr#iZ&dC_n4L`#cOJ*v4Hq?8@XP_#q!Q zjOirN=+*9cc-&r%=(bTRJdOmX&_}xM{0VwKwiWc={smDuYxj7JvJ_y~Q0Gx=uY1sK3MEL>w&>AJF0JNK_M zXWnY%+6bTy11N>Aev2K)^RAmm*V4BM4U47{wlOaCrc{P4yhtx|R*|6RH&qWhx*Zf) zz}+Y1Am2{4v(&vdLlAMdteZ1?L_mpioqW1f_1>o)0F*$l?E>Q_ArMsvH+LNJnRe+w zFwV)9#9dv8{_VMW+&s>DS|5OxJ*Y}2n78hQI2tStXTBrPA`gsAoRH` z2=&^<_v!owgF8@%ja#;GUInL+*#O~VX587kf%CXfSk%l?V<;Lv;wOO;ltm?s`h_^|kEt0&5f=yd=c{xUTNU68rZ?qk8x9f^4Gk*CaBZ;B%0J;Q z`W>6Z2ShXhca!{#067Gg2fqca#Gd2tplYx+6Wqo-otc-k$$_+>G>?Ek{bA1JX~bc; zt)5Z9z|L8(;cpDY%TyL#fK8`nxE{!GAlkt;T+XstoCX&MzE$aci{vob+)qVRN~*Nk zPcorfOh#PXr@;r6e%6*)(Zo^4L0Ow)-FhMuA5JFJAL}oXJT@A{v|vEQGlR6HO%sHh z_K`_Ik_z@2vLC0WeQXl0_J^2OI%|3jn;2!Kxa&i4^5SS@W?3KK2S_8V(sytC4!g7+*aS`te1=^ zyIW5;`ETLoyPxG5s%Yo5q0$r;T^9Ny#UR{T()o-=hP7H3B=6rbGU6?z#s!GE{YD|| zvqvnt@!HhkzP3%LUkdYh3p@4ZR^(>!1DAD@%?23d06Wg$YN}Et0g}gw^kB)P4naPG zTDpQ(n#Wcn!!>=pv9os~(>y4v2?ZRMhQv1o9a+qfKdmUa*OhA|d~_0a>Z3KTPIY!f zjnblB!n3hDeNSMxD@*rq19dqWYyb{am{QHAXIpj;-BPkCHD!TDLc++JLf6K^WT$2D zVDK{aY6#Z}D{P@W?){3yKW?MC{JbHTu0UJA_J$1S5)21u4La{9v)Igxo=TaGF6r8! zlYu+FvND6J2URDV7Yqy5v5tnt|7}{dI2S!ZWf>hgH*)MlKEE|pYF7E!E@e|(-CTb! zK68U-r7S7#)%_vEB_@pi4-;mi?014j6-RD*gl(ppDNH6!4OxAxsA_fv>xZ|$z7)BK z^=f5$VM+AZ7>hRAAW9Imx=rShXcrz%OdzbL2lid-qZ!oND1KozCwOTWQme8p+D;yl z@Ni!~^e|uF^LW}kz8r~f-s!^Y3N*@mlY2P`K)#$9&mJPG`T^f;*p15X(}9`&HX^v{ zJZSrH#1y+DRqq?t_;#PWyB3*?MHu?Gi$wmqHHv}_h&NWo7R2+O&K(wpTl0sY^vV&R zmNdc7>nzsiZPjb9x(p;n~c- z952yFA@xVzfzE-9tJpW9f0M(jx~kJ$s8>LK6eqm?wmN(h1Yt^quJ>os)P6-GbzSX;aCb_mszaXDQ5?l=8bJ?y9i^F7h_ zBzp56D8Af4TrghBK(BSV3SXRdJe zn7|}BuEA@~^R6g#FqrT;JY863H+mpLxa!^g|UJPBy`U9ns zsjTu#>irqHoJb$~3_$hvq|(Xpi#9ag>Fd?5F#d&@^XNj>_ih6aupN2Kjkh(OVCT~f zIv$ln3ex-*SDnC2Dp4Bcj|o55`KTP&ZnHKE+2 zm6oamCyho^W|P5xAo2n;1UNwg;mc|?3D7yz?C)3!I|VV+?*$UN*?M;r!58pUOp-4{ zQLSU=!)fi`V`awo5ue{7MzNId#y4{4(xGSAwgvd}&Jr2~Rs^GWCDYFRc~wi))Y0&I zO9Xt@^;@eg$Qs^L*%SVRnEv2StJT;#clIEyFg0zdZNkJf8QL5=gMKeWn9U~_We}}E zhp`~G>K)MOcnM3qO0tok<;=g9>{4^s#Bdc!ylA-8pT$}NiYZ2=GH~-gTb$4D=i6n& zL9}NDUsB1M%yi#1rG<{JtVdN-PPRB-`c*A7;6Bq5rGGphbAIV^rgGHSNOA>Pt&hr_z9v$jZ1ajh2;KRW|?yGhlhVSx*pQgw`i4p z;I%b@qDr>%e&8eZW2;ZUt- z;~Z&iV?OGRo~D#V8jxC&Zte5&oUIBwsM%~_QkoJEX2MABXCO0zi#Y=*HR5?JdszGY zBNsl}B;aA44_P2y$>O3`bNGlt`R41rxIGtjrvJ%pQtnh92n73?lns9;=m`TE;$gO= z90jO1 z6$w)88x3=vk%em^$8RiW(Y&mPqN6ug#$6-}TKl_c%Vlj#<#gyj=PBCgaoyn=i+&zH zx)v;@v3c<0tRNd7N?2t!n6Hvn5D+xfqUg%gD5#kydAF~IeRTa>4_vXqdu3whm|ThF zrZLD*U|*u}PKbc0b$b8d^tI>A0dWOU#@Orc(DxK-W(T_?S5vKOx#oh4G%BpJubDSL zo2r7h+pp)1Q>Kz-*A%15@8~x|si_5Vaf3jQW5F7M2))#_Ae0V8_aM8#fqiei=B*~) z^F#4ad#NTlxsf$RB{LVW5sVo8J@#PrdV)pue^>yb%mP7V1lIZCCJl1l*V~>CsdZcC zFeBPhPiAPd*HO|S@+it$1Mx=_Z7E_gVBPLJAGoJVGY-9&+y*a5RV~n$ciGT|3$*^< zwF0M>n+@KsiC!!jncylh4KaI#y_-q@I<+0r*KSq<=}W{iNcQK zN8R>T+2`?Z{RamV1vAD+wB?oinev@JBJ*}76E8O_ME`k);5VSjp=Cc#P$*V7x*ylI zFGT+V6CuH4AvFFz1{_oFRsGW@9aQ2dTP*_+9gQVqk4)3CT$Bn$pp|LzA2U+?eal@C?-j3s|)S_^p#exg|6?wZ*a z!ym6?&{i1)w0wLs6MgAK44P9O?X!;u4P^a2DAB|upew;KGvn#qmAQzp#TCAWODK#i zCPqa?MG8lN0iqHGoSA*x_y8Eq$nLip+h$g8wA6S$j>9+w6dwyg?`!-JgS+nHzQ8Ha*1nQ zW@~*b-)^R3j<}WcyiQsRxe!j7Cbb*LN=BP?wMRCn?}(lpMTz~Rdd#DSY%6L4fhq$> z!of(=IE)}v{H$NN$%Vw`GOUY5G$)~bK1}hnx$INZwBvivjYqD9{6QFVe+pQVQ~y%q zsB#hGfcpQCE%dvBP;pV)Q*xxhm`0>0XP zT@L-2U5AwY@BO}i&vWJ?brj;inui(_<`WF`WX|L4tRB&_QRA~L-~L-9U~$0!UrKb> zngU66=Z|ziv<+eE^2D_8?=A=U$nG(PA|J-VY^x5G$!n zhGdQ6Lc-S(H!UVEl0#A#$yXWAF22FkY2e%-_TGUDsXh zaK<%D=F(brbRR_$)pa6-wgL3O%xxG{x=x(%c^ffMQFb5_)|Ri}p!v)0xURz-ML>ff z!FF5}0+r9#RbYF$f5T#Ak||1O{RM<;2rzR2X65PXlqZkY>RBU_G?AcAImV@ySDa=B z*R2WN%I)-1gFrwerqYZ&zXcF|qFo#wOqCQ%jvXx6-grabcX$LneENEQeAo zonF*OTkFx_uzK-J#2Im8$DZ4pr+JGaWtcPfr3@Y?z`O#bQ)}dFGy7^SL2{ zQxTM|5rnXv86CqV_e|d|NO*j1x4}=#zkEXQFf`4i*`|^rm5;IF^P}Rk7^ybe<51J|dliAAL@Fy5CfD7RpbN{3v4d3Y_7nC18gi9xTf<5NAZQJLTQRj{xa|u)A$#DKGmIE zE>>a$DlNOkmY^mIOKfuk{ouNJqbm;ehbM$g&q$9j}45R{wGuJ=_G3*D2Zzc(; z7>=jPwdGRapV=mITBX_oErFdmQB>MkV;Qi{=DM7nSd-OJZ^Lbk zVKCgc?75(DJ=1Tc&Oe_pPNgn(Vh`9-W<=e6< zzGC^yBb)!40p1rjd9p08NOdzHrknv%~D z2UOUIA*9RNfNOJYtV_kOYFlm@1h-1abQ4_lrkLXrXI~B-GUMV>#p~mO@Nl8XNCDq8 znDajys-;>M3<@b$%=Dz<8Uvy_R*PoWEm(d}YQ%RMzsHtK@` zU#v^m9%zQhzoyhc?T*z4<>KNIg+Qp`s7ak4ndS7Y%2;J|M|%vuh#&aDQl7tb4=xTp&7cF(2d)sYNE%fqAYVoqa^em<-DINgg>6-dRq{h=P#I{>^U9l^T10ZA$gPZfOC|bIe6BzVV~VU|%T~xyZQx z4wmcotb}65&ldC)%ALMBhL+1MwY4TnwOl4C^pR18`FDjqGzQ%-#Q(teW$JFq{gyBE zq{bDnsd8V+^`!bnQNl;I>N7V7vJ<@WnUKyZdDz>S_wp>!87cl+FCoOh;kvyDpP?;0;~!Wgz)BHo$0`EH zK!Eds=J9KV)C(@dA2)g#NS|I5h_;wwdp>Z!e|+(=Bmb`?sGv+hT3UqT@2_x69cY|< zPWm3-VY0?(nmFJU)=|;xeqa6HFNcDp0c97%o2knkm#V-ud}=1S1yYkeXvfwA#`!3R zoOH|Cskg>~<5J4Bdga%M8iC(gIWfBA(&UP`grVQCz8wv0y$-iKW!4C+x)$j%V7a4g zi{@Rd*&;Z%RN-&nN*QkWIHQWV`Giwr(TeZLs+^kuLI)LVI_U!9$mv;0(GkGLz6oUN zJP~i@L3{l>tHo+{mR>^HcA2i@M5f-`UK0K-Ch>mi55w%{nd3iYxgq?Oqt$N|=U++~ zQp!Mc{92=Rk#d@q59~6skHT!L+C40$g)VZl>dd2pcVd42M+BpQ_(3V)#h~MoBj=AI z+#T?h{9aVK92_);w*W?EDRbu@^yocWqjJ?;+}b!fSPf$b@A(I9tMzS*jt3b#Q#%Vt zX_G7J?81fjZ}sKXifWTvD7pF#_zwgpW5owJdJx6!69c?~Cr<{P9@%jgpe$y&fagMdvbkt}%v9X^Z?GNOGwVFGk~ z4PoM-Uv0k=34$^$KQeYYe`RS;H2H?W^XoXJ%CjK=AHs?<8cM*feYj0hEdsyz<#uy0 zUqWE(pN+ajM;CEW*H=%RijT{F0$WGgct;68Wl7XjjS#)vDlYCk{)nUwb2mkxGX-qk zAX%g0D&2Iw)1fYfN?81@n-qL)Zw(Dw$jr!g+Z<8~Gy|bC6Y3LjQ-6MAD=a6i1YXKT zPuMqjnD$-FU$ZfO)_4EGjw?;zuk^cBc&@Cej6c^mZSP5dwJs=#WnQ2Lp26WYG;3h4 z#LCS~v?UAYU*LxW5Yqop096oXh2w6tMXG>Ky#nHK2$A^;hCKgGt(LxYOHuF-_O;rf zbuAgl(02U2RzzM-YZFFc)ow-uywMvwgdscre&_H0e-Fvo&ANRA##!h-SMnV*7X6$vV`xd4k1yQ|z|o zc1~d)I}*5*%E!`mLYPf9{fj3g06TdvLQ|3p3Mh&fAhx!Ml{BD?7PR{XtKlv5!<@5@ zO%43@ARUEh%wuSeEA)>H($KhFu6l1w4V-uxH^aoX1Zv>_+G@@vtS(iWsIm?46E$(Z zxd*`bYut~8$A5%Y<+*eufz-I1{{OAjbhTbc;?aFn9hjD^bm~XDb?@u;<_+2SN%FxN zqsa~_Km-9EjB$gRpapzzQx#s_MNy9O}Fj%Q9=nhx5-=6ar zx}7Y?@QwO!;PebhyM&*G%Ku>j6?$GM_+!uxH!<7kwjVIY@rLjP0_lSb2sSWikTlix_lv2@l)RzV2n>V-h`tGwlbVQF!5-9~XV2TKk;WcMe z3JHTX?!%%n(hmY$9}dS zJk@IvJ9^eDCFAwm6(Y}u2c?aY5V@{f+F4nnrF*%L{E+#0O%P{QAd6A$yGP#xZgR9{ z$gSy~1k2yL+9S?bZ;A4h@rGr%4HogCz>{}Z89?0^dc-842MRqj3{>k?t*L_e&T$?( zFZ}7eW+b_9rK51^sO;+#jdkQ+@|?#ZM1V!o%lxqjnt)u6EYcz5dyia8ioRsHMe8Kz zkB~ouwvBa1@7*sg=yl$SL8-H(!;gB_I^4r+k4xT&m(w!nF5pX@MnV&%P~N#K5cPgT zmwFreH?Y8LtXTwO0Swa^%pe1x>s14SQ*_5U>+UxMW%ToOhHEwu0~GyMn3_bNuBu7` zRY}hEj{wfysOQ!xtPaG_$82vgB@jflj!VYbi6{Fk3*bhR*vh*2+0;4|Ii}it2)4mg z2nc&25KgaB7e};4Wy;&qa5OE3 ztaV6?nhcKI%NqqrMRq}8X=eUjXffBSa}Q6MPq(BAirZg9y^$#g$BZ>X7c-m>s& zwT8K6&wR}&nuhb^$LDHOE%a9orI7aEsbb<44<}#w1yqYG4*J1safBD6@z^6#aK_ZuZq zoz@oUyW_1V9f~zj6rj3JKCP$n;_YPbqy7c^ee)_ULp`Xt(DP5ujr#GJXPSf`-oM{> z%EFc3)cPQO^*#rk1rCNSWW}~);1SRVRIT6Cw9yO{aD@Yf9M@zH1YB^l{l_EM2Pm_I zR!*LQ)YLXxSLFx%GvZ|+8hTOY0pOe=KmEK%Zt6?^B$htPMrU`Z<`J8?fP8Ftm9|%c zV;jVnQ2wX7eV{|d*`kyUf$tacpLZM5lgzeZs|B2=dh}#9pWs~kb(MMh_jT!u4Y^_e zGR8exu5{nb$oLGG=iYKJMsbzjQGgKrk-=Di=L#CEbE}I?ywLlAWjG9|(k3X6N_*Nm zt;^ItCHb+ncj{uOm6IG-r2ATu>U>sIftOu zR*zwq%+_0Bl&6hP=Ss)=BS47NNTUP$5c*(-eS5PvoB6q6;mbE zhQ5dC&2M2vg&~4*4`Wz^p_I9|qU5Pjy~4Q`$xZL^_YX1gOv&Y40R7U4OA1eaVk&(K z+p_{3X+U436CI1Jhi=}tyFoz=acsxffAYm38(N}A-XvM}wh52yh9I+!1mTmfyBr{F zf)r-GK+&|}aHd;xr?P!YMEkeA_^-D|+xjcr!*o8{75;`z0K^ZC?jI9-=ea%&?V8A& z0Ek=%p_kM$|0VC`MbkCvoYh{m<&$aVMwhXNW1?9jZlR-_Y^DomhgL*_MTcC;@#k^C z;`Arl;TK=8xy<|6*H`u@tEIJX@GimAqAV!a(yZdp!}ldiZ-N_wx+qx?-FE|uNWtZK z0Az1EPO??lQT^ukgmAuQQh0EHX!v+89&Yo@>Q2tYC!Dv9H;R(+iIpP#ZAJGA{W~LR z?`F)?ZdJ0ix{RO6{!*qDy?<^r$Dq%F#L{D?G{Bxc5A+Gl$oo->qn+MFVh(02L={#2 zkOg%qXSCpD&%A$VK-HzXrJEy7SkT<rH6daKy%`cU?%Ss=8Ka1 z#%@sva`BBz{5q~%I0W5pDAWDmlu!dS;M!AXNv|^?qm!{yF1d9-eriwucQ~x?^)PQ2 zy;QlTHBz?Lu44E5gBe$T6LVyyc`eIf3;~553|81tO)SOIKn#~QFa4B4Tls_grJG3H z>}oczr(CbiM8`ARG#=-B9#&IKI5w)$ZOG%O^tdCHQc+9vn5+f}t`?X2L#u5sW-a>e z4@GY9;cA9*b3lvSH$I#9^i!_q{UdEyF68{%i?-jXb9+j9C;r2}>*)3mZa_KZiish& zy?MEvft#_S989kIhCr~t79%nrR62IH=*SJwWRHW3$omTGdW}vhEb5zU&CNZ>eh=dN z=HO3_^OJa`B|-JXE-e8BmrmH-m->KXjEQ~d2;}Jsx$(8qUP^>R~tqzh0 zA8^D1mH&-g{Tgaa%hyj|z>sZaqlHak9Dd&|>Q@ePrbYs+7EB5#x${b z9|n_9SBm5`fxu~@96$Y#-d)MS+oW_#B>*LZ$u6Csi~G%;1A$#Xqa38KX)z_d7n+1OV}l9jp8YI2)S zVWJQ*?TC;hazr_T)2_qgjmIVR7V|F}AP5UX(Na|K7|Q8n&YD#WjK3w>RWt#t!^R*$ zO0?|#<8cln2HQyuV7N$3r2JZ>-%RdT7Xy-()~)q|ROE@%kavcFunceG-`w1^gm8l? zhR2t^MCt%6;Z?SAkK?o&D5IzrYlJ}3`wFo?z0w)n4Bi*-JNOs}?YkLfcT#6-L#dgD zRVHfB7$R(7-SCSN(B&~bo8EPTRIPM`9c=;tl#xC`)`rF{E{8`-+UB?>@7>d_|2L7Tx1SeW`_0NfV++$UtsUNdr?3@tu7i+xqpIag-qWkEZ)e z^zx`yr^%Q#;%SIEwaND%h7(_SRD+Y_;_EZK=p&HBixLgOMt)z$SRL*0R2KEH(kL{B z`~Gu5^S}~H8QH~o@j7lR8z^kIY*jd60CXJIU-<5|`=zBqz2G57zuXX{#qV0p)AXve z+Dyz}`3hH!MF8<})YN6;Nmr=}l^)7-82TzXE@=5mb;|=qzC5Mnnt62p?9&^92D;o}vmQ)#sAA;f z7mQ(ZYd94P%4R8&Nnd$f-^?%G5BU9t@j6Ab3N^!Jq_RrwY~5^yeGtUWP!N!iq2+Os*3bq=_71LSLbUoadY|efay{^GSod@rJP63&eJSzz zCoJdu#t`W=biefU(d>X4gt+g*wljltggakLqI~p+ttr>uCu>YCj z>snCx<Qp**BOS!jJjec549jdFJ@N%43PKUsA488f5cm?RgRn|<4g2D9I1LU z8MWCAk|`Xd;%z?9!Ha5~t*Z~taHI*#K%n4p{iUxXFJv5Rq;-}gzY$90v{=7AtQ4x7 zV(maq0>HwbBiOJ8?72BJlX2)me+FJ;(cxkDT}|x{RKEB8%@Tl@{7*3DkasMeXA-SX z7=TW@_B$SYsBax9_fEPeBkM7->0UIqXq68++QGKEumxuk28A60n!Z0>^!*g`xT*Xg z+~M`#-^lAZp%<%jmJH`2&-#dnASWuEy$@iBp*KLbMfe3hr<-WG*azjoOZn|>ruLDQ zWxB@ApiF?staD72sEAiRXLc`2NW}gPi1B{w9Axp&fq$h1E&X=}52wi!zm7hkoL^5= z#O?;@8=jbX4Z$TJM*$*eA1N5sbu8rs7AcL?c?%gfZhkRaB|vD53EYxB>+>cEBml@z zwA6G*6j^g`W(~IT1X*F}hCd`Viom*`gAQ@R#OBh%EqNNuaz}Moqe!umKZlO=h8ijE zP*B5KANJ?{QcJLRwib|U$_6b=W7KrwKHCylg&=~JI5cJUj5HDoZfhA0@ z#*taqiXo33hWZ#`FCu)k|6j5_`OsOFp9p?vY8qh}5r2oF1eIDvEKPR^=1;hX^CKEz z7BekN=XhM_a#OHc>fy36!-s!{LYgrm6#tK=vy5uv{knF60Kp-+2X`$k?iSqLy~VXi zad-FP?pCZg!J$QqyS2De9Nzr??|MFEt$fMMWbT=B@3Z%H#setBn_P)6o(HBeMG;r{ zDM?tUYdLWmtu=4)=`!_AFo$CYZIcx4k$U_%;PYSPYp7e5%LNy>92{B~xbjoKsV(Ox zcfiu2Pt2i@oka^7aEEGUjUGGCN5riQ9ELv<8-hbkY>sjksECo1iHur=JQak>NwGi< z?*A#nQD1Ztw0ZMq1)e0mY=^M5&u?H-jrv{k?4F6LbgNm!@fA=3B9yxl`eARVMbgVI zrZm043r0q&KY&0caX3s7VRkV^rwTC#_-e>SG** z2c*J^AK!*`9ZR2?F&YuA$O*OeXBR(DjoIVle^@{37wWi~md);0W zI|dT5Un%?z+g1~_1e-daJ-yzRg{Ia`oIc7jJ&iNN$3dAT2-yf7s2q;lDH}l{V zxS~t)bAkvyVeq>xI>L_GXN%o2(s77$mARH`{LkNiZeuI|PM>~$q?%X;1`Q|clYYiE zz}FXl7G59aK}m7}H=g%rlD%Q$=^SR3*c<(qWPMDDgykSXICYlNTvtEIh!vo)Vw!=9 z>*ylqFxBvf`7Kt&v>?&9K-I-CWIIMc7T1K3%U(Oi@-qKUwzVPQ5zKZi(fysDf-q#> zhDW=gj#{|}Vie+tgW|up%fImP$C;cI%#1Q}OZxH1Qc7PYc_5)wC3k5Y!7%=JPk~;R z_>umda^6wXlV<{99KK~is~+WdBhln}J8>=lb_=TkRO(%^WIrEQ4G~;eCL0#^ZE`+- z@6#X10G|nUFm^S6vOWw4)or zAM$WCzAuu$Ip_)*eZuJPV33W$dyLjCM!;uyX~7+`F?*RJ0(K^RYVTI+^7gb+R5Aze zioMG(p2ZuM$GiiMHPg|O1!4*Lu$=j9vA%~p-k$H%YBaBnAL=6BCAS#2x!!3wbX2UE zGVj9g_ph&bu)w&3TK%$9cuAV*2aYb2m+I1bn$-lT&gUuetFw^Yi%8;52!&$K zUS2yPNK7dU`8~;m+G*S?a@jmD^zFJA>^yNAIEP=H29;yauRjFrg?oQXa*UPgDR3Ph z)Sd=O_$e5{x+}US8QT=-U01BpW2i+5o$o{s!Y%)raS_m_Ok8cWT*&Oj7-Sorr4;|p z8KTwm^NUAq&iEOp=WsBD&vnh6H3Ji2X{lk}|B}v2E9lAxFB)RK zQBs622rX-O7}P3$I#&?Vmr%y|mSeE4QnvbjRb*_W@)u1bc#U!}cV}ET>BZsUk0?#b zUW-(pI^YwcnQBLM)A;O{xM5{S0YwltLab%{@@H!8W%7+7FmY7+xk*ZAcK}3+ zh`~HOa!{W<#=_j#A>LeKDWHT$Tfli#lXsGTFa{TkwLf?acE7mbkug;=YH_vnM-7yH zb^cSNp5v-o+2GsWcLPz3-que}G;g2yNJf)!T^h3xO2Sc8TZEtOiT#Wv6tqQm-d6bU zuv*ho+gXu@mO4Xe6Gb0&*b;9Pkxh7UYPGGz@y7@}OJtw*qTt-tdE?!;?~nbp5*iNy z)PR#N9bhf^_ok5<49SRikj|g+{ow%g^)&oo9}VmQ(WU;0F3I%$)xTlWtVMzWT&q?? z^@8=5AnnQ?6&cxxstsdVYWhx=fURTO&O@|x&iZmL*~#8_O8vL?7|2wkhs<|GoQlv= zY{@Iw+U{=BN^G;iq}Sh!I>JIMcY}wlI)*}E8JkeJ$1cht)_*-QL%ufAmM3X+>_0!% zh@~{d^Zjm2k*ob3(?{-k$gZ!y+a4@2sMq_3^)71E48sUfT8fW884JX^i!=*wE-f^g zr<42X>72b-&-bMQ2Nj5*!UGWeMhe>VN)ZhICac;T}spUFB#7}#+z z8a8!TctZ)e+$`yElPs3knqe2gr?aR#hcq>R^*5tm5MOLVMus;Lq<6d6%na^_-3Z&0hMf_AO2hUG0p43FqulL2>MS3+u1WOXyex%3qEbNc4Gz zwFJeJ#hX&6bpJ?r%1O8e`B23Uq$cFU&yCH=qpao3h6h%I*^zo!%>EE@qRMPI>udOPo8bT9er^1CVZUbk5z_X*T=V6xW=P0iRmg5M~+G$%aZ0aOWIRu(zn zi1$#c#wm|xr2-Lrw;65dm|fMRBFkcv~;(^ zTTYpD=;u=%6aX?fz_wuB!)WP@_dlq%8Gp74!a&S5>SFs?=TgqMe?~10j8h_sT&VF& zsaP{9r1)?ut5MAs1{2vlGUV|o;cYK5^y2v_aVl6nLM9$vrE6{LNntMJZ*E}UyEo*Z z)gIK^B5sawEjKae*u0#a3>Z_3m>U{ROGr!kKkOksEj?a{;YAKq2z5eTcM5&G0JeUW zi6!p1Bx89fKCheV9TBKhg&~Go?WW14wq2e(-Z*8L=tVh?|MeBDO|;S#uNh1M?A0Oi z>MobqPnZMRxwS1*jC6d-g34eAziK?kEOA$}a`zP!rn)O>n$p>|5d z>0m7tG)q{Jt>O8n6s)F0(09))3W;R=J%D{=9ho#tbKFp)mawR3^OcqfudGxs&zByI z5wdX3w1qX;@$DgZ@`d|^GuW90c*|5-`lmy=)W&`fi@A@`pISd)ViZ+I~u>55(Hl_2vA<*|4|Pj04VQSq^Z#5`X$mf zV1)=JnwBWwEwQf_^w=kKXk?~G=gE+>53#U;kx0S%gI138@T=zv?>@OmjC z^0k;8gasl+l?z^eeBv2@CDwr^D_mMr-WmQIEjV4f#gft&uZcw7&a8uQVf(F91h8+9 z`fTFA=9WF3cFA&s2$f4A zXYRh7(2@+Z-`^rk6v#$>sFrrr*$>%0_@1uQ_lqu6+uGQ{nRP4#Y=Vb?A}1#-(|t@z ztt3#8SpLN0{tAuGaP$FaUB_35BP!Ai|KYLUjwZq~!LCwTjoQ=%v||^x(h0JC`u^C+ zcpgvYKK`G-(0wucdHa~tZ%AL$_jFa2ghaz}Dmr>hU*hLKIddGPp9^gkKYaC~b-oE9 z6k5O%4}Oa@_m!R4_X|#2Z@+dgUXID{(>?p{jwtMPebUIOT5FYI(mnqi+bn7_>^M;% z9YF^U-BdLzXBkqoJC#eCE)r7mj~O%C!_f=2Js_O;Qd@NdEOlD=RH8d!r*_%Ef!k^A4zYH)PR_sIL`6&9`HX^n>@@2LZL_^;Q-@?xu=PzoBLf>Za zfzK!Tz>P~kfatwk=wuJsikU)C<@dm3b-x`xGETuObSy@dY@0Oz!}$+Y-v6CYdRoxI zkc5EL_)(O(04 z5I5}{E_xSG-)Nj@E~?+a_rFYN7{^1|UpSkKl>yo1*(ATx7vPPC$A2H3>M&A}lO27M z92Mp6|G=YS69P5(W0>~^?DKY^8}}fD-($I)$Rj4hH8|YVH8hW5upsS_5H(}IxTxy7bHI{GU(P)eD4&aoLnVhZ-84<|_gK7H*NahKDn(Ub#bkd(!K zo(@J6QK6+~>lR1TpD@E!>+t_G=6SIwDndzT^F|x+;w$uAMVZiR#x@q<_pQO$5yNc0 z6})f)G+VF3{s>%dW(fVoMrHqbrooJNE=0HUedwDHpr!^Bf(lT^%_fU+M zWM=&L@U2u-@ob{A=aLO)fLyNwLNm(#%M2(31SN$m78eKV#sms-$7bZ;VdQx|;mv&B zu>S48PwK3co38A}bxg0H&1*eGJkX&(r%zFf97aIL^^EnEYiqG8UN%m8K|;?BCPcYbx4H2&|7Ms>y&J zTMyj$M-K3Jri8!i1#G$*3}d5r$Rawvq6TLK;H{w8NPcSr>N^bhpZ?)4#NO1lL7TE4 z2}5sdJLTn>KV0EpQ-inAo7F>MQG1dRi5hJZqN6_TCee1pIHKK&@q8iVHFQh(j26k| zU%sf%%i7ur<67b6F|g25-=Ww==CV=$ucJA(p{FM@2V4pcB?{pIhP#lTR?NrOL>8jA zNlm1G1_coTGga96kBE4l_cAiOd}wTY@3q?hQkeF*rY2i)Q&{4qeLCYjP2m{G>wR=D zD(r;#y>UFsYxGw;${g%nV+&kh7u2~l$NBPY({fSXqzb^y;Zg(rMtb;c{Ej3DGrI&3 zZZ|PqVRNnJHG+3Wujc!!RNXDI11xq3_Y-LTzUQ!&`qL@mV#uUzt5ehq^KRpxLygaN zX~{h6H&@eHk0!1DNvS=GTe9aJ6w24@a1-4`381c>RPZwc4g?X-AQ9WD9v^Tvh#Qw^ zQ}XjuuBHszF$7=^?(3E*sDQ;SXLiXGTJQV_{IGg3-$Xa0E(Y@9+K<#?I~tR%gdnVz zfg6`27T1S&L+pv={I$YYg#I@RrCzQuq@__4Q6$AL)MR}9Da*7oF6#KqHF^X_GYai8Fu9}4ODTfoxw630yEZ0MuUPH~sWBd_|Qs9)sF`aVOan@{UCzcORC7rGXvr&G#3UvfJx>rL_-aURnS;nwG%8gW^ zxL|qqNBxW4==00hhZP=FYXeH$M5A_HJrBRQW(fDt=`i~-rN&cXnJxX_I`3OAI7fyJ z5VJ_D`LwICnomy0Bx4V0b`3-iR=P}VnI z#DjM^=H$@!M5Dw2@JGh8Gc1si$1l9vD6{{CHBXID1rY0F8S|199H5q=$^uyZ$D&w^ zY7v$tSgRjxB^nFLNt#158JT17_~99>K2>gbX=8s^xVE;StAXRH{BR8X#TrYeYkuC-6`Hznr0qL_z+!f?0@@pkS=C|+YXr3f;CU=keAqC z&^1eS?^H?LclVV_=s{a7AuaM`Ko4G11$mqV&eMTTNJB;Xu*+^c&plfiLT2?VNo%%4 zdo9iRHw9l=oXT4f*2vn*2boM6@Bh`ayObItD?^ejHZlsWJPsLOse6{6Z(|Llm!{ah z`-d$49@rw>OLVl;#;|l#0Ez}cBSc>oBdBoeg0*j1R+$U|Cz2A8jbQNWvL`j4e@$t~ zAg!iLK~I#KDhQietBV>k;yfKxSJ+)rJQSvMig|LRjokou7}>=YCbAq)R=;fLX=0X= z$lcc6qyKAzursZ=CCI$g_zaGcS^r7Z*chWOSenbQ!K*~-IH8deuP%6~TdZb*ML*xY zB|4oVYuHu$T;cjg5bpViiLwJ}r&EY28s0N3_==ut7tia6W!q6ejDb2YD+8#0MMXt3 zI0$BF&g2`<7FPo_M&ijX(~6s8hT5&Eb;LHi)ox%OlkDnz-9U^Q{@02P4f~7-N}4!7 z8cMAebWeubm3^b4m!Z_Aki$l=hR_?rMx*`E)HO8b(2Ffp#_;QuHP`oP{Y+%Ph)on5 z!0{{ocHTpL?IjZHwEN@p%m+c>@%UK!teBWmv7>brDz!urPUh{0Y3`l>U;I}7Hy?<5 zuF`%!9(eFoK9Z7;J)=4$9+P(ix5NUL(*NpnDklJSsWEt3y-@I`2p1cg{0pr^J#YS5 zT+j$r^Fo;DkE}7S@_e;mX}Gz>;JXb<?lO3s&%xj$Z~cJ}_I-&bRXW=2Xi9hA0=lx7f=#!u$&enud_Gu*yY~sa z2y_{O3BK4E$;ha%q}5=s#DrXlm$fk~MiS(U53U?R$`pwzQ?#<^*@B(^0ywij-o~ z@O%+eHT@FeC#iTp#wKHWgt`NgblySL$gnF zEwHygSUp!6W&WFFzkrzOf1bi_tu>5C?)4?_3Am(wJ{o>68}>O|$mKi(TgCYGSjB8~ z+~y5MvNfue$pQ~VIPnoPgj!kY&FQ26pkj#18HNC_MtaI>-YLm50o#pPnM$$ZSA`gt z>>I9}R7(MR+H}_>%h2>#T`P;y6yNDbaWsV*?(IVu1{SftACpapztoNWvQtr4TD=M; z1p)x@|L9?lPsO+To7&$xYt+Ojgk{KfDq;D4mUQB{JJ9Ai$ORIFhA9axd z6#cp0Q4y^pFFlttbgv&fL~~G}hZ+(|r4oum5Hd&vh*-Q^|BCgoW-~oK?@)6=qA&i- zrCAXU2&>~ElhM{2=PggCp}LsUpZ3cShG5!Yn8blP951BrW~}*BH{CL9&tgpc{OC55 zpv5_7kg9*^N3c!~by?GwFg8uos$f=H9H3+YY)licFuLLolq3+|=gBnQ{+2%)kvjC~ z3f|f8;F2+w65|U4amhoVvs93gYy#wuo-jrQB5IubXu-`AR%m&jg#@1~EMw%Qob?`y z&nJpL3fK=(CqUPv*Ry!rxz5vX2`GwFhdBQC*BVW|g4pghbDFIY1`d0dt;?ZAal^Kk z;gN(WgZqf`wm;L9rZv@<`(IBl&L^K;`_xj$y+A04Foqvc4k>If)I2ApCb7AsIJO+s zIioz_oP;^XpCoJ2f$_29>d*zY)%S$@2b+ri-ZoN2`iNjV=KoNmaifxe@{T8t6hUA{ zgi}Ibp_Q+pR72X%WIG8H*LjrsD-L6N;0qJRWH${3|1`+;>hml!cX0T_)bi;&qspo_ z&!T1<2;p@L+_2|#H*=Q24^{*3n~3DIjbpXsI^1e#6!Pi!ogrq6l8goT{at)MVHtVr zgrImWBI7qPYr#gnW0+LR@>|^qbv*l>li%Z%LJGKA_LqxpVY+=W1cy^aA{r0OZ+{J( zp2Z0UllwF1Kdmnc5ctv-T&EdvhCyJ{#}~F23^jF4PIcDnSSUx%%)c2Zzl%YT`)yKpC7gmae4ii` z+4NxZM;@_zv-q!o^OXc$HY|bh4*Q*)l(=TOzvG_}f~06`#Qj~o_6fLoU#<7QB(HA+ z&vZhn0}wY`N0jE}%CJ{e%6xm$v;Znw!qg8H+2}3_sm&3phg#0_D2^ANqNl@_2+}cu z`pq;M2r8s-{tu!5^aUUSADcTH>$DQ%+40E{hGYexaBQ1aMn5IJI>X%0&Q=W}15pC$ z+?QVjgg(-CsTv`ORY#)hW62IZ^RrPmJE{^vl#@a18*e>z$XVZP ztnLCAD?dp!zW{o z_pNRsk0GzuXU3yHqdk1(p0+*9*3=Z|VV1e5x7St^*20!Dt93Ql@*h(Bh3nvdWynjv z7!#ifmZnamhQC6Q$7wgODT~}pGHw5_oTx7?UXqjDyWTovdq(-PmzmPdP7wPEg}-1K zAD4o-nF2R^27Oo|);Lq>5-WbGjEP+%QeMe41Je$`~RFGF^^)q8AwLO~P;W z`*h5$(KK|MmApTNPe)NxRoG~h2hnO!4_hok_Iu5)zPLHN$qp35#!FR)syrbb&R`H@ zth^%9sVA!tnFs&HpJ4@QZHW<9{&6Zq)N>Nhb0J91TCH{eS*%y-xP-4%RU}fX^$gO+ z8N8RhtAR}*VHqU-OQeKv>FRkr8B9bNgMsULS z`I#<~qtPg+2kKgEkw|Q0UDgyR`QHJ=E(zKE#zSc%KQ7Yl(zXtMC|kbfpA_n1C(_a` zL9caC-n(%na86~TXzZu`dv#B*f8SH@c^XKKrn7w0Zpz=OB~7?wFf7N#4Dp&iGHapNIDRk6m7`j{ z^GsuS|8KtZezek&jEkj34MdWNx!;|GGuW}8yM^nubos>o~&T^~bZ40bc& z3r*&Z+wu|_@z3O9)zW&fS#D}vI2AeQiJHHEs+t1lh%Gc0Dgyi8@|YuA-`Ow~M2j4_ zhM~W@MXi3FG-LNw(}jxox60}cNJ$_)r6>_Hz}vcDuC7&tq|_k}8Gg2tx9Ut&h2W%P zMl`s$H;$D4lptFT$X+XMc!bPQu{xvLgbBa457}i^drWECoYU2>Ifbb~{ z7_>hsiw&Geay_ITbH0@I7XFjOf;QfV6d=;3L{m@V%G|kt0%6`4sRH+by#-`v!aU zaLK?kT`%TXubapUF5}b;Bvp90AFObq#B6~Tm0Bq+SNL#_;vZm`DYwzE+I7boJ5Lma z2uWQ5JoJZa56ypbt85k$C!QKRcByG=l^DtzQiCit)Uo*de{_EYr{~s!X~|PC4P$@U z_yLgpZWw%gBmQ<#Qa2xjT%^TMjK3esqyZT!2r8IwcyC$aXHW=AKt$YvkpH6CjWyGc z_#b@|?^9duGU+e^JucJ_sE{X-^S_{NbKLHDU~M~d<*k!Zsub3fqfTUnzmiiRXcS^SM-!M9K7qy?iwo$l zFU=l`Dbxpxn^0iNR2gyt@dm=fW*iBkAYEd&7XltT7*&nI1W|Hc#*H~{2%?>_E$X@g z@m)7Qs_ge;uB`VrlGBr2q<+Z0?{d@7rk!TOgT`V#H)wUZhu-UdQSXjUA>ivzOF1LZ zPFBe|?O%@g!C5IUeg5SVwPpvBI@w8ZCRg6C_w^lY5A%+@D*132-;*x9GpNTXo4t(X zkDPc!=4o8Dn)7c%5$S&p6htR50l@c$Fd8uzlHCNm*}y*#Y^!t*F1; z_s}`QV$yKze5PUkj^*L%8A#;=!4bo#VV0zSa2mwr(^YyHTzQDvtGEcFn z!=O13)GNs%9uY}WT&T?!lA*QgSI~R|xaGb4;YI4?gUy6@^7+@~xbDW051H>m8sF)0 z!d6NBE3Sr!GY5oE+gk-{{r6dI){M~iFnGuYNPJ&zb%1u#fRJ;4AnoY;H-+y0l(*~t ztbAzj-XgC3@(9V$cUgig;1QlxU?2Ubz$N!@3Lmy{LSwXZ@x>zdNxF-~W}r))C~92? z!d8_qcKnq!Rf-t2sDnj33Mt|U$2&DyzP;+38uzxCmkmW&HVu1!=(VHtu9|F+_*S0n zf%yK+N`nT;uB`1i9+|*E&>Sp|9bL-q`^?IF)>WjLF!yluB=3BS;wbF2&4c_2ZY=e6 z{|uX6=ZUL$A%P!5M6v!FZ9?bWE(?6c9g>hCW0vf3;>a8_@W2Y6qhxtH<%%{X+w3=@z} z-Of0+RO8SqjF-@Q2p|Ix@w#oU1enQAo$-~T3dT4!P8seYGNg{hH<$7P$H&S2Rr3sl zLuEHfruTz%o?vs$ilDszXqkNNREi|FrLvRl^M5dIexn0%PtS+*zP&IA-L5BW9g02^ zkuEsR$r-T^+m}rZy%(~MF4dIjT9vOf=1wD0=BhL9hkLI{);$^&qwKm}OxSVxU?+bO zN2+jf&Eb97=@d6W+4CM#w8xI1$NMkU{fQ0M@NFCW&^~W|+?=R8ef*C{SJsXj?w>#Q z1bFh@$cOX&$mxx}j{Uh`S(9Y>uLXGWyqJ#Sg)ly##Rq#9fjQ$XndzD7)D2FFG1`>38hzSe=bO2EyjQ<}CfLi$no(k~KWMGp`tt6X^B5w;JLoI!XrLhs`ra zB5W31C`6kWY7CJQ_F^M6BJH10^bLmrlGe(KoRqF*dP66$&Gc!`Q>Dl28dVVGw~NM4$2SFw^%m zFa1PU0{vI;dgt_YuSxO#>$jQf+4?>^nkjZ!{plKiW9UfP^3P!7LoLoy@u8waOfu0; zl)5eVUviGVJ7idny@Mf6UA=gly>*%F^Et3z-OGgTp5pDXf|vDF{@x>G5>7F<83XB z!gv1)Oi&KdqkFgWls`*1OTduAfvB@$OQs`bxD!D-FfzSF(x_KVImlfS+}ql6L9 zad}`MstNF_Em!t6{+fX*BBA+JCG<=P(8D)6-V7-c)Af#JZ!(B=c5}Nvz5Acnu-8$@sAh)p@c4ypSyU-8Y>2AX9w_PCLKfYLwoeff(nV0`!6fVLPgni!eu74vM z{6!-NCFHn{>;kR%H!=n!RWOVKDh2l#BZ^FI50iXaN;_dKOIBWx!MexDvJ7u;F+P-&QrdXA`e~65?+uwn5s1-PaA;|6CEk{6Q#R_ zLp9p5K8)5`S>OhKI*QljlrU99d~4uerpem+2F#Z8wzLPZ5##`7#|u^7A^u>bH&1#I zr1|P={ukAEr)6`uxx6P{)XAT~>dfqAq&&*;YZ{y)NL1#(lNzUF5UF=xr{T|I1zt*- zg%y8L4sh%i*NkcV?Eb4bt#+{Tkfmek6oVFq?ECI&hTph~D+|9>LE?ngQh~-sLrXJY zu=%q?*}Z=p32yAM&oTlOM2ihR1V3y|Fec;ppI`G9R0_T8x!LojkNRUdLq-FZgQPnK zQop)}OHOw8@4?usJ11D)h5x4o^etfGJNSulrh3!eN63jP=riy!?E)OEb18G0<8(RU zeclnjHFyMX&-S%VWGyQGQ*8&*QY;gs9)%qwm*x-NeD>0PL)KOCm^|P6m2)0AAt$M)8t`pc8uimqaSWJ{$}|V(4fEd*;A1}@%`nl-hXUv4fYtv3r?A)L&)lElB3FI;UNAo+!1$q2WKFZWy$oHE5 z*Y%{>=8XW2g&JyK0*F}j1OL(+`zT&ip9tVS*O1Ma)5US%0i7^&8;x<&^Iou_zC`Fd zDeU&PJc#EbLxs=A6&`?L*}ho(q9FX(R_(+2Lo_o>8UIp#k!|DbN{M3(@CN3e;WjM2 zmmQPCXRvx6aJTfLPRmjo*N!0$DlAZ8pmBTkM?PD<$u3pp8`?w&_}S%%K}$wU@r*;` zO+`h;RT!4&v~GPycj1dRLMfc=^JmU8Yu^rVNKAE2wQdya5FCeaNy{h?%faF(WgD;o|hDsBFV z*b}(p8?pK8Iq%N|gMayT=hB}e!Ze@cP+j*Rat&wP{&C?@UoNb0_~!Y1hmM?dz562#9O{fFw36!Ggxd?kg!f zE5SX`YtVsx;pD+HJR~fkPi=xdjS-Qe*73>3JUgv_xg9qdBN-FsYsNv98-r<9eBmXW zao%|8A3{Bt>>1Y0tj9mZ+zFWMgv<`9E@b>SOvPX2dY{#V{<1T3b1c@N)F5O2W&B^V zB=`*iIga0x$t;|$%3NltLXZ?ETtPxS#7>WIVPkIfWI7;eXw^t)a7^rXGneEAH9a2g zD6z7U`oekzu=B4u)oP{3X%K}!cXu3kGPy^5b=u$kr=$I8l-He>&3G}grL=>mghOfF zaU=nY~c0!cXLK6(dxF=DNu-8LZ=2FE+9x#qM&*&jjE=C4@UY+(e}(_aJ9C! z_oYG!!F>cng4raf_p(zO{1407Z#yqjZ}8o(g_>2Xt?~Eca3-7==Xp+7RfwOnv`L{^ z*Z78RvA7C0)fE&d)s3e_S8`m*8O~Jwk@TzjMFPSD5lTfqUyo=5(_uq-gq`-A{JaTrFSp&Ih{Yf- zMN{X)@s2QJ{TFkM&S>H82HMOV7({P?$b{?aU&Q zxQp-QZLV63aL*+h|GVOSeG|h=4K>RRv`k1t@j{oZ0nZt}X9~D%fkZ`OE z)73i&@C7>pH?}nmC@N*4Ts!J?K-m@(leB2@UH1Xg6QqE5GVyY`-4ghKN<@3em!yFPrQSO{O8lpqNj96 z*mFYn+ahio^!5$FHuxDU8%yb#oaL>e=ZjiXZXSENN5yQciJWCknGXQ~n zDiSN+cQ?r9buu=dTsg6p{x7{ns$N0f>ua5T3X#uhm-&u`?{3s5RC~irWNmv&FF~cry7fU&r{Xr%^r!Gi(#NRHF9pCOc&fQ`6T+ z;{*|=t;C{#3ou&jy0EJ`8$YG@BqlZtmXU)@8tqMwMK;INzGIPH4qr{f-wQ!YO*Hf} zqMG(mW1zO z$Zx}t-*i-sX9Us@k6d$JeuRX=!-ZJ|r_nMw&y}CSVj1JLUhj z8KrZuZ3fvAD@4|g#DyH4r}RT{rJ*jr?X&3?U+>9-^tp%K)_`D9$ulbfK*H6dCbaF* zyOiB5OB2og0m=EAB><3dqtp`TTPMp6awOLiFi1Po=kF;*dfowfJphS4m5&_Z3N| zLC0g_H-n1H4pe&DMBODz_0=&J8z|a7yA9wu{Uvd$3 z8EnEdmC&6&)zJ?f?q`qM!?4Z1oXa+umM_(N&L}AhnOrQ`DH$-oa`M^7YyoMnG^kBw z0n{+>Y_-J@$u1>tSM1^{@5nfN$4!!4qeW^WB!lfbA#gdFhUh$IMvoZ?p8L6wu}=#R z3VN0boKsnsP{;3!6%gf9**gk<;Lkq!S2>MneN?-kxme2eMfE7$P?hBa5H=qaVTnXO@^gT zjlDIWrD5yKv3U?re&SNqn zq<>Edb|blQitrgSFS1w&Btz8*HX_6z!(k@~G&`&s;)giv2N_c*#v#0dtw(>aXawMM zq*4+&E7mh1*X^2$HP_zUfotx!nAIUi%n07`}+Yt7Oima7R+7pOqtr~ zn6Aw>L#nWj{E;mojc%?O+$Z;O44Gkpmd5ZgW5m2A9VSNxC#s>(ibGpr7n1P;Uo2Vu zokgN#B5(-}jy=stg9P59pK;#2XN>3T=PVUj0(QW0gr&NIJ!5Z{D73wAy4 z%ndSvC*g$U-YNoaB0gb5W7zWVaj{Us#P`u3cM&+hPu8Eu>YZVZ;n#qu8PH0C#Z1Rt zDm7US1d;%>q#-YVTidXwCCWOJ5l5)|3(odN6b8Iw8DSy z#_Ql1PR?WC`mA^p*Y(7R#rV3;5%+mnRxzOD_GiNJei7Bk9X~qwZxszKIXd&-s|eqB zMQItIL2xWMK-Tv0@js|Vwe}t6#DN&dFH1{v=7!_N(m+_u${afO@FPYBej`p!u$G}Y zM-@F-f_gxJz$4%N{mC~0)%?=0QAoFF45UIP9U0CI_OrRL5|+)=B2icY5RD4g<8H$# zn6dRI+PgWPvsPDZ6o%9l*Cr!EZ=e3SH9Wq~?u^gUp?iB~G&F9q7@K?k_7TGEC3)~= z-{_8+vCCS74eSscda;6CE-4wu={D1C`z1uhL?G_Ce(q(QktP8YWDmy9X~Kh}T0USg zd5lDtpGx1T9q@wzy$+tXE%POUCAfg74EMAQ+fp!tNiv*d`WYQiD4CNMl>UD3Q;36l z>}#w@mW&_lYm(pfx??gwk+qrbe(2_U=Th_cC1&C8I71s3Fbo&c~S?Ow&g2j>ef2<@B zxA^mI-97z^o>Z$U@Nmg^s3`BkEc>uS zz!wl`B1Cr*yBMQY&Wuv7f-VLG2P>r+rC}7hQ2}_&%R8OF7{Tc{9kyJt;A45q%7NHq zY*^nF{IAY@UUqgHT84?w);*RGZy5^Razi!Pf`NZff~;9P^pnKXJ9w<+l7N{q;5oz> zv{Hripi9cM1D2&q_6#*z3t3pz&-KY_00akH(PGr5T=3?owH&7toWXKCh+p;KhU0XV zC3q@`Q2Ay=wifPAbTqO}sFIjFSyv45Dzx@o;bKloe)EYL;pVfEjzawC=qWU-XX zU=4)r^HMu17+LhdRF3n+ElydP?*W!0AEm{5#=jrNCE4P$!5d!&=Uy8-QuY%iOTbY( zfQrO|MEAt*8qf?n)^t~o2Gf=C9b61+)Zyx(xWPTCj@?+hh?g+4i-KY)o1QFnq5~j& z>cOhDv)L#BW^Ph8umR?2SB+|h;N^Oz|M$M>Uv9wAOGW4&Q z=s-JJh5Y|4rb|m_|8*-Q{q3BpS1S({4kkf^77|wP4CNPBC@k$jK__4_yU2k4`Q^i( z;oY1>!s+;-M*<4nLYA5&@+{mdJ@!Ie@cq~gJ}eg-n5H&gcdnYG9I+GA6W6xbzor2* zr3+L?Bbh)@^6{5!T%!TloB-$DZf%$gz)rSYnq7OlU~avtg9q@~r&N6z@>da!BW3bO z4GYdFK0Iv7?5Nfv|M^|>7HriD(g-~=~(xi?y(sUffa*WS>mG?YhS%9r>h zUyamM>|xZHLS+3>ZL}Ir3Q>%nKnV8qx=;6Q+!`U~7Xu}-F~%uUbWh5tJ}##aKzB!d zFP;txq7McMr!Q8JFnWFHLsed=LgxUN_YZXdMGVyMW=jtz(+H2gO z4;b1BO@1F_p{`NLgypKHX8$QMWBEEIj_4@gR_9MOp{egbz8B>xUkmHantK`=EtEDq z0tfXLxqVKB}0zgR^=#t^25aMv&jnO*nAO0E77jWe#R|fcEaA>r46vaZM5d0*<)L zai&UudLS0^kBU))?)5jGC7RA0Q|x6Qb*n8^ON+-=*!S0{D(E@YTRkci-SJ~#`L_6R zd;WsS$pb`Rd!|MGuOd65`KFHyX5s(K`^ z#<=<_#+H?Zu5YQ<47o!q=UPk3qfzQMx6=HVHhwJjIk zW!d-D4$t@~q=r$CRk2L21`#C#;}^DxmDsplrX93yTsd2Wy0Hy5_^Q$QAW~dGktFc0 zrD$dT4tGW94nNOh^g5(VGcVUA3e7;?tV1$~(DSD@ewrU&K>QNdfI>~eCFqZ*!z;*= z&sepFZ`=$iS*W`G$wP-Nm^W!uKu`nypXLotvYsQJru8#d*9d;vF4- z+mAOtPzw(9-ad;%Y&?y-^+N0>*c3M4FWybnAi%lGCll^Xh-qREFW76Rt9;n z4qLA_3iaX0!@Exnn9jchP+O`5Nrl>8FK}-oQy?n(C^ym%1V4cVirPDQI2rB?={ujO zV;x?Sceu)CTrbgqo#+;|=-RE!shmajWQhgjq>Og@kDFXSzvLtgnm%i!eTEwecYw^y zVsI|KUrC$}%#on#-aMa=TM}tYptk0p;XwaRq7R?()BkPto@&0Z>O&o|sh%f!^FzjJ z_xE2s4Il}U&pkcLQr)}WLK(H95c}s(h&n%f0u@G+qee2^5j&RMovMLvx*~sVG(CA! zKKF$GbIkWl6>b;MwNZk_8m|;lJP8HQOAoheyca@^1BSORb~{!W?wb&m(ow z;r~edPi0tEmWaQv{Rb4?&-quAy{TW{rztY>3xlsWjuMPyIrgUbE;2j1%oU5(r}vN7 zB0VsxTbaz7;yCph!FX4X6Ebf-P9ffyBuPIWH%sZY=@S!)Nf0q}MI0dAOVONE22GHYy}U$bC4TYUcc$3 zhkSW!Xz=)Ya~N{_D-j}bkp!*0cnXp9)at4&d*pihOSkAf@$;Um2I$BaZ#fho=5LFP z&~U5Fcbhc+eB)e1=bljSv-$<3SZH}}2Il!lO+K}Nu%B6zXZsy5&zNHMCY5Mwk8mYc zRpNTLBCv4bWGafnOY zl||<=f;Ix6#YMd9>+M!H}tk2s;jh{aHs6jlIZw+zpZDXNNa%B=*l%t3 zU&O&y)&Zw2&~~%>(|6{CV%Qlc-Z;6RAn30IIL6;qWnh|+K8lDC9`3*U^=j1VS~cj% zw(#`&#YCytkMFE3`S1KLu4>-2)V!e_6Gcjnz)LeKXSe&3I53Zr6Y#lilfmz`M@&mC z6HbYlG!6&?vsIWycwsPEss4xWbpLm{O_0>j)#z+5+u&u)KUkpY0t@ z_tMx&EdBHEuD}C>$T6laWd8f5!2Fz7ctr(c*y$SePI-Elv#w5_#SUJU@1eL&$0LDK z(fG~@H&Yp}k&YJ)pz?G0q!b$J$b@iTkao!;gM_!aS_2@+_ZU0kDm7 zxJAzVWr`iEAEqRHUc6^2V}S=K|B3sEms>54@_?3@^b<^MW&A12*GJjAwHEa(9-2nX~lZ*c@f(Q|mkv!)#EUK-qSNsaR?#fw z0|n8om)gLrV;(uBddvT=kZ>kch5HSOq}Sa3em?KUFy9rc<3Uv4Iz_kj?!<3-5lTr| z=io76;gxnlZGP(YCZ&GF=OMI_Bc<*f^4<3d_{=ffe}v=kl@CqVE`2+I)a+Z{G0j_B zz;gPDWhzsB+k6PYB7Y>tFX3C6TIUi@sNNbJ2>E*wRevVJ5$H^i#z24(W>HR|`GFP!W`-yBIQAlJ(DN+-u|q1wC;0z;L^tjg!M& z^o#R%=$_`okj2HFuHIA>@9x6J_YP92n97~DGxPB1~z`KAEbom zSbb{zTY|G(gno(oi&p$@Zc4C&PMx=l`LIjQ#x!AS@G#z^VWWstKZI zD;EtK(1uKwY#KZ}QpBvHqT;ib+rJBFH@YnAK3OK|E)*5>VDNL=#gn`A*=G(Mt}5_N-dJlN}zkafyI`W-atVSU(HpgLSXb%&I0LHs9`P z0U5h~X0(xtvBT3Z;q6(*uRma6W3!sT7#|DtB9Ssld^@d7ycqXvanpO=Dy+`LiwY)V(Cn!GbK z2pqX#4^ic6c*c>(FZo9N`OD3{5PW^3+&Y^(%mO09;(b$o=Rq?^LW!f#@+1_T%fv+v z7=Yl#auNU-okGK6nT~ynxo)-Ig^IuL$Kcf2@-m!$NHC_G?Rvld&9!Pv$6Y*>W2Ax( z&5}aLp1L}Jk60(Q@)n|Cj~3dg6Jn0k8+}z;FZ8}|u7wpmXK3hqvD9S##Oyl95pU~A z=nm4oUsNw`ws`sE%^tC5RrYhnvh%9Xay?YPwSAAZDAY1G1E!NE53Fse0-8(!E`@q}KEDVZYwnOO$|52<=w!tDbQAt`vr(5(lSish}umDd;Jv>2W`ZfH9K- zaPiixPr+6p$3@2HYh`ovebWsR;Y$^M1Yb;VB(EKAH1$3mrBTi}vA&#M2#A_Y+YZTf z-H&9O^^Adn<=b0tAdMbe0Y2dgSyJx9;XdaGMpYWG;S<{EpH}F|7Lu9`rEIS9E;0R-e>kjA zG2r{ZSb$_&d{OkY^bjVzQz{w<8#gW4&*2nu%gVA{SILXHx=*5)@bOlQ-;oIISzhK=?IfU7bF$vKaur0A zL=vGle`>($9*RVn!VZFeVnebLhiy=YpQiMf7zuzdj|JYy(Fa4x2*G1Le53hCOWM-Q z&-#CXTVL$YAdE4#E$%+IDJSicX1WBR3uSM0KkgHD+S0;O%KSW~bmqu_W|{Gl6E{dM ziZ7DfcnemzNIem(QA39Bn0Qb_6$u{$i+?d7k>pp@9n!}jCb0d0cAtBXYIQJ*;mXre znUUAf>t$!zDNoWcS4FKLid&Rx6fN$ox22n(Bb>rU3|x|EG|53CQfv$MvT!xdeloN9 z81@@VEwDY7e;D{@Wn9b1EgAPy_G+hBG)=nX(^yWMUAqU;&t;*JP;BUn+3!>n1DF62 zY3&dp=CA}u8HqZzyy-_A@tKsnc&oumb!|4|H3 zutDp5U}YOX_595@DJ%z(S>}i`5_uKfr@PvF z)6~#YZak1p3`aKoGqrj4Z>=(+B))1}igIjZKG?XCIIP#C+0@VYP;;y73lrF2Omcn= zw%{xC9MWuEu%BL>=(9~KR>RL}(W)=pA1X~5m1Q!Oauf<3ki&DLP zjA(g61`w3BS{o03W))nSv~}n#aWEjRNVk4rIOW(y!b9qq(4-G#oq8{9Qyj$+NBK6! z1jya9(l58$9~m1kuol{w*SU!h;~s1~ug(*lw}^cs=E0A1U768;m|?ef(`sX9hN~j- zfV13Wgz?K>1%|uyhEq*^dnfxtauqkLFKgo4iG@87VpN;~<^OLS10;IHrCygE+;d+T zuE%lTGC*Mjm`4CgX$3l~05-@(OJdPk(G=p5EspH>_?0@9ApD8pB{^%6yqd1_wgsz% zbB(gch}W0&s%(j+JVzCw4?41unrcP`L1}9;@g$-j^u)D$UaY<`W{=ol1v0AVhc#W9 z!rsNwrtjfT*KdZ7Dr&6HeIF{wlxwLWAspY6U(M2?s&y^;XW|O<4aqN^32~^CihEb0 z+eTr(&6@P{st9{5_UFW~qzEBV&PW$#qh_7smMyb>wItrxUvu4P_ghf>wxuqt5S?== zU%evyJ|iySREM4;u@E`;&1tnuIjiwPBfRb9Se_vNE6cR5dh)>61Rg8L%no+c!*DzGmID2$hd^;t1>Ui_ewPomsAoq= zt1VOb5Vui)3UT7n;`xDs{PFlR5TLQEnu7B)ib7&uay2Gc%gA{>LYcx+wK1oAGN_98 zEF@{8CzBKxIi``<&e2u?)V#wVFmZQ>ubWp_ZRPOF_jqB6!D$@Hb=X&xKJVjEd^5Ut zsk8#W0LR#QUl+7tD41V*Ia ztYjd?c=WB;t;iEy^0UsQ?#imwTgT0hq_B;GK7gtAgPQNH3afCnjoEckG_9~lB6)oTGwJs9Q5Fxg=0 zH=T|R`7J{ZsX>3vnKq93}=ayRK z)c-Jwohe%1;}8_&F9Ac+M+VjbRk39mil2f*lHrVv8!zykk5sTE+>5d3S-dJn;x{*n z&d2UL%)SCuX}V2Hxb2{n$(8JM<~RupoHz+zrLWgo0%2F)hs$e*nibiOr^j-pY7-*W zKVg1n!eqGJ=f8=@wGdLmiXN+bp%1wweXWphZjNBw+z2D1OC_~B%=tH|xWER(=4Kzd z;gn$P9}bTznrz2LW&sbN<$P({T;@RKk!-I7>G&kG(I;F2MpRKDW|7b*;>Q_*b6;)6 zF@|dCc57*gF&lhNzpMFf>9H!1&+uH8&`pGUKUJt|Bt6ELazvI7#XAMPO7!I9|sSVo;~!Eu7ci?iKDsp9XE~N88c`+lq^&LMPZ>8A&D?ki68ae-6hFH?n_-e#RL#dwK@X$H6Z|Ci?xI5F zMbwR`$5{76-#f#%k%V4Sy`kM-_`K3NV(<@z$^1GZ4EQ1)%QblOGIY=}#&^j0I&}He zuV0NL;T+uznp!l1+8DtHFW#;UYQR8!*h8TB7Mo?k-}-SI`thf;1lZ_vSw=%|NJn2q z-K0j#XLxJmh=)8a1yrU&CpA)Jx%H7Dq*JdM*MyUrjpUwo$C$JG<* z5XHM7Vqbkd1#ZLDUO>6e5MTbGB|cgVQGOZG!twK?+@VQlEYYWi+1==tu@6%lYF>t8 z`a?gnD2h^gW^?U^=NUVG5&11~FRT;etwZA@*33tv5L>SQ{foUc&};&Dodk`*ywgc+ z{O%j+@cMXFQ6+KUJXC{~6V~_DZTW}h{H5ARj&NUaEqODqPY_PYI&=Rg|BcSlj%61E zF^A^S;O37UlO89i{nnoPfv6{x|FL_xt0lF2*sT zs`<e_Yy^c6|Mhh5C1D*g;O=>7KcYAWcO ze^;s>6u^7NtQ%}!&RbHFM_<8^)ASLkdAN5o@v}gS5G@ zg+{>1H*;M7XW+9h@Mz^$S!zf;jKZ3)!RKgQU{ne1Ozjqyzj81p&EQ+C|NbG1`Vj9%F2C~84 zHLp2ed(Tu1Gh}x7)1dPLI}$hHYcf~?1Vb|i3r}``;W6(i$W~HT(9*NA=wM8^U5a5I zY0b!2Cb{m87{upuR6~le< zJOP}J2>4AHZc%Kt$NzGV^DPq*n>fh66S0a`7V%}U2?wJtpN78+waLZUsZd#^&G^0& z()U@*&6hP|!nUJZ;wQP6Skoy%$~gX~z#+d`O^m!!we@lx!X3b0=n(!OxyehRCfWU= zPmabT09}5>Z8bt)Z9z3=-NvL=dI>$4MDt9QLV!3MV9_@FVU#HOQJ+kvAC(x>07hBv zKkwVH4bs&VJ$ItumiQ6M5fZwYK>`r^ydyL&IA|=qFT0cRNX*{|s($2}a(OLF=euf8 zSSdDHF)eoP#7bFK?No}hqoJMp^OKQL9j=f-x|zd>&!A6|9f*MZTtu5TPSn?>RQtS) z0(_8W#g8CQ`n!@nktjmkDz@tuO-X8Q`nrq>reHRWV`X!aA1)-E4wZVEm1ai6{oQ_N zAZ=EPI`UE4n50WhauMgBdE8F~SMx3B8+{{jb?GEmS>#+^cTqVwy)aNyc@b(}^#pr_ z^_%;ykM%s;v7>MoQ$&IxE1oXhCT1E}+ZJ2HHrjcLuvZ?5GNJ1Zd91XJFv6v4fZMnr zqm;~PbIHOZk>6RFi+vThw|M^Yq2B7P{@Bw8v07dhyU&aD%ZzKjp0E$yZ$v=^yfpDO zh(^hKX$2Xweod}~Q4<-UU1n*mX*-)H1APp#AaUUCQf5RNG*3;6npxP>4xjM9u&94) zQ4{mm-~x2wD5wV%NVQsINMW$a!OmbdGa7(@fE$4e4 zZPh4*K*1MFW(2m=eHRMAg;y53$b_eC8;X3;+@kZ|3k=Ls2%%JUNZblV5RNx0m$hdF6K^l%*bZ(=Igv>2G`=9|BQW{v& z)?mYa7+iXzjUL<^ID?Qpz_myr>mEGn#~>+}(QIJ8x3)NFN4<#$nM%k6&#gi6zr9K5 z1FO6@VG=0+Uo3#?=`GOt83uxo9}~&NSG7GlXOY?++a@Dzf*WuDn?INwG{KDhLWT>V zJOwknHPr*d9^bK-=M8-)rAO0zfYM~nN4Y>y@R1Xv`0-xtH@!TP;BofthI-FLH=nq| zvgmT2zcaZPhf)II(BiDm=U}J*Hs@!A*_1GuyK@&KnhC3agJ&un`L&_*flIFqUF zm3?kd9aK0)j9Lr62m+?PM=3Q4yag`2V=WM3l7yjo1qKXZ@9ijzznIQXRO?^HX-vu( zx4RDL!7_NHH2ZJUun~ZK15a$V#)$bZ%lnfo;BW(}s1@!ZzAz>T&d=HqDrTm za$!fcq!k*U5Z9iXRf&GVduZV*!b}hN_omHIq7n#)995($hLP7+>fpn9=fL(Cz9EpwGotX{t8k+`n^`$REaxJ`HsfecY12iRzVFNvbv1OZ$FTNE#RftAAatSSAw zfc;n?BPCwemoADXVh$>l1iiAG!-QXwH~(UQpyS|mzbn74sZlIDg8?7m4HRGqz~NY7 zbh=P6GqgLil%~W*;%kj#tK1!?00kCnbORFiqwGWg3}Kz0(|R5wjpB7KEjKO+`fpzc z1Sn5xtPE5>hP_ihc9>htA};;ae4L)VGobXhxm-OW%0mvY!J{-}YJ!DdRFvyH`ON|; zySK~CpO|)r@qmS_+1fD9OsijJCxaPE^G5>(zyG8vE&MyNQ$$6VfHoaO8#$aPK7#KnPSDiP3VDLvC%9x z#2?lI6a{QnP5+&Wbx@#ek^nU|vcl}dwf*Y5$B0Tv69DG9HyTj{sL1$l2)h@-^%Z0b zT#4x4gg_z8d`nttil#uFI0P3ptrUTeVPRd8qK3v_(E&7^b93SHnMc9ELtiKL{tHBb zCOJ`XfC>)a3y(Tde7MTTkx}mtm&Gfh@up+qtw(eLFxfF8&rEowyWCP+!O(;rcgqPS z&Fc%8rnM#~tn6Rs0dMDZdy^gn9jYjW2V1Weh9s!_I?vmR3^oEl5`KRRNO0HGEGG3( zg&jxbF}sc0yT{n3SLH_d9I_Wyk0S$yi4u0Ki3774$fQwsO;-om^;v#p*w5*JUGdSx zn#=vJ?8;D;fJd$(6wc_f46>WAX=GJ+U2!U@VG~~KXM61@#iH^qME=(0Gk`l5`OhNG zM59ypK6HJ#i7^=KZNuJ?{9umX0%u61R&|RUIQ>ig{KnFLdCXj z&6kI{5c6L+0~~Ky1HN$MTFe&vO%XB+_{)dlzNgU_2lcMsTrEJ`&Sg;4amJd9{8Uma zcy>4*3D-|>F(#G1R&Q%~74LxkAxjvWN87pPzIqG{Yv9W8)h;UD#iN#o3cu)0&erbe&esOC5p}1s z{^a|Q5~yMsw3=?VXjRm753rHSLY(Mbub!ff_o-%uY~DGG%ySnci<1+exxns^r67R$ z*aaMapySi?qTTrm*rhYwzRP&bjjR$ zR9GhNeT6N?~=(zl{{Vt35iBc8Mej>eDdVM?ZwXGfU%>+F<+^+&0V%!b0RBo zpcBZohO@t4dH3uyX4vN3hOfE@n6_2g)3JmnPpS4n(nYiKjDa_Xf_O1^dbsq6II8Wu zCmDhGiqrLZEA-+?B2b6X@b`$ZNq{hYABtk~Zvp~ffRt`vi1<%@G&_&*!(EEtnfZ)s z7+Y+5LQ9AI!-b84*acnS^5TgL{cP@a|O#Jd$KfL0lnanpSobbjHjm^%KFbdH;LFFwAo{2eb8yu36q z1@HmXek!;%$LH|4INCBqe>%_)UWwQ7V(_PsP<>M=rH)GE= z6$%YRWX#O;x^TdqfxE@1(k7Y!$z_H{&-}5C!WV}aWnDV~#o?h{~|XevMb1L3)pv67~*@Dpsdsj1@UmP3&`mrpN1R2UKh|Oses1wn5)}rjle)gxW&rAiY4lVT zX8LMkQ5QC%{4_kXzNN>%-3}1=joVgOkpJHWP!oodw!AR562$Y~s$%3Y?%5Rvjw2!) zptg1dc5Tt{Zl)r8@&+sIquPO>PY%h*u#35>vUOfC z2|)5RadMJl%CRi+%M6PkD`PP}9zm|4;BcdS$HvZJ4#>||sc`zel{XjZ_0;H`W0*C6 zQ+{bPp7!mTbElEdvV+cMd1_MD{e>VK3LmM8dW9!7l4o0WEyrCd4`h4{wQ+oxpJT;k zy&C2iuGmKvKRtlnQyau`xnN{>C-RErkhIYfMTcwGSoC`{G?zPV9D0Qh%0O7Y^_P_JQFrujzvcDND zx7RDvr0e8lPcmr2Rf)Wfn`RhpvyFt+u8m{M24k{eY{@FIUC-01E$^d?ed;c&EwThL zL!+KCx9d;;?O1fQn>S?CV#Zq!>TDL157PJZWSa^SPJfdIo=jG9=sNvGFeSy3{1oL~ z3>paYRLms-l1*P)r{eD_s5@C+Feu*HY$)RX+CSdasm20PZ799`(2f87mD8;ZSz1Ko zjePv;)#ZUdN7{zE1e`?Vas~tv?)fB}oUY3nh+|eAj^*?{PuwSJW=dH>T_xlZft$+XT1qW^PMoK86mBpN(Ki29#i%RgE;UQ6T4_{p!z2nj=BrSAKx z)iYLA_`sY&2u*5uhttph94JW#ADV2ar2lm z7Z>S9xy}1-zwA!~b*i;QC1es}hX`J;)|QAl-*ymut?ut(Co^81;!D(D)2?zt zMhSoh?v|_7d=KzgB^X#PfPyySZc_}3NMW;}sGkp**OG2t<_)d?NQ7Tn+I|q$)e{1u z?j-lQE?YH^mC}Mt;Zr#4Ph7u2WfeR%@;387GF94ldY~BnnVj+xEF=F8$ zVuJM*=;aV84WDrjnY?HZs3$U-(9NvclOw~uD?jktZ2}$jVP^)z!mHgcW#Ls8&4kU( zL6j%sVT?Efcdw%1OB&!g(6;C6T0$e*{XA=QPp_LQI^6CSE3%x$+~sbshn0pq-4x&4 zSH5Bpe0}*WmwXHN0*9|7=NT3ae-A_NetT%=vC}Z0+QNS1+85b`WI|ldMV{L;Zt?C9 zB$Sw|NmZQLJEOX58DeT3U*#}f_i^ZrmRlTYA)a^RhLCKExVpSfe4bPoL|$m9PTO(H zVxIEZAb|jLj9#)YZ~7ffA#xi1k2+(5E?B{u8EsZ7pwLpY1Q)oE6Jo5&maHxlVKAyX ztJxOm_O*2@`JQbo(G$hhVb;&>kzaw>C@)VIYNAWs8K~MjoSvseD8#>&FTlS|B4ASo ze+8d!!1&7?A(FiL_NYX_y?GiR^tkR66ER(S4@CMph)8f6{c#iprQJQh=$QPDq{ULi zV(q|NZ(HM}s1)vG=R_ljsWqG3vU01o{NsXn));c8WgaSS7L?!YLfe{VmMLL6d3VNb zve&&4{(B>Ur0#j9#1d-odm12kEp9%X{;VXR`q5{T-kCT`<*a|N4o(o|^F;w52^M^y z>+aGTRs5P(2xVc(3>W!l(c}~PzCZAdV=ZfQ~5$>X(;L_f62PzPu zItVrzCdA>ta;Q5MgWzpUJEp)G*cUzZE1Zay3zNASeAiT`xiB~0T)I+7aDj0EdUer> zz@(oduDVHY@we|f#*L$o!1F#qWlk0I2jhx3=UiTUS%}f7PG$>wKcDW5&Xcrhg58ee zI+TRE^0|F1k3*XTxA^pyaYpG{`^sO$eS+)baH$SGyq!j!twFvvW=>g{rIB9@xBYzZ z+L9x|a-Q|gMc*#Er<4RU7>Q&zDAnE2DEga((6Py`eyb#F+BZf?zfvf=>s?T_x(laMzNRW?!Z=if9@;AI6sLh2g1l6j?5o2w40hK5 zpFZAi%QvfSPAPRGxY3xu@Uho1u*BM}GYQ}3?{Jh%dXv>I^t=4s-*CnRNib<=LE%?duWi%pVEHF4_BgQBGORZ zZ9DKNM*8y#h=OwFt0Lc0TT;0b`-I3Esmce6S6b}3k9#?O)Ox2dw{fk&at_pD6d9_w zX>s!GpoJtf{|#N2t=DK&stfunt}T%thFd<)14f^NBJw3)f@l;?MSDIG>6(`E=<-$@ zbl{m=TR8nT*VIlh%4}^91ae`k(tV;wkx534fR&P9Rp?b^6_ITM&;o_4GqX$_tg2*g zc0;7XAjLp{lmB0Qk2p|V+DtfiYiQSjWGe1-pS$ivgl~&PGTBQo&U1%+>iKGHo!;@f z@T*u9-StwAU^T%lx^7_*lFR|eW5A+BO^p(yN|9$6YQ5pk_q~``XJgG`byzsmE-k`E zUgU%ExxLkl-(4 z6OVS&MjanTDV+6{lrAwQ$m;NUr;rZ0O5_d z-g?<9T7DI1nYrAC4?}F?=EI5InxIniym8#>$~I+yD~}#s!UpvccIpHNE@L8xgFuh> z>(7$CP|^x`+sts!v6GqpJ=Xu0Lxu%Nm`^_6^)NI1L}GXTcT8Wx$rdqmcHVtxm{57l zIhXR+%lO|RFb7%vCPp=6Z0|9@Mqt!gCFr^03Bx)1dfn6LrmLkB;@uMkq5a^YA1)9o z9U#VvhtB!#UmWhgF95Yl{-Ec1X7CFQIO2;b#(?Z}Zj`(Ece5(t$ez@1L`cMLZ!ZA_ z!Bx0FRMqYfcKuMf{?GLB-b?Anl>(2 zdA`Q@>^lo5iO;1RC;41xQBX*bOc2Mj*6AHg%g2q6xW_+vh`0@54q)xNVe?DbD`;#v zXgd)~V`2g^6-;=FD!BxjOUVBXuu2Tg^*2N0VWiOc{7hVum0F94Im?UZWF!s_?w<Gz>pyoWo{Kuqj~<}0uHq%zP_^xEzVlOS)6XF}RKei_CzI!KV0UIqu)hCY zxkyA@rMabc^MN7~)vfT9q1d$<9@HU9gEeQ-yceAAik&YV1AzP36xv}Q`oAVsA{A|l zU(EiCbl&e*PFXmRYh+UbDX<7r{VddDCGNx-pY2OX~2RqApX232iKllL7oh38M z909WcyeXjTByK?06Iq>enS)bN3^1M}%&uH1^5>pDMdQNC(gtbq!zE_)_qE;cvzY(4 zGP(UkU=W$psycDI&>@U0GcA$Ro~%2tQnF4iL1pv-0@)#MfU1`&Q)s6l`w`0QDr;ew zIgTN%(??7CCl=W?0!Di%#8aRc#VN-0q+jko_u@WB3K6)4fo!KT> z!b^;aGthD}SC7@iX_XRX$k28wc1~1B02(Huwt_K8ji5dPGHNMBX+JUci!%7AdXmOJW+ZiQ9$JPr&lAY?=04-FsNADi75$3`a^ zI}rNK3A=Guqasr@W`GBvprV1mb!-Xy#&Oq z>kX5ZO;dbSBG|3PbRYE4oKr_Ee}}=cnr|gIMDzvRtTj+6nEnko4whhCwpgCZ96g*A zL&ILq3j&KX99j`0&y5$q-b(N(+|NvV9Y$R?N?9h`M-?QJak4rshX;VX(*%Bkw ztPZTQ=?W|F=iz>IXTwgih!>s?1q-I~yRfN#AdCX&uf)VTl7 za&~|zvkg=3$nNf8U$NlTcYIaTl)w+zG|3@_wG^hC8#_Ojht{9rprUD#j@kgD)FRe^F&5w$e!8RJF-s0$|l)6$)=3VMA<83lf8X1vw!cq zL;C*y$b;VZ9VzP!8CI>~S2&{eAuQjM=7TYv&$c z-+VF~vWp`>wfh3DZD*D*H~9mm7P9^^nR7Q4FEs zDcs0#IyK3k3c*i+z(R`QNZQaeN&h-E3reCVjQS)}A1Y~cA@zH~-?2Gd1tQFO&!EO? z^pF06!N4^1`HX_ z;2@=g&SL0UA;nl5n9ra-sK$iw{yLC*^ENnDjUYCa_zC3*I1|`Ry-|q`0waFt#YKIJ zWr%x#YC`XHH7LF>Rn48hM1bEA9AH}K5YKs}1@t}1F&{BUNy@;&4N73nc6j7fdU84p z=lpLWyi?Wo<;?%*|M45r!JHtgsf+&z6LpwU27J~pzaHcHUHx|#Kte4pPboLpAxV#5$G-E~kmTU4cc5 zQnQ<2>;=@o8AA$MeJt?dXHkD5)h zAt_)t;)2ZcC}t&Td;L5`NF6<(T1fiAJ#dh5k|d5(bl}67!PspQekw07OGw@Ge^~Yr zZ1<7osW{vd@)7or5Ex#A-D({;FIK8}ah}=<#Vr>C_?OVA1ep}d2)}=pgL`>V1I2nZ z%W&z0B`2iuL&Icj`a18W9BcK-A(1pV*$lBzACh4N{{L*XO_F3}1`8RJ6piLPSqU?7 z2QME7c?A$q=Osz-&oo3BBq9(C5(@yKZ^&2h^t>7?>=cwFUqH{@fSeov8*0afI0M9i z+yiqOJa7ECcQS@-h4!KCZma@`ZKgcr>J+b&IspIA5ASnaM^fQ-sGORE-%tc3DzL?BDGGm$wR>^~^p2NM*jc&; z6V%3j@>kK(g34C~*jed5p(tpNmAMhuj-*(&|vU)I9J$i^g5yt@w;WZk@W=kF}TTZm!w2T6fw^7EBoxW`su zqvj~2%-2R!bRx`lr<>lMk^(_;?6v%y&Y$XpqFvMPrCT`u=k1JUmkwEo>2+@%jxC@TYyPyyQZ2C7$ z;rwZqm4XGo<{VIIKrIO1myVBshN&7xFipkr+?PoSuQ#WbLmeayfH<|R<@{&H8m50H zftim1BMGRD({;lds_1Db3q z_227%H7i6ITSNH@IOfZ_C)Y55di((`rkZQeRVr{yHbE)=)20o_#cl#yNB~6O>3aC$ z)JeSJA!0AV0)00DQ-VC;=TAsOR-Er(Mg4_T2Gi1NWoZ90ejloKBq|D^lj90$7mlaF zd9fcH`B@|u7=yqI@Qzs0$BeKzUcw88dr1ff^Vg)d*XD`S#=!?7^^$w%haP*5)AyIe zu_^#ETe~5oDAq~gDF~fnbuS8Jssdm@xfaRbe-R4kT7w2q$zDOkK8#qzi|b$8#s$+P zue=>6fKk;59iQ!ponKKv(iWWhgCL3Ym^!qQfFEap1zc&EXc8a)U%@5yLFy%Kh|7b` z1Wz3gy>uCwDIJg9=!0v=#_@NMk6#nIx%?ttGKkJ3$ zVtu-)mj^iVZ1+{eX<65BVvpa)Lbd>*8H&r-|J?*eEbm2%GG{43ndE~vb{LaIgA$Cb z2ID6PfVUTWF@Xx1FvKF6q3?;%CW{;a@^mfFCp|HHC9n6GH5lFl`}KAbXvK&=={@8l z`O&9VQD&34{~!yqpf6*M?eUSk!oh-Zi(KC5Sq*YtF@H~F0W3=2AP*lED2^3k75s%E zcnA_~cA+Da5F6^xf>`)F2Ok0V0EY29R*?z<@)UeNEK1e>m%@alvyGVpueUkgYH zS^tq4SPdqIZ?k|;NMW@>*7>h0!uqHX6e>V6`5*XUXOCAx3!xzxi$w%33yyF0M2YO5 zC2bygslwp+semI_?%YC$KgT*cPMpLHP6jUpV`D0((Z@?0B8HB2Z0-XJNY3k=5R0N| z6a5#l1mKA6PRyH=Qw~EaB+zTaxq;a1enfIWk4`yGmLzt>1JsH>OoI30FwE*>K*$`k z&5IUHW1fT6Vra_1%0WeB7_E>*?Z(&EjgII#G`&6@PXZjPLjfA8_<0fV=`g~if4n9P zHRemW3*f&JBKEKGpfK_*@*Kp4G|BSRav+E&0H#5l9A!2E$1Xkr9?VB35#S(~`0n)6 zDg0}1Kz5q|EUpv>^IShZ^^t{OL)pnB1-^v3;NhMSbTULp*6X#xt3 z=uq*ezMemZu_v=(C^WhN;#LD5;hBSClELZl zhwF(}BFAAJiYQI^iIUrJCC8-`0)TQnLkqYR9OUcN2=z&-2h?pIBcGbbfRUummy(ZI z<)sM`JC1hxfxb4hB^=o;Lk!l^NxVe}>?ZUI3l4^Ad=;<#zlTi$@afC=9Rmb&cnZ{~ zblM#VXC0}}iL(0?tW)6!TtOKeK-|y>Q!O0***Q^g_CW5hcK4 ztq4Z`)t6NMC0(;=!bQm5I z26l@`%6u1vweasGkoBX$NFb;&;$G%4O($o;m#mqCN+gjMo)j=nbdZMypXMncg-Ar- zxf6PiWbq8gw*@3>w_yVRv)3v!V$dHBWD2X4`Nx>CkRlKZQTREO#di2{V4q$wj3mhc zik}Z6ZJ&L2u@|S#*vE=+1Aii>!8G<22;@ZL@EfYJSkR%0Bq|!}s*S*eZz#I*%dnnd z)bDm0V9HHwUW()0&;=sQB6|5??2C}av3+wxeS!Z)lXD)F6;j7;V8x)ww{L&pUo%)AU>mpsGnP}Hn6dW7t0I#6gdJ#rHyaW+z3YJY(PfS4%IuB+op zoRE6Lq|zx(#pzs3j>jAzI!+@K-u$p0<30ar8`0jNf!(TQ@P87xLL#&C>AAO}B1 zupup?5_W_}HyKW!!ba7rfdGR>>hG24Ay;w#9L@w19r#om_~V=rI`iB8tjhK6{|*K+ zcda#f_ot$AwD}HNd)DMVB$jHG4po=N{ivB{f<3LLYW;4gY4dCZGm*(36wTKw2`g5v zw*)^TldE=|8qf56q{*`u)Rg{Xg`>Hg5zoY9MBwnF`qt)r?Oe$tws=>ijqyfLs~}H< zsXe7p)$%{x3m+Hf_lQQdcz1hLbK(xVD6>qe_r?e2d~_7}T}JI0zYE!>ejE3kI#cde z)xOR9-NdWiYbg%OZAGE3lF%Ne=uw9u`(cfxXsqP zvYTlim@2Heb~x|Lc3^k^9sL{i+hcd}M@{rr=SF$&Y^En3)=qw1+3RkY8QJXoy?a=n z_^U!8-P53vmad&j{z^{7OZ}e*AO6#HJ_?qwm`9z}U+VDi;ZowhD$7t+`;Py86 zVR^x>$2u9E(AK-eJI(U4LtClBW(h0o3m%;ohnFW3pRMJ+_B{B0sB6DxEkAVFJ4(5` zrz!m2C|LNvJR!c{9sCDRR(~b#tj~(B>eK6&n+w@9`;wSAGU{9UgCVNKnc>TUkG{vDu@VlKCyg(1@O3#-SyzE zu!07!$USPUb9uru5&o(XItEbP&(%5Uz66OCQtsps%Iv|@Zu7xM0$kND8u5~R|8kaL*Hy%bQO=FfOs zmuwBL*_j#H*zOvqezy99N+XO7TjQhv_=4!a4<_%fQBQahEi-J2pSZ1>tH_OW2Ve67 znFaPfwLxW)exA?&8>^39Lv}U&-ZxKt_A^nZ2uT8i0&Wvv`Dx?lOVw1b(C0Dfy3YDo z`rqEINj;4H;4=5qtd42smRR|K{ZrChXSXH}ab#_zv z1XbZ7K{cOc4pjI!A4(@cd8C?@th?TDA>FFh6L)4eyI!(YFem1uK01Xj7O>aM0(J}Y zXM_*8xJQ1IAoYNjdGk(LvuRAG)$G)>9e$k22JSmMmH$hA2+(W*+p0DqNgGoFeo;XoFI)E&ClydgNB&Hniw#vx` zL;sSuPNe7ViF9>YS2)bE5J^JS$TH5Y;ODC(-C^g_x3qztBoj3Bh{pS*|9vwF7;+o9 zE(boy!?t-UD6e71u0@A23P3AA)SN0x>tbu5S5ZJkL@#HJug%5Oe7(GDuob_aF%b1i zm~UEx-RtSXyptQ!`m9L<&CnH*8=_jO_|h3&G^!1 z2!xJu;0CR%3U2RCP(8CAod~RW8q7UhwU|e-pMjH_QU?3Cct(S|b+CQRh|m)qLz?Uj z)0O?MZYeL9y*J@C(@5X4R#Ne_q-5p(vkFg-U7eL+>(QnC;kB)&8LdJB_zV$PfyWUC zV3VF2VC2{Hb^;J==)um%!wvHUw}Hi-YefPh_}d3$OPiNs>t4|bv@l+WT_DywomIdr zK&EIw1m~i@on12;x2miD#@KG6zpCNzjlbJh>CLCr{1#;tqpUUNrxY8X;WLN~QamB1 zo+*&aExYF)&~8&I`OWOEl9#Ofu9~a&sZg4B|9ts>%EERif@dgY*1U0PKK&essc4UI zul%!WQnIq)(NHmsj=TQ`1|eQx52%8@8jY+!+-CIZA?0|Ze)!NIJ9q7a(EpB$=0|ZO z9EH3E9f~kWJjBzzc2u8`{80SoPF2NH`nd`h_twA4hu$FMHG&T}$nbH7GBlfnA-G9C zX6#+-szizI%zm`X{~Tme7ygwrY^(u4@xvO^Sis(0%lOd{-ENbAYhMT)wJ=m-7so)PJl)K&3#*`U;c^q@%tv-;uC&0*1ztg*Rbro*&wo zPkjoLI&{bbyArc%@S5F&#Br@B+y^yLZ>oNssrANA#1=Z^cJ|K&!`-VjH#||lckN!t9$EdG z=)dOtq^Sv&s<~~k7vQ3n9 z|A=tfRi>vC$F%^!1QxUTlWaDZMDOHs6P${gPSXEq3`qn1>-%BALs7padWOlc^)j#? zp5)pv4j@I2s~8&yQNqZqWfK%1anrNT`0^r9^7n(ss!I#hgt26?Tp~PX){`Gf2 zP4ED!Yt7O=7OOGFe*A9|#0;kCi_qiWtHJ@k8$;l+&t3)7!nohP`T{vg{*F1NhbpOx z647a6O`YBeEy)^V$TB?-m-)@X)8argxW*kRt8oO!e}NGF+n6_^(}3p7!*zMAB?%xS zvu)exr}NL*H|ljmqR)-A0gFUJh0g5kr;nQK?30cShG`#34PJpIF$sDZB-;4jPT#!! z+Dnz6DO`T9SjK&W+i-HvT~R~x$~&GQP#MRD98Kri{^Lose?XqkAB$N;65&Nf04}qj zK7;!b>o6L+Bzje);DZklWY?v#FP#_10wwUNdWrkhhwHofTi3HOA+DGgFzlKqfE6mv zm%rQ$iLa^qaf3APVKXb%6Y-=mup77SsytpUVhwx@U7W{;7NTz6(uEwU^)kKMu#-GR zia7*o?z{$tlXR5x z5|?azq`)qR{_(i*^Ty(FR$32AKM#khGN#a~P*0R}a*cqn0@Ejp&CSq;i+GA1bZj&r zSAPUJmnA4MggP`Sr2B8c>gAOVXkcEtQVS|S+&I41P9s7g>dHKj{}YwoCokP=(u_h) zKu94FH{n-*yABvo7lgG=f)`7aYJ%QhQ`%jGyYd7S zF(VxYzpbX{xFsC2QC7|Ul)e}=(>w->Q1baZ5M>t9`^YB1ZPB*5Aa2m!#x0h6a4zKh z#wc~9s4#qEPP8CWN(8k^l90RT+OAyn;n|f&l_SHGRQ9TkM-}z7q6lt7=FWGQjL=1z z9Oh>a?Wm{^Z)vC}J`2sZHu>V!j>t~LUUN?$)n#gTiQV?tCFoo!cc}i6iGgI~e-H{J zNSJ7NEEWjHMQRk0-|DQ?hd1mpbv(sBoI@wv3nn#gx^r8q25wR5!q_l86s>S?EFU1^ zCNNR)YzE&k9H5L_0UH%Cz;%E%{B~8mb_z?5uVE1kU@W<`?{8yE4Jr0GMvDMiLnX@3 z<{d)@au3!)h*|zT>Ka&KSk~ZZ4CG{a$EGh24zk)E`w`=VkUTgH=wqVJVfGFyDI6Y(mlzegmT2$= zzTNJ%ojqqFC;V*ZDsyyu%C^VYsaO=Di)@jL+YzsOMU3;lNd+5(pd{^U9=y$e#M$=Z zW!$H%Zn3#@Hs5|vj+{185DwUhesKorggr{8ZtknRKqYNX74?K_jU=?l*u_|VvM!~; zwn)HMYVvmgl`dyjbvcKr0S{WuEGmj)M9Ne6o5kXv|vs&qdnGae4paF0aT_54)k-dw+-TNFeBGrUz} z!Y;jUG2aXQ_Cbn~ITrf$<-GX#xLNp%jscmlLYB@{_W(qQYkA_m0#zItdiT@ z$9h_=x75$w+lPI`oi$MujICvB0oMxH}JqUv7bo5T>v;Vk}I8oxZ}KuipnFWq} zBp7GYuegrqu9?hA?KQcw#=KFZb_i3dG-&?OOvUGyN$0&zNXBX;^*YX*k_2u6ut^Wq zY7&cEK#7DxpL`mymnn!D;xSEdL5W2U&s0&A=qewf2>oEU^qtamD%YraBYwUcQVWWt zmDCrW>!ds*ot2D1H8~LL0POoE48clc$*-u`+nV3lF_Eb(Z>>Fpf-yw|(UloSD!#;5 zbe!vo#FTzxh6c=+G}w$>jQe?X@jF8)1GK)ei&@(;phJccl$WmbF-v@ef-N?t$Ol`l z2_>x`YS359AeXZC)q3wwp-bE;tuWncKK%oRMfQW0uW({=%Fw5+Ke?niFmpEW@lnT~ z*91T}iWNkyvqX|cPE{`rmyi)v0vFz8Kz_|t?08X8w&*|ew4rxNLQ@jd2D|j>+G+Sq zB$ztWr06T916h6(oWnQ*b<};~g9KMRT7|5hgXEQ6Pv!UGKR~CYjSgbQqoY}Vot1%a zZi?<=p=XgZuh?2P(bJu%(PCl8ydV29gL(ZOT7%nDt3o@I(R_T|bZc^KBwcAg4CuDg z){<1CnCv9*Nzy1co5$nolW7IjV+0R`V>|IOH-;?6pWG;f}x#z7w( z*Zr+U8+#Zf2(=g^n}mN0tZd0D%em)q8e4PTTtmQ(kXSvx`!9GA+mZ>2^p+>iN@7tG zj5SGm8AHB&EQ=I1rR8j4G@~VT(ERQ?x0As?`&gx<=`LHW&z4}WyTowWCoNWq(fNWM zmBfuo*4Cd zgZF03o}2;Okv(pXvjv|g(l6cDj8ibnY?yD$dw$axTQFHjm%znMWK!!#W0Z%|ch(<-NHX-6aRzU~Er-P(a~FY@_PzD9=fh;l@U zVthB~e{h50OCt0>(v-W89`-=}<Vd8V~!Jr^RHknK#V{knvO`%~A?&u`ywYqM2zS)UVHzne_W zo1leX@ayiK+iFLo<0}A2L%hc-FOWv!eCU}Eewwg#15XC=10+I<$be6QxMCaq{`jp@ zE{)78bzwzt0mq&xyRg*g|N7Dbdp>hWYzP<->Tzl3ew6C7z?58*G7$ct&3dDV5PJp( zZAtEjRx{-H&VZm(72-PX`dCU#!fKX9ugFwu?L~Rc__RyO_T%f8<}O#uYo=%<$~|`% zbT+iv{cguc)yIgb<-yg_H_c-q2(DyM{`wZLVNaFRc=1QXC_4t?oCohXv^lN?%*DWdym(9Zt#t5#Fl{d?F}{PV zAVUQplu$ptg9-+MgRNMn1J$Ane;hk4rcjP2jYdH|YFdDN=EJQ=eJX(m@a}X+yohPs zPgd5s-DJ$sxF5r02FRB3cA;s01@x?bw{gvGz*WFK2_r<=8$k>-`e8TEyZ<1~&CR1m z_y<1fPf^}S1s2CG6*v(<<(d)EeTJRBb^7LK3paxP#W2_}-D1dqdQ=osAgT`op-%#N4h51ciF}a$tVPJ}@Cx)gC@ti8CAiJg;+Qb? z*Z+EE$C<3JgLgQD-%-VW7|t2~Fs5^sV52LhA)L;(IDf!^ItxEv!)pxObofH1t3Oe3 z#d1;O%O)viR@83oUye?dXhFNU24%h9tBn~tiXp~uSDoycuRF}s0WQ9IOkEeeKaUfb zZp1o`PZ194aQ&QRF_LEqh*LMKnv&LmnxcG52>90%f%@OEa%?-suT7s-XN2EFkSxDqW@4S4?9tZ^ur)F-&y+@k+=3k zOlLUP9b+8JHC5%Pxciyc`b=A<+I}{NCa4p1J`^J-KlaCzsLW;dTuQz&fNr5d8g3!8 z+Ci%~<3iWW*}vHXP4&rZBVBC|;YC$UNagoIT#cj5L!hwUM* zs-|0wEZD7fvyW4Hp*}8zl=st|)y=eY@)l5~R1kGEC<6O^v(s()sb+O`RcLhUumsmG zL;d{rf4!k7)||2k<1wx2sOdrS0Sp* z952YJ$!znh_N8UIq7<8S*_ZL#L>F^Du13gs{+?;|TXgs975xPhBZfJ?rJG(~%T8QS zIA>f@bfB+wc+aCM#tj}b)Ip>wXx;PkGmS12Cl6E7jke}5=5`ZO;gcPP-=`i4U~;_> zKal3h^ksG%gA2tBIyyQb@TRJjgzDy{IcD?!GX8%AyfB3rUj}UGTTan`(0n={W3@B zMCDbaENF7#^Hyc$WY&wQEe{=5JGUPUp4Y)7n8$A*nyi4DF{m;|3g3Qsol83TMrzb@ z)V(tuf3)yk>y(bpZ{}qC#i@~Y5>QCte4u~#S?iW=5xMHfe-Ka&$O#UiYiWB__VvM2 z5lmsnR}>tY!apJu5BcQNj!^qrm7t!1U8Sbkwp#9>#DqVKf=0pCT254|z$cn6$v<+p zT-iTJ7YO5i6p}-#)VADZbKun_=TsFnmWdCZ=(f8vAj5OWEjN-ASF z5e=1xa^@um=m_0@kNgq&T`a2XWvbn9zi`Bv_6qsUgnb43e#ZlYE)9(Zhw|K5ZP%pe zJ^0)m$r8k1%#Gr}P1bDM*wVrGFY}HFf~m!h^}&MkU^Gk$IV#ni-T&!gqV@(cU~Xxv zs#dz6XP!s&R;%1ISnhh*Y2-R}=hn~XMp_Qa-xs@{w@&)d332>NmLd$JWEu7rj%|t!4-ZtFsC!c0^s}3dT{wu_wQ6?UZpj~PYTvvBiw`Zfw zva{}0P%SLH!<4^bMq2i%X;@n1BD}LR{8nUSjOh~=zNUBXogNRetR3Wn9%#RykzgE_ zqXqaWkF7z1_SOte%~3U7U0n&{slUnIJ^F#c&@|SNKMjG#Dyhyz>yyQieY2Gk0_LBt z%R0>ZIcm`V_${_plEU%PD9?DO-A4h+;p9}2$16%u?97utIk;1^uSH?bjm`n`T$Vbi?}tj+gfWtgxp!Q=jwmn3M*v_ z>6v-fy7x&VocyBwv-PEk43TUG5n{AmW zg6cY+d<>0G&=b2)!nxmCG4CD7QSEdccy%GAsI9y*C$)`#5g_y|XSkt#0owRBO7MX8 z61p24Wyw-Or9A>H3QQd{x%b)hJ3`5|vvQth(a+QH);hk7G3rUwD4|nXze~b8-~8X2bxVJzI~~F_u{>`-{+TA!zW>9zE$<& znc9g8|1>-2T1-{=woW&rRVsNjzNd7EN06X*n~1eKGOXHmTFolEL2Sv;K3aXd@FS@< zw_-Iz0*8iA+Gci?uxXe<_<6ia^Vq}^FQWR(?Sq71UOyruv-78nf4t=JO_UJ**DbzUxlLLys(B$293{8!t0OcV#B< z>|2uD7p9A}xDw~2cLWW>yq|9x9kt2sLm%vOzvlD0nQFSSr5~$)W}6iR|lVj+usEl;R>QG!&1BU zEB%-Kgfy?En7Y~0@va9k5~X&<1sf#L_~Z=BX#qBS^#B{qUcT-fK&2N(u9L2~eb`da z&W#H8VelH(-{-SqXvi=hB{Z zu1-*pgeb>JMP{X{W8s;s$E=S00v~V$$!*o|AemEGAV{es)60Y`Gu5S!KEOk5s?&^qInm zT3yZ=sjHg&iU7|$SW3EWqP09|X@_g(xVWfJNA?9#B7LQZ=E9Szs2G!BZ#r^oQ z1oX|DH&wk`?v)(%Rla_pymJ0#lBcbZwOq@%g~eJ}#PvhXmD2xg`)z+u*s73x&ZZ<= zu?*sXxsTDEi&$uGZMO7}nB@7>V%?ma;mH{q$`cdPl@=N_FGA~ju4dO> z3L6*ce)BdF2B;R9RN!&G&~Cv-BpzMwU}_YR*IW(9qzw z+PQbpDJq-@J6`#t)xmt6!<6g2y*&v}j=3lIBJ-%B4i1R-&moK1)Mwr?21@~?ABggi z8)D%Let;F!=VZ2_8n0c+~Lm!To4_M%3?zQ|!+>I=ZVg2EK{fjB0DYqgdUi z!P#9zm->oPujY$u`PAG)0?I~PJ9WcPLV6|`$R|c5c@lwLO7sKHKtOwtC|!%E1u4ig zy%2N|PW!@iPotn5JKZ{g9nzAO7NBBAl_K&n6MXts)&ao8m#LN(v^?YM8v=EVQ7C4+ zp{_`6`CxEEwQKz@RA8h*BNUabd=l@pJPon>+TDSqPGJG;kBO0FvUF7Jdr&0DkV z<2f&}Ytgsa`)%`rW?jvMCUv@#oPUHsXzwoaTmb<#GzDgJ0n!FKLu`r{{3-u5H2BhS zJCSK3K@kG+2I6Yweo<(}b)rO@}f3SjlzR$cfO*wBPHb*m|!mLR9@nEjhMHY(+=0cMPlhGuh99Es# zj^92hTtX%12zG!gVYcbr=+ga~Y=Nt^+FBi|;NBpfq|Z)}LzJyXb$iN;*VV;eXvS7* ze6t{C@@=_;vR0|qeKy$w+mS$z#7_*VJSyX|HtTpfWjYcTTBUAg{v+x}PHxnVokI;| zsB{*25A`a?VXOSd)6uOGu4{q9oCLAD1}&;+B^QT)%Kk#&6-H|#4vqFZ#AfCMuDg9S zVHAA7W|gPzWQ9}243%#9l|NpNF$}=t_czd=#wpZEkm7ou+qFSh(EC0xp2#?LTPTKm zG!{ney&+khX~st!y0CLg*CK$;|erp3cHqgNI;BZR6{f`c5TJM$^J5 zTun%1?Ho9IQ@Ht7UeWO~pTD)KKx(XW-8Szb@nq~tur@Wb3HDb)+qK^hD&#SRvxSbvK&QSd@-!ZtG>@4X+Hu>iMrM#=9 z^4G{Y=iWDdSJ5t~yZ?j^`81Q|cjv%2^sO7{K;W@$@w~x5SQ{Ej5btbIQgjji-}w2C z)gjzjg+CgC3C0&g2Tjl37T$U=BVlVQ8uq|$k?*jeg`Tos!$`zQ z+9+|k@jhpxZ876-nX_>Z@ZO^z@WEL@&|xd3D3=Y1d@vRNt|lt>rNkv1Q$k2CZX7qg zv~4}bucnBg4`dlu;r8}E{Jmv6AmB-OD_rt@$cs6gf^X(q)!nVSp_KK2te}-8&AHkZ zJTW%;xpL7a@(*;|PcxTR3o;2pEhnf<%Ca6b35qzP4DYzbbe0fY(YR!)PxT6J$kf~s zVgPR#nF%}i?`GHAToP(Ax;0FZ;Y8V3&v41|=kj*&tWvggSrxN74X?vUpk~5T)ojax zoZGS%%!UFh;%wn-+Km?~9Tz`HxiNpF6>_Egj_yrBx}mO}R6Y4duYu~0VEYeY_ltil z_(o-}0oNJ?n-xnUdwi`jnJC~}|DuFd1rxVa5GV-Pc5yU!(R>HdTBc6!_)Z16Y-zLZ z{8WE)Uan9-`^vW--`pwZ{M+7EzaRO?KN>ap;nt>CEdxemY1yJa%q|&(OWMu8NL7mbt_Xr5vys4_ zPRjA-Pt{Zd94q33CAE=J!;KA@z1ojHi#u!adXb?+gEFGhP0zd`&ff!P3%O2E4?=lNy7O}A9V6qzQKlT^K_Gi1}%x$r<`MFcbm3{GG1 z1KlM4v`L;9uRE=a+fRzuTDVBtz3yiF#`;bws6YMOV>VU1768qBt_GDAvawD^nZU+y z@MeZf3H1g8@U%;OSfUrlFM*O=`G=27-=xt1mIWzuz3)w}Iy`4(0BSa8=yq5z5T(wRyz6a@thBtV94oK385+}B*t#;90$SIsv~UZTUXHZ66qtYf)_W(k zkUk|U?$c5eYHfHDR(Tod%KMr=(qxt$`QZM_+f_$i%j>P6H|ZSCdK;eWxmU^exEn9B z)gKyhHr}ab5iSXqWo%4dv%AofXL)YMY~-S4@9Jc0*MHwOrXuS%UAS|h1Dp3GbU#&E zR&`51YI}75+VpN=nKv7FnwyA4ds8nI;a}~l-u>iWfw-QL(NsF!Tj!XUsJgXYAY$wG zRtIuUDq=gJz~zOI!`m}KOVvuG8CK-)VCF%xPiQ2xN`iZ&l{Vu$V?ESGxs>6qW=&n) z_Iyn|<@=l|Q5g=|4r8)L`vbh(bWK!622?Y$VPBDS_>bG5rohL6msQ@>g62==3IB8V z4484*8N8YJm6d!1G$c7e_^#^r#KA9;e3?poqCS+c+DY!o#|?I)@u3e){+#mji!BYW zmHWMOH#QlETOG+v_|GY_$`4N(+NGwCF4#p-PEf^EbT>+B?*6uTi6w%<#z&w2u z!D$KJNh&YA0r`!q%ous&KX+YgJaXOS2-K6m3%9^c_v{||SK=QP%;^htPu{MkT;FX7 zbe^JXyi;Ps!6-U9!O?ifdG7t|?x>yRALd_yCnBq4vBZW*uEPV!bZ z{h$X{x?vQtgKeyW3^9{^Zt|g`^s69e+jMF#FSxx1$(R}L;QGYI_ftGC^qTzy)n`ki zzA~o)rU~?eS}zjd-Lhw2jYA6x3s;HWeTu&u9ZiC+oo3@aaSZ*SPW3(cD>v1RxFO_M zdfu=A7K=u{FoQIYJB#|U%fjXBNiD2`w{5By+D5{&q?OthpIUyeApcY#Sa^G_7I~J{ zYSFo|-zj`@EQpbHlL7s@_c>@)xUi{j{u#g-(ax#mCa%M>_qY0= z5K@>s62u3KjuxTA1<)x7l@QwL+)?>cwGutGC6h#iMid-EoAgYw51rH-GIn2q*^dfH zu+jEYANe~ey9;`~p%i><61%J*E*jxXcaLw*a~uhr|5Fu2H(NnY$z-=_T-H9sHz*Tk z@OEW4?oKBN`4Mn3z)8E#z)kKHm8{BsF_&^w^oq#9T4BcTSXd{g6CvOvmbEes`#QcS zUStNG+|9<$h}lD{wp zo}qa*)zp1$qS9@CzwIV!59|lvwRtkm&i+eo(=Q2hyxz+eUp!(adCGQuaY8TLs0HSI zL03{0cWS4Qf@fctR({Q@#rm0x{`BzdeB1P(hm=gEjFG;qA*Fy_7?04A7q_--_o0Yg5S0`o5 zOf~z&*LQVp+^xPS|K>hNBSEpuCi?L}zI4r=-R9$<Ze`kWCwqin5pHEWK4!|;9Mm+*SIA9000Cq_fACzTRDl=BLb66as8qO=e=sSncrwy^bM+!08p>hQeaA~D_ zo5G{heB@%hvO}f7giY3~%i1du?51_Si&vsDFXYMK!YmkTF2QIR^*jWnKf0Y~dkZS@ z+uz?c<{kAbJwf#>s*|&dDb?BFs6Ab$<{o)e3JiSao8i(eyl2!JlEZ6O%qp_$%%xA$WLr{AC>J&tGr@Z(dN-bz8L4aaR0# z5&64n6$$6o+B^8iwE(GvFp7i=LYh4f$?c0oOEX z(39|7^;HLHwRq=LzN);`K)x06@8?I}dzpr%Zl`>YitY^LXUgGnwJ;<>CD~pZD4()I zwR>jWy?W7Q#Is0PkqY(NjSIRyd4FcC?L23Q1Xyd<^W_x*J35UYydR?n$A5_GDX6D#&BD|P z-}0v$AL_>BU#y z+Fjx1WbC>UHBYcTOCO{z1<#UCh7?d|7GoJ_%QZ$EiH@lYETUk#J!`APFw1&k2=WmfFkss5CY1zhn zeauXDF31p~wyO?z;y44Qfd#&UG^*;{^^D9hPoaA7C}!xkXMdob>GhyS=`iZc?#aLu zWCb%)Z;=&`+;nw$@cqHaI&t43J7>H_M0w_VngJ~;i2Vdg09obVN5*6xi_(+svpl1w zVTal=B8py-c0eU2@12huGK~(MG?g;k9THsmw%RRQDBz-0EW)e2YfR1aPU8MLVI*hO z4CVZzdnkQQTS}4T0D2BW$YqXl=YzS1>@g(zt1-Z%l29Uwgj?!lYs%~Aq=GDju`7W; zsS0>dOfaBZ-uAUXJ%Z2Q;ANvYx4~n6)X^fbsClyIFL8U9fi{9-aHDe9N=!Ne^*lN0 zKS(GcMNHoqTNz~{B>*jJ{-J^(?nXR^_VO=jDV;5jgq^LR26I_ra@#fKW&J~Rx+My# zYgY*KeSPF*WcIvgTn1PBoixDP92YXRK$~+U^5Nv4Cn@O-cTqt+u>Y3={==!~*JGST z=}ENN+QnE3JHA_P7U?|^Gjs{pY$ClD@(tA>bo7mC7MDQR?wrvrVGH}$b*Q&V>qH$C z_an^bH+Wd*7jt$%;4B`N$}PKSUOqFd_SOYE-2YN?#lYUTW!;+h+bk|E%snuv&V%$q zbR#@m3VY3fzi~W3)oDa?$dtq3@k6$ir8MwZJVYMZ`YP@66GwaE?@5&BD*|aGR^vUL zcFpUon+xZL6+zYKty?{Bt_c1A5%tw!QFh(ezylAVw2BHS(v2Vz11M6%NJ&U{E8Wtf zNHYjScT0Dt3W78PNSEXwB`y7(8=v?0{pEG3*UUZVK4+i3*IsLF@|hxc6azg6K;Qpc z&~WidLK3UHigZ6Af^KUM%>mzE6g>HcW?>-dRAchc%u+=2&uje?ZD9SNl)R7wfVQn_Dnmjt?ZLpVQrOd;&E6}QYkv~0)8SN#TqJBobJD zbT}K7kTkDO+DTi#SpD?DaFs>URlzl1Bpyvp(|6XftW47{Ae!?T;n;qyxGQ{Xs+AiA z0PFA1WbC7Rk6QZM$k(>y%B7z_Be?UZ?>IPd$B2iU5FBTX5ec z5AIt#JnBI^UE^rPnF(qa`kj7&H8(}s+r~TiF?@pP1=yI* zU>jlf=k-V-Rs||`weMiOogIocY<>rNBt+inB{wL@I$j^6+MCj!<;`c^v%S7L zv5le2YH-d}-pU?Q8az3`1uA(wz?4xgBO#rdUS2k9{(WTNFNVA_+o8sLcUE1)u!ZG2 zvpJq7r~y5k?bbue2z_$G3uE_Pb1fdbb)mQJf-oUtPfAm@u{T=TiBrKcCRy2Z(6bN$ zU`XBhee<*E=Q(MDXuXt%nWihAbRBDYeaIk#kSLYTYo%V0x{@n6j#EaSM}mM2Wk>}3 zAVY#MAkD5MOhJUTgnD@Q|e59B;$k+65(X@y2OwqJ~ zy6afJR`$=)RXQpA=bvjHQvW|E8hu@NPg87Ou)e?Tiy3>#k-!dk5C3^OW!3Ib^<{X; zT*m=0sJ%h@J)?{86)fZm)zMU%*)^i%C4z6WR#zF1Kl{fN!JC?-Z`Qi%j%|WO@~ykO zNT8Ht1!twxWrdgQ?FXD{?akws?Ms7O0Wy#{TAa~uaL+DYJF!0et?$prjeEE021UAf z=ik1wF`f;#hIxq@R(m865hCAeZa}Bk6j)m@NO~m|+VbDM{Ic>V2vXe;aFChd!dL3U z%fhR?e4}WZMe@d)s2f%f<eQ^}c-V{mT(}$gK5XR82UjwkLvEMh0 z5q^!)Z#6xO&l$J#_2(Wf3IY`URpo#KHX;GR%d(jZlP{BUPUPPUu{K{*2Jv-SPW@~O zQ=T8c5HWLc)(B&2&=~<}CAq=LB}^u&4cWqFMdeO^MpK^kGzh4%$uKPGPfJd1OuVrn zqGxS_dFwdH9$4REDR4$%)xN1Jti2C1M545%I{rQSS8o=RT(2XL3c&%B8E696KY0jy z%%<`C%|89B->L=aWhG{|V7~oZzk|46VzW!q!Euzim3N#*e5jLlLH&MH0N^pUYMn=T zTem>$)`N8~v-^E}x2;K9x2~z>?=FO6Tn;s*KSqKu5H@d9R09#$kIq{yOss1&bUERN6cqem?SLZ(m0c76;?L@`{DdJG23z~$dDU~J45Bcdp-*6SU3 zG=faEWN#mVm0T4X=!yvkpMyUUu69xqgg`zL(WjnJN6`Qf?{*it*6+!G6u9>$W5h=J zd6WqooFW#ru7sQ)fnh3gDI9;qa3B{%fWENVvQJNg03N$Q_4^-vi~GKP(RB&pkx}4n z>OZkpLH89opI#w$B;I{|P2z*c?lQf0eHoNFZGmvYt2KK7_Qx+W&ri)92RY23vF(ievz37zHS`i?B`^=vLs5iKK4v33#80XWbCvr${}kdUKgc#wz_efn;j{0<&{ZyiSxiGd-Z-+I@j44 zo{broW=4Bmh$Eyj(8T-S3(4z%lKs8N2W$ z{~*wt*aOmE;GW*?W^90N+;ZBlO}M&-K6+wbv{hDyKCa&Z?b?z4d5WOtJTDRK5ER8) z8xcNeVMLM0gd!&NK*;&OD0=FT1?|2myg%LphxeX8gs7O|Y_n$?HZ8kQRqM!2_A5{? zFU5%@&VG+1g|*{*xN8R^ipF!mCx{U);`(;X$mb4sQVPC2|J`%}*DKgcR^{_qykfsN1A-GP#p6IqgqNdFMeU>80?ShQ31%hukT`f{xIL{?`e!Ul4 zcn-E*lDJ)WvQp0#fp*@@1x#LZ0B;{vM=muuY`^7ISF8wwm_aUU4r4@Vz9 zrRKl0fX@-zd`0!)gA~%(9-}Xj5fPVV!AAcv1HTerf)RrqiBE?@_*;YIE|Y_+gTRIR zD;Z?iOkKPLtUqmxd;~Bp#C$Y_M+D!Xr0uWX)@fIE?x=dece-ny5NZ(JmPpsVyI@EX zu8{s6e1HUF7q2YKgpGcXY3|lKYF@TRk`;)Nz<(20a)n$<^eDlWEfwV5{u|EIRq0l@ zyM^u2uJwV+{7ZARX%xg6ypzvEOp^Xq2Y#$j_qJIP1rXH%oHNYUk0#3EQcKt-^UtQKVgxRdfP?}4V|4`MSP$}NhYTp)VQ z*I+#zo!M%Af#%`j@-7yhCjr^q)e(R$mdl^793@dS>Vn_P=i}WN-UKqmEXC`2fMcy8 z80If;>YWRWs~=uPWi5>v+nI56k$ZkY-V&nN6*PKkD$%Zd>noJ^CEp}CHkp}lz4hdG zP7YIw+u~)--FJXPj^&4oCvlz=i;5rjc!!YAQvGG4k9zJ1P)9PcG8)=DzgFM95@cw+ zy8p%hvo2J0vutbPiR-x>p?PZjw=ewwZ~qYa!TL==_^2}VY5z3J2zN`P81zH5fs8@c zG06Yk7bDpFG$zPE5`_4C@vfn|O#g4Z-nd?^!s)wd2NS)o!LJ5_ZIiRoIBkPR`IcTI zo-0pj42*1;BA3Y6JZ-9QFfg-g%U<844580K^78-kYChP2n$Z`~$7X-#Do><#Xn9~z%j0;%3fmz2TN z8UY>zDCD_mZ#IWp?_;LL9MxLKB>lJ72R?l4^k+@g1KSJuKX&Jc4;maePW++g?>;&& z&Q19*@Po?9NXeXt^cFVwK>Bn%QN}LD!2SbX6$7H%2p`vB9f`nK#0)}TEz3*SaoQu^ zhJwmgccYq&ckFfbwqRq#-%R|)8^0H|AzV%BZ?M1)wYzl~^fzG10)|dJfzvvshxW(A zfwNs}vNw5HphVVW{XAfKO@yicqu1PJhEPuy^bDM)F{;{b!&- zuXXH*S$s$HB0G}C&-Y%{mml7d6s=;l!Ph;yAS{K>8{0?flU=HIxSX7vffc)F%imI) z;I`lAxI9eStG)}-ch^8QU|%S7m|Wr|&HS2Wk+mQz%+XsbBx)&$FSF3rN5H?i+8W>f zlv*E(1qAJo>5Hq1ClO%1*;TRJrH5i{1r=+Y)H_|L?S%7ostdduhO^;sU+`|%xU4zx zskGj9%BQbk6gIZg)bKMo@t&==t*l*NS(Wf_6X1y5yb6H4gufrbm}RFzcD!4c+-Hv_ zZc*((@lWeo7=E36j*+5qdk;)S@R!AGc<)KR)(*hNqn0e6`(IN0DR~|jYKy5no_Mif z@&5UhH?}&+^~x%A0!Rx0$+3~mEbhObT}6m{Txhe0+mZaeingQY2~O=32aPl?tx|5q za|AQAPaYFS=ja;$i*T(G)a6k^D;sXEzq#@X_|HF*q2KaCIr+nt`}IdEzt1d>-7oL+ z1&}l^2fGC$=Yuj>LvE|kfv)49U#}7hL}MGle(4;RHw~~K!^PjT^T)bUEz$jh?c?2p zCAP-Sqgz+jcXYlj-*B%R%0hH+5I9=N&QUp(+q~*X{)CX`P^}FLvqhkIA{#)*8=U_5 zM)2XXf4DXGq-E+vnM7%Tdju8^8&R}MQD}h*MSODdNWGwpY60@~mE%@_jR$>iFfq#` zu~T6sR7eSOE4nMGMa%Tm3EUY2TecX0;gr$_wogv{X_8f>BPxvh%jaQU33VNy)o^rY)2cOUrcPERadPut*a{Xo0i&d z+hj(&{a#08*DCQi6 zE2ZvyDA%UC!y_^*g#)b;5yzn57iCTIKxzOa90}1p$$-K~J`q4LekQbzp5Q4tE`b6y zh0psp6Kz_h(}g}d$HZ(Z3Gfm^8R1Fr(m0UQ$?75;t*N(vyz3i#^)Ab1a9{<$47#W0 zCG$h;ZX=u~p9B@Y|^P z{@JZp+lsW+4o&Mr(OW79d@%s$HCJz$o@v*dUDwmmm372LSRdl#mxM~)IYt+90zXe+ z-i^B%1b{y{>~-Zs>hKOXn;O!;UN0~_0g(x|-FaegZ4Y*xO;fnK9|?9Z?dx{pi=(K0 z;N4j!dohCU&%w)Xp+_(ZcORHJJm@N)I68|_-1bl|43&>=RNnQvKSP3|p_9mzsQckI1g>IjR{Sq12Q3Qep+M>AzfTL%6j+1k9<=o$s zj_cbT`#GN-R(q#G*lZ?~@H?;8qhGbJ^-PVk$8L>&V-tsTFyeoG^Ly*UURM{yeUduP zlIn<5g`9joHh+#)ka4(S6NMI4U@u53IrwLe-ArpNt}lm~a(9V&&z9e9V{aLp8b`;Y z$R|28+9{?{l6DWQrjlve7==12FT*E_N&mWw-y!_H2xIsoRJaUSAdlGq5FEn%uyR80 zCQ1bv_Pm#8 z_ga2iLk0W7${;i;{su}fG$EJPg?>Vc#O+fP^Wz%2(+bk7Gg*zJ(;GZcZB<&bQ`*vd zz|qVIxN==`3>?F?-($rF)-3xGm;Y-0UWJWHdoSunnTSiG?sfsuKz_H0ahohjimwUQ zm(L0uF60UyuTKYuU)_Z2pzbcqq|U@wF8rbY3Yq$sWQOHOfRoC?hgs^hM!qQU45WcY zritVN6l&SRrN7x5QPabAdD22lY4)C37*Hxg9rIi|8Lv{<7yMn3F7Io@q(jBGQ!`sR z;k4)E#p*~v0RcuZ?CDP{v+ngcxDt3((i)NBK}V}Zd<1phO=tR!I|P`KmYwNsey;6_ zA1RTl---y)Pjobs4&%Akyz|M)!Qv(p8btWkU%BfGnxNGO%4-^FX?9@nAf@m^ZB#l} zhT&xoFn0mx@(w{XUml9xCB%g4O8;1I|x{s8aa@c9>Hb5v+)gCqS79T9UyHJzSx z%&x$8$JZ^pSguDpu*9OS@Rz=oUFt9r!h@Aa>g}i>XuS+%xy!2F>Qm-aeq&Oe9>z}d zxw-du8!I}N+1`7NLy*)s5MQ;`+#@6(SXjus5I8s^3oL^I>BsQ5%hj=>krUXG<6?WQ zIr`nkPLKE#9Q4k!rz;N4+|j@0y7$KJH8m7H8Gq!wzA_{9TZ}%?N7l4wY(LDcGUn>O z7~rC9Oo{!+@tLb@QRrznv*2#@(zw`VWLhL8FbuO9DKGu$Qt)MLytTd{YM=d1%fkFoP><;DFw_a9kQ#!(M_j1paYdb-=_ zoC-m}pHu4Vb>uAP6{e~gWLU8bg@ePK`4~l$KdQUxJqdCVifEA5E z@~_Jmlz{Xema!)5&6YoywD${h22*C&1mqkpV}!jFdhs@tn2P|!d18X}W##s1>Ft8I zCGXv@oaX5=Yf;IpN0DW8Z4P-CQfc!ZrTY6dLEM`{x)pFm6-`)BG-yIQR(&lQ-z<;tm+;Eo8Oyt zCHZpr$x*;d2Ely_O1%aYO#`>#wK4NF2G!vy*rCsmZ_P-~ba{V`AYga-Gj`7FqY-fY zZF1}N8Xv-LtiaO8QtU2~Mz%cE>33b90k4=E(5#TchJDy``yUoSK|}tN@5u%-Z2c3o z;B-egPX7edC7reR1J4AG&8BB_eekl`OCPuXHllqqP!=c zGKTtCe9bz&tuu>Sx;;&~SU7Nf_Q7X$+Gbu@yC7!hmy9FBrm{A6Vh1-ZP7_p^dH`Sz z0PdUGb4M%+_9>MGe>q+t@&He`hx?6v+4t>UCdCRcS1TO7+O)6ma=8}*stw!XnniaP zBL)&c1y^Ekn4nb?Ku-SorT3#1v;EQH>^=25?QsDDX@Vb*%F=KPFHPO5hK)4TKajDr zl)lFNg;%7Yl*WJn6174DV@Nt-AmFsLmwzOLoF47f4F|i1ehhDzCVi?6Bvx(na<_0g zs$V|cY_#g0%rUp_L_^*X)!*JRExo!=TH5lPwLl-tBu|9!@|0tND*5 zl8=_&&(7C)BN_H?`=#!ji%IxA3lfxYE(fUHvmf}&TAwa0=J*~>mHD^>Cd**M=DOwg z9yx9nA>^rGPh!|Bgd(@csiuOX=3OsLnQO|WCdQ>2?k^6r$dhQn+59|T!zN|&a`JFCGd`_f5ik)lXy>nG(%gOLc)m(CZv7UTQ1#6B5 zGPI}~a9&kz(sq&8aqb-*s7R(pz6UH&+$Wrew2N#nP&6!V_k%w@y!JdnM<`M22JEOK z9w943oQ@^~$XiWA(xcExXC&nQ=m?F$YToiH_k2LfdzIn5?f-_}MzX^~B&j%b#-3=? zZ(`y9sGW^@gN~$me`q(SzMDiD@?=J6q-At%45aT+p;KQ@QUA1H(Ual6h&BCgW`DC$ z6t$VpBjhwb4P@XwPWL&&f!gDN;q{j7fkeGDvn%)wD$Mt(PiBK|OUAdU%PktY&W(?a zE(OR4%3J3IRPNbY4xe&?dvngUZqEGE=yucZI2G!-n`|o{uV6zCFpYl9$5ymHA0Y`X z9t9f~X!wG+S|(%o{gR~U75o7XXrhPBvPvlp%ihffp2%>GPbpu8KjE-tC2hZG;d|S6bZ%U?2l#glkdjbFf=g z6lWpfmW(X}y+H$Zg2*&J&bj#ZAlQ(0Ad?bM^1J9E#jmsmIu zKJGDbCAtT5%zzQuM2EH`xD7oQq?7bTM`f!Xg1bsQy$)x1CA(nE9_SJt=zDQzt;d;y zu7+u6@Eln_&jF{V(uK>COlkO@Q|U(aB+>;Tx^H4W}Pc>2$mub;V|B z9Xn57qNareJWM(pGMmv;ov))9N;gNBWPn~3v$C0Z;|}$%peAi|c^y!I?$O9&{s=)Q z3#4U!4=z1}ZVACZP+9Wd9U%6-afPlCFg|!8aOt_Vb#ko&IS(|B+-;-6%AVS;X_u9S z-->vGlg}i9^N-$RJ-2joV9DdYdTiA z@;%(K9B%6z83a;P$L67#8)!o5EM~!~vKiEgOPyKugUs3hv;7WxBn<#N%L!k+2m^_- zal3q7UJ?a&+QQWXNf0?lELhcZd3iM|(Lqn=4s=A{~N8&p)(IX0}WY{iVuM4FuT zNHLdglk9b$W*Wpg;$^OX0KjT3?UuIHk&Xe(w{N6JS#k5^GWZER*sBp?>pb_3^||mK z^EP0g%h+9|#}#Dhin#BtIbRG=o(Ubw8_a91X&|8DSezFZ>9fOzUj8TTji$5v0RB^k z&Crrz=_6qW*JsYkcT(^TmBw<|Q!fU7t&Ljt#MBG^OWV={6sfK7eQu8TuEREk0yC~^ zJPH#IfdN09&}ix;J=fvA&+m#vYc3Tnm}&KBXV7Sl#F4>BKz5dFN?;AeObb3BS*y2l z(KDUkoHD8F&9T5Mk^(c6egRG}2hNGrc#L3End;{w@4dN(hx%jvTMq!c#a>>V^5)Z> z*@$krxwE7`v&*9v9pu>teqw0J*z%08z1k#|-lx#5F`w!6K8MTwxTkcjN2_U(r>(ou zqK{f1j$p!zLw#AMZf#%VgtczI^g9GX1x5Az0Y4Ji*PkXYfSCH2 zC5k3=c%X6U9ng|}f7nILmA7iiHbdrUv@auDmb{_(2pnZ0@Iq-Y>)ORKj%|KE^k7s| znQFRNMn>0l1vLze_CrR`LuKEUP^Dn**5jX9yQ7zXu#dsO3v(w>Y3M4x@n>t@o~9Nf zf&^A8Qf?LzT+JG5OeDY*tod91;u^F~D6rJ-p^05J^4adeSAx_2jaF8SkHbfl@PGeXyL1`?9yRSl_ zVCu}mKSZDe)LxE@EZi)j`^Q;n?sdWqCNIvXc)Xtj+>YNe4r#OJ^hL(5>V7r?3Aa0Y zg}OcQqXjlI7PDC4bLL%9QNx%xV)@digho_r7?zti0Hf$!0kz9gpGpajAlwF%!`8Ns zQe0|e$n8P&Ye>7w%LE6QKy?zXE;(yGh2@t;QMKQP!(LE$`1lstJJ=%wp3R#UlkV>} zWZKEox}DV*Nt?J~snksj4QftPB#9 zzfM7&kORh`QOmYn*q$?;x&*{5tsoneQ{XSp$P(C(isUpVQ2E3xvcDTsd+}*5?ogSw zvHy}Mq39l|ij-4Yx|1Eh+t!Y>64HgSvug&l?njqZ34=ECWL1Y;Cc6L*W<)TWs9L<#zSB}X;hD&u)G4^7@0|ePuSM+D}OtX(X zxM- zY7#5<6*+gJW!bK($r`BDQ*8lTr2m3m`yv9}TJDAFwAC4IA`USo4CtNKC9$-7{Ji28 zpyQ;^6h8E3wfn(bH3eHzYYY0pQ zZobFkSI)^2t{V7v`_7ztvE0)~Cp7SU4+H?+DBxP!9TPWE)A1BL|4l`g2L1h?GCYso zwT1i8KgTV)@m=Qy%so$$KC#yIRn($eEB~J@W)K(RV!AAtW}U^fen>0DKSpP;l${iX zGSfSw#~SqG24)Vi(K!M&a?I*!B(!PFFZk;zPQ*#-WW>3u?VQn1MvlfdZVZQvuG00x z4i!T!qZp86s~ovS6|%Z<4ejKVW)Qpu*#SMTdGq|fI#BGBt9H0TJzhUkT-F~CuoY}E zQkf(lXxK*#8thtW3~q0G_SV;H9L&V-|0||7Dosh=fUy!Q{~^6Tdi>}xr5^H5X#6po^KUC7{|ea`C#*cLf06gAU4w(Y%D+&75r*~jkZZfZv0l`|J;)!j-DBiV zcd}h_Uy>1-Z&n(pX>Hy;nXcIY;#3q!_kP<`mPe#5lIHi`h=hjzo4Z{_TFq0fRBgxL!wFDjrNu>|z3Vw_sy`!^gG}+B$5@!|248Zk;)sZ0 z{SOO>IAggZw&%dcLrZDrjc7kY6~_;uC?9%%^3LyuI2-cfaxLpYIy%A<`wpsd4+q+( z{s61t=4(BcY_pDRHbQ>ol}Ftp8W*9_R4t;q&uDC#-yZIaWL;`i4HT2cVmYzRe~!4+ zZNRs^!61aAS`J35EWMZ)yMGqu1unaWX_s8fjdYFeKidx%8cUh(19tTF+Hs1A=x`Yhrs&BY4k{0T7 zYsi|wO>pcB1peCwUMN|KRE0LZ?Osyc(J{Z zF~IqaauA3+;R`lLkH9)o#n$zN3wAHW2wa5qr!7&H{yeM|njtt3u=ct&R2(}Q0yI=@ zyDfJ7cPV27W#2#v;s%a1ZS&4yTr#FiRPcyBKaNFY)a+aa%J_B`Bin>(w)?+#I;KzI z;P<9k=fW3l+8zO^8zR0pyi1*3s9<#T5eLC2 z2vQ35bzt)%@o(E!8zHWc$NtxI>_g)?dcxlctSWXEQ$Th!ae|+pf(s{OI(&xZH%;)+ z!z7CX66GxiCkf1I?!M$v0PH|&;Y1Vs+s)*62GIYwD26dcQTJHUC(f7g*8jBB_;%Oz z)v{*MvU2<>ju-Rvwxk9aJJGhAx+^+RQr;EoNe*5>9nWvjMSOP}PB8H<;;fBF&#C=v zy0AnmZaKt=M*;00&aGAB*Dwrlu^gId`XLvs?!jl6>`az8X%P6sVgk95I22^8FGW@< zpQjUrILp5s@He4dv9AN;4z@+-juPIt?LMIgM8F^=anOTcYN6QVSyO6Vm&3Y>ZK8%0WDZJa6ThVu6PAE56!s{Qv{1C> zYhjXNw@I6&swwspN@%KK_S@ramL>9y)SAzllQ&f$723y`&uE?}F)x24jGQ8;(ppw( z%I)?g?Vm^q};Vz`g|b=(VsoY3HSmcG_5n`)`^pL6UCC9BZF3Egha zAo`}6E5G}5J}d}uKpMXR1EXkBa@uBcw~6R0)76ipekxBABiGgW9cN&7p}(pkq&Zhv z04>JXJzF`STY)?4vZaM_K|B>`d0HUqsB;1Ev;Eaz9oRS?sCm~`n6_vs=o z_VFI*SjvQ5_e~Q{7;e>!Fx_uG0N-HgskrqdQ;AcUYMhs?5AhUbxzYseaEp3mhIoRB z{*G_~gOKl>cSlpV^50ca%A$aDVQ+CZV)MjPd6bU>-WO(eg~x3hV64XDVXW&@mlrXc zIx>O*i=O6vQWIW?9rDf`HXw-y?CKC@)t9$$UQ(;}6pjf3DWa z5NH`l8c*R~a~2?acuT!W!D*7DD-cgbQE&f=rCwsNb5CeG8=Tjo8sm+L%hM@Cb632*WxLcHW9h^>0A zCl6lr6C%n7r=T(5hdcW_N^Eyfsab8-mV!nl^~S_r;zjY%^PvXO9M4aiE2WD%ozP)E zY4G%%-nMgJ(BrEa^+bM5ccGnvJ2K?Ogq|uSWp@x)(yP9Aa*a%K?P3&k-tX|^iu&%K z6Zy}g_}{by@3}f0Zm+@~GaC9$+zKkKkMOjE!y8+-)$4s4yX319`Q2ZbPHh&u(GI{o z+U_T8X^vgUP*Qtzb$2K7vuMjNaNpEU1AZ5wEyxCp8QY#yVAj2UhuCWvi=DT}c}T{6 zoor^o{+HRps~wsWE}Dw+P-w&godA%f)9Y#n9=EhkD^md;43=Lq5zV;S1uRv=Q9m6J$XsI z=-T%R?@V~@Y%;~5z55hf12oK@FERi}BuCJcAFJV5Z|04(;c3}b2Xnd77!J4u*LxJG z6dW9Q7GDA#aqt{3!FV3TFDC={eE3pe=69Yc_1!L}Mg{2G*3UkWhTH43pTWJs~qmle{ZYyVv?7E4`CFwol@WuJrwLhj%CbFzAGqxr#dbz<3|JHN-v zLc$2a=@t!V0C@F@WbaQpRJuH>dys^Y)HOl!NXDsq%_9Y)-vv0TKIf;l;j_E>)JdHs+deP%gnv<`IIHm}qg&q@ zC?s{Kx$5bOgE{VtB5ya@-q+hB1 zYHU@$iyD*W&U8snjsEr9hxS`WFo|Aimaub*zIpogDHk{knPzFzeJQFVUw%kaUO!1d zn@*UgB^XU<7KdVTUc&5pXY-BZ7T@&XL9d@o7I;a)3#NZ^03x~kpDZB=39;7z!WJ#K zZ`~WYQP38Zv0_g+IlAnEn%2BAVcznMKZ9bw?raO*0~JQV$_fzJKAGc~CE#{W z;D+SLg5UjF8(U}PCjssf{$$~$qKU|{+8;pW?&EHx@$AsLD$MA#+Y zoPd>V3*2hvl#UB`Yx5QZz0aRS^B8$t=5G2E_X!a$zSmDg5cnCjZ+{32I?vu#u*WTk zNV)oMNbN{e&eLd4_aa|S(c%TyONgeIKw{{9&0q*%H0H>y&!p% zv&!w~qJLy!6k+ar6?Spo0c#wBmFNk5CnqN=h2_G(oTnQybn888sY6d68Gmd@(W zB=6wmvwVGWLbdzPis`PdboOJOz*|{+F4Jf2jr(StJ^6a-1I^@e)O#vH$lnuB9%N>@ zukH6GRbMZG7M(g>Piv0G%R%Yc%fPY!U+8 zwl#RVKlMgAlclz%THaJ;pbzXdSaZ=weu|SCy-U9=M=BT>9uj!!VSPU?_c}}bEZQSs zsIn#m(?r$0VuGNLl3N*g)T!WT;;JUa^B$2&(hZeG0RFg|EEJGaDmJjlcT?^(pbTv4 zJJ^88wLGJSOe^g=yysRt*fZNG97e%dDc**-yV4Y0cT2@NYTqO zP0n-%cYrO$afQEG!}9<>`4ZAgpTlIev!sWtXdho;(c@skRNH9ktI$HUrRdCIY#a!! zZy)0z{@oQT{gcQTI#;zZ_m~iAaE3u8ZLM~bc)a?$hx`UyIt1>E*nfIbuF0N`z*Df^ zNT5LMReTKTnxNGo+wlf5BgE3UPlX*3J=nP{!=_=k<(alQz&6I^W48AW;xcxArNV;$?G0 zAviINnXi}ys)WH9A4)lDU=bS?z5irJ`>zQE77qPNtHf;@GNBdmF#jNNTx^nOhGpWT zSwaHbFWpxr>6)!Hq_rtEG8x5}9rO}2U#3j%d3YO_OBwc_34Dr6pXTSNaFUSPj*2q3 zguRwrog5^TCQVrCR^N(>Vt(p!wQf~}(UbanLn?lb^}Pfna;MBYWqE+?ckSvJc-`ov z)~^t(*Oz^T3s3F}zcxkk$b+F?Nh&Yuab%gV_L2-rZ4e=)dLrb~p69lPR;I3G&M&u< zG375=GJtbkHNL@1j~8bfx7~=z0nLN3dCV|&5s>zHUBgIaX(1Qtd`|0{&UI|;Y|cw+-!%>9oDPQP=yi z9e+xEtMn}XhXt&(N5b5fxt!=d0&ktKdq>%@dQ4C<3^g?uB1Z-rqw;FwlwI>@$-uZJ zu&9}c@RdAbpCrx`c=RDeDIF!aan{Ocbz)>lm%940mt^n1ldUKYcbML3dY@1wvWBK^ z(NL_?b6^(aAFQTEVpKc%OdR=($?+05278!cuJa0v*v+TkOAzGEl-*NSZx6ik;|TL*lC+WKR|Eoi8{U zHS7CiGMLy-GWYeo<IpQex8%|=*r7TfI?GV4FjZPk0oBm>1VKQbKQ@fh4dk(58u zZW2t;I7d2tKTa8krn89^&PTK6x~kf3a?D?p3sPe0;C9KAE>d5o_obCa5Bl%*krPx> z$7#wl4NqI?>S<@hxdRVS$I9cnS1Ph|5t>n=d5QiV!*cY%Bh!hJ9zQq7-91XKr5ze5 z(hdlnhk#B|)*6vWe$sMjzlUc4Jn^rDLsRs>(N@ z3`>aP<2Nporw2bmchAy}t0o5XcjqGSjJVt|U#3|!b+yh`6GfJyS3V0SF?sO# z_PzV`Xf(TXJ0%*8t(~iwo6jJ+->%IQI4GyfzmpNyXjzf&5@s_1laQV&b5cnRrfUu_ z(Ra+;e8H07_%lyfV!g>-83OR0#l z9G9jVWlAns!L#)r&%UmA|lbklm#OXf^8mHZM1q)fI8|p>Vuevi!>cUcF$DJIAi!4uX+Jp4KL_zY z?=`i$vg%%$V-PW=qds1IKfNF63H++Wd(Lr-B*)xEA?acBVu-=r$X^=@ z3vnG^Z%nz(F>))QyGLz>GL_0XVNsH+4TH+G!wmGWL`f8_$3ihmw?l>S13$}~=BftX z+74cn{808#2^)DzoT;ruq8r@rN@D}&ID?RCUla(&Lxq_VDM)R4z{6xr{;2cs}b5f<@4BV6>PRt1DxSRH#gVMOL2S%rVc z&>A@pjilmNP(TSQuy6&Gcl%P*whNCby$szw?B~zK@ls(H{qGJwF!bOgrF$v|he74Bkh?aM?o~TQf;CZE`ebfD`{TdC01qbz>D@ITJU2MXq z^L-Uc+MEox9JHLLVrh`&mPM!k_dXrz{oVU157pq`m-1)+H%pThEJkLY*_+<>cK=z# zx3d(EHoCk?b?gO+bTS-x>z`<+&9kuJW0$9=r{zq-QFZ*%JaSr7PC}|Wpt&&0OHTVE zBTj20l>%*`wvTI|v=xz%9hf@L6OS8|`p4p~HBO8b1)S#xnouH5fATgua{%_-WU@~8 zDMx0OzN%lC~sgt;}j`>6UW z8Y7Kw8!*(U?|>S&zT5Lc(ZhXAY|yxDVnI9G)I-fy3U=KC>6 zUJoa|&mo011~q_|4aa@O6Ks6T@} zI?hi>^*%XyV9a=6zZk;n#k|_GDc`>SYUW_G*w35jFI>);85{=Z2}*wGpwHiR9ku!~ zftNhxsU%7WhFypp90ZU-f=S2%G-wJ6D%g0vrMTEfrh?@kJ~Ikk48>{&L5|0=a^i6D z>mnx)iZulb;gpY+qi8@t$t*9?zx42Sv_-qK>?=O-pjHDDFuMFK>~7XOs7ryB>=D|h zqE+D61-|9}ohat=-$96n7)!#GRY~|;j3pVZbjH+U@(ctyEds6W9Q~nX^uVK&%6s%Y zRqK}fWb{$A7Jo*jn?G8aDbWz^=rSj*YBysl+R;saclCmcI!l@VSr&sTe?o?nWmwW? zzY7-jmD-ZdFyZY*>wOK`XjIhak&%(}+=Bn*w=(lw+vk=glYoc%kT5A5oJzo%ULvfu z_Gv`-=n@6zqAj_M zFV?J7i!f&N4c?iYe8TJ%E)t1Z&kyB8F*J9yTafL87R4rMTBV4vdWXn0@>fWK9r@#2 zS;*8GtaTlyq1ncXZ*`0xxtcHbz}{W+6)tm*BTvp&jayY9n3K`4b=ZPD>za=6!~>MO&d>e_H+9CYZRQBpvVkdn?(8U>`K zQ<3g&=?0OO5~M*wKvJZUZjcV??&hq)?>*N!Ki~%!d+!xb+)v8@P&kbIct_D4EM!J& z2y$rGyfCQrrgY?We}R1IIXZ~d@VjR2VDn9dw2KCP`XR{{|zP!2O|OZ1@l(lk$<&|0GTmKbK~Z-PbQDb z2*BL6r4T2~r?(FyhkN6Z6(7A(t4m#(9;yhbLdu46h`7Av`}VcZG+w7}JEQTz%w}OT zL0z%7$TLIU3kP^8&OvJ2dUR~ei*=LzU!vy|gzci~x69hT?%#XJo$NAbzum+d6_)+3^h!* z%|MVea0xO?I-bwErk>RDy}u_5{$dTO9=|vexj;Ex z)>Q$v`V!>IzWKwh-;|V)aGEb|d#RmZI8N+yiP8Te85IQ9;UFc#FNwQ7(ZPJj%gC7d zQQ?*_i17sZe|+)ZNg06k5;@5w^gj&07oX>cVyKIY3Ga{sHHB6#JCgoOZOi1lc{z)T z=Js0wG|6gh|Kme&3IFDoHmaU(Y;62A)cKa^FZl|Bv_1APR#Oyp&X;Ftt8qU#j(18p z0Fo5EMtdpB=>w|ZZ*S<1k1}9~tftTIk8g?kDJADi4V-mk9{mfnRV~sfhQ|czb}Rby zq;C%;Vxs@mHh~t2cffLk9c<}PfAYj=raNH%wIX9ER8pqj1cYH{rcFk~Z!Ma4ke#zR;~!X?@1#&FMXK2-^uG0K zoAS&~RDW>#C$XsXithNd(tt{K3Q04WJTPs!8LITJF9nqn3VFrewg_*M38qV);O4aQ zVcDk&p}>Pd_dowB78n$C?8go2Oi5W@US82thB7W@Bo)KD7Mf=f9qkRD?jb`n&La%oL`WlVb!zQJUqBjD%kL9nya^ z)PWrRcI*-L1`66qU9_O*=z$AQ2MX89zG%Us8{!N4%(;s0q~h7d65N)d{R0+=1pqAY z=zEJlbar;)B>wqn`mcM%7YM(ruVxdS%oOuwCrW(Y4`J8L3B(k-|12>@+ADFGdcK0946EiLUN z({Y3}Q|$uYHiFI^{OXfB1`iH#tI3Q&1DQ(k=#i=hoFi4#C-6*`(Nl(a1+qAMs6JIx z1>(ce%{BecD7`g;X_nnJCCxvx+`40y4drLu|9uIOz6!R5zKfq!^Uj z#dn&7e^p$w$Tl(iN9|%nRMohNEOB>1+zx}r|9?yJPJu*cQvbqD?CrTrPe<3V?lSZ3 z#{(e+8gK8X5UtdY+VVh7c2AK`>?z$23;?|ZVel6s;IyucZ0kIMB4ZhxZ~NSYyyuTSwai04^<&?6?4eWUXr+#7xWo0o@rizbmT8sA8HWz)LexDwGNO9uk6jjRwv< z^B;@V-9K#zlhppZ`Nj%BFU4F8OGzUmBb3juL=6A2v%F6x&;n})e`P-Wr!ArApm$uR zcgjpbr)HI<5XcuIb+a%;4zEdvxIFxov1Ma%wyid^tkKbOTOo;L$1HHJG%A+0OttQL zzb`f;KCS|Ifa;T~BIvNK*mqR;N(VttGV=H=DHr8`I{)fMLVvEm5 zb`U-!ezF{w)5}6oK2P-h+)ZbXi%9G_3`r;mls=3fG_{0aki3|F4gW>}n3!90pSfW6 zpboX%Ixpny)q)l;^z%!foL-I(GzAerA*${VgB2=3FZb;~HS^N7gG3zLsp>ecaA@FL zasyFbd{QTsGb~brPBYB!7%0T33BEM7Iu|qFdWtPgk+7->os-TnK*;aPj-}C!#B#x9m|0yg7azH!xw6KiaxMmyJ{`|?d?d;IL>R6|T|LLs&j(*s z{L5nhmX`PP=Jk^AvEVli##kL=Q;mN*^^Q*%bjEsv?*ZRIaF}V126!1&UE?3J=H8}) zzZWoJ{IhM{WR3VfXrOEpb~}f#@HJ}8>Zuwwk54~Rz^|arTz|x0P)WR)IE%q`i0F!^`7`t`bt}W*WcaO@Bv!u#(ebJ>K}E&rPSxht3*<4 z!L5y&syI-}k*X&zEds!N)(l(d-f?Nih+OI3B-UTi{}&kxWTc zR(fY_%vGInU_+~d`j;B1Jg4$Gr{xAa#T`sWG#U1_CWSOk>Q1@1 zfZmA8<9VRXodHp<_Q}(-nw^Sl0i}#V55JuOM|kYu^e?u^NgB;MxbTH>tEXFkuAZN=9b}> znOd^g)Hc#*^%F;MG^-TN47Ewvmi%&Hk8YQ#UF;`Ky}6E6zVJ{T_Hl@Vyn;!q@Ux zGh0DkUOo+!E>b2@jdnNDJVlw6FQ8k0o}Sa_^mCsZw2_aYtBeJ8i;@i+FFm>pDIyv; zTW1i+DYQOh7zw&QW_*?uvZ3k#l60qwGgtyBQ=VM}#`Z*hf|4{Q;&F~(67Y72W#07& zm_7~A?89RI0BuL4Hjqx-Dt*uiA&(hjTS9)x1ngHzQ&92<+;n(A#^1z=@yi$PCx>Ub@6JXsM1T zyq^hg&U`V)`x%z@=ne`DL6r%0BsY)#+k^pe0Ae-wE|GdW{cD!^TC#Ta!s^t47CbzZ z_JRPT2jvWO@ahe(>ulm+@?t!f)(82!m(^}9*s^&%v;n!pFT*b3-e7G}GLY0MwxI-% zyhHLFLz=l3)n|mp9}$|Glct1xaqq2bxk~*IjeDj|Mwv$+9((me3xDiYV#s0rF}K{D zIOF!*4QP`%nvj;T_>IL3@xR^d6z;Cr@tDTnG+Sa`6du_-KA9$dB)p%!L&$J`6uU)R zilhfWhC(7Hi3?QypN zA*A8QQzSZA2iBN5zuaJmI}msW0SXO|Q)QA@m+~tp{sRCqwp|8^CR9ex=QIcE9pzG9nf%#Onr=pHWe58+IHqD~}jrt5xRJYgR3$G0#3Ugv_dg)yJBK^+!FU?Ql~ObOWB??M=uhd~l-!Dq3uKJ#MfH zzRu))4KtJ@`NBa#4pM0$aBqYR+GSm)_-4<*r<%w~X{snp9~v~;-A9}dM%zm%@d&l| zs6t6^Aat*-FIol&O4Pfbr?Ws<`On@zUm^+amZLLm4Ug}her9WouenK^$<3wz;mhqk z-|?ZvJvA^ca7om8##SdJU4$3M`sk1N91NEwJB=oty1nmksDP7vxCM_5<-#b|ph%L; z=5A#eAMBJ~PaHd-K(M_FTe>tR_})`X%n<}@#3Q`IfArW2-R7n?&i!E{9%2Zaa=_%4 z0~c=N_^B`kQLUx(*JY;bI|+5*3z+9#OWu*puPs6*=b#l-T~wk+Y$zxKT7QrG>Lq7f z=Na&qy0&(i~@+uw$a z%S82FL11KtU-TtOpvc*F_r)VT^vBz?gHoJ_vDF!Bgsuz%ZSK?2R7^@+ics?U_05;> zc=#8dZd7#)Jfo9N)u|i{NRi?!)FEwFCvp^O*()?|zZ43*Il(j}F+L;dCw&pQ>aht-- zN7eC?W`(Bh3U)I8q4IFUKjGWX%e8k$$?iVjzZc-)#5>~4x@FE4D&51r`iDtG=cn4z zUdlesV#%c!`O{_kX0I-19G`R`W}vbJZVj;94jajg*FO-?tcF@3C@`ah#>d3W${CB= z`_ViNRCX@{3Ar70UEFT)6*v99Jg}5_0a(r!WaDNCPtD9UFi7s zGx_I_XUmgTJWN7J?~r{gUXE^ zv__Ozq5H4A$Dh4uByq(z%3?sf3+V$#;;BahLQ&u_+woN8<=OR8rL|5)ue>OgW~U0h*EJuJ(C{F+YmtD zyW)3znu+N+{H4?D>pkq8oK9Rc+R2mN0QvhFUh<+nFz{&oG$@2zdSgQ0AM-+tfXQ@R zhg6z0z`zxkSMhA+!w}dL9_;XYMMV*4Eqn_28wxB;8s4}!rXL!I^OT%oWxlqWQjdsm zwmCoi5VVna&2~tq!ayts1VoY#go*ag~-7Ut=?^O zM^DlR44O!>0hOEMHhd*Nr+Q#!E#tKsvAL~#KnXRV_HM+*cg`o5MtB)v$94UUUr+t^ zUgqy0#}jL1u)+yX-V`!OAO^*Wr+M^vDuJV-JkyKMB2JOxMsCXEOJjD)V{uiTf65?j z*6huml^5p1Ke-J%PRwJojW5b~T<+eo(lwfM>WSe^btfM#is4enwP33G|Nrr1AgANk zBYP#e+7V7LkC?btc4|~ZH|zI!9x+7id-xDEdh5gQM5RIun}%!`_`qxhgJh?rwk4Hrt z5AH#+tHhldWrgNCNO^($Y>YNwgCVEg#k3`iw(p4-Lg!TSB^rW@-Aw+jUH@(TY{Av-gam$#kJ zO-Zq(d@YTbVgUylS@3qvFL4zwZq$ z9?+{)kls`-wEcT($P1@U^9D8IzqmiT$j!k<*+!{ei-5hJCn``IKvGgtCV&6k$N2u| zn~BV&BEt_w&eX%TE2Z2(- z34M|?^Pg-SO_h$gMYlQU(d~s@)@#R5!FhZ*(aCI{WnL$sed_u5FOcUc__A?hYfBu+5XnWWZP%vc zLgJ4%mQP8dy#(FjT$&o_pHo304vE8yWyP090SIasm_CMOVPT=lb^T3@moo%kNz;tu z>sPvB`Z5Lah$I0SI&Q$o4X}PuefL*j7=SS4@e81hNoaRNJ7efYo}H$u;6v-M&q9bq zRKlhlN0|?9*4*O8VXybBA-%geb%BT^7>S{4*I&?N%Hyr#RjTH8jLfgt?WE|V`STjAp+h(OrO!w(F>K;66$s@PDA>zGH|`9TlIqq_Fwy+l{tD9m~Su~<7lI03Y)*6 zGJ~Q|T6SqjWwa=1-K4zUGyoFV8zBL^tjx?be0jI@wHVq|MeBv$K=kbTWc+(qDR~p! z%MTOFE9a@GkYMDla+ezu-+^PR0mtU1J$B{Mci_lv$h2C9x@V;GRV}*$TTs}s7M(0| z+bkx>4P$U6DZQYX0?HxojmCM!m9zCrKj!Du5+D#NIDwD-_<)@#9dS{49>w@y*?QxG zliu1&*Pr+_H(!hk%LU~d=%4N{*u6_~+u)RRgo(WXaviT*8Sk;r@$vDFbE;Fw=-Erz zV2$NZ=SB_aUqF^DfYBU#=r! zHp3>)Uq(C-dUv`#S4*SNey81tx*@*u@cWd_3HOfk;40?!)M|?Tj-%C{wq~8k>*tHj zNuGm~G<`ofcoTCwt_+rnR=T;r3AiOqq%6(8aPQ&)lEJ;o>s_W=w4q(KR;BjpHNVO8 zO5*A388XTE3nRr+x`^NNjye%V)8Z4(CE}yx?_=9fDmo2mNvtssDeubRL%Om%7EkYUrrt5Nh%sR_uag=2$tXYs%lhCQgU)J$2a$!px3c!sEub>%sg92U6oMW^b*hATL%%jb{30$zRy`~{0V&Fc zrRSFU4`Rq6a4B~1ECCNiF^@zeNx8g#gww`(g{gi4^3!_ekkTy%^OsY;Q3i$zR;{We zjKw!{^{wE0UN#*z`O`};Tr99Q>ml6XC4VRh8;p2O^(A5w6g9?YJl8`54W33gJ z85p9sR>q2ru1rnjDY#asJk3GslhyA%yE5+>{J4RI8$d-8h0EUa7SR+~|%ezNWXppu99YTKLiLo)KLUeN7{`CA? zR0>D4enf$-ML|l6tyTzD+)0zZV%~K`R?O;>I*$uoppSCES^X7#L`2tsfW1oMTr(l$ zFCM1sQW~Z@uzLa}g84o7Mq_VI=hquTm*mEBU+_X2OB0Xhcq8f=VyEu}Grxk2%kcrK z`ou%EE%_2aA0g9~m3|FkGmWBPR0tdvnw@JXlBD}X+?%dj$8;*s9-k~y}mVhW@`PiVjyG+$@0vFEzOrTfZ3iz)x79GKZ zDjADg8YlcnVrt}tnnyyC+d7+AV2DOml>O&aKcO{;mm4c*SZN)=N`49K5=AN`Bw@6l z0$dTHHncN(n03q71d!IF*#~c#lACDfHr4U7&%`F%_y9|nL*w3Zb3lMO<_nE@2QQ2TVnK1joHvCVtYTPs^-b{_^yrE_3C>Rd!GI2qx%qPcbGJb8PEFk0E|#I^ z{x5+>ZvoFy-;;BIzm8rsOOhk`oVkb_grHJ_uEW}nr%Li7sEuyjJ}9s-s&t-@4QvK9 zq=3z}0O0O;TaIs!2gB?gD3$V$sCr)`f+jpKdJ4^*=Yt&1I7f&N@4V_e&Mn9iM$)Z5 z?sz{y@bx8OhQ#2`LEpIu`wHTjcVXT$HoIWG8EcpxUZnv}f!TtrEvfhre~T)#dY%O{ zFb`J3Jyz)%QViWeTb2FdHEQ>S6%msFkb&YWpyyk|12-n9Uo*xw=(5D?=86n{>+i4} z;{4r22Q%_T*fdv_<4Vb7?*7Tn8Md1W0C2(@=5yC|`!FrgeEu$AYBPX;t1YiF@1^-f z0kTQFexsY7p_RKv1TG(Vlb9?MQppoTg7ttjw~x0F{m&Nw&KwA}6%T1E%&qW-ccy@h zKFWaQQ~>RdoIK`S77~pk{Ap+8H-Z8Uu&$66OZ*MOP~>?Gxz(QnGoaA}yi?wM%3$bx&$2ux1)55r zLcdV$mbnz0&rZ^NUH+WjAGv>SwDMeDE>%4$Qm3DeRiIe>oddyAZx8j2XC%GqDhZwt z%eAYlIseAX3U>b}UR1bY_fN53k^EFqR*t6jqJxyUbRbxu~~1D{V;A zVc)+=nPsG`Em6_2(NdtRNSqhHn8i6-FA)+9z<3mhK~+f{B+Kp9vCy8Rn0FZCxpImF zvB68XHn{DpJuoJ(KP1`Mr$uQq}r_^3eVY-jeU6Jv#F>Ca;e+vDh8Xyl>}5p>Su7M1rq zUZ-YMY}CAB;fMNiL8;h4jchxN*4!IWi9|Y9dHs8~^^-QAv%Lmafg2v;BZbCxBa!t( zvZ!#!+0`lxJs>=h4q=^%Phyq(`~72zKg+*!yr!9MYO@)?36(zaa`!J4h5GdU3JPmIVmTQ&d^3Y*iLe%20hTS!HSh-A!>p@ue-e6xW|mv@+n-LYni;xKB~G5 zb+-1SY1kM_ZNAyp9YM|U^xRqSzj3wpTqRUO0m4rPa^zM1mE+ZCAQ%H+tJ9IG02LC- zu8f#gJaf44GX3)n0ErA-Yx+mle)q-#^l^50z;&OUBI=3Ol3kcl$lE09v8yrl)>h0*XjcwsA*` zEEBc5d@||6|;gXJG;8g@wv3`9MPc7!^4Y z-U2Ss{V_C`@5-BfHg`Ymntizk1l$%Ngy)Za?)Z+Ew8#9s68|j16f0^|C$^0z7CV73L^&^Mj8O;;*B%Y8){kIkrp_Se zjysL*tM2>(vSI@NoNP{+NLzRZJ&J(xDI2^n~nuG?ZE`k=I7! zm)Hbs(@6uLt&-h;GpBG3gWKRkyBpzgH%g_8Dd3n?mAneq;(^LwV?klERgOIOaJ3D4 znYWkX=BoLS^_4W(O+54iSvCh*y2t0u`0cG2raqHcj1_Sa)^=;%O(nHWv8=;oUO#k7 zswh4H8xqY1sqQur0bTIA)bJaC{)0x8G5T(fiJt{oS>q$KyjpR_Sdi8lBJ*;%p@a#tY z4V|j4So!=8n{#H#8AsDP>cFGG8L}$^p#BnR;rWfx(gsjeq~g)L7f@2D{A;mHG0!Ni z$sn-gvO`Uu<8O#Jd0Cm)?96qjgByyK8?_OkH{nzBhwC=_;uy*1Q>t0Ob56{SMa**S zG^RY4dxSw!Sy;hNLG$gxWKGj+!&!YCX>-r1LmaWOlT)YRP01QZMFUWYX_Z-I3vn-0@Ofe{2E2zg&!t_8?7`8*Ab?W46F7 z?lb{i432iJcCnH&F7kx&jgS5l^-{e$&QDgSt{oBDnl`O;nkTOx?*BU1kGV3B znYKd3NIs6F));^D#Zn_jP-vYo4+rUF@F@w*!<0NYn{@j+_>m-9bTcXz$X~Y}Yf2Z& z`zY&vhy#H5lZ=B|wV_((|J_EPjL;9KD4ctwR-Op)=E3D*rv_hjRM&TTgnW2HMqg(Yu7N26rtdbg{|k#o;{oHNQs%2|YzT$w zrgNg|bsD4d<}lYw2{f|08;l3x%nc=9yN}6N3MkGmDL)u8xS|ifTTqCp9&(92c4!C45 zI7^NE8h>2~vsP%Eap1{1>+?z&J*glF8&@`UXvscSd>)`^ocBbDUt=j~?HMjllNmO% zC{+&>Z|!1bXEhd8DZI{8ACg-9#V@SGKn!~x)n^#kMN$?+^Ssdg=ZMzu1^^yC2>E9+ zHXfv|)JxM;8MISqmuDp)W|wud$1j4lDe)d}{t3b3R##}sex%S;T*RgyLr8DVZ=hH( z&S@u;JkIH1n~eE2FQv#}C`%@Ee7N{a+iS*xaZu6G62_6!*)sF-E(8wm&-uO;Lot8!%!;-hYrdkcs8dE*BWh5;%DR)=>8`82R2G<^-) zanH~GGCGg5V<%JRrZUr7vzJ93kLmypR7L`46}x$6 z0IkHp$(ZIT*NCG=GC6pBLMLBYuasZEmgFkU@7WpG81kUSrT?S9Mm}H>$?uwS;rW?Sr5*t6u;TK$x9y{-Ub2|EcBTy?&^h&zp zaYzW6M6bXu^f55o}>A5zh`!<=B5|xewy%p zjbyQOP2VZ8AdnYxi3Y%G2}=Bzn!$f9hZmGZuk{%}SB*-rm?Kk4&rA@;J-Lwv=UN$A4n}v*+jiC15Fl zv(9)O25vy{k7>Q{%k!@eu1p3^66U z)5@=;%ZU@7E_$o!M^%nnx<{vh^3H04Gm2(YKx{2oqO1qrfl|}3nG9x;Guktc9l9~P zzG82yYdfgh81bR!`syjIdB>5ud*R$Fr)Nv~)Xa75S9C}~6Hx6Sn?ScFM_w*vtpoJ{ zk7F&@b$!^B373yRtfT9_K>#7ASY6lm^|KW+l{oo2_w2f}VQE{lKPu6uW@`QC3jpew&%(JW0D+B0hF2CsDg=@_auxI35vY-ihX*eR z1+KN8U1=$Oql=3|+J}OTmFl)c zFu!eOty%1=g&KEg%B3)ixZ0<=AJS|79j&+sG#)s4SAE_7(GdAvndvxk?uX6NB_YWOc> zpqsk{#(nE_MX%kNA#pozF2=EeaHf(4*ir|@Np`CPkQ~tb)YWfvde5GXeHQv&MoI?*!K1CZVNN%xA?aC<&cQzlLoz{y0cHx`~I`SG`bCLIb@rpClvVgJlKH= zLwzu^0WLua%JG(0B;gN zxx<|d1<~)* z;Ef$D^?Cge-=5{z^W71QW&w)u@!Wfvjt`{BOC1zP_=hKl5w zoxpjU=0jA#Wdp=r@nitQ0UbCj?{zfRK-OGu!hO z9mI9q339Ks;ZwY&C5$Zm^G)PCngs$I*tIA ziXkSOIntBYkBLIagPq&4cLh3|aw@E;n_A^r{?r`vw32#1y7?5iUVC+3qlE@haG;sN zr+g6TF!Pz@h_vjRYwfhU?JR?v&t%e#rlu8drFUseDGN((#gglwvsL)Ku-C4*WCy#F z#$Q8`NjiDK#T}EY=HJf*-;#vY{S=?;xWGk#3_AoZ^v~qvjza082BA=I@rbG2_d$_; z!JXQg-jUZtsh__*?FAwe5E>T#c;zfUlWpDAu+iZH8+9oD`S^IigGjYqK;PBN9UG&E zIHCjY2V7hg${J*6r!S4AMidcV*-**j~k(ek*Qm#F96Rc-ph0lhb;&p z?*eDN;h@dkcA3h5VU<*A^7~M6{J85?yQK9kr^AJPRJ6G!3V6N*XGI_m}9fxtX5U^Fcx8o!@6sGQK%_+)i_!gI!V>I0lB$Q-DB2xk~(8+g(IJ+FC z%eg-M1dcahZDZ5YW;!syriQMfF0&v!3CQ|xTq$S7taFLHr!3!efr2PGLO~V z=r5@3AtEkyj9Bz)#hprZzwrBOWxBJTc za%=c=z$W*em*730n*$Tt!9F1%c;vz8?5^D!Au@cVe06CHfztcffqmg{j=sQq?^ z9oKOM#E+~of9Zuc{$dC0hM)?E%6uJs3SwN6grF+?Q9y0UeT5&T9fpO6ig{jar-0S1(r za1!b{%zAyKjRE}P^yy6!ks)LvBZrR&1&K_=Fa-N9Ftl$}V{#bwTe0O!85TnFuy50T zY+uajrFB%PEI9)$`GZDonk|;*o10N0&#vF6{&8*4Gru)Q^(>IrdmLr2kB6GxO@{Vr7{-Hj42-seHM$v(;ZwsH=3F;G6jbxOF{U4 zi=!_{7jW&h92>B3S%*6n`jRx`W<}n9bl>KYf7ye<57~UKM+-g@{c0R3A`rB`nEd?w z$TB=q<;@?tIXTAJ0jHL-BEtmhO}n37?-`KYZsQ)ByOXSnP8Hj-4q2)e@2Z@ETKP9k zq1g~p{oX3jqh~CC_a_Dc z5V$SNo>dw!ER#6E?mKA6+_04OdFuE+MAqj)3vjw;y9Msl-DWsPp+a!X9o{Zd$OHd` zJ9QvE-XB3CyvD8&6p3yQ8a!9|7@#8aFXy7`ZBN?7dc9cc%A|qimAoaRyocX-7a1L3 ze-{b-BL&KgKff8Y+Y|D$3|KI6df!b-(jZA4BoIbNMytIMDbR)sDHRss(kHP*O2(af zWoAVOzNG|pu}@mVt5UetUGsI)BYm+_VMOIp-~*vWNg)Z=c);wXMj_-rF6iHL0LIpr zH5jmG^Ct_(2l}^&0cn@U?tz_qH%dVy9mA&L+MaGW)$S)_ak*>-`~R4d-xSNF`;tnU z)5p@;1=Jkt%!3JhB|Ij^RtNZUwGK2Qt5Vn#skeg?z0pah86Dk~{IQuFF^@J+<7)nz zk%W>b8N@6bBef~uGck#|i%8|aD(%E?C0fN)jR%=R40^G;($hO`RyXtZ|JFKn7H=m_ z6SyieVEEA3|6a?Zs(?tk!WS8ki1`p7=uBXifpo)U<=up0-1@GAx}7!GZvS}(kO+Gp z`9CeV2}5~m*}(_-?17GsZu`FN`TI%ui;1B$Ci05GGE*f*4r>QFzeOi&{_@Ck3H=^P zqInJ+DxR}c)~AofZ)0)rReAuAu7Rspm(jUSt~G+8W-pTKN^9uROPi}IoU`uxNalh| zvG^2XDmmP+GgTyO3g@xvi2N}osdLi7B|~+HCT{WBxSOGqPcrszo15cA zWb|YC&n+U=bPy6{c5p|Aa46I5%RqQDguGT|^YmkOyh_0cFv0Jd{vFFU4$J}JBjne- z5zNq<0%{TW!iO99Dh6ooZ@vP`E@}#>vLDZWJ=?I+&9EQq=5!>_^3YTq>p{+I&|k@V z>Fd{EeB`qoP<{b{Dv-gsp|a_0)8*@RFcDSIEO>h-&{tGu^}L>k&MI;#>QQG(`%ayi z3vKR_-7>R*QZWx$`7Fxpw>CrHz7L_Nu(Rfz@Kk5qHew(_#udPM8^Ntzovze51UtVG zXFExH`qJA1*U2M@aSuCI>`T*(B&L0QLOvZA_Y4!_4UW0Qan>K<32zQ6_z9 zLa8N32+tBj$XEp`Nl@Fy*Mn+K+FCIL-Y%x*Pu1_~nX}`lYzEuS_q&arAtU@d$Mmj9 zYC*x*bCzjDu&+eksRnoC4eMUxL{XQCOH30|2Zp3l)LN{0o3TkUjGpLe74LqV5?yBx zPTQam5# z3ke?6>#Y*BWjVoh^GkAPJ?D4J9F4#2en5N#G)SArwF|N>yb&R2S+349A=QigNV=gy z`^=@u8sp2EK&1&@6B7zLUVVM+#?Fs>Jd>cv*g;Ap`*BB*;G*SAABFaxFQF<+i8q_~ zW|rc-VYK7VSFtOuVq1+5z7)bPJdI)u* zijswh#X5l7>~zJzrvz`JhY+Xfagc8R(JnS0U+g?akuKxaaq=T zn$PGlmiaWKaXwkq@fo$XQI$n7vn+I%5X4IwcRvmDJVHTA0TNn0H)}1~(n#(~5_tsUqV;bxxYA_!p_p(L#KGRp=dm|E53bI$r9n ze~uGjf5i~6U~ztvFZ$~ve`soW&pX&Kt$3+K z7Z;Sr^`9>w9>DEtYn>W5oAFNZa4A|y;3&;E{tQvi{r4PhRzVGdd&?Ukk5{0!)YeON zv1lOt?~TX>NmF=?I$=l_4vK3;rd4U47jW8IAk&SfD~lQX(v+f1-ny+(*n8_Ji$12V zP51H-AuXsn>8R26c;4JZ0fjtf14RL*c!vLgEEDo}RP6A9yDiEDA_9tEC@DjB=a~fJ zLiggZJ$eUga_II$9k^ViN$Pn8@q>5gg6#B_E%wV61(tFmA6K0O{M8eqo@Y^ae#?6g z8iC2fl7Uo#uw-C7H_?T8AbBtvcYJtq(yep8LdgAX&Q@!5X9i=H&{v3LNLu!SIOk1U zqGVjwvg>|h+;%fgWVa_>$sy7^YBf2}hvW|^9I!CtAqp{)={R4e_c=_5(#xk_cE1mp zdZ8a|+4s4l)H0rF635xLHyRa-^+#)HF1-(Ku+epRXv9X8X6iU=vyQZffJk1%yc!rG z$@|4nRu;MYGRekg(Vw;6;*jAY*DQq%lHKkDkHpS{u1u~SCa2)NxX22To=LAWWmz3E zYgTNUGUxf96qrW_lX7eiQBTy##a(6!xz*3a$^vu5etqB{1STg9`IcWi^6hw%de+Y9 z5Xl9Ndx5v&fq{aMzJR&}G$S|X5CIbfyo^PBaA$WRxB)-1i;A{VJU2+` zZ0*mU#ss+k)Xw>zl|&C%O=WQ4TU?-oN{R^zOl#eaJB7*Enj`zQN)i zj)Giply#rR7O3*Lvu2*MtNX%d8au&LpI#O9ByG(#7fd=*+z&mx#RSpl@{PD6WZ2fdxRNVJ^KFG>>t)`8|z7_k5@(WE!`x-gtpgNBz??*GrdFA4G#;+ zNBwBdOtXT&x_2{b;g+avniQ6(Z;*Bs90znh(wPP65>LDTSVTsQs5vk{z!Uh+a*>jR zUb=XU#l?4$>&+S|Sk9THLzcm=%~qlEN0Zz|?`0LYt}7AEcFm!4XpTNE?39(4nWq#3 zNm!!LLCW9$YdBzVF4)jgD9E9;Dh8N7oWqpKF}L5QI{Uhs-+TwVNTl>b`&~`#L`4qU z!zDe|=+7D!Z~Lhw6NnF1$d%$|1sxE{jM^_{X*mZZoxcVkO1$dx&`2eLLzEW3vC0p> zzg7Y5q=ez5`y=5P_gn8KB;$RQoHJy!oFdE7RNX8Aj!w^CqGQ>*yKFOx@-5g;rCM6o zwn)tYO!d*FKEhE!(^!g%(pjNUQt(;SlNxP)R{M8d{QvOu)nQS6-`6q@G9ZnFbP0lV zBST1sFm#ucAV_zQAl*m{D2RwiOQ+IO(%ndROTK6P{J!s>`tZQL=bp3A-fOS5_Nfq7 z34|^Gjl=@@dtv0vbf7a1^i&ft&nKLiZoLk6NKu^w7v_nWvzg1a(<4;jC@}@Q@~Abu zsb_pT%js!2>9s>Ar5|Ou+y2;drfe{Yw3i(ktK@(S6{eBXZ6qe?w@z$IXGVw(Q^14p z*>S0P>Ba&#z5^wvypq!5ODbp=79ftweekyNtRgZ^`zuKJ8&-o#LF5<4fT~b0@KlnY zpVrfrO_J#4is`-$!GjFYIs7T_cz-$Qf?Ys%!t z({#U0fcCgFo$E|x0nxM{Qbd8B1$9}jI~Jb5Of||B>5#I3 zH60S(gL*02-*99D4uXZ=oiE_GDH^yevm|1->Pk3LdeW|NDF~mob^VDDct=*fb7nDY ztka)LwV5~MJD!@vY|>m3K1a#)TY(={ht~^yE;$Qfrfw8Gj-_jRr1e?qx=@)I^Zh@j zBk};#lS$1Zy~CsGV`H^|W`yLw-6z#DJWf*uRH;dnDL)TZP*nYtMjmy`0Oesb=38VLqtZI zm0*d??P1d+SkEjCd7*)i`bt4i&6%2~yPZD-*1cQXHCJj3qpCG=pi>#kS$&mXptx>E zTJ)NfXvXF~CVV-!9QwhF|t5?`6ccvsn1i5)v?xIwifrK_78Fb4NC`SP1@BR!70>WHi*kVSyNg;4=-Vy!wR1nXF0I_@D?44G zI5k>*NeITTra+IM9(9$^RIs=;3Vtgk#z*V50D~*!wDl8&P{BargA*i%bV9*wSw;2V zmDUQ~UN)T{cHFQaJ^nNMp^IQ0y=15T;7XX=ki)CIcP&vHa=G)=MMYtE`hC`4L3q4Y zhNp8xNpp0AWyB(C{Z8!oM8K`2ZJ5EAy^jI@H&7f>UZ=_0*iV)# zcxhx9#VJ@F&rcZGLj5vHik4EZ z7+^mRQ2B~N;QZE^z0;pw>$OF)XMbwvC@(oE%6J34gj6z&5-_S518#5-+okW`o^}i8 znwk z2UlwY>u2m`)yPWJBxbF}p+y>1Iia*+>ub1!b_Nz@x4(D9lQ}|fdu#{(xmX!mx_~0{ z+D>=SRilS^zu~pbfp3RO} zM!WN{u2mCX1Q~pl*U^uLK^rFzK~dSvGPak0-W!^;ojZ)aD|p-bdiF`Pdw|3E*Gj)j z9kkKQKN_0*5L`RTn zcX?{J;3Ja5mFeBH?q+P`jb8O@Gn5E_d>r7RmeH{Mon&%;t9#9UFDZ6zh{2?`8DT%K znn-my>p^EPKW5_8netzd`q8a1BS&@uiWGmCXZl7tN?Ns^-j0F1>6X2l8aS+7>7M_D z{i{Ro4&SM{b3z1VjE3E>Yz?c*ZmH>|-5)QKDGoU1T~8!=AKSU|6F+$Cf+|hN`w;st z2t2D^c1V;&`E%!*wEd=`FLIG@`(4eDB7Cv@w|LlK<*39aQIAU29uU98n#$!+7@@#+ z*_vRGWmNS8r`B@Xw=yjTe^=QeDVA)L{SZRkgvKCp%z#eh9K=H8M}o)eM@e<#0YSt;xD(&!9PdlZK|@-1 zy(?>_O7d9pX~;QS`XEyw!*=6~0h4IYl=@cbXmA}b$x2EU$$cz?G47SPvLPmMk#R6S z^RWo>$m03x!bdFigxVzdZH7$HBE-T&!rKiCEi9e?6vO zIWG~!XzKTVaci$F)3tv6 zE1;vIY|4o{9h4hiD}>6#_&;J%TCp6xV%*1LSmvN}(Qf5$ezUR@gbm0t(0-Ot;4;BcH2{~X^s0^n(%BbXaY53VpN6=Lt+f`t1U z;W_B>>savDeD63}s7i+;98~f~Zx{UsHXkcK`$Rx8^*=0t_=B>~&(wfcHktM1@XJkK&s!Q!J0Ie7^JE}x)g*7 z)RWJ~L?+i2hNoBJsea%h4y3hfm)Oe?l4WA?&Wg0Fr36A|_IJJ_01?tosB%jGWS>VF z$;SD#j+UmmRLg$n>#vmEjl`_F?>KHhJbNF0Ak+Q%h)W3ms0Sj)5t8Ydx3Nh57*%Hc zq}^`?I5G(+YC;Yur?Bn9A}p)jvY9b1q)FEMSTBVYy17q8IZoR)idY?w?~%M=F8|eE zhPsiD8v$mizfA{}kF(Ly_HAmL3_sYDlNp} z7Z?1I5{6;9dH3n^i@X>wyHpFlNjcWJXS5+EXTZdNDPFcyDeA!DwiP zXVJ(f2l!;`m2^Enzg+vReGe;arWTwTY>?#WSk7UKlKr_#2fep8pBm8B!R7~`nPmM$ zpshfM2v$~BHa_|#@ug50qNURoK^bZFAf5Mtqs{nx1g(%*XWV8DYUnw9B!f#I==T{_V$Dk)nuz z{3hLQ(9#Q&e}~@$CXwB=kPT0?8LD}w|E!A`1;diAH+PEP!x{8a)QZ8VR>e-LK~@BO z_3COP~|4VFqnKIxXb_ebZLGYUCLwK;A4crlqE$rQKK z+3F6ea%bL=!jtfTThf7}?aak%IvW1e0b;Z_IAJZMS~E4z+i^H)eNu&^Br3_WBr>Iu zx%wxZx|D)NHptw_k1U~7j=s;a0q)+$haMv>(-J{Z%>AVG>)shDv876WyhKPIwhK=$ z&E|{IeG&+AKq`^!lQ3nLdV!|)I{HZ3)V)IfGU;c5PieWhk(|H?;>ocCk(0TZc6e`@ zd&(24BH5TPscq*vMJMNnmg?Q{r`mD?I|uX2=AT|v_^t?4f$2FQWlb2w^&}ubmbORV zUnO37UyBZych7K?yl{Kd&yt3xwQg#;JX1^|K}QaZ6Rk`}F3Pj54dq;P1#^%5pAYLP z?ro);nK<5ocrh(_&7Ek^bnym#F{6PyVC~GkLoq6xG#xHf!<21jq(nTt??xJi)uA#?!d&5bJ?Ke1MCaHut1ivfF zenVsUMGW;)@sYXJn*oeVkSC7Y$KvlT`SuNpjUSMY4{n-MKsV_ETh#E1g8yWq(0RPq zqUV6Ryn8v4vN!4V(I59UPhRj_<7yFb2wm()jDEjFo0d5ceOcKR@TCT<^HznX(d0Q@ z!F|#+3i`N+zk=iuy(F)!cB6Z*u2F5I6Wl{|EQ<=11dsM9gl4?CIaXSSieC@X;o0YV zW&d;Z>yTj-BFKf3L$*YIIMGCJ^+=I~^5x*KHErRxi&1sQRpRSn;h^ zz}cam?fhA0^cjuUEWEcH!voD02FrT$YYVRqcS`kMmz5I-Q`uYOorWLEJpp zpEtfeVhDKAaDV;h!U+-)c>CTJ`2Bx1^etwKS3v z(nqh=56t48-_yF&N2HSFVXEC^&>4OAb{w2ZHa(}JV%>X~uI}#kgH69|GXXtMIJNx~S%jQZ} zUGQs3iYW(aSr|2Fb4$?`;-v) zGWqk6gSZNXLv6O5S6?ov>HO#fLg(W$;1z??1`U57zJ~`K7fA1Ny$xr=JU&|@JEwvf zu6VkJK4IRBE@m>atEr*NGD|eM+xgr+{-i#GL`b@XV)e2p(HB1~9qfpaHmR=zRO{_d zVJGviH7%{dhJzENw-vDXDt*rOm)Za%p+!I8rzg+G$;u}nljk$xL^P?M}45I>1 zJy9fJ4C3RB+&CL1-Tr=3=C~q^z7u%W*JO2V;}R)-I>APi;Zg%kUE>EhbMsRS&p-|P zp7CjtW%kdA*B?kjqrN`B-H&fP{77S;%)9z-WndtiW2b1DzuqIwC3S+1#W(ZfZ)4<1 zzLk@1ar4Q$96Rxa?t$!YZ?(|f>G0{0n|TDlx)O-J2mPX`0DBZ^NtNqwdIU#27cmVy@wdgtbM_=c|{6?%O6#}H7F1htD zOG1_dguxa8OPtMHO#7yVt|39OMIqI^X7~Xbua)4ovd`B;!P{!1s@=k0^UY?-;CdOA zQ@(2!npx3$y1B1L%dKZ(qXaP|By{#>gd`;E^kL6e$wp!{di8a=0Ro$gyjrT|QRIy^#PiKS5**fzZ%7cHPq4Q?(tFMu(KEy-m?W zLC$QJmwoJrcZ~tf1RFFz6G%R`p3bRuuGwPwvaFl*PG^tPn_L=cot|wBm@n{~;zPLc zyAH1?=!yI}J0#!-T2qmH$}hdMUaqalH#7^ukV2SWXwTWNeQHgIJ}HPS9S7B26O_6* ze{1?`9!`e&Nw9NypvL(ppXjq=9Y53B&7DRy8>b5&Cx_vT%)Y0K;iSL3+$;PoE8uFQ zO0*Zv9p0jh0isY}x7y2Q=F^^hhiSS1{~LnCB`@On(`b3tU|hkrIf|6`Q}l(^_0DHZ zA)n919J^AjArG?yP%zx!mC@7Aqm$Y6^$`0O;YRCelLAfS68g?;n*;g!Z#I5FS&5Ez zE%NshfW3#@99Stkx?f_#eJwkkr!%AkqbBd_pDEXX4yZz2d)N2!G%g3#hjl(Xnw%$k zBCnj)1kiu`w2pm^4-vqgnJRe_{}2)iaC{+b`E>CZLA=gIr`h@f1FV|Gt-o_4<`>ze=6@#CV-%IZxkl!6VBmDTTu=;uAZu!^3(vl4>Mp%fGF#6R_1 zKd=#?<-#ZEgx^%ybpTqY-sw|VAqC_>I2wUDq2Os^%#qTZutetQ7btOi>u!%r{FG!p zG{oCQ7rA_1FleYf*)8*0-DFFDRfXeMN1(SOwsuqtH|&j8IZXN}CG}e>?@lzcddh{J zOblZF^tM$*|7GPGM zignXq=(h+Uk!;OwrhFZYwRPq%lc0@-3OtPg6mCK7Rfcn4nF9LGKV}ViSl= zU)QP2%r-CD>07Lx`*8G@KiJ$oG=7|u?N=Y(Q7*n~#tTkkh+cL8gK=Hixbb**t%*Z4 zcd_w=pX8Cj#~`{VSZ^MQLyym!>$M9rM}eY#ze4SZ$puQ?RDPrnJ~#q*em)lg&xLeq z%0)zH%0|wo?9>iUSI;|~N*(rXu-y~D2<10~*~r&aD!-B7g-YJ=+I8^%l2vF?fqP$G z+&#P@Rk1DCcK~9YrS(37vHf>~9IU^pwRJ3~{Yw-C9)wB^!GZ-pJvo(+9=}@2k$Se` znlSirU(TSg%V}#NF3CW4dO!e%P0;lV=yUf9OP&1Xd zxT2yHqZMyHvDz|!s!c&8_>IAZiP+L5P*ms@eG@t@kkY^~fte;uWJBxv?7F_)DGEi% zSFYOx_j7MZ>qy;wP!k!6MzBsQEDaXz;K+n0?NYX~|0%6m%|_ zKn@h?`x0jM;QRR@QQXcPKf?Mc45}MeM8*icYO~&IUgi7AS-oPUhm=2n*7p(#8N4+ zQE()_7(hZ;#rdDeEszqbpelGnpGF{pp!w3BvNy+)A{y{&m|#Qa%1rLPQZ89BVaFAP z63GJ#hgfD0CJQsQ%f}U;DbVi%&PCkDU%|s;&xs$WQ9eMewym19RzTx{QgoBR?6e1W z;l%q*sc%igK5|1&XOxoI=OLYM@I$}U*e_H4v2y#;QpVXu;ojjfklfLwfdz>M8L;(x zBXy;Ihp{pg;Z~#mVg*knd*&Mp``+XtYkU}`zMg5Mni5b(cm00wrzJrPGMO1*e!l;X zR)2u4wtKw$HNIQkWXRl~xi6BPktaF(CPS1MO;Qq=S5^8&S;d{l4kw~Y{g`CgE>B<2 zt|=J&0O3|N5}QPyH!)Hl@vWtdzlEBzxTabk6q}6kAgLiV$a|LkW}C%nxv_rbPp3!M z&xd`uT4g`5!zfRUbi18wk?xfN(Ge7}VmlGaFa8?l8*!9wLS;`eVb~zuc=lOych%uh zhZS#!CU_Wx+qJ%1?!nE7ekwY|311btd&D}@*w)WYBzHZM28YBvY2sWR-*vXUdAGn> zlAdNbLbyXJbgHv6eJ4Th*Z#XZTxRrqkRP|`A*-w*xs0Xt^-SP~)sbiv`nEQwPHYMx zru#O^rC#v((1-cKAB^X0*zfL*%O?zS_oqo^?c}oGkuopceQL2FJHCY z8O=l-pJUqwHHIH4V9uM$kIwLR7|g=^28U&i3{CRu{xb>A2jeL{e~$RJ=54?ZO2Bjl zYI2v8)NAjA%(m(kqIIl73^@}3091}_YiL&S&j;n&qPj7 zhbu-hw7-cLoh|0OIK1$&XEXe5?e*&!ts(?zSSh=~XLX|~-7Qa?Zkv~C%x*O_1olQt4yC4L@C(DOI;Q01udHXPt5&G4Lhd}aycKN>9-Oi5V`e$EQgT& z@Y{H@GEyoyat%sT>pmpgnCe?lckZNox}>hdh9CB}#ooO4iI%6qS6faJyf1wGP(wM6 zZ=I8F^$ilthtxT9+R?T zTo~#dEKqw57bL#HvT0&aS*q(YakW#Uo=UE%6=XXq25m2wvxx*+er4L$BL`Q2*Wg1k z#3X<6e;`dPHrDi)v@MhDBmorC@@mO5z5oiQ) zJguS?4=Cq;D?K~|FSR1^0t_BD4o#5C?|!n zBuVezc$^r6(yGPVN&Xq*J8I^kmaT@|`{m1l%(0@0ZN|eP0GzPah=_Xjp`WOd`x~P} zMbEs#A-Sb*>~&OCeU zUSiq~y6|gvmbkBm+~Ku}4W9nbw2ONIh{@L2gq z_&VdG8s_koj76cj}!4l40Ba%>Pb2GcS|}ek*(K;vhurQ6YJyWc~VeV>9rZ zTlAX4q0rxVSYn3s8M^=oNG@GgWq z`IV}{T3yX+WMg;VL&{<@E_0Ts?Xi#w1H*#l^=@|Op<~n4B}YQ8$#o@w$&niQH=Q$d zvV%49dVO4}Ztjk0;eHdnkLV(U5M5-yHI8!MGCD1Ey>>3LO9VI*pQ33YNrSvhMf30F zg0Fje^z?C+uQtKG`1mH@z24b1kSH2=^0kGi7JAG}Ul=8vJr4|8RG{NX(s{mOel#okFn-)qPA zs&brjOrp$eD{lgdTckJURZU6B-iUK;L;2hrf|dM;2L#rDarbe5Z0~esUE#pQDk(xX z0-fQ~XO?bU*2sr`asDyBF@9Kx#8rUTV4DIv8sT}j`Q^&{+#a67+==g64CO+pFIbJG zq+CPVqObifM(14lkmTz*XR;sQ+*W{U5t;K)O3rTDifzN_Y}Oljfos$(D^=mK?AD&( z2T_)(F;HqYh|SPJr1RN?HoZhj*g?mbKVfvfD{o$8k;QJ#E2Co9q~t?mwho%;5kt@`&8ZY95UM|CTo0PHFP0 z6vaH6ljCDHb(7{|;0R()a2~$qmH(yY;7=J(DHY^|&~Zk;wK2DP_v};d=yAUH77owt zJN0Mof620P+~^%2LzC?Q$)`(JM3%Z8b#-!zRx!kR->1j94eVOzAxh(PYf{Nt412|Y z*cEe7zcXr6wXq$u#;$iH#w2Y^&Ug>^(eJkKsgEHErv;woL-3#3rkKyucr5dcYm9S9 zOC5&3+rqcDd#I42-=bl=5>XTpg^iW=E9o`st!lf@_pSUomeT>B^p~^p?9@bC< zro&n1@bR$v;ujb!Fk~>OH05=JKDB2?`&_J)<@;D1yjk^e@*J8WG9{;C@R}P$|LgYC z+d`cr*wL zfNtXxLKJf{s*6QwN$=4*@=;_gkKI~?RlVu*k|SOb>?RPZ!xu~!C44N-fi}Q5tMSV4 z(rFvp*He-5nd(bXC`v1{j=ob^*;~&)S$|e%*8LD|dRJ%NY5(x_)IF;zv7#fEXGRt* z&Y45d&X2*#tGs0M<4D$P^m}&CM^rq73 z7qc^|VbqlFVZYi$h3vllcz(gzK#MN|&h$hE?JVw9`Bq?qr}3jIT5_r^=Up}QzdQE? z1)49P2!K3Mpcgcl+4gRG0}7ZW?!*&@IeIF7a#Bk}{PP?>mOQHjo&#!;c4KV`Mi7JV zne%4T(^Wq1t&HWL@JrWH`Yz1SV`|ahtW{~kLQIv!$5vU*N3)WNZ&WH89s`qcKq7(4 z@K}k+&KN8^F6wOIc15O>3XxM!+XKPmNr!0ua94b~9bSxgk3d>LEm`dh`vVee7)9o| zfDPyC_5(oy$O+zZM4whOaVIZ4Z*h;c`9*w*Kgw-!I#0d3zwdzNB;~U-7L0BD)ac7j z13h}v55F1Q=6O@IYnlLdSze|dB zRT{EAKkImZ&3X^7c-;~YyA?+P)5pxYySqW0sT6v9IK+GndDTkmlM9Eh{6s!wzo#4z6kfABo_j|8l0cuc#MXF7`{Q;4rBB#B^%=WFvE~qSVKOT< ze%EMTi-Xa48r=Rg$|rW;>6zzC&&aPm(>~XwkbZ4(T9Zu*-sBK|fkw<1a`GEI<>q{zBRP=2;P$M(0i`{iej|oPETtFg!z7mgcLl#6E<5wi$8B-$h!ZjM}dH- z2lIAk3-4=-TC%JOEC0x&-ia)VrL?^05s#mIa)yYNgO^tUlL*xT=gVUvZ|mn0;j?7~ zWbaM+sxG7ogt8V{1m4v(71|*u5|;Bi#{=m$+RO4iuA4`Ohh1{kyi8yd@Ks614?8D% z)AqoaIHStkRD6W4F3JWLrDS?!th4=l-HBJZv;yqDr_)%hj_YZsP&e!y_jbdl$65T) zAw^mQL{5LYt9rh;M)0Da(zN5G{_?nIIO#1fIrZnIE$JDR^Y7~yeosbELcHy*g@vb2 z=O$KeBj=JIGO*JS@_Sx%lLb$_$A;Lm+cpYH^V|f-Sx^dXoSC7tZ%>kbC1D#V$Qay= zIK7vdG7hksW+$dzW`z3Umx4^mm5fHXvwvva-0TUv$}J@=zk}U$=$;yal=t}`M^;}I z3gioj+>~MGd@E*~@bf>#(HL5A>u;o?7os0qoDOj=Ib2>BA&*ps99WL* zqR^81!kOaQF=hJzZ@J^1s1}h2N#}!D^W~He5hp*Vu&4qGNhgm+i<-y28xSdZLfPgK z$H&K%dA%iSHh>Nj2SS6|G>DDj(7-Cx0_stBAa3O3a9%O}N1E{y59&3M8oJd}JZTkAnkK zUIT|q&AIsx@v5L863WW3&7GgeeDyWp>|w=y=e^{6A^Bv_ zX1>q}KBC3PMV?dRQK-Omm9de}KAKyv|Ki`AFji)ZCh}BFyD7k;I09jg`Q-YhL-|h) z!jpsmb@7_wNEFQi1ghU!2RDKawGYn(_|`Lo}}1-~@rtPk2o!6)U*xRS%e2Yrt5O z(^b`v=HaA=Gn9C*w~{riMwuOh+3hI>`{J{{c7=$N`-v+5oL%y^ju(7^;%amaVJfER zIcv}|XW$5GMXWA_Woos?C8{~1{Qkkv0e(?Y(W4Xk>%>hh^0&BdBIzNeiEwuZ6qb8N#WMt1fXLl?E>s+)_v%)_%1;kshi zK?MyU=Au#4Nn3QAxhhV)$$#j-oYd%3=+T#%(b!(qXeMg<1)c~{Ql80g%NUlxD$LdL zi%w`*S*$qDO8@$+Cyu?x%#K1TYWfCK195RCKoQ(^*I=tTZKcMT_PHc3-VtEaN^~&6 zlmHvatf`5p<7v5b%`Dll2IyOSwkc~8S4rF%E#r203?G=z+i*$m*CL7JGa5&YT5+HZ z6ZC>^qgO`uzUlk)#-F zhosuX=}lJNhM1}x;cC?DoJc2=%V|%YmP>{a=LM5OA*iV$_+8)AA3hM_pdl1FzW=h# z++ZvGwMog7jMMXs(A>&A!`O|G!+twKo;=3G_2HBIlsH=Qbb!`?4LQI=Jbc6|@Fx-Y zJb0@Q%bhIUJRWy50pehBmhhAG@;Z1C(obR8x3UACt6p#w{(0Js;y!?>O?~c6+_w-7 zF#6hWQMi_K?_H$K+s9873nVIgt6p-LF?Fee4HFz8Xw*?O!EFbN+!-BIy<=N-)}_G9 zl(kb^IWZS^?TsbskUXrq7wx@C%Lye^puNGA4Qfq@TV(0AB`{31YF7t7x0yh0t;=~8 z3v4Ia)5Y@3EI-P%3PdmWu)blj7ukUWcJZzJe4TVV4@~v{$l}!u9CGrwyr&L zvMjS%XR6lBJNMr_AVlu>S~(s5fmp0fHe2oS&(FU$yp+L{f7)l|h&D76L`6{`^S31UuK%E*HWDdND zfa5K`@N*;3hnpRI!mL8mj1g*%Wj;nR67z;Y*zz+2p1rxJqUv*oN-0ZxGTPsk$=|GB ztv!V~mOF0{%tMxI4>BeUVaC?9rI#o;j+|r59?EyhZ z&@X$$VcsO^>nkjmr;++>P3-_07hnE`6yp?Qmi+c`7@sUdf?tIB9_GU=9s%1^2~#sj z5^|2}_EQcJu1gE4E3v7*Sj5xZFKvYT=VS|7W4Y)Rom`h_J7#XxHJA85R};_5_xDpB zuHGItbEUZtRe$y&KvEGwa=)aP@Hg*SUR8>U)m_HY|Jz0)9T?uuVGi-jpm1F|XXw~# zr(0}VdG`<<_?)t`C%U*l$`sWFoc!EwV-rgoRx3F zn7U+WKyK?&fmQPT%cxr2yEjrs%?R-T&G`Vy@$B&v=UMlP;sC3}rs~FL$#}aJUSeOT zi%0zS%IQOjQ`Xm(N2&&0%g4^{8Qoffo$29vX+JvvL245Ij-1~PJ1?+9TE8zAc2?%& zS5q1T#gj#mj9;gQiR^Tu6tG#kPWHaqFeVn7y0XH1G@tV@2Hpl-9VX297NI5JQV(~9qJ#Nz(Zr4~D$BjEU z&VLugGS(97cJ9~hHGd2HxTSURx10Nk1qM`I{=;ptSfil&gfmW!U2yGwunq$Vd>uI* zr~e!zmlynI8-173jD_v>dtek&6kjW;oo4r$%(Jxxc(jHSMKZuhmKAne*ryl??YiBm zz4sPB&f3O3KD1pb2E`r_<^bwHN?R#_MqGY@US#1D?t#hpyR;>~Mc0vq5YjO|JHnj3 zk!YUZE+}oe=qjh}P$DB4tVkQj2nj-{DkLaHUz#QK6sdq2}841f5}aQ(FqHoYcybTu-q&p3^=diefr( z;POJah5rrA{ij|BHhgzvW$_(te=4IdYH@;J3j5f@e)iSU%23T;ZmGbL>~nRXl200hZC;HPIlG(H?azz z47_D0ndt=lDVp5-`*QQV&Rb83g<>AQ#KkqpsekFPfY1;=fXPwYs4kQ)b!-+sP1c>4 z$Csx-Vk>i{&xisXaQk!8u#djj2&%wkv0jlHjLEbb93GsrXZ$!UKE(Z&;k*eJELZ+*@tN zdw>86vP8qCw2Iwu9i6i?ocha^FWu$?tuN5r&hCvzn!oCnmn#IM6u9k_!=^Lbp}SSb z&2YE+&R^O%RY;SM?xT_0XVnpcxJ@sBo=I9J&>N*dVvK4@bHNrBA{=9~al}9};1s>1 zrHPg|@(88EfA%fz44>4lMETe zegkuV%MUI{e~3&7TiZO$^A0i?#p?6C`{;LL9W(}DXcoJS*TU(vadS;~iB|TjFKcXM zv-X)Cf7`aws5|F{OORxJNZ4Ow=_WBT6V*i#l~EfJpAoq-uL|SQw?mf&3&8bmQjiaH zWZc3jlDj^OY7q-{(BzmMfo#8uIn;0d`BV3=VEhjyxEYwsBaA8fR6pCj0ltXAY#*Iw z(p8(&T_czNQ^m2Ng|P7{#U0{ziGeS)UF~E_U=L(7vx=La8@1Agg`Mzlw=D2uqbebt zP$|v2RQZu1Cd+7v&Fl|6zi9#GDMIV61JQNB?EKsCn0ssg)LdYrqsIM!F!qU#0Xw&t z=yK<>aA-eB-eRlo3~Ze9_%LZ13o6HZ(a%{;Y+&gX*; zKaI@s5M@#tsn5Tw)rE702GQ$zzERW%MlP41dib}_gZ`cAe}~bF5fnn5+79$qIy1JF zo<_`P24^~!$zZH=TDR<)vim1nN@OcpiM^Aod0&?#8On0{J2pZAE>HQ-p%7@{vI3di zj2wVVG&aztlR3V;%dn70nwS(#NI9x*iW7z*S2FOPTw?k_cKZNjr;B zb%LwtRyZ>fqHJLPi$!7KfyN{qnl4pe`;7PiMUBHOIRekkO|H2`?f18vWKft<@=nGp z`-m2J-E7j5Ld&IT?;}+IDe2M$6za$lU2oNge+vOoDr3T(#&yC;HX(H6C;Tw^1$o7q za{@*%#GsgeX)-dwX|G{-!X%M_^#(oWRZ+FQU~HP5#jMbggKki<`RX)3@Yj*2L^?G~ z5w5Z0{?mh^R)Pafv=Xlx@-0+}R%{DKc~CYW-A7Sk{C$Ra&l$(6_x`(lJY8h#Ek1Fj z)|r`)qiZzpt!(o%P9j9wI^Nq`FsK2oI(c`I#l{EDhF}q1*KX46lU7VBRU4rU6TEtke}H ze6X%UEc`k78b_lHp?;vV*ie@r&8`a(DSF zO49aYZske3z2iwkkR_$1Gf=cd`=|qTIxt9O`B5GR46Ri zrCrz}(`^^#xfJzuaxu&PR#a&7t@}IB;)+!y6~iKDB0qT+4*JYtz-2-bE&2`-mUa}i zVj$w*Yu`aiqwFIrDl7&HL`C@lA7ITf!$1xX_mN0;xNH(cDFmiDJo98@?13QEBUydM zbFp3p2Q0iUG=kpuR&mwjyVGihP{Wsw^Oj z6W9@2n2cqFt;DyyWx=Tfq`)%PyryOM3g~0hEGA%?jBR9%PuWfzM+CVk7IJ|Eab+-Y zfgpaWQm)K^y|dwz#}G_SDW}3y{-Q)Ar|Cf8L197DvZ%53c94WO>{EcJ;unvUq2V}B zaOhC!1o)x}QeX!QzmE4tP&#o?Jqhz`1aEiZQ9~SAWS;i0?7B;Zfx@r9nLCGz0wu`E zQrIHWOn;b_@HYAWlY7A_rCnyIi7JF>OpnUD5Z$22IuyCbJ2+4*y$g5D>uZc)9W^ zhRV4pL3sPU%I5JT_iRxiN{#O_zIhBH(RNcB^Z3LjA>Hp@Lnb3Q{2+1{q4^eDFnaR; zUJF>`I1GEDnfHMI zsxlX}GyxYf_e*Jr*He(~NOKv{GqcpI zX*uw{-g(4=RbkOysc?v4@?V7WgGRyDT)=0Zq{FvhTsC=qPmidIP;OzaZ|+J&&?jt7dQcj36nf(>7uo44gojEPDg(GS80b?E>pgFN2`@x1r?D^hq#kh zk@poxy_Xw&GCa~OlWOj@(V?6pLsaA=yQALPPj6fnwwV9h6hgs)28k9o9g23Gti`BI zoT{|^-Dm_kzuXuAHN5GSWL9`=xY*N;#Flf2n0lmbWM5{y7p^v+@#Pe4(lF*}UVqZJ z?r1UC`=+EpN&u0mCDb%0B#KC8DNIUEOSVKxIKw=xoSfeuEMmrno}htHf{K@1bZ8-5 z&%+*@JPad&41h)`7)@k9H(S|9LCEh+z}WHt{1p@dQDk3Qz@I0uYI9)6G1O8!>9VN-f1CzSXS zVsl~8pF{|#PL!D6@3?mx;AScs73STh9k*`TR1Y5_3 zlID?%B58#Y_| z1@2Hjsn~MVuUn#D@H|@jT376y2+AUk z(5u$FviQ02sXV=R~gV}I|$Po-Y}MgdFgLrck+z#${^*J*{m zzdH?#@2o8(v5|Mo)L^RI8!0GjKI#8g)|JOY-F5MqF=?hOV+*0iE|n!=Dl!ord$TBGVmPsmmh_bx*H{|Jg-j6@V%x}5(oO|v$=WgFG zyW!jSDwurTwvln%p1EJz1c0E3RY90R&K@HQ+K_Kp`<&vrr7Q`9tC)J=Y97#^(9nQt zI5!;T8!Svc%UbEGm&z0JGel8mXTSQ8j`gEq2ANqkXFYA2yO){8xR6^1gGz#xV27e% zn*0G)B3wv!h?!bjKdw#ataZD91mLJ{;3nsvWi@bhAMKTfyYv9oMqFH){ z<=BAs-G-j*tw6ftRBE8aMV-~4)1sFT=pJ;-#ev3?4g&X7LrtH8E}AB; zfPec|oOJ1Tcfn&Hfjf$NiYV1JW;MolpMdNh6@@o_W?t=OY~`#fFXKC5&r2 zWRN)gejjAc=#xiNkeF!q?r~(lp=Hb(sE92KCj+Y)M$SdaWeZEUbuf`TAV3^_;+9dV z20I9|ifoLcdlNIlABc_kCm%V#wDL_9U@St2+LnZ*8Gq^5Z4l90)8CyDQ&Ro0Mn_(= zoG%aO${SHQt)Po-sUi|EI}Z37aY4Aj2t>eI&fP>;4g?KkixD@KpQ!_git%u22okvT zB=I8Oq-@DZ9lC7Y2@`(;8)+Nl-Wj3*k~7d*C_>Y3l*ve&Y+gMGn~YNnJH@-0e>x>% zq2B+9SQdvXf{`KZl&}=zuXw<^6<;X^38S$W`K5|bGS;BXA-n)G6)$Lu)migP97W&@ zq}MbFYC5aFsNM~Dsl;3aw?z|Y{T(W8pIn0`X=Xu?31B6{Bt_@aadgrUV~|sia;;N4 z&~XY$F2>-_4(UV>E_P$#Hzt`YjadN4O#+J*xvuJKqOsmF^IXaGI0p%Gmkn{NF^Zb_ zLP8u1iACc8cz-$;nWEmrop_xD&G+0;?~3&KnQSejgih9nDcRghjBSm3 zvlj*CE!2&wkL9CUw@a8d=|7K;p?Lpq{H?yDFkhLeW(h{W&(+wB}#1#8#5zvAx}a9VoNM{P_(Bt z8(dmK7$XkF2*A%RU}9>j>cze{CA>7Cbo5?wBw(5Vk0K;335%>e7V5x&Q9&X~kV83m z>~8l-S|$q!q}@uC4fs@D(mhu7w(1?olTaL;*YCo^JU=qD zyQv&dv3-1OMl9b#@wcf#Hi<`)gDEh?JVqxCcPf60-n5H6Hg!f`Mf`=fvET($_sc{4 z3}==dO-l6o;?C!CeS=3a=REB^cPM|;^O9~f;B1fhsVhBalse{`<=sdK>0(ghS|Y+; z2p}YO#vdw`K+XSdBE14um4X!5N29Xp`rQ)nPJ(}_sJ*(l-W98^Fhjmmg=kPKKquR` zv>OUr2@0U4MwEP%yt6znJv|pG9gY+!zpDhn4QV!%YnmK=S2=up2me2gVj7vog$w$z z6`*(kyBoTWujcLW6q@gpadV4$WD$6(9wMj#X22JYPrP?*q*b>ypZj?bH8JSewmz+w zvx+e{24q<&6iXju){7^fW}aL#mrGli{>HilwSY}J%tP6RLT*X7J}~p^R_q5IZ*G*} z7iYECAhypMV6!6CSgVN3LYLpQkHmAmfF6NPDMj!j?tv*vl#tu3H2#Zomj2jE8&V}I zjDU@j^ma9^2^`U)?Gi0hH{*XBvLD1t8I+BKou*7$3|1Jkz5>kvm+Ksk0cH*+T%$6I1~!elQ}|pi2c~_0 z`B$6W&LX$5pR*VH8_)Un?#kH5n|N=R)Cr z)a=q*ik7CmPH4z9ohea67)v zb;vG{M9;B*-%~P`hWjja2%siA`rba)eLGhl2Qc~Z*c}KKw}>rAk|7i)klS}j(-sM) z<#ssYc4U_L5E`LfT)omcigp^w+`(u)JXR8n`Z~qm?3IEXSR&Y@335aNM#qCajsRn! zp?f3<&r?A@Gpk1uX7hEvdLf)D4BpIEnMh#=9X-3yI7Q&zv0Fo^#is;WcwqX+dad4S z^*e`u_lSCEF{JOHB3VfvW}JID#7dz4)k?GSYP)U9;PX-OwdoPBlZHQggv`Ik$s{dK zoq6Rl>l8ngkNY^?F z@KIMCk8hFB6^97~pDh5yNmMGS3+%5$YfOj8o*zy=g?OgnbedAGIxJ`^QWxJQ*rBJFc96&!Ls{>sIV`oe3b-pwUh4@d$!au*i4^|~Q=K+r-uqMz-M(#0xD}?QAJ*}zSK{BS=H;|pu32d2*QK9k zc8V)C^Lejz_i4?ubBmd_xuL$Yh~QNIW&8Qs`wpd(X|nLw<==1D$q*HaFO!^JUi&q0 zf3R$2rl#T97u(SrvzZS$dbE+ufWCc*4@c)4lj=x)q|^3Gn#X>*{Qk5{58wCGWgk}a zECK;zGXGVzl_wOroAI|eaSKy}fuTWH3Az^d^7OeH`H*J>U1C(BM6!)A)IRu9LC(8# zs!LQl6?u_eQ{;SwlfETiP%%#`kq?@JhkPQKsk^o3Lw@H_px^XRW%#_G%9TQS1wWmqp^Du{WHkRiw2ylrCkg=Ehgrl2nghP3nD!Yxl%TZp z>%Yj?4j3eKKvV_boQnFw0N?DL=rLi=rh?!}H>;X`d(#e1@$XnShV95A43jeEX={|| zg~f*!nH84RA0m{pErzC53bbls1EV5%-_uiJWftyzi)fbqZ5#_h%66UOTZ*3v75BgH zekvF|UM621U&1d^2?3B&J&?7}b*{-UO#xHYL66P*I^JPFDeEez;xo6?T1dEiA$wrI`+<0WIlAd z|8_D(BTgl3`92c)%GI8_48Qk&i_exQ9 zP;*J&H@-6%riQR4St)>gXejvn&roj3FQMPx-8z}B;)}1gbK)6c`E^{DyZW+I`&FT~ z172qW-A}R12w0@55|)1^dJ7S%s!U&GFG z|6$Fl9X{Qk^aF?5wS&bD^Y*XntY1W6$Pn!=rI2)BbVIoJOu-o(r z5i7_tz!^g?M@_1Wj1>7-VGe_HwB?M(q;xqN?uuCS*8q*s&4p$lA8cWK7D_ zV27GUor{Uf&OxmIbq$yrXh;;gwOvW0>(myoVN0du$Xo3a>eK8qLt|gQTxLzziDPlE z%%IdtbiBhX_THXKN=pqJaqH<}_VXx?TbsWeu8wu@h+m4UD~;^6{M9wEYd6@cvZi0IZZb=*D z>DT(pcaQma9vl3TH#MmClP%MH0<)v{Hh?ZjkZ)M_o3E8$cmjsOB>XkBT!(OllOY|D zG6O;YTx@!ow*36y(A<@omZ4WniL*5o^FRI+Vxr^^R9J==paj)2Q> z_5{h}*>Z_$qNXJdera**z~^X~HP1?^x6J9KI?d(?luDs>pp;^FwA};SIbH1uBb49v z#j4fTQPtH09}*w6=6@tw(GBN`y+1x!g+7L|$|6Hj2JDNYb#q~Rx3lhoAN@2jsjQ|H zkG|`v9DcnGAazg`w*J(3)V3#nfJil|m*Y7hTyC=^x5{Bnkt=prTu2KeH-*d-kHO(k zZ$wDvfEThvD9Xdl1Dex`(vhjOKu*3Kk#YYLM2uCn^b#aVr#!>|JdnXVL;cd()PriYjynKHN_r5V9@*ye2l zWEn{B^cZUP&1tZ0^oGH=F+_O3c3LXl z|AdcPUe0}|3tPdUYrUN~;Q3l7JIsuq?=%t`z7xBJj=lIsl+-qnx&J(M^>m_w3L?<6 z5%r!=zE0(CKoYL`au}9V(h=mzXAY<~ zNK{%p834zD3ItP^wtucK$bVtxTt2Je`|XwoI3ujIhj+X+d2}@J3Gb)4k^1NzO%uEa zS3gBX+k7)ExB+&Z$qZ}stQA^m#d)nQ?^s%#x+8LDzXYbRs-)@lW!plh3%yk(+nq!J z%OV^VgT+tLIdsCDhV}ynN|5aAo=~yBk=sYP!0%=4Un%5uL_iqBOXd|+)?EE^=kr^q z-4$lLRyuCmlv$iw8*h^zMi+FU)kW74VI zey)UO6?Pr~lYcL{E`k_SofhbF-ld_euc9&4z_pzWv=- zHNR}BYvI0KR3DTI9E&HXPH^W!kncrvMb`Y$0qtIc^z)xrG*@Zz zN?|&V_Yfm;gCw(F96{lY`H&#H#5xOuq5X9U>ZihA<)@8%g*#=w+y;=4P1=9Ti!C=$as2s3)MuAdgWO0FgCqK}A`P!e^gGa!T2f zZm!(K!88H}hJ2ZZG7CMjx4Dk^Jx|#Ep=V($Kxezz^rQ(|tp#$YqKx)KpMIz=51jus z2migD#JJbPm?x@PV85nn9oqxu#~PL-Fku1S1U{qL zjS{D*9nNu2A_251LSRb@5Sz|H75&{NjAq4lLu0G{qdr@~1RT}yU)NxWLJ)o;c+`?V zhr<#XZLpDaGMWQgl6;dL?X-rhhb9`J-~PF57X%9Bn$FsH{M?^EZ`={1j|Cyu#bwIK z=JD^*)gKSnA0^9+>OG@c#dIrPv>E^7%ErI+IQ%sxgJ)D4Kz(oe{(AqC(@~KPZ@yU% z@=H|0p>2p#E#tStULbpTQpsn1&9Rd)LH}o!>_EbW#lXm!%$5{qE|BgW{P>9hF7&5J z3>Z5wm_mU=17`W{L|NAxji1buCu09|C%Fqf1e5>({5yAAD^*uw=MmwdIbU0U@eDC7 zs6y;an<|QwAbCJv4;-fg01*I>ci$~E1x?nhiDkW@Lb2cK_YaQmpo?-yAlXMG2ZT9wx%7;YXahaAI+-M20VKr=b}sFPk0 z_|1IqOmutUJCxv#tSEtJ;DAf=2(E=VKX(0P>@J~gWQgGfl0X(gfS~XhEsaEuQ!Llc z6qLow)ZzBo`lN%AOBlkz!NK3?Jtbb6&TDrd`v6OW+|U%s8u}aRwkAyxuJImX#%=zk zsWHp6dPG;ecbGDh;1+thy1TqNn<}q@AK1utzKY`kdCPArBF{l5InUo7mWSkcjy6&Q zpPN?32`wAA=?7^7ukaHMIL!XIhQ%m?VR~*P5p*Ujg6W@EGM4|iJ&nW)p^27Fm9I}ofl3E}Za)p{Cv!#sc;W?o-i+eoNV1Puz-$Y{sHlG9Kh(Np-aGQrvk#f7>3!C=O z5UvTdxLt-Y7=MDZhL%E`wPw5+ESF$#5(EM>O6(47_1_PIY9qGR;TO;t;Xg}*DsPhk zBpJQ!^AYy;|4l&$I@TI#o*?*J?oADYTr(Yf(S9RZt@@ANH=6)~O>pD_>#@$eUxQ@( zPm_j0&bh@5`26aq%!dDXOpwPWYG9%8V%1io^zY~3>(2QgNRcRLAMStKW|kP9;hby1 ziB5SXfrUTniN~Hp0!&Y!>^M*;{rL>~AH~sQVKeKEbOl_4_>G{I$@L0%oFFZ)|NjR? z_=Y4juDi#6OP#bn^&NbE_)jcJ&;r*^JN|XSJ`862uUCTSv7x|(PIlSNywsccqb3`I(V=PAm-BY8 GLH`4Epyv|+ literal 0 HcmV?d00001 diff --git a/TechHelper.Client/wwwroot/ref/Working.png b/TechHelper.Client/wwwroot/ref/Working.png new file mode 100644 index 0000000000000000000000000000000000000000..9ae6329e94357725b137164bbd4b0891fb1db059 GIT binary patch literal 74557 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 - if(css == null) return BadRequest("你还没有学生"); + if (css == null) return BadRequest("你还没有学生"); List sts = new List(); @@ -93,5 +93,15 @@ namespace TechHelper.Server.Controllers return Ok(); } + + [HttpPost("GetGradeClasses")] + public async Task GetGradeClasses( + [FromBody] byte classDto) + { + var result = await _classService.GetGradeClasses(classDto); + if (!result.Status) return BadRequest(result.Message); + + return Ok(result.Result); + } } } diff --git a/TechHelper.Server/Controllers/ExamController.cs b/TechHelper.Server/Controllers/ExamController.cs index b457d0a..509f186 100644 --- a/TechHelper.Server/Controllers/ExamController.cs +++ b/TechHelper.Server/Controllers/ExamController.cs @@ -11,7 +11,7 @@ using TechHelper.Services; namespace TechHelper.Server.Controllers { - [Route("api/[controller]")] + [Route("api/exam")] [ApiController] [Authorize] public class ExamController : ControllerBase @@ -54,7 +54,6 @@ namespace TechHelper.Server.Controllers /// 提交的数据传输对象。 /// 提交结果或错误信息。 [HttpPost("submission")] - [Authorize(Roles = "Student")] public async Task SubmissionAssignment([FromBody] SubmissionDto submissionDto) { var result = await _examService.SubmissionAssignment(submissionDto); diff --git a/TechHelper.Server/Dockerfile b/TechHelper.Server/Dockerfile index 0192205..d1b550b 100644 --- a/TechHelper.Server/Dockerfile +++ b/TechHelper.Server/Dockerfile @@ -1,12 +1,15 @@ # 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。 # 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时 -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS server USER $APP_UID WORKDIR /app EXPOSE 8080 EXPOSE 8081 +COPY --from=entitieslib:latest /publish /publish/entities +COPY --from=emaillib:latest /publish /publish/emaillib + # 此阶段用于生成服务项目 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build @@ -16,15 +19,17 @@ COPY ["TechHelper.Server/TechHelper.Server.csproj", "TechHelper.Server/"] RUN dotnet restore "./TechHelper.Server/TechHelper.Server.csproj" COPY . . WORKDIR "/src/TechHelper.Server" +RUN dotnet nuget locals all --clear RUN dotnet build "./TechHelper.Server.csproj" -c $BUILD_CONFIGURATION -o /app/build # 此阶段用于发布要复制到最终阶段的服务项目 FROM build AS publish ARG BUILD_CONFIGURATION=Release +RUN dotnet nuget locals all --clear RUN dotnet publish "./TechHelper.Server.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false # 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值) -FROM base AS final +FROM server AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "TechHelper.Server.dll"] \ No newline at end of file diff --git a/TechHelper.Server/Migrations/20250828025055_score_in_submission.Designer.cs b/TechHelper.Server/Migrations/20250828025055_score_in_submission.Designer.cs new file mode 100644 index 0000000..814ffc3 --- /dev/null +++ b/TechHelper.Server/Migrations/20250828025055_score_in_submission.Designer.cs @@ -0,0 +1,1263 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using TechHelper.Context; + +#nullable disable + +namespace TechHelper.Server.Migrations +{ + [DbContext(typeof(ApplicationContext))] + [Migration("20250828025055_score_in_submission")] + partial class score_in_submission + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.16") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("Entities.Contracts.Assignment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("created_by"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("description"); + + b.Property("DueDate") + .HasColumnType("datetime(6)") + .HasColumnName("due_date"); + + b.Property("ExamStructId") + .HasColumnType("char(36)") + .HasColumnName("exam_struct_id"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(1)") + .HasColumnName("deleted"); + + b.Property("Score") + .HasColumnType("float") + .HasColumnName("score"); + + b.Property("SubjectArea") + .HasColumnType("tinyint unsigned") + .HasColumnName("subject_area"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("title"); + + b.Property("TotalQuestions") + .HasColumnType("tinyint unsigned") + .HasColumnName("total_points"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.HasIndex("ExamStructId") + .IsUnique(); + + b.HasIndex("UserId"); + + b.ToTable("assignments", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentAttachment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("AssignmentId") + .HasColumnType("char(36)") + .HasColumnName("assignment_id"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("file_name"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("file_path"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(1)") + .HasColumnName("deleted"); + + b.Property("UploadedAt") + .HasColumnType("datetime(6)") + .HasColumnName("uploaded_at"); + + b.HasKey("Id"); + + b.HasIndex("AssignmentId"); + + b.ToTable("assignment_attachments"); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentClass", b => + { + b.Property("AssignmentId") + .HasColumnType("char(36)") + .HasColumnName("assignment_id") + .HasColumnOrder(0); + + b.Property("ClassId") + .HasColumnType("char(36)") + .HasColumnName("class_id") + .HasColumnOrder(1); + + b.Property("AssignedAt") + .HasColumnType("datetime(6)") + .HasColumnName("assigned_at"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.HasKey("AssignmentId", "ClassId"); + + b.HasIndex("ClassId"); + + b.ToTable("assignment_class", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentQuestion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("AssignmentId") + .HasColumnType("char(36)"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + b.Property("Index") + .HasColumnType("tinyint unsigned") + .HasColumnName("question_number"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.Property("ParentAssignmentQuestionId") + .HasColumnType("char(36)") + .HasColumnName("parent_question_group_id"); + + b.Property("QuestionContextId") + .HasColumnType("char(36)") + .HasColumnName("description"); + + b.Property("QuestionId") + .HasColumnType("char(36)") + .HasColumnName("question_id"); + + b.Property("Score") + .HasColumnType("float") + .HasColumnName("score"); + + b.Property("Sequence") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("sequence"); + + b.Property("StructType") + .HasColumnType("tinyint unsigned") + .HasColumnName("group_state"); + + b.Property("Title") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("title"); + + b.HasKey("Id"); + + b.HasIndex("AssignmentId"); + + b.HasIndex("ParentAssignmentQuestionId"); + + b.HasIndex("QuestionContextId"); + + b.HasIndex("QuestionId"); + + b.ToTable("assignment_questions", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.Class", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("Description") + .HasColumnType("longtext") + .HasColumnName("description"); + + b.Property("Grade") + .HasColumnType("tinyint unsigned") + .HasColumnName("grade"); + + b.Property("HeadTeacherId") + .HasColumnType("char(36)") + .HasColumnName("head_teacher_id"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.Property("Number") + .HasColumnType("tinyint unsigned") + .HasColumnName("class"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("HeadTeacherId"); + + b.ToTable("classes", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.ClassStudent", b => + { + b.Property("ClassId") + .HasColumnType("char(36)") + .HasColumnName("class_id") + .HasColumnOrder(0); + + b.Property("StudentId") + .HasColumnType("char(36)") + .HasColumnName("student_id") + .HasColumnOrder(1); + + b.Property("EnrollmentDate") + .HasColumnType("datetime(6)") + .HasColumnName("enrollment_date"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.HasKey("ClassId", "StudentId"); + + b.HasIndex("StudentId"); + + b.ToTable("class_student", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.ClassTeacher", b => + { + b.Property("ClassId") + .HasColumnType("char(36)") + .HasColumnName("class_id"); + + b.Property("TeacherId") + .HasColumnType("char(36)") + .HasColumnName("teacher_id"); + + b.Property("SubjectTaught") + .HasColumnType("tinyint unsigned") + .HasColumnName("subject_taught"); + + b.HasKey("ClassId", "TeacherId"); + + b.HasIndex("TeacherId"); + + b.ToTable("class_teachers", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.KeyPoint", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.Property("LessonID") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("LessonID"); + + b.ToTable("key_point"); + }); + + modelBuilder.Entity("Entities.Contracts.Lesson", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TextbookID") + .HasColumnType("char(36)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("TextbookID"); + + b.ToTable("lesson"); + }); + + modelBuilder.Entity("Entities.Contracts.LessonQuestion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("LessonID") + .HasColumnType("char(36)"); + + b.Property("Question") + .IsRequired() + .HasMaxLength(65535) + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("LessonID"); + + b.ToTable("lesson_question"); + }); + + modelBuilder.Entity("Entities.Contracts.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("Answer") + .HasMaxLength(65535) + .HasColumnType("longtext") + .HasColumnName("correct_answer"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("created_by"); + + b.Property("DifficultyLevel") + .HasMaxLength(10) + .HasColumnType("tinyint unsigned") + .HasColumnName("difficulty_level"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.Property("KeyPointId") + .HasColumnType("char(36)") + .HasColumnName("key_point"); + + b.Property("LessonId") + .HasColumnType("char(36)") + .HasColumnName("lesson"); + + b.Property("Options") + .HasColumnType("longtext") + .HasColumnName("options"); + + b.Property("SubjectArea") + .HasMaxLength(100) + .HasColumnType("tinyint unsigned") + .HasColumnName("subject_area"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(65535) + .HasColumnType("longtext") + .HasColumnName("question_text"); + + b.Property("Type") + .HasMaxLength(20) + .HasColumnType("tinyint unsigned") + .HasColumnName("question_type"); + + b.Property("UpdatedAt") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.HasIndex("KeyPointId"); + + b.HasIndex("LessonId"); + + b.HasIndex("Title") + .HasAnnotation("MySql:IndexPrefixLength", new[] { 20 }); + + b.ToTable("questions", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.QuestionContext", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("QuestionContexts"); + }); + + modelBuilder.Entity("Entities.Contracts.Submission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("AssignmentId") + .HasColumnType("char(36)") + .HasColumnName("assignment_id"); + + b.Property("AttemptNumber") + .HasColumnType("tinyint unsigned") + .HasColumnName("attempt_number"); + + b.Property("ErrorQuesNum") + .HasColumnType("tinyint unsigned"); + + b.Property("GradedAt") + .HasColumnType("datetime(6)") + .HasColumnName("graded_at"); + + b.Property("GraderId") + .HasColumnType("char(36)") + .HasColumnName("graded_by"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.Property("OverallFeedback") + .HasColumnType("longtext") + .HasColumnName("overall_feedback"); + + b.Property("OverallGrade") + .HasPrecision(5, 2) + .HasColumnType("float") + .HasColumnName("overall_grade"); + + b.Property("Status") + .HasMaxLength(15) + .HasColumnType("int") + .HasColumnName("status"); + + b.Property("StudentId") + .HasColumnType("char(36)") + .HasColumnName("student_id"); + + b.Property("SubmissionTime") + .HasColumnType("datetime(6)") + .HasColumnName("submission_time"); + + b.Property("TotalQuesNum") + .HasColumnType("tinyint unsigned"); + + b.Property("TotalScore") + .HasColumnType("tinyint unsigned"); + + b.HasKey("Id"); + + b.HasIndex("AssignmentId"); + + b.HasIndex("GraderId"); + + b.HasIndex("StudentId"); + + b.ToTable("submissions", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.SubmissionDetail", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("AssignmentQuestionId") + .HasColumnType("char(36)") + .HasColumnName("assignment_question_id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("IsCorrect") + .HasColumnType("tinyint(1)") + .HasColumnName("is_correct"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.Property("PointsAwarded") + .HasPrecision(5, 2) + .HasColumnType("float") + .HasColumnName("points_awarded"); + + b.Property("Status") + .HasColumnType("int") + .HasColumnName("status"); + + b.Property("StudentAnswer") + .HasColumnType("longtext") + .HasColumnName("student_answer"); + + b.Property("StudentId") + .HasColumnType("char(36)") + .HasColumnName("student_id"); + + b.Property("SubmissionId") + .HasColumnType("char(36)") + .HasColumnName("submission_id"); + + b.Property("TeacherFeedback") + .HasColumnType("longtext") + .HasColumnName("teacher_feedback"); + + b.Property("UpdatedAt") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + b.HasKey("Id"); + + b.HasIndex("AssignmentQuestionId"); + + b.HasIndex("StudentId"); + + b.HasIndex("SubmissionId"); + + b.ToTable("submission_details", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.Textbook", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Grade") + .HasColumnType("tinyint unsigned"); + + b.Property("Publisher") + .HasColumnType("tinyint unsigned"); + + b.Property("SubjectArea") + .HasColumnType("tinyint unsigned"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("textbook"); + }); + + modelBuilder.Entity("Entities.Contracts.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("Address") + .HasColumnType("longtext"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("DisplayName") + .HasColumnType("longtext"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(1)") + .HasColumnName("deleted"); + + b.Property("LockoutEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("longtext"); + + b.Property("PhoneNumber") + .HasColumnType("longtext"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("RefreshToken") + .HasColumnType("longtext"); + + b.Property("RefreshTokenExpiryTime") + .HasColumnType("datetime(6)"); + + b.Property("SecurityStamp") + .HasColumnType("longtext"); + + b.Property("TwoFactorEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles", (string)null); + + b.HasData( + new + { + Id = new Guid("bbea7915-e27c-4ddc-b06c-1f579fc8104e"), + Name = "Student", + NormalizedName = "STUDENT" + }, + new + { + Id = new Guid("53307917-63c4-468a-ab05-a03882a69ef8"), + Name = "Teacher", + NormalizedName = "TEACHER" + }, + new + { + Id = new Guid("789b7819-685f-4a2b-9adf-463f397f24d1"), + Name = "Administrator", + NormalizedName = "ADMINISTRATOR" + }); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("ProviderKey") + .HasColumnType("varchar(255)"); + + b.Property("ProviderDisplayName") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("Name") + .HasColumnType("varchar(255)"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.Assignment", b => + { + b.HasOne("Entities.Contracts.User", "Creator") + .WithMany() + .HasForeignKey("CreatorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.AssignmentQuestion", "ExamStruct") + .WithOne() + .HasForeignKey("Entities.Contracts.Assignment", "ExamStructId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", null) + .WithMany("CreatedAssignments") + .HasForeignKey("UserId"); + + b.Navigation("Creator"); + + b.Navigation("ExamStruct"); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentAttachment", b => + { + b.HasOne("Entities.Contracts.Assignment", "Assignment") + .WithMany("AssignmentAttachments") + .HasForeignKey("AssignmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Assignment"); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentClass", b => + { + b.HasOne("Entities.Contracts.Assignment", "Assignment") + .WithMany("AssignmentClasses") + .HasForeignKey("AssignmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.Class", "Class") + .WithMany("AssignmentClasses") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Assignment"); + + b.Navigation("Class"); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentQuestion", b => + { + b.HasOne("Entities.Contracts.Assignment", "Assignment") + .WithMany() + .HasForeignKey("AssignmentId"); + + b.HasOne("Entities.Contracts.AssignmentQuestion", "ParentAssignmentQuestion") + .WithMany("ChildrenAssignmentQuestion") + .HasForeignKey("ParentAssignmentQuestionId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("Entities.Contracts.QuestionContext", "QuestionContext") + .WithMany("Questions") + .HasForeignKey("QuestionContextId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("Entities.Contracts.Question", "Question") + .WithMany("AssignmentQuestions") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Assignment"); + + b.Navigation("ParentAssignmentQuestion"); + + b.Navigation("Question"); + + b.Navigation("QuestionContext"); + }); + + modelBuilder.Entity("Entities.Contracts.Class", b => + { + b.HasOne("Entities.Contracts.User", "HeadTeacher") + .WithMany() + .HasForeignKey("HeadTeacherId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("HeadTeacher"); + }); + + modelBuilder.Entity("Entities.Contracts.ClassStudent", b => + { + b.HasOne("Entities.Contracts.Class", "Class") + .WithMany("ClassStudents") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", "Student") + .WithMany("EnrolledClassesLink") + .HasForeignKey("StudentId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Class"); + + b.Navigation("Student"); + }); + + modelBuilder.Entity("Entities.Contracts.ClassTeacher", b => + { + b.HasOne("Entities.Contracts.Class", "Class") + .WithMany("ClassTeachers") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", "Teacher") + .WithMany("TaughtClassesLink") + .HasForeignKey("TeacherId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Class"); + + b.Navigation("Teacher"); + }); + + modelBuilder.Entity("Entities.Contracts.KeyPoint", b => + { + b.HasOne("Entities.Contracts.Lesson", "Lesson") + .WithMany("KeyPoints") + .HasForeignKey("LessonID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Lesson"); + }); + + modelBuilder.Entity("Entities.Contracts.Lesson", b => + { + b.HasOne("Entities.Contracts.Textbook", "Textbook") + .WithMany("Lessons") + .HasForeignKey("TextbookID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Textbook"); + }); + + modelBuilder.Entity("Entities.Contracts.LessonQuestion", b => + { + b.HasOne("Entities.Contracts.Lesson", "Lesson") + .WithMany("LessonQuestions") + .HasForeignKey("LessonID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Lesson"); + }); + + modelBuilder.Entity("Entities.Contracts.Question", b => + { + b.HasOne("Entities.Contracts.User", "Creator") + .WithMany("CreatedQuestions") + .HasForeignKey("CreatorId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Entities.Contracts.KeyPoint", "KeyPoint") + .WithMany("Questions") + .HasForeignKey("KeyPointId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("Entities.Contracts.Lesson", "Lesson") + .WithMany("Questions") + .HasForeignKey("LessonId") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("Creator"); + + b.Navigation("KeyPoint"); + + b.Navigation("Lesson"); + }); + + modelBuilder.Entity("Entities.Contracts.Submission", b => + { + b.HasOne("Entities.Contracts.Assignment", "Assignment") + .WithMany("Submissions") + .HasForeignKey("AssignmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", "Grader") + .WithMany("GradedSubmissions") + .HasForeignKey("GraderId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("Entities.Contracts.User", "Student") + .WithMany("SubmissionsAsStudent") + .HasForeignKey("StudentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Assignment"); + + b.Navigation("Grader"); + + b.Navigation("Student"); + }); + + modelBuilder.Entity("Entities.Contracts.SubmissionDetail", b => + { + b.HasOne("Entities.Contracts.AssignmentQuestion", "AssignmentQuestion") + .WithMany("SubmissionDetails") + .HasForeignKey("AssignmentQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", "Student") + .WithMany("SubmissionDetails") + .HasForeignKey("StudentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.Submission", "Submission") + .WithMany("SubmissionDetails") + .HasForeignKey("SubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AssignmentQuestion"); + + b.Navigation("Student"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Entities.Contracts.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Entities.Contracts.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Entities.Contracts.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Entities.Contracts.Assignment", b => + { + b.Navigation("AssignmentAttachments"); + + b.Navigation("AssignmentClasses"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentQuestion", b => + { + b.Navigation("ChildrenAssignmentQuestion"); + + b.Navigation("SubmissionDetails"); + }); + + modelBuilder.Entity("Entities.Contracts.Class", b => + { + b.Navigation("AssignmentClasses"); + + b.Navigation("ClassStudents"); + + b.Navigation("ClassTeachers"); + }); + + modelBuilder.Entity("Entities.Contracts.KeyPoint", b => + { + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Entities.Contracts.Lesson", b => + { + b.Navigation("KeyPoints"); + + b.Navigation("LessonQuestions"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Entities.Contracts.Question", b => + { + b.Navigation("AssignmentQuestions"); + }); + + modelBuilder.Entity("Entities.Contracts.QuestionContext", b => + { + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Entities.Contracts.Submission", b => + { + b.Navigation("SubmissionDetails"); + }); + + modelBuilder.Entity("Entities.Contracts.Textbook", b => + { + b.Navigation("Lessons"); + }); + + modelBuilder.Entity("Entities.Contracts.User", b => + { + b.Navigation("CreatedAssignments"); + + b.Navigation("CreatedQuestions"); + + b.Navigation("EnrolledClassesLink"); + + b.Navigation("GradedSubmissions"); + + b.Navigation("SubmissionDetails"); + + b.Navigation("SubmissionsAsStudent"); + + b.Navigation("TaughtClassesLink"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/TechHelper.Server/Migrations/20250828025055_score_in_submission.cs b/TechHelper.Server/Migrations/20250828025055_score_in_submission.cs new file mode 100644 index 0000000..ad6533b --- /dev/null +++ b/TechHelper.Server/Migrations/20250828025055_score_in_submission.cs @@ -0,0 +1,104 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional + +namespace TechHelper.Server.Migrations +{ + /// + public partial class score_in_submission : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("379143a2-8d7f-4ef7-b7c0-14701b710f87")); + + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("6d49bb08-97d6-4a38-88a7-8080925b589b")); + + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("e330c745-f422-43e3-bcdf-1439ace3c52f")); + + migrationBuilder.AddColumn( + name: "ErrorQuesNum", + table: "submissions", + type: "tinyint unsigned", + nullable: false, + defaultValue: (byte)0); + + migrationBuilder.AddColumn( + name: "TotalQuesNum", + table: "submissions", + type: "tinyint unsigned", + nullable: false, + defaultValue: (byte)0); + + migrationBuilder.AddColumn( + name: "TotalScore", + table: "submissions", + type: "tinyint unsigned", + nullable: false, + defaultValue: (byte)0); + + migrationBuilder.InsertData( + table: "AspNetRoles", + columns: new[] { "Id", "ConcurrencyStamp", "Name", "NormalizedName" }, + values: new object[,] + { + { new Guid("53307917-63c4-468a-ab05-a03882a69ef8"), null, "Teacher", "TEACHER" }, + { new Guid("789b7819-685f-4a2b-9adf-463f397f24d1"), null, "Administrator", "ADMINISTRATOR" }, + { new Guid("bbea7915-e27c-4ddc-b06c-1f579fc8104e"), null, "Student", "STUDENT" } + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("53307917-63c4-468a-ab05-a03882a69ef8")); + + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("789b7819-685f-4a2b-9adf-463f397f24d1")); + + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("bbea7915-e27c-4ddc-b06c-1f579fc8104e")); + + migrationBuilder.DropColumn( + name: "ErrorQuesNum", + table: "submissions"); + + migrationBuilder.DropColumn( + name: "TotalQuesNum", + table: "submissions"); + + migrationBuilder.DropColumn( + name: "TotalScore", + table: "submissions"); + + migrationBuilder.InsertData( + table: "AspNetRoles", + columns: new[] { "Id", "ConcurrencyStamp", "Name", "NormalizedName" }, + values: new object[,] + { + { new Guid("379143a2-8d7f-4ef7-b7c0-14701b710f87"), null, "Administrator", "ADMINISTRATOR" }, + { new Guid("6d49bb08-97d6-4a38-88a7-8080925b589b"), null, "Student", "STUDENT" }, + { new Guid("e330c745-f422-43e3-bcdf-1439ace3c52f"), null, "Teacher", "TEACHER" } + }); + } + } +} diff --git a/TechHelper.Server/Migrations/20250829043403_up_assign_data.Designer.cs b/TechHelper.Server/Migrations/20250829043403_up_assign_data.Designer.cs new file mode 100644 index 0000000..197ebdc --- /dev/null +++ b/TechHelper.Server/Migrations/20250829043403_up_assign_data.Designer.cs @@ -0,0 +1,1270 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using TechHelper.Context; + +#nullable disable + +namespace TechHelper.Server.Migrations +{ + [DbContext(typeof(ApplicationContext))] + [Migration("20250829043403_up_assign_data")] + partial class up_assign_data + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.16") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("Entities.Contracts.Assignment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("created_by"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("description"); + + b.Property("DueDate") + .HasColumnType("datetime(6)") + .HasColumnName("due_date"); + + b.Property("ExamStructId") + .HasColumnType("char(36)") + .HasColumnName("exam_struct_id"); + + b.Property("ExamType") + .HasColumnType("tinyint unsigned"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(1)") + .HasColumnName("deleted"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Score") + .HasColumnType("float") + .HasColumnName("score"); + + b.Property("SubjectArea") + .HasColumnType("tinyint unsigned") + .HasColumnName("subject_area"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("title"); + + b.Property("TotalQuestions") + .HasColumnType("tinyint unsigned") + .HasColumnName("total_points"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.HasIndex("ExamStructId") + .IsUnique(); + + b.HasIndex("UserId"); + + b.ToTable("assignments", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentAttachment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("AssignmentId") + .HasColumnType("char(36)") + .HasColumnName("assignment_id"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("file_name"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("file_path"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(1)") + .HasColumnName("deleted"); + + b.Property("UploadedAt") + .HasColumnType("datetime(6)") + .HasColumnName("uploaded_at"); + + b.HasKey("Id"); + + b.HasIndex("AssignmentId"); + + b.ToTable("assignment_attachments"); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentClass", b => + { + b.Property("AssignmentId") + .HasColumnType("char(36)") + .HasColumnName("assignment_id") + .HasColumnOrder(0); + + b.Property("ClassId") + .HasColumnType("char(36)") + .HasColumnName("class_id") + .HasColumnOrder(1); + + b.Property("AssignedAt") + .HasColumnType("datetime(6)") + .HasColumnName("assigned_at"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.HasKey("AssignmentId", "ClassId"); + + b.HasIndex("ClassId"); + + b.ToTable("assignment_class", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentQuestion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("AssignmentId") + .HasColumnType("char(36)"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + b.Property("Index") + .HasColumnType("tinyint unsigned") + .HasColumnName("question_number"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.Property("ParentAssignmentQuestionId") + .HasColumnType("char(36)") + .HasColumnName("parent_question_group_id"); + + b.Property("QuestionContextId") + .HasColumnType("char(36)") + .HasColumnName("description"); + + b.Property("QuestionId") + .HasColumnType("char(36)") + .HasColumnName("question_id"); + + b.Property("Score") + .HasColumnType("float") + .HasColumnName("score"); + + b.Property("Sequence") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("sequence"); + + b.Property("StructType") + .HasColumnType("tinyint unsigned") + .HasColumnName("group_state"); + + b.Property("Title") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("title"); + + b.HasKey("Id"); + + b.HasIndex("AssignmentId"); + + b.HasIndex("ParentAssignmentQuestionId"); + + b.HasIndex("QuestionContextId"); + + b.HasIndex("QuestionId"); + + b.ToTable("assignment_questions", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.Class", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("Description") + .HasColumnType("longtext") + .HasColumnName("description"); + + b.Property("Grade") + .HasColumnType("tinyint unsigned") + .HasColumnName("grade"); + + b.Property("HeadTeacherId") + .HasColumnType("char(36)") + .HasColumnName("head_teacher_id"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.Property("Number") + .HasColumnType("tinyint unsigned") + .HasColumnName("class"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + MySqlPropertyBuilderExtensions.UseMySqlComputedColumn(b.Property("UpdatedAt")); + + b.HasKey("Id"); + + b.HasIndex("HeadTeacherId"); + + b.ToTable("classes", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.ClassStudent", b => + { + b.Property("ClassId") + .HasColumnType("char(36)") + .HasColumnName("class_id") + .HasColumnOrder(0); + + b.Property("StudentId") + .HasColumnType("char(36)") + .HasColumnName("student_id") + .HasColumnOrder(1); + + b.Property("EnrollmentDate") + .HasColumnType("datetime(6)") + .HasColumnName("enrollment_date"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.HasKey("ClassId", "StudentId"); + + b.HasIndex("StudentId"); + + b.ToTable("class_student", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.ClassTeacher", b => + { + b.Property("ClassId") + .HasColumnType("char(36)") + .HasColumnName("class_id"); + + b.Property("TeacherId") + .HasColumnType("char(36)") + .HasColumnName("teacher_id"); + + b.Property("SubjectTaught") + .HasColumnType("tinyint unsigned") + .HasColumnName("subject_taught"); + + b.HasKey("ClassId", "TeacherId"); + + b.HasIndex("TeacherId"); + + b.ToTable("class_teachers", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.KeyPoint", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.Property("LessonID") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("LessonID"); + + b.ToTable("key_point"); + }); + + modelBuilder.Entity("Entities.Contracts.Lesson", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TextbookID") + .HasColumnType("char(36)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("TextbookID"); + + b.ToTable("lesson"); + }); + + modelBuilder.Entity("Entities.Contracts.LessonQuestion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("LessonID") + .HasColumnType("char(36)"); + + b.Property("Question") + .IsRequired() + .HasMaxLength(65535) + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("LessonID"); + + b.ToTable("lesson_question"); + }); + + modelBuilder.Entity("Entities.Contracts.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("Answer") + .HasMaxLength(65535) + .HasColumnType("longtext") + .HasColumnName("correct_answer"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("created_by"); + + b.Property("DifficultyLevel") + .HasMaxLength(10) + .HasColumnType("tinyint unsigned") + .HasColumnName("difficulty_level"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.Property("KeyPointId") + .HasColumnType("char(36)") + .HasColumnName("key_point"); + + b.Property("LessonId") + .HasColumnType("char(36)") + .HasColumnName("lesson"); + + b.Property("Options") + .HasColumnType("longtext") + .HasColumnName("options"); + + b.Property("SubjectArea") + .HasMaxLength(100) + .HasColumnType("tinyint unsigned") + .HasColumnName("subject_area"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(65535) + .HasColumnType("longtext") + .HasColumnName("question_text"); + + b.Property("Type") + .HasMaxLength(20) + .HasColumnType("tinyint unsigned") + .HasColumnName("question_type"); + + b.Property("UpdatedAt") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.HasIndex("KeyPointId"); + + b.HasIndex("LessonId"); + + b.HasIndex("Title") + .HasAnnotation("MySql:IndexPrefixLength", new[] { 20 }); + + b.ToTable("questions", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.QuestionContext", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("QuestionContexts"); + }); + + modelBuilder.Entity("Entities.Contracts.Submission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("AssignmentId") + .HasColumnType("char(36)") + .HasColumnName("assignment_id"); + + b.Property("AttemptNumber") + .HasColumnType("tinyint unsigned") + .HasColumnName("attempt_number"); + + b.Property("ErrorQuesNum") + .HasColumnType("tinyint unsigned"); + + b.Property("GradedAt") + .HasColumnType("datetime(6)") + .HasColumnName("graded_at"); + + b.Property("GraderId") + .HasColumnType("char(36)") + .HasColumnName("graded_by"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.Property("OverallFeedback") + .HasColumnType("longtext") + .HasColumnName("overall_feedback"); + + b.Property("OverallGrade") + .HasPrecision(5, 2) + .HasColumnType("float") + .HasColumnName("overall_grade"); + + b.Property("Status") + .HasMaxLength(15) + .HasColumnType("int") + .HasColumnName("status"); + + b.Property("StudentId") + .HasColumnType("char(36)") + .HasColumnName("student_id"); + + b.Property("SubmissionTime") + .HasColumnType("datetime(6)") + .HasColumnName("submission_time"); + + b.Property("TotalQuesNum") + .HasColumnType("tinyint unsigned"); + + b.Property("TotalScore") + .HasColumnType("tinyint unsigned"); + + b.HasKey("Id"); + + b.HasIndex("AssignmentId"); + + b.HasIndex("GraderId"); + + b.HasIndex("StudentId"); + + b.ToTable("submissions", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.SubmissionDetail", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)") + .HasColumnName("id"); + + b.Property("AssignmentQuestionId") + .HasColumnType("char(36)") + .HasColumnName("assignment_question_id"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)") + .HasColumnName("created_at"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CreatedAt")); + + b.Property("IsCorrect") + .HasColumnType("tinyint(1)") + .HasColumnName("is_correct"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("deleted"); + + b.Property("PointsAwarded") + .HasPrecision(5, 2) + .HasColumnType("float") + .HasColumnName("points_awarded"); + + b.Property("Status") + .HasColumnType("int") + .HasColumnName("status"); + + b.Property("StudentAnswer") + .HasColumnType("longtext") + .HasColumnName("student_answer"); + + b.Property("StudentId") + .HasColumnType("char(36)") + .HasColumnName("student_id"); + + b.Property("SubmissionId") + .HasColumnType("char(36)") + .HasColumnName("submission_id"); + + b.Property("TeacherFeedback") + .HasColumnType("longtext") + .HasColumnName("teacher_feedback"); + + b.Property("UpdatedAt") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)") + .HasColumnName("updated_at"); + + b.HasKey("Id"); + + b.HasIndex("AssignmentQuestionId"); + + b.HasIndex("StudentId"); + + b.HasIndex("SubmissionId"); + + b.ToTable("submission_details", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.Textbook", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Grade") + .HasColumnType("tinyint unsigned"); + + b.Property("Publisher") + .HasColumnType("tinyint unsigned"); + + b.Property("SubjectArea") + .HasColumnType("tinyint unsigned"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("textbook"); + }); + + modelBuilder.Entity("Entities.Contracts.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("Address") + .HasColumnType("longtext"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("DisplayName") + .HasColumnType("longtext"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("IsDeleted") + .HasColumnType("tinyint(1)") + .HasColumnName("deleted"); + + b.Property("LockoutEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("longtext"); + + b.Property("PhoneNumber") + .HasColumnType("longtext"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("RefreshToken") + .HasColumnType("longtext"); + + b.Property("RefreshTokenExpiryTime") + .HasColumnType("datetime(6)"); + + b.Property("SecurityStamp") + .HasColumnType("longtext"); + + b.Property("TwoFactorEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles", (string)null); + + b.HasData( + new + { + Id = new Guid("df89b9a0-65ef-42dd-b2cb-e59997a72e70"), + Name = "Student", + NormalizedName = "STUDENT" + }, + new + { + Id = new Guid("0775702a-5db7-4747-94d0-4376fad2b58b"), + Name = "Teacher", + NormalizedName = "TEACHER" + }, + new + { + Id = new Guid("37f41430-0cb7-44e5-988b-976200bd602d"), + Name = "Administrator", + NormalizedName = "ADMINISTRATOR" + }); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("ProviderKey") + .HasColumnType("varchar(255)"); + + b.Property("ProviderDisplayName") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("Name") + .HasColumnType("varchar(255)"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Entities.Contracts.Assignment", b => + { + b.HasOne("Entities.Contracts.User", "Creator") + .WithMany() + .HasForeignKey("CreatorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.AssignmentQuestion", "ExamStruct") + .WithOne() + .HasForeignKey("Entities.Contracts.Assignment", "ExamStructId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", null) + .WithMany("CreatedAssignments") + .HasForeignKey("UserId"); + + b.Navigation("Creator"); + + b.Navigation("ExamStruct"); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentAttachment", b => + { + b.HasOne("Entities.Contracts.Assignment", "Assignment") + .WithMany("AssignmentAttachments") + .HasForeignKey("AssignmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Assignment"); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentClass", b => + { + b.HasOne("Entities.Contracts.Assignment", "Assignment") + .WithMany("AssignmentClasses") + .HasForeignKey("AssignmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.Class", "Class") + .WithMany("AssignmentClasses") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Assignment"); + + b.Navigation("Class"); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentQuestion", b => + { + b.HasOne("Entities.Contracts.Assignment", "Assignment") + .WithMany() + .HasForeignKey("AssignmentId"); + + b.HasOne("Entities.Contracts.AssignmentQuestion", "ParentAssignmentQuestion") + .WithMany("ChildrenAssignmentQuestion") + .HasForeignKey("ParentAssignmentQuestionId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("Entities.Contracts.QuestionContext", "QuestionContext") + .WithMany("Questions") + .HasForeignKey("QuestionContextId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("Entities.Contracts.Question", "Question") + .WithMany("AssignmentQuestions") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Assignment"); + + b.Navigation("ParentAssignmentQuestion"); + + b.Navigation("Question"); + + b.Navigation("QuestionContext"); + }); + + modelBuilder.Entity("Entities.Contracts.Class", b => + { + b.HasOne("Entities.Contracts.User", "HeadTeacher") + .WithMany() + .HasForeignKey("HeadTeacherId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("HeadTeacher"); + }); + + modelBuilder.Entity("Entities.Contracts.ClassStudent", b => + { + b.HasOne("Entities.Contracts.Class", "Class") + .WithMany("ClassStudents") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", "Student") + .WithMany("EnrolledClassesLink") + .HasForeignKey("StudentId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Class"); + + b.Navigation("Student"); + }); + + modelBuilder.Entity("Entities.Contracts.ClassTeacher", b => + { + b.HasOne("Entities.Contracts.Class", "Class") + .WithMany("ClassTeachers") + .HasForeignKey("ClassId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", "Teacher") + .WithMany("TaughtClassesLink") + .HasForeignKey("TeacherId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Class"); + + b.Navigation("Teacher"); + }); + + modelBuilder.Entity("Entities.Contracts.KeyPoint", b => + { + b.HasOne("Entities.Contracts.Lesson", "Lesson") + .WithMany("KeyPoints") + .HasForeignKey("LessonID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Lesson"); + }); + + modelBuilder.Entity("Entities.Contracts.Lesson", b => + { + b.HasOne("Entities.Contracts.Textbook", "Textbook") + .WithMany("Lessons") + .HasForeignKey("TextbookID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Textbook"); + }); + + modelBuilder.Entity("Entities.Contracts.LessonQuestion", b => + { + b.HasOne("Entities.Contracts.Lesson", "Lesson") + .WithMany("LessonQuestions") + .HasForeignKey("LessonID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Lesson"); + }); + + modelBuilder.Entity("Entities.Contracts.Question", b => + { + b.HasOne("Entities.Contracts.User", "Creator") + .WithMany("CreatedQuestions") + .HasForeignKey("CreatorId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Entities.Contracts.KeyPoint", "KeyPoint") + .WithMany("Questions") + .HasForeignKey("KeyPointId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("Entities.Contracts.Lesson", "Lesson") + .WithMany("Questions") + .HasForeignKey("LessonId") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("Creator"); + + b.Navigation("KeyPoint"); + + b.Navigation("Lesson"); + }); + + modelBuilder.Entity("Entities.Contracts.Submission", b => + { + b.HasOne("Entities.Contracts.Assignment", "Assignment") + .WithMany("Submissions") + .HasForeignKey("AssignmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", "Grader") + .WithMany("GradedSubmissions") + .HasForeignKey("GraderId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("Entities.Contracts.User", "Student") + .WithMany("SubmissionsAsStudent") + .HasForeignKey("StudentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Assignment"); + + b.Navigation("Grader"); + + b.Navigation("Student"); + }); + + modelBuilder.Entity("Entities.Contracts.SubmissionDetail", b => + { + b.HasOne("Entities.Contracts.AssignmentQuestion", "AssignmentQuestion") + .WithMany("SubmissionDetails") + .HasForeignKey("AssignmentQuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", "Student") + .WithMany("SubmissionDetails") + .HasForeignKey("StudentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.Submission", "Submission") + .WithMany("SubmissionDetails") + .HasForeignKey("SubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AssignmentQuestion"); + + b.Navigation("Student"); + + b.Navigation("Submission"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Entities.Contracts.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Entities.Contracts.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Entities.Contracts.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Entities.Contracts.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Entities.Contracts.Assignment", b => + { + b.Navigation("AssignmentAttachments"); + + b.Navigation("AssignmentClasses"); + + b.Navigation("Submissions"); + }); + + modelBuilder.Entity("Entities.Contracts.AssignmentQuestion", b => + { + b.Navigation("ChildrenAssignmentQuestion"); + + b.Navigation("SubmissionDetails"); + }); + + modelBuilder.Entity("Entities.Contracts.Class", b => + { + b.Navigation("AssignmentClasses"); + + b.Navigation("ClassStudents"); + + b.Navigation("ClassTeachers"); + }); + + modelBuilder.Entity("Entities.Contracts.KeyPoint", b => + { + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Entities.Contracts.Lesson", b => + { + b.Navigation("KeyPoints"); + + b.Navigation("LessonQuestions"); + + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Entities.Contracts.Question", b => + { + b.Navigation("AssignmentQuestions"); + }); + + modelBuilder.Entity("Entities.Contracts.QuestionContext", b => + { + b.Navigation("Questions"); + }); + + modelBuilder.Entity("Entities.Contracts.Submission", b => + { + b.Navigation("SubmissionDetails"); + }); + + modelBuilder.Entity("Entities.Contracts.Textbook", b => + { + b.Navigation("Lessons"); + }); + + modelBuilder.Entity("Entities.Contracts.User", b => + { + b.Navigation("CreatedAssignments"); + + b.Navigation("CreatedQuestions"); + + b.Navigation("EnrolledClassesLink"); + + b.Navigation("GradedSubmissions"); + + b.Navigation("SubmissionDetails"); + + b.Navigation("SubmissionsAsStudent"); + + b.Navigation("TaughtClassesLink"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/TechHelper.Server/Migrations/20250829043403_up_assign_data.cs b/TechHelper.Server/Migrations/20250829043403_up_assign_data.cs new file mode 100644 index 0000000..df6349a --- /dev/null +++ b/TechHelper.Server/Migrations/20250829043403_up_assign_data.cs @@ -0,0 +1,93 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional + +namespace TechHelper.Server.Migrations +{ + /// + public partial class up_assign_data : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("53307917-63c4-468a-ab05-a03882a69ef8")); + + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("789b7819-685f-4a2b-9adf-463f397f24d1")); + + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("bbea7915-e27c-4ddc-b06c-1f579fc8104e")); + + migrationBuilder.AddColumn( + name: "ExamType", + table: "assignments", + type: "tinyint unsigned", + nullable: false, + defaultValue: (byte)0); + + migrationBuilder.AddColumn( + name: "Name", + table: "assignments", + type: "longtext", + nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.InsertData( + table: "AspNetRoles", + columns: new[] { "Id", "ConcurrencyStamp", "Name", "NormalizedName" }, + values: new object[,] + { + { new Guid("0775702a-5db7-4747-94d0-4376fad2b58b"), null, "Teacher", "TEACHER" }, + { new Guid("37f41430-0cb7-44e5-988b-976200bd602d"), null, "Administrator", "ADMINISTRATOR" }, + { new Guid("df89b9a0-65ef-42dd-b2cb-e59997a72e70"), null, "Student", "STUDENT" } + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("0775702a-5db7-4747-94d0-4376fad2b58b")); + + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("37f41430-0cb7-44e5-988b-976200bd602d")); + + migrationBuilder.DeleteData( + table: "AspNetRoles", + keyColumn: "Id", + keyValue: new Guid("df89b9a0-65ef-42dd-b2cb-e59997a72e70")); + + migrationBuilder.DropColumn( + name: "ExamType", + table: "assignments"); + + migrationBuilder.DropColumn( + name: "Name", + table: "assignments"); + + migrationBuilder.InsertData( + table: "AspNetRoles", + columns: new[] { "Id", "ConcurrencyStamp", "Name", "NormalizedName" }, + values: new object[,] + { + { new Guid("53307917-63c4-468a-ab05-a03882a69ef8"), null, "Teacher", "TEACHER" }, + { new Guid("789b7819-685f-4a2b-9adf-463f397f24d1"), null, "Administrator", "ADMINISTRATOR" }, + { new Guid("bbea7915-e27c-4ddc-b06c-1f579fc8104e"), null, "Student", "STUDENT" } + }); + } + } +} diff --git a/TechHelper.Server/Migrations/ApplicationContextModelSnapshot.cs b/TechHelper.Server/Migrations/ApplicationContextModelSnapshot.cs index 4edc338..d50daf4 100644 --- a/TechHelper.Server/Migrations/ApplicationContextModelSnapshot.cs +++ b/TechHelper.Server/Migrations/ApplicationContextModelSnapshot.cs @@ -50,10 +50,17 @@ namespace TechHelper.Server.Migrations .HasColumnType("char(36)") .HasColumnName("exam_struct_id"); + b.Property("ExamType") + .HasColumnType("tinyint unsigned"); + b.Property("IsDeleted") .HasColumnType("tinyint(1)") .HasColumnName("deleted"); + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + b.Property("Score") .HasColumnType("float") .HasColumnName("score"); @@ -504,6 +511,9 @@ namespace TechHelper.Server.Migrations .HasColumnType("tinyint unsigned") .HasColumnName("attempt_number"); + b.Property("ErrorQuesNum") + .HasColumnType("tinyint unsigned"); + b.Property("GradedAt") .HasColumnType("datetime(6)") .HasColumnName("graded_at"); @@ -540,6 +550,12 @@ namespace TechHelper.Server.Migrations .HasColumnType("datetime(6)") .HasColumnName("submission_time"); + b.Property("TotalQuesNum") + .HasColumnType("tinyint unsigned"); + + b.Property("TotalScore") + .HasColumnType("tinyint unsigned"); + b.HasKey("Id"); b.HasIndex("AssignmentId"); @@ -755,19 +771,19 @@ namespace TechHelper.Server.Migrations b.HasData( new { - Id = new Guid("6d49bb08-97d6-4a38-88a7-8080925b589b"), + Id = new Guid("df89b9a0-65ef-42dd-b2cb-e59997a72e70"), Name = "Student", NormalizedName = "STUDENT" }, new { - Id = new Guid("e330c745-f422-43e3-bcdf-1439ace3c52f"), + Id = new Guid("0775702a-5db7-4747-94d0-4376fad2b58b"), Name = "Teacher", NormalizedName = "TEACHER" }, new { - Id = new Guid("379143a2-8d7f-4ef7-b7c0-14701b710f87"), + Id = new Guid("37f41430-0cb7-44e5-988b-976200bd602d"), Name = "Administrator", NormalizedName = "ADMINISTRATOR" }); diff --git a/TechHelper.Server/Program.cs b/TechHelper.Server/Program.cs index c960287..717c971 100644 --- a/TechHelper.Server/Program.cs +++ b/TechHelper.Server/Program.cs @@ -128,7 +128,7 @@ builder.Services.AddCors(options => { options.AddPolicy("AllowSpecificOrigin", builder => builder - .WithOrigins("https://localhost:7047", "http://localhost:5190") + .WithOrigins("https://localhost:7047", "http://localhost:7047") .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials()); @@ -137,7 +137,7 @@ builder.Services.AddCors(options => var app = builder.Build(); // Configure the HTTP request pipeline. -if (app.Environment.IsDevelopment()) +if (/*app.Environment.IsDevelopment()*/true) { app.UseSwagger(); app.UseSwaggerUI(); diff --git a/TechHelper.Server/Properties/launchSettings.json b/TechHelper.Server/Properties/launchSettings.json index 0664fc0..0b1a02a 100644 --- a/TechHelper.Server/Properties/launchSettings.json +++ b/TechHelper.Server/Properties/launchSettings.json @@ -8,7 +8,7 @@ "ASPNETCORE_ENVIRONMENT": "Development" }, "dotnetRunMessages": true, - "applicationUrl": "http://localhost:5099" + "applicationUrl": "http://localhost:8080" }, "https": { "commandName": "Project", @@ -18,7 +18,7 @@ "ASPNETCORE_ENVIRONMENT": "Development" }, "dotnetRunMessages": true, - "applicationUrl": "https://localhost:7037;http://localhost:5062" + "applicationUrl": "https://localhost:8080" }, "IIS Express": { "commandName": "IISExpress", diff --git a/TechHelper.Server/Services/ClassService.cs b/TechHelper.Server/Services/ClassService.cs index cae8a87..48c1f25 100644 --- a/TechHelper.Server/Services/ClassService.cs +++ b/TechHelper.Server/Services/ClassService.cs @@ -143,6 +143,22 @@ namespace TechHelper.Services } } + public async Task GetGradeClasses(byte Grade) + { + try + { + var result = await _work.GetRepository().GetAllAsync(predicate: + c => c.Grade == Grade); + + var classes = result.Select(x => x.Number).ToList(); + return ApiResponse.Success(result: classes); + } + catch (Exception ex) + { + return ApiResponse.Error($"年级班级列表失败, {ex.Message}, {ex.InnerException}"); + } + } + public async Task GetUserClass(Guid id) { var tch = await _work.GetRepository().GetAllAsync(predicate: user => user.TeacherId == id, include: i => i diff --git a/TechHelper.Server/Services/IClassService.cs b/TechHelper.Server/Services/IClassService.cs index 5ce0db2..533ed6f 100644 --- a/TechHelper.Server/Services/IClassService.cs +++ b/TechHelper.Server/Services/IClassService.cs @@ -10,5 +10,7 @@ namespace TechHelper.Services public Task GetUserClass(Guid user); // List public Task GetUserClassRole(Guid user); // List public Task GetClassStudents(ClassDto classDto); // Class + public Task GetGradeClasses(byte Grade); // Class + } } diff --git a/TechHelper.sln b/TechHelper.sln index 8c1c429..efa6d84 100644 --- a/TechHelper.sln +++ b/TechHelper.sln @@ -45,4 +45,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {22567F58-2C4A-4DB2-9674-8F537E0891CB} + EndGlobalSection EndGlobal diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..044f785 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,38 @@ +version: '3.8' + +services: + Entities-Lib: # 公共库独立服务 + build: + context: . + dockerfile: Entities/Dockerfile + image: entitieslib:latest + + Email-Lib: # 公共库独立服务 + build: + context: . + dockerfile: EmailLib/Dockerfile + image: emaillib:latest + + web-api: # Web API 服务 + # build: + # context: . + # dockerfile: TechHelper.Server/Dockerfile + + image: techhelperserver:latest + depends_on: + - Entities-Lib + - Email-Lib + ports: + - "8084:80" + + wasm-client: # WASM 客户端 + build: + context: . + dockerfile: TechHelper.Client/Dockerfile + depends_on: + - web-api + - Entities-Lib + - Email-Lib + ports: + - "3000:80" + \ No newline at end of file