From 0efbdf50ab4a87e53c09d3458f626c7e474d825e Mon Sep 17 00:00:00 2001 From: MayDayR Date: Fri, 29 Dec 2023 21:22:51 +0300 Subject: [PATCH] PIbd22_Kamcharova_K.A._lab7 --- DoubleDeckerBus/DoubleDeckerBus.csproj | 14 ++ DoubleDeckerBus/Drawing/DrawingBus.cs | 3 +- .../Drawing/DrawingDoubleDeckerbus.cs | 4 +- .../Drawing/ExtentionDrawingBus.cs | 1 - DoubleDeckerBus/Entities/DirectionType.cs | 1 - DoubleDeckerBus/Entities/EntityBus.cs | 1 - .../Entities/EntityDoubleDeckerbus.cs | 1 - .../Exceptions/BusNotFoundException.cs | 19 +++ .../Exceptions/StorageOverflowException.cs | 19 +++ DoubleDeckerBus/FormBusConfig.Designer.cs | 123 ++++++++---------- DoubleDeckerBus/FormBusConfig.cs | 10 +- DoubleDeckerBus/FormBusConfig.resx | 62 +-------- .../FormDoubleDeckerbusCollection.cs | 95 +++++++++----- .../Generic/BusGenericCollection.cs | 6 - .../Generic/BusesGenericStorage.cs | 98 ++++++++------ DoubleDeckerBus/Generic/SetGeneric.cs | 25 ++-- .../Move_Strategy/AbstractStrategy.cs | 4 +- .../Move_Strategy/DrawingObjectBus.cs | 1 - DoubleDeckerBus/Move_Strategy/MoveToBorder.cs | 1 - DoubleDeckerBus/Move_Strategy/MoveToCenter.cs | 1 - DoubleDeckerBus/Program.cs | 30 ++++- .../Resources/стрелка вверх.png | Bin 0 -> 38756 bytes .../Resources/стрелка влево.png | Bin 0 -> 38735 bytes .../Resources/стрелка вниз.png | Bin 0 -> 38653 bytes .../Resources/стрелка вправо.png | Bin 0 -> 38634 bytes DoubleDeckerBus/serilog.json | 20 +++ 26 files changed, 289 insertions(+), 250 deletions(-) create mode 100644 DoubleDeckerBus/Exceptions/BusNotFoundException.cs create mode 100644 DoubleDeckerBus/Exceptions/StorageOverflowException.cs create mode 100644 DoubleDeckerBus/Resources/стрелка вверх.png create mode 100644 DoubleDeckerBus/Resources/стрелка влево.png create mode 100644 DoubleDeckerBus/Resources/стрелка вниз.png create mode 100644 DoubleDeckerBus/Resources/стрелка вправо.png create mode 100644 DoubleDeckerBus/serilog.json diff --git a/DoubleDeckerBus/DoubleDeckerBus.csproj b/DoubleDeckerBus/DoubleDeckerBus.csproj index 13ee123..3b9e809 100644 --- a/DoubleDeckerBus/DoubleDeckerBus.csproj +++ b/DoubleDeckerBus/DoubleDeckerBus.csproj @@ -8,6 +8,18 @@ enable + + + + + + + + + + + + True @@ -23,4 +35,6 @@ + + \ No newline at end of file diff --git a/DoubleDeckerBus/Drawing/DrawingBus.cs b/DoubleDeckerBus/Drawing/DrawingBus.cs index e70186f..1d1d530 100644 --- a/DoubleDeckerBus/Drawing/DrawingBus.cs +++ b/DoubleDeckerBus/Drawing/DrawingBus.cs @@ -90,7 +90,6 @@ namespace DoubleDeckerbus.Drawing } public virtual void DrawTransport(Graphics g) { - // Pen pen = new(Color.Black); @@ -101,6 +100,7 @@ namespace DoubleDeckerbus.Drawing g.FillRectangle(additionalBrush, _startPosX + 147, _startPosY + 71, 30, 27); g.FillRectangle(additionalBrush, _startPosX + 10, _startPosY + 52, 137, 46); + Brush brBlue = new SolidBrush(Color.LightBlue); g.FillRectangle(brBlue, _startPosX + 150, _startPosY + 55, 15, 15); @@ -122,7 +122,6 @@ namespace DoubleDeckerbus.Drawing g.FillEllipse(gr, _startPosX + 25, _startPosY + 90, 21, 21); g.FillEllipse(gr, _startPosX + 125, _startPosY + 90, 21, 21); } - public bool CanMove(DirectionType direction) { if (EntityBus == null) diff --git a/DoubleDeckerBus/Drawing/DrawingDoubleDeckerbus.cs b/DoubleDeckerBus/Drawing/DrawingDoubleDeckerbus.cs index 2513eba..4022bcf 100644 --- a/DoubleDeckerBus/Drawing/DrawingDoubleDeckerbus.cs +++ b/DoubleDeckerBus/Drawing/DrawingDoubleDeckerbus.cs @@ -16,7 +16,6 @@ namespace DoubleDeckerbus.Drawing { EntityBus = new EntityDoubleDeckerbus(speed, weight, bodyColor, additionalColor, secondfloor, stairs); } - } public override void DrawTransport(Graphics g) { @@ -24,7 +23,7 @@ namespace DoubleDeckerbus.Drawing { return; } - Pen pen = new(Color.Black); + Pen pen = new(Color.Black); Pen additionalPen = new(doubleDeckerBus.AddColor); Brush additionalBrush = new SolidBrush(doubleDeckerBus.AddColor); base.DrawTransport(g); @@ -45,7 +44,6 @@ namespace DoubleDeckerbus.Drawing g.FillRectangle(brBlue, _startPosX + 123, _startPosY + 15, 15, 15); g.FillRectangle(brBlue, _startPosX + 150, _startPosY + 15, 15, 15); } - if (doubleDeckerBus.IsStairs) { g.DrawLine(pen, _startPosX + 10, _startPosY + 55, _startPosX + 34, _startPosY + 55); diff --git a/DoubleDeckerBus/Drawing/ExtentionDrawingBus.cs b/DoubleDeckerBus/Drawing/ExtentionDrawingBus.cs index e0ee0c7..a30d045 100644 --- a/DoubleDeckerBus/Drawing/ExtentionDrawingBus.cs +++ b/DoubleDeckerBus/Drawing/ExtentionDrawingBus.cs @@ -29,7 +29,6 @@ namespace DoubleDeckerbus.Drawing } return null; } - public static string GetDataForSave(this DrawingBus DrawingBus, char separatorForObject) { var truck = DrawingBus.EntityBus; diff --git a/DoubleDeckerBus/Entities/DirectionType.cs b/DoubleDeckerBus/Entities/DirectionType.cs index ae174c9..e635c45 100644 --- a/DoubleDeckerBus/Entities/DirectionType.cs +++ b/DoubleDeckerBus/Entities/DirectionType.cs @@ -12,6 +12,5 @@ namespace DoubleDeckerbus.Entities Down = 2, Left = 3, Right = 4 - } } \ No newline at end of file diff --git a/DoubleDeckerBus/Entities/EntityBus.cs b/DoubleDeckerBus/Entities/EntityBus.cs index bcb71c4..977fd31 100644 --- a/DoubleDeckerBus/Entities/EntityBus.cs +++ b/DoubleDeckerBus/Entities/EntityBus.cs @@ -18,7 +18,6 @@ namespace DoubleDeckerbus.Entities Weight = weight; BodyColor = bodyColor; } - public void ChangeBodyColor(Color color) { BodyColor = color; diff --git a/DoubleDeckerBus/Entities/EntityDoubleDeckerbus.cs b/DoubleDeckerBus/Entities/EntityDoubleDeckerbus.cs index 76b2e96..c36669c 100644 --- a/DoubleDeckerBus/Entities/EntityDoubleDeckerbus.cs +++ b/DoubleDeckerBus/Entities/EntityDoubleDeckerbus.cs @@ -19,7 +19,6 @@ namespace DoubleDeckerbus.Entities IsSecondFloor = secondfloor; IsStairs = stairs; } - public void ChangeAdditionalColor(Color additionalColor) { AddColor = additionalColor; diff --git a/DoubleDeckerBus/Exceptions/BusNotFoundException.cs b/DoubleDeckerBus/Exceptions/BusNotFoundException.cs new file mode 100644 index 0000000..3aeddd4 --- /dev/null +++ b/DoubleDeckerBus/Exceptions/BusNotFoundException.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Runtime.Serialization; + +namespace DoubleDeckerbus.Exceptions +{ + [Serializable] + internal class BusNotFoundException : ApplicationException + { + public BusNotFoundException(int i) : base($"Не найден объект по позиции {i}") { } + public BusNotFoundException() : base() { } + public BusNotFoundException(string message) : base(message) { } + public BusNotFoundException(string message, Exception exception) : base(message, exception) { } + protected BusNotFoundException(SerializationInfo info, StreamingContext context) : base(info, context) { } + } +} diff --git a/DoubleDeckerBus/Exceptions/StorageOverflowException.cs b/DoubleDeckerBus/Exceptions/StorageOverflowException.cs new file mode 100644 index 0000000..324c31b --- /dev/null +++ b/DoubleDeckerBus/Exceptions/StorageOverflowException.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Runtime.Serialization; + +namespace DoubleDeckerbus.Exceptions +{ + [Serializable] + internal class StorageOverflowException : ApplicationException + { + public StorageOverflowException(int count) : base($"В наборе превышено допустимое количество: {count}") { } + public StorageOverflowException() : base() { } + public StorageOverflowException (string message) : base(message) { } + public StorageOverflowException (string message, Exception exception) : base(message, exception) { } + protected StorageOverflowException(SerializationInfo info, StreamingContext context) : base(info, context) { } + } +} diff --git a/DoubleDeckerBus/FormBusConfig.Designer.cs b/DoubleDeckerBus/FormBusConfig.Designer.cs index a3df69e..6b07eab 100644 --- a/DoubleDeckerBus/FormBusConfig.Designer.cs +++ b/DoubleDeckerBus/FormBusConfig.Designer.cs @@ -71,11 +71,9 @@ this.groupBoxConfig.Controls.Add(this.numericUpDownWeight); this.groupBoxConfig.Controls.Add(this.labelWeight); this.groupBoxConfig.Controls.Add(this.labelSpeed); - this.groupBoxConfig.Location = new System.Drawing.Point(12, 36); - this.groupBoxConfig.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.groupBoxConfig.Location = new System.Drawing.Point(14, 48); this.groupBoxConfig.Name = "groupBoxConfig"; - this.groupBoxConfig.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.groupBoxConfig.Size = new System.Drawing.Size(499, 188); + this.groupBoxConfig.Size = new System.Drawing.Size(570, 251); this.groupBoxConfig.TabIndex = 0; this.groupBoxConfig.TabStop = false; this.groupBoxConfig.Text = "Параметры"; @@ -83,9 +81,9 @@ // labelAdvancedObject // this.labelAdvancedObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelAdvancedObject.Location = new System.Drawing.Point(385, 141); + this.labelAdvancedObject.Location = new System.Drawing.Point(440, 188); this.labelAdvancedObject.Name = "labelAdvancedObject"; - this.labelAdvancedObject.Size = new System.Drawing.Size(105, 23); + this.labelAdvancedObject.Size = new System.Drawing.Size(120, 30); this.labelAdvancedObject.TabIndex = 8; this.labelAdvancedObject.Text = "Продвинутый"; this.labelAdvancedObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -94,9 +92,9 @@ // labelSimpleObject // this.labelSimpleObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelSimpleObject.Location = new System.Drawing.Point(248, 141); + this.labelSimpleObject.Location = new System.Drawing.Point(283, 188); this.labelSimpleObject.Name = "labelSimpleObject"; - this.labelSimpleObject.Size = new System.Drawing.Size(105, 23); + this.labelSimpleObject.Size = new System.Drawing.Size(120, 30); this.labelSimpleObject.TabIndex = 7; this.labelSimpleObject.Text = "Простой"; this.labelSimpleObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -112,11 +110,9 @@ this.groupBoxColor.Controls.Add(this.panelYellow); this.groupBoxColor.Controls.Add(this.panelRoyalBlue); this.groupBoxColor.Controls.Add(this.panelFirebrick); - this.groupBoxColor.Location = new System.Drawing.Point(248, 24); - this.groupBoxColor.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.groupBoxColor.Location = new System.Drawing.Point(283, 32); this.groupBoxColor.Name = "groupBoxColor"; - this.groupBoxColor.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.groupBoxColor.Size = new System.Drawing.Size(242, 109); + this.groupBoxColor.Size = new System.Drawing.Size(277, 145); this.groupBoxColor.TabIndex = 6; this.groupBoxColor.TabStop = false; this.groupBoxColor.Text = "Цвета"; @@ -124,82 +120,73 @@ // panelBlue // this.panelBlue.BackColor = System.Drawing.Color.Blue; - this.panelBlue.Location = new System.Drawing.Point(4, 64); - this.panelBlue.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.panelBlue.Location = new System.Drawing.Point(5, 85); this.panelBlue.Name = "panelBlue"; - this.panelBlue.Size = new System.Drawing.Size(44, 30); + this.panelBlue.Size = new System.Drawing.Size(50, 40); this.panelBlue.TabIndex = 0; // // panelBlack // this.panelBlack.BackColor = System.Drawing.Color.Black; - this.panelBlack.Location = new System.Drawing.Point(66, 64); - this.panelBlack.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.panelBlack.Location = new System.Drawing.Point(75, 85); this.panelBlack.Name = "panelBlack"; - this.panelBlack.Size = new System.Drawing.Size(44, 30); + this.panelBlack.Size = new System.Drawing.Size(50, 40); this.panelBlack.TabIndex = 0; // // panelPink // this.panelPink.BackColor = System.Drawing.Color.DeepPink; - this.panelPink.Location = new System.Drawing.Point(127, 64); - this.panelPink.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.panelPink.Location = new System.Drawing.Point(145, 85); this.panelPink.Name = "panelPink"; - this.panelPink.Size = new System.Drawing.Size(44, 30); + this.panelPink.Size = new System.Drawing.Size(50, 40); this.panelPink.TabIndex = 0; // // panelGray // this.panelGray.BackColor = System.Drawing.Color.Gray; - this.panelGray.Location = new System.Drawing.Point(188, 64); - this.panelGray.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.panelGray.Location = new System.Drawing.Point(215, 85); this.panelGray.Name = "panelGray"; - this.panelGray.Size = new System.Drawing.Size(44, 30); + this.panelGray.Size = new System.Drawing.Size(50, 40); this.panelGray.TabIndex = 0; // // panelGreen // - this.panelGreen.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); - this.panelGreen.Location = new System.Drawing.Point(188, 19); - this.panelGreen.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.panelGreen.BackColor = System.Drawing.Color.Green; + this.panelGreen.Location = new System.Drawing.Point(215, 25); this.panelGreen.Name = "panelGreen"; - this.panelGreen.Size = new System.Drawing.Size(44, 30); + this.panelGreen.Size = new System.Drawing.Size(50, 40); this.panelGreen.TabIndex = 0; // // panelYellow // this.panelYellow.BackColor = System.Drawing.Color.Yellow; - this.panelYellow.Location = new System.Drawing.Point(127, 19); - this.panelYellow.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.panelYellow.Location = new System.Drawing.Point(145, 25); this.panelYellow.Name = "panelYellow"; - this.panelYellow.Size = new System.Drawing.Size(44, 30); + this.panelYellow.Size = new System.Drawing.Size(50, 40); this.panelYellow.TabIndex = 0; // // panelRoyalBlue // this.panelRoyalBlue.BackColor = System.Drawing.Color.RoyalBlue; - this.panelRoyalBlue.Location = new System.Drawing.Point(66, 19); - this.panelRoyalBlue.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.panelRoyalBlue.Location = new System.Drawing.Point(75, 25); this.panelRoyalBlue.Name = "panelRoyalBlue"; - this.panelRoyalBlue.Size = new System.Drawing.Size(44, 30); + this.panelRoyalBlue.Size = new System.Drawing.Size(50, 40); this.panelRoyalBlue.TabIndex = 0; // // panelFirebrick // this.panelFirebrick.BackColor = System.Drawing.Color.Firebrick; - this.panelFirebrick.Location = new System.Drawing.Point(4, 19); - this.panelFirebrick.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.panelFirebrick.Location = new System.Drawing.Point(5, 25); this.panelFirebrick.Name = "panelFirebrick"; - this.panelFirebrick.Size = new System.Drawing.Size(44, 30); + this.panelFirebrick.Size = new System.Drawing.Size(50, 40); this.panelFirebrick.TabIndex = 0; // // checkBoxLadder // this.checkBoxLadder.AutoSize = true; - this.checkBoxLadder.Location = new System.Drawing.Point(11, 112); - this.checkBoxLadder.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.checkBoxLadder.Location = new System.Drawing.Point(13, 149); this.checkBoxLadder.Name = "checkBoxLadder"; - this.checkBoxLadder.Size = new System.Drawing.Size(129, 19); + this.checkBoxLadder.Size = new System.Drawing.Size(160, 24); this.checkBoxLadder.TabIndex = 5; this.checkBoxLadder.Text = "Наличие лестница"; this.checkBoxLadder.UseVisualStyleBackColor = true; @@ -207,18 +194,16 @@ // checkBoxSecondFloor // this.checkBoxSecondFloor.AutoSize = true; - this.checkBoxSecondFloor.Location = new System.Drawing.Point(11, 89); - this.checkBoxSecondFloor.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.checkBoxSecondFloor.Location = new System.Drawing.Point(13, 119); this.checkBoxSecondFloor.Name = "checkBoxSecondFloor"; - this.checkBoxSecondFloor.Size = new System.Drawing.Size(157, 19); + this.checkBoxSecondFloor.Size = new System.Drawing.Size(196, 24); this.checkBoxSecondFloor.TabIndex = 4; this.checkBoxSecondFloor.Text = "Наличие второго этажа"; this.checkBoxSecondFloor.UseVisualStyleBackColor = true; // // numericUpDownSpeed // - this.numericUpDownSpeed.Location = new System.Drawing.Point(82, 24); - this.numericUpDownSpeed.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.numericUpDownSpeed.Location = new System.Drawing.Point(94, 32); this.numericUpDownSpeed.Maximum = new decimal(new int[] { 1000, 0, @@ -230,7 +215,7 @@ 0, 0}); this.numericUpDownSpeed.Name = "numericUpDownSpeed"; - this.numericUpDownSpeed.Size = new System.Drawing.Size(131, 23); + this.numericUpDownSpeed.Size = new System.Drawing.Size(150, 27); this.numericUpDownSpeed.TabIndex = 3; this.numericUpDownSpeed.Value = new decimal(new int[] { 100, @@ -240,8 +225,7 @@ // // numericUpDownWeight // - this.numericUpDownWeight.Location = new System.Drawing.Point(82, 62); - this.numericUpDownWeight.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.numericUpDownWeight.Location = new System.Drawing.Point(94, 83); this.numericUpDownWeight.Maximum = new decimal(new int[] { 1000, 0, @@ -253,7 +237,7 @@ 0, 0}); this.numericUpDownWeight.Name = "numericUpDownWeight"; - this.numericUpDownWeight.Size = new System.Drawing.Size(131, 23); + this.numericUpDownWeight.Size = new System.Drawing.Size(150, 27); this.numericUpDownWeight.TabIndex = 2; this.numericUpDownWeight.Value = new decimal(new int[] { 100, @@ -264,28 +248,27 @@ // labelWeight // this.labelWeight.AutoSize = true; - this.labelWeight.Location = new System.Drawing.Point(5, 64); + this.labelWeight.Location = new System.Drawing.Point(6, 85); this.labelWeight.Name = "labelWeight"; - this.labelWeight.Size = new System.Drawing.Size(29, 15); + this.labelWeight.Size = new System.Drawing.Size(36, 20); this.labelWeight.TabIndex = 1; this.labelWeight.Text = "Вес:"; // // labelSpeed // this.labelSpeed.AutoSize = true; - this.labelSpeed.Location = new System.Drawing.Point(5, 24); + this.labelSpeed.Location = new System.Drawing.Point(6, 32); this.labelSpeed.Name = "labelSpeed"; - this.labelSpeed.Size = new System.Drawing.Size(62, 15); + this.labelSpeed.Size = new System.Drawing.Size(76, 20); this.labelSpeed.TabIndex = 0; this.labelSpeed.Text = "Скорость:"; // // pictureBoxObject // this.pictureBoxObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pictureBoxObject.Location = new System.Drawing.Point(31, 63); - this.pictureBoxObject.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.pictureBoxObject.Location = new System.Drawing.Point(35, 84); this.pictureBoxObject.Name = "pictureBoxObject"; - this.pictureBoxObject.Size = new System.Drawing.Size(286, 154); + this.pictureBoxObject.Size = new System.Drawing.Size(327, 205); this.pictureBoxObject.TabIndex = 1; this.pictureBoxObject.TabStop = false; // @@ -295,10 +278,9 @@ this.panelObject.Controls.Add(this.labelAdditionalColor); this.panelObject.Controls.Add(this.labelMainColor); this.panelObject.Controls.Add(this.pictureBoxObject); - this.panelObject.Location = new System.Drawing.Point(536, 22); - this.panelObject.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.panelObject.Location = new System.Drawing.Point(613, 29); this.panelObject.Name = "panelObject"; - this.panelObject.Size = new System.Drawing.Size(351, 226); + this.panelObject.Size = new System.Drawing.Size(401, 301); this.panelObject.TabIndex = 2; this.panelObject.DragDrop += new System.Windows.Forms.DragEventHandler(this.PanelObject_DragDrop); this.panelObject.DragEnter += new System.Windows.Forms.DragEventHandler(this.PanelObject_DragEnter); @@ -307,9 +289,9 @@ // this.labelAdditionalColor.AllowDrop = true; this.labelAdditionalColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelAdditionalColor.Location = new System.Drawing.Point(204, 14); + this.labelAdditionalColor.Location = new System.Drawing.Point(233, 19); this.labelAdditionalColor.Name = "labelAdditionalColor"; - this.labelAdditionalColor.Size = new System.Drawing.Size(79, 38); + this.labelAdditionalColor.Size = new System.Drawing.Size(90, 50); this.labelAdditionalColor.TabIndex = 3; this.labelAdditionalColor.Text = "Доп. цвет"; this.labelAdditionalColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -320,9 +302,9 @@ // this.labelMainColor.AllowDrop = true; this.labelMainColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelMainColor.Location = new System.Drawing.Point(67, 14); + this.labelMainColor.Location = new System.Drawing.Point(77, 19); this.labelMainColor.Name = "labelMainColor"; - this.labelMainColor.Size = new System.Drawing.Size(79, 38); + this.labelMainColor.Size = new System.Drawing.Size(90, 50); this.labelMainColor.TabIndex = 2; this.labelMainColor.Text = "Цвет"; this.labelMainColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -331,10 +313,9 @@ // // buttonAdd // - this.buttonAdd.Location = new System.Drawing.Point(603, 253); - this.buttonAdd.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.buttonAdd.Location = new System.Drawing.Point(689, 337); this.buttonAdd.Name = "buttonAdd"; - this.buttonAdd.Size = new System.Drawing.Size(82, 22); + this.buttonAdd.Size = new System.Drawing.Size(94, 29); this.buttonAdd.TabIndex = 3; this.buttonAdd.Text = "Добавить"; this.buttonAdd.UseVisualStyleBackColor = true; @@ -342,24 +323,22 @@ // // buttonCancel // - this.buttonCancel.Location = new System.Drawing.Point(740, 254); - this.buttonCancel.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.buttonCancel.Location = new System.Drawing.Point(846, 339); this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(82, 22); + this.buttonCancel.Size = new System.Drawing.Size(94, 29); this.buttonCancel.TabIndex = 4; this.buttonCancel.Text = "Отмена"; this.buttonCancel.UseVisualStyleBackColor = true; // // FormBusConfig // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(903, 287); + this.ClientSize = new System.Drawing.Size(1032, 383); this.Controls.Add(this.buttonCancel); this.Controls.Add(this.buttonAdd); this.Controls.Add(this.panelObject); this.Controls.Add(this.groupBoxConfig); - this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.Name = "FormBusConfig"; this.Text = "FormBusConfig"; this.groupBoxConfig.ResumeLayout(false); diff --git a/DoubleDeckerBus/FormBusConfig.cs b/DoubleDeckerBus/FormBusConfig.cs index d1ed09d..21faed7 100644 --- a/DoubleDeckerBus/FormBusConfig.cs +++ b/DoubleDeckerBus/FormBusConfig.cs @@ -14,7 +14,6 @@ namespace DoubleDeckerbus { public partial class FormBusConfig : Form { - DrawingBus? _bus = null; private event Action? EventAddBus; public FormBusConfig() @@ -49,13 +48,11 @@ namespace DoubleDeckerbus EventAddBus += ev; } } - private void LabelObject_MouseDown(object sender, MouseEventArgs e) { (sender as Label)?.DoDragDrop((sender as Label)?.Name, DragDropEffects.Move | DragDropEffects.Copy); } - private void PanelObject_DragEnter(object sender, DragEventArgs e) { if (e.Data?.GetDataPresent(DataFormats.Text) ?? false) @@ -90,7 +87,6 @@ namespace DoubleDeckerbus } DrawBus(); } - private void PanelColor_MouseDown(object sender, MouseEventArgs e) { (sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor, @@ -108,14 +104,12 @@ namespace DoubleDeckerbus e.Effect = DragDropEffects.None; } } - private void LabelMainColor_DragDrop(object sender, DragEventArgs e) { var color = (Color)e.Data.GetData(typeof(Color)); _bus.EntityBus.ChangeBodyColor(color); DrawBus(); } - private void LabelAdditionalColor_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(Color)) && _bus != null && _bus is DrawingDoubleDeckerbus) @@ -135,9 +129,11 @@ namespace DoubleDeckerbus _doubledeckerbus.ChangeAdditionalColor(color); DrawBus(); } - private void ButtonAdd_Click(object sender, EventArgs e) { + if (_bus == null) + return; + EventAddBus?.Invoke(_bus); Close(); } diff --git a/DoubleDeckerBus/FormBusConfig.resx b/DoubleDeckerBus/FormBusConfig.resx index af32865..f298a7b 100644 --- a/DoubleDeckerBus/FormBusConfig.resx +++ b/DoubleDeckerBus/FormBusConfig.resx @@ -1,64 +1,4 @@ - - - + diff --git a/DoubleDeckerBus/FormDoubleDeckerbusCollection.cs b/DoubleDeckerBus/FormDoubleDeckerbusCollection.cs index 2b22de3..ed2b001 100644 --- a/DoubleDeckerBus/FormDoubleDeckerbusCollection.cs +++ b/DoubleDeckerBus/FormDoubleDeckerbusCollection.cs @@ -10,6 +10,9 @@ using System.Windows.Forms; using DoubleDeckerbus.Generic; using DoubleDeckerbus.Drawing; using DoubleDeckerbus.Move_Strategy; +using Microsoft.Extensions.Logging; +using DoubleDeckerbus.Exceptions; + namespace DoubleDeckerbus @@ -17,11 +20,12 @@ namespace DoubleDeckerbus public partial class FormDoubleDeckerbusCollection : Form { private readonly BusesGenericStorage _storage; - - public FormDoubleDeckerbusCollection() + private readonly ILogger _logger; + public FormDoubleDeckerbusCollection(ILogger logger) { InitializeComponent(); _storage = new BusesGenericStorage(pictureBoxCollection.Width, pictureBoxCollection.Height); + _logger = logger; } private void ReloadObjects() { @@ -50,6 +54,7 @@ namespace DoubleDeckerbus } _storage.AddSet(textBoxStorageName.Text); ReloadObjects(); + _logger.LogInformation($"Добавлен набор: {textBoxStorageName.Text}"); } private void listBoxObjects_SelectedIndexChanged(object sender, EventArgs e) { @@ -61,13 +66,16 @@ namespace DoubleDeckerbus { return; } + string name = listBoxStorages.SelectedItem.ToString() ?? string.Empty; if (MessageBox.Show($"Удалить объект {listBoxStorages.SelectedItem}?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { - _storage.DelSet(listBoxStorages.SelectedItem.ToString() ?? string.Empty); + _storage.DelSet(name); ReloadObjects(); + _logger.LogInformation($"Удалён набор: {name}"); } } + private void buttonAddBus_Click(object sender, EventArgs e) { @@ -88,16 +96,25 @@ namespace DoubleDeckerbus { return; } - selectedBus.ChangeBordersPicture(pictureBoxCollection.Width, pictureBoxCollection.Height); - if (obj + selectedBus != -1) - { - MessageBox.Show("Объект добавлен"); - pictureBoxCollection.Image = obj.ShowBus(); - } - else - { - MessageBox.Show("Не удалось добавить объект"); - } + selectedBus.ChangeBordersPicture(Width, Height); + try + { + if (obj + selectedBus != -1) + { + MessageBox.Show("Объект добавлен"); + pictureBoxCollection.Image = obj.ShowBus(); + _logger.LogInformation($"Добавлен объект: {selectedBus.EntityBus.BodyColor}"); + } + else + { + MessageBox.Show("Не удалось добавить объект"); + } + } + catch (StorageOverflowException ex) + { + MessageBox.Show(ex.Message); + _logger.LogWarning(ex.Message); + } } private void buttonDeleteBus_Click(object sender, EventArgs e) @@ -115,24 +132,29 @@ namespace DoubleDeckerbus { return; } - int pos = 0; try { - pos = Convert.ToInt32(maskedTextBoxNumber.Text); + int pos = Convert.ToInt32(maskedTextBoxNumber.Text); + if (obj - pos) + { + MessageBox.Show("Объект удален"); + pictureBoxCollection.Image = obj.ShowBus(); + _logger.LogInformation($"Удалён объект по позиции : {pos}"); + } + else + { + MessageBox.Show("Не удалось удалить объект"); + } } - catch + catch (FormatException ex) { - MessageBox.Show("Не все данные заполнены", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; + MessageBox.Show("Неверный формат ввода"); + _logger.LogWarning("Неверный формат ввода"); } - if (obj - pos) + catch (Exception ex) { - MessageBox.Show("Объект удален"); - pictureBoxCollection.Image = obj.ShowBus(); - } - else - { - MessageBox.Show("Не удалось удалить объект"); + MessageBox.Show(ex.Message); + _logger.LogWarning(ex.Message); } } private void buttonUpdate_Click(object sender, EventArgs e) @@ -149,17 +171,21 @@ namespace DoubleDeckerbus } pictureBoxCollection.Image = obj.ShowBus(); } + private void SaveToolStripMenuItem_Click(object sender, EventArgs e) { if (saveFileDialog.ShowDialog() == DialogResult.OK) { - if (_storage.SaveData(saveFileDialog.FileName)) + try { + _storage.SaveData(saveFileDialog.FileName); MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + _logger.LogInformation($"Файл сохранён по пути: {saveFileDialog.FileName}"); } - else + catch (InvalidOperationException ex) { - MessageBox.Show("Не сохранилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + _logger.LogWarning(ex.Message); } } } @@ -167,18 +193,19 @@ namespace DoubleDeckerbus { if (openFileDialog.ShowDialog() == DialogResult.OK) { - if (_storage.LoadData(openFileDialog.FileName)) + try { - ReloadObjects(); - var obj = _storage[listBoxStorages.SelectedItem.ToString() ?? string.Empty]; - pictureBoxCollection.Image = obj.ShowBus(); + _storage.LoadData(openFileDialog.FileName); MessageBox.Show("Загрузка прошла успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + _logger.LogInformation($"Файл загружен по пути: {openFileDialog.FileName}"); } - else + catch (Exception ex) { - MessageBox.Show("Не загрузилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + _logger.LogWarning(ex.Message); } } + ReloadObjects(); } } } diff --git a/DoubleDeckerBus/Generic/BusGenericCollection.cs b/DoubleDeckerBus/Generic/BusGenericCollection.cs index ca4eef3..1cde817 100644 --- a/DoubleDeckerBus/Generic/BusGenericCollection.cs +++ b/DoubleDeckerBus/Generic/BusGenericCollection.cs @@ -17,7 +17,6 @@ namespace DoubleDeckerbus.Generic private readonly int _placeSizeWidth = 200; private readonly int _placeSizeHeight = 120; private readonly SetGeneric _collection; - public BusGenericCollection(int picWidth, int picHeight) { int width = picWidth / _placeSizeWidth; @@ -43,13 +42,11 @@ namespace DoubleDeckerbus.Generic } return collect?._collection.Remove(pos) ?? false; } - public IEnumerable GetBus => _collection.GetBus(); public U? GetU(int pos) { return (U?)_collection[pos]?.GetMoveableObject; } - public Bitmap ShowBus() { Bitmap bmp = new(_pictureWidth, _pictureHeight); @@ -58,7 +55,6 @@ namespace DoubleDeckerbus.Generic DrawObjects(gr); return bmp; } - private void DrawBackground(Graphics gr) { Pen pen = new(Color.Black, 3); @@ -71,12 +67,10 @@ namespace DoubleDeckerbus.Generic } } } - private void DrawObjects(Graphics g) { int x = _pictureWidth / _placeSizeWidth - 1; int y = 0; - foreach (var bus in _collection.GetBus()) { if (bus != null) diff --git a/DoubleDeckerBus/Generic/BusesGenericStorage.cs b/DoubleDeckerBus/Generic/BusesGenericStorage.cs index 9b542a2..4b2deeb 100644 --- a/DoubleDeckerBus/Generic/BusesGenericStorage.cs +++ b/DoubleDeckerBus/Generic/BusesGenericStorage.cs @@ -24,20 +24,17 @@ namespace DoubleDeckerbus.Generic _pictureWidth = pictureWidth; _pictureHeight = pictureHeight; } - public void AddSet(string name) { foreach (string nameStorage in Keys) { if (nameStorage == name) { - MessageBox.Show("Набор с заданным именем уже есть", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } _busStorages.Add(name, new BusGenericCollection(_pictureWidth, _pictureHeight)); } - public void DelSet(string name) { if (_busStorages.ContainsKey(name)) @@ -57,69 +54,86 @@ namespace DoubleDeckerbus.Generic return null; } } - - public bool SaveData(string filename) + public void SaveData(string filename) { if (File.Exists(filename)) { File.Delete(filename); } - - using (StreamWriter sw = File.CreateText(filename)) + StringBuilder data = new(); + foreach (KeyValuePair> record in _busStorages) { - sw.WriteLine($"DoubleDeckerBusStorage"); - foreach (var record in _busStorages) + StringBuilder records = new(); + foreach (DrawingBus? elem in record.Value.GetBus) { - StringBuilder records = new(); - foreach (DrawingBus? elem in record.Value.GetBus) - { - records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}"); - } - sw.WriteLine($"{record.Key}{_separatorForKeyValue}{records}"); + records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}"); } + data.AppendLine($"{record.Key}{_separatorForKeyValue}{records}"); } - - return true; + if (data.Length == 0) + { + throw new Exception("Невалиданя операция, нет данных для сохранения"); + } + using FileStream fs = new(filename, FileMode.Create); + byte[] info = new + UTF8Encoding(true).GetBytes($"BusStorage{Environment.NewLine}{data}"); + fs.Write(info, 0, info.Length); + return; } - - public bool LoadData(string filename) + public void LoadData(string filename) { if (!File.Exists(filename)) { - return false; + throw new Exception("Файл не найден"); } - - using (StreamReader sr = File.OpenText(filename)) + string bufferTextFromFile = ""; + using (FileStream fs = new(filename, FileMode.Open)) { - string? curLine = sr.ReadLine(); - if (curLine == null || !curLine.Contains("AirbusStorage")) + byte[] b = new byte[fs.Length]; + UTF8Encoding temp = new(true); + while (fs.Read(b, 0, b.Length) > 0) { - return false; + bufferTextFromFile += temp.GetString(b); } - _busStorages.Clear(); - curLine = sr.ReadLine(); - while (curLine != null) + } + var strs = bufferTextFromFile.Split(new char[] { '\n', '\r' }, + StringSplitOptions.RemoveEmptyEntries); + if (strs == null || strs.Length == 0) + { + throw new Exception("Нет данных для загрузки"); + } + if (!strs[0].StartsWith("BusStorage")) + { + throw new Exception("Неверный формат данных"); + } + _busStorages.Clear(); + foreach (string data in strs) + { + string[] record = data.Split(_separatorForKeyValue, + StringSplitOptions.RemoveEmptyEntries); + if (record.Length != 2) { - string[] record = curLine.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries); - BusGenericCollection collection = new(_pictureWidth, _pictureHeight); - string[] set = record[1].Split(_separatorRecords, StringSplitOptions.RemoveEmptyEntries); - - foreach (string elem in set) + continue; + } + BusGenericCollection + collection = new(_pictureWidth, _pictureHeight); + string[] set = record[1].Split(_separatorRecords, + StringSplitOptions.RemoveEmptyEntries); + foreach (string elem in set) + { + DrawingBus? Bus = + elem?.CreateDrawingBus(_separatorForObject, _pictureWidth, _pictureHeight); + if (Bus != null) { - DrawingBus? Bus = elem?.CreateDrawingBus(_separatorForObject, _pictureWidth, _pictureHeight); - if (Bus != null) + if ((collection + Bus) == -1) { - if (collection + Bus == -1) - { - return false; - } + throw new Exception("Ошибка добавления в коллекцию"); } } - _busStorages.Add(record[0], collection); - curLine = sr.ReadLine(); } + _busStorages.Add(record[0], collection); } - return true; } } } diff --git a/DoubleDeckerBus/Generic/SetGeneric.cs b/DoubleDeckerBus/Generic/SetGeneric.cs index 9823d3a..79ee0ba 100644 --- a/DoubleDeckerBus/Generic/SetGeneric.cs +++ b/DoubleDeckerBus/Generic/SetGeneric.cs @@ -1,4 +1,5 @@ -using System; +using DoubleDeckerbus.Exceptions; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -17,30 +18,30 @@ namespace DoubleDeckerbus.Generic _maxCount = count; _places = new List(count); } - public int Insert(T bus) { - _places.Insert(0, bus); - return 0; + return Insert(bus, 0); } - - public bool Insert(T bus, int position) + public int Insert(T bus, int position) { - if (position < 0 || position >= Count || Count >= _maxCount) + if (Count >= _maxCount) { - return false; + throw new StorageOverflowException(_maxCount); + } + if (position < 0 || position >= _maxCount) + { + throw new IndexOutOfRangeException("Индекс вне границ коллекции"); } _places.Insert(position, bus); - return true; + return 0; } public bool Remove(int position) { if (position < 0 || position >= Count) { - return false; + throw new BusNotFoundException(position); } _places.RemoveAt(position); - return true; } public T? this[int position] @@ -74,4 +75,4 @@ namespace DoubleDeckerbus.Generic } } } -} +} \ No newline at end of file diff --git a/DoubleDeckerBus/Move_Strategy/AbstractStrategy.cs b/DoubleDeckerBus/Move_Strategy/AbstractStrategy.cs index 1a739b1..2cc7507 100644 --- a/DoubleDeckerBus/Move_Strategy/AbstractStrategy.cs +++ b/DoubleDeckerBus/Move_Strategy/AbstractStrategy.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using DoubleDeckerbus.Entities; using static System.Windows.Forms.VisualStyles.VisualStyleElement; - namespace DoubleDeckerbus.Move_Strategy { public abstract class AbstractStrategy @@ -70,5 +69,4 @@ namespace DoubleDeckerbus.Move_Strategy return false; } } -} - +} \ No newline at end of file diff --git a/DoubleDeckerBus/Move_Strategy/DrawingObjectBus.cs b/DoubleDeckerBus/Move_Strategy/DrawingObjectBus.cs index 99528c0..067f6c9 100644 --- a/DoubleDeckerBus/Move_Strategy/DrawingObjectBus.cs +++ b/DoubleDeckerBus/Move_Strategy/DrawingObjectBus.cs @@ -8,7 +8,6 @@ using System.Threading.Tasks; using DoubleDeckerbus.Entities; using DoubleDeckerbus.Drawing; - namespace DoubleDeckerbus.Move_Strategy { public class DrawingObjectBus : IMoveableObject diff --git a/DoubleDeckerBus/Move_Strategy/MoveToBorder.cs b/DoubleDeckerBus/Move_Strategy/MoveToBorder.cs index a519580..51fdcd9 100644 --- a/DoubleDeckerBus/Move_Strategy/MoveToBorder.cs +++ b/DoubleDeckerBus/Move_Strategy/MoveToBorder.cs @@ -38,7 +38,6 @@ namespace DoubleDeckerbus.Move_Strategy { MoveRight(); } - } var diffY = objParams.ObjectMiddleVertical - FieldHeight; if (Math.Abs(diffY) > GetStep()) diff --git a/DoubleDeckerBus/Move_Strategy/MoveToCenter.cs b/DoubleDeckerBus/Move_Strategy/MoveToCenter.cs index b3b0363..482a12d 100644 --- a/DoubleDeckerBus/Move_Strategy/MoveToCenter.cs +++ b/DoubleDeckerBus/Move_Strategy/MoveToCenter.cs @@ -38,7 +38,6 @@ namespace DoubleDeckerbus.Move_Strategy { MoveRight(); } - } var diffY = objParams.ObjectMiddleVertical - FieldHeight / 2; if (Math.Abs(diffY) > GetStep()) diff --git a/DoubleDeckerBus/Program.cs b/DoubleDeckerBus/Program.cs index 598623f..ec6b9b4 100644 --- a/DoubleDeckerBus/Program.cs +++ b/DoubleDeckerBus/Program.cs @@ -1,3 +1,8 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Serilog; + namespace DoubleDeckerbus { internal static class Program @@ -11,7 +16,30 @@ namespace DoubleDeckerbus // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new FormDoubleDeckerbusCollection()); + var services = new ServiceCollection(); + ConfigureServices(services); + using (ServiceProvider serviceProvider = services.BuildServiceProvider()) + { + Application.Run(serviceProvider.GetRequiredService()); + } + } + + private static void ConfigureServices(ServiceCollection services) + { + services.AddSingleton().AddLogging(option => + { + string[] path = Directory.GetCurrentDirectory().Split('\\'); + string pathNeed = ""; + for (int i = 0; i < path.Length - 3; i++) + { + pathNeed += path[i] + "\\"; + } + var configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile(path: $"{pathNeed}serilog.json", optional: false, reloadOnChange: true).Build(); + var logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger(); + + option.SetMinimumLevel(LogLevel.Information); + option.AddSerilog(logger); + }); } } } \ No newline at end of file diff --git a/DoubleDeckerBus/Resources/стрелка вверх.png b/DoubleDeckerBus/Resources/стрелка вверх.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec821527befbf75551bf60c44baf2f162a7c66b GIT binary patch literal 38756 zcmeIac{G*l`#=74I@S9$o<>sA$!VgpWy%!2Gc=ne!Y)LF%ADBy9Op86rdGaqr)C-CO5$KI^-_fBn|?yViGUt>dtt=eeKjzV6pGz3%JYm(`D` zE}G9bpQ5Nm`}ZknQq+Io*Z)xenG63*j;f@=|7O`~s{WUH_JDoUhM(r`RJ!!Unzx4@oGflG- zrY`4Rn#obr>}#jB_3ZTyACfV#wcc?8@7dvOeHNakC^-e^vnNcf%KlBXX`UI zb~4WL8_2ja@H>7ivSB^B#okJO16L@$!|Lnz+MYLCFR?>%yNRgSuJuyVJ47Xi8!A)DW{7e)3275aGfA=SJ59}`wu_3INpIgJ1?t=-B}p?g72A2@#0j%+qkcacyl00g zj3l*FdZ(DQxWrCnX$etLW$9fiN|Jk(C8S07?op;m?Unxa?0y?N`x7=MW+(|hd-|Ve z#s9a@%IrOFcEaBFytb|FnQxd-|0e$Wy?YS@QtP)IJ#AxZ>tweT7mcd}CA0IV9nDNt z&f8kACt8;|{lAdmgsG{dl-N$w?V=}WV%sI8#7(wKo0*twH<6N(Fr!I|no8|5*)aV) z=@8J`@i}^cq z{q~>lZN8^CfBnL2r+v&{ueuJ`xpHiFBu4rK1{%DsYaclF>c*5D!`JH8^U|y`w`Tpi z&BW{}is`4T#`t0S5B`$rUnoi_Z{}Cjz>FTaIGEAHj2>o;fs26|JwinHAFNBA!03xS~Cr zqh#dN*l}BSv*j9_Q6($^>VwyiA>0!ZFAj-Z;s__`EiK)DUGS!e8fO3Hueop7azsI1 z|I*rPZ;S(Ljn>rVOx*twuBM2o;lqkS!nQfm!I6bZV|@iNV+Ml$vXUx?LW7Bjeq;bv zNJ3T{Cp1Lm5q*zP*o*Nl)w18mG+Zk~G(l7#k5%N`4`6I0F{Grhh^b#V9r z<_Z>4C@EEbzu$N=f};=@drLtfd3NqCGQN!*jzAe&wAxN3W{opims4?ZUoTZg;)OoG{cRyyk1tq?T+k3-wcV%Q%IG>DTxRh*le8pb|1p)c0za#Z zqq&+-ozIzSJy7}NVhJ}e9qI5BUUbi)=ogJU?iUVNJ$y3w#=>oC4fi#9%kgsgM(=?# z|F((r&WSCWk8gGkS(NOO>g;v16@rV*7E`>3GGt|SJ+#O%(GFZ9cQyDo4cAuT$VX@Q zR2dB?SK;-7=VUB(hhwYip6#FQ4zjqE$p>^NnKWN&7J(a>EvN84YGsfcdx1tt@QpWl z!VlE^YesT{P${(IT&1kM8SZ=%6d5J%RdZ}JUy#wVAz!H@xURG+?y^J_TP6B7`AYif zrEQb&h#MZSRW18#&QcNQJ!H;zKmCNSiHWbaGvG(^Yz8Efm@!}p)&jnA|hED2qnx=88}5n}~cjQ@Jq zJ&t_(Jaa?xHi?4BVKvSQ`GGc-_;e#8MSdGs3a|d(=4~(->*3Gs(b_KKc?tJz{i+ z_cz0Rit~hC%ZUXGG|Jo`))J5q;(L5bWpMBw!jE^M4g92-i*=jMA2e;S4%c)QYAf^q zk|**2O=00GDZH#0rT=I{aEMI}Bd_TvKE|%?od)T>hlwS9eupx-6P&S!e%#zC0=vLakYrI%bP{iX;pxCQ1!=MMj9*DO2`yX^c+0=XZ+(M z;-`%GhI}Otpgxiwa537w?bU{mT`|GndQ$ZR4u>uKS|ms$tqCM+mhz~EXR*)8wvxcu zn5@>DMUD;f8{u*KVHaYr_1f&r<{{27Bc0df6XS)K{O~?hhn^wVWq1~MJ-pH+Y9e@Z z`@zFJdVf2=Tk~-Y2d>T6m-e?-On#DVbQsNjX_y z5S_GV-j829~Hq!u2`>!NlvRJ;&Ejp8H+863DV`Jg8Yv8DpE{BEDmn z!pUb|CnDkc?wMQ0D*kHIBpm*5zbr@Bk)jS5+t z>t2NdYK!9H*!fFTKE{g)TBZ^?gsUsV;jTQo>!$z<8?mMqj=m6afw|%6n)=MS=6bh$ zq_+3V^#&#P&X^c_!v6r_d!jks9};@qYg;&qmZ=*;VC{7gpYMO-4zNe}xbq3bxtE;U zqS|Jia)03Wlbjr+J#tNe)E*O1P|oO#NCMrHQna1tIHOVMyCnx1}wMNWIR z#_!Bm2{qyh4HuyNf=zzv*0vlFLwa41J$`uS>;ax_edA=nKS{;z%DlF=`>}Oj-6?_L8Xk2L(gKr6cNy zm$qL*R+V@C*iuy`_b-pOiXQhCe&|)hlN*StwqHV`cOJE+?X_=Po55)5faIH9Q%f{B z9jfSknVsAS5z1gkS>B@Fh9b0%rjx6eqNBDg#R@QKRc~BE?sQ!ph z1`m>*9dP(oM_;Z-;K;k>b;Ghx5>Uzm+{si2x}D-|X)8T=`H03HH^-D5&Qu^g#k#=t zYH`1Ch7tuEP80@q>=IN}`S|8wL{5bY`ZeaX*U-^6a?ly{YxwoUqe9KSn`5(E7FCFG zyuEm`)=R)`>WjE5tMj!Z5`EKRjxZ~0tgXngSrAt>dNG-cv!vPTx+Aix5XfR!m93k@ zc*itU3HGYrlUX>gO6X-M=+C>jd!vv^qeG;5)4S;GZfhdQ>r*fgMU}ChjDE1lae9RS z*U_A4XY>fndS(|Mf@x95ajqCq8cnXYkV(i+CMH3k-_YQcOQ!pHH4c%dbvku?3FoLE z6`eNO5h=*&wj~Sy+6=E!YIle3dyFS?qGX95JuF2e4E;OkhEE1+ZD=@k@qqo6@s5g$ zTM}Xs75mUC?72ZT&v>itlV6fU9gkeL(L8=mIVETGK6(4V6SN?T{pC?%gww}!8b)po zLLDl;m7Jf4{N2R~`qy%;_}2z2+e;j!??P_5G}pJQfwd~LyNsihq=W@7Y)L-dFg&$4 zfFMrBgA8w&cuPto*=^+DPvh*{s4KUD_vH0rRnrbW;|QdR;;O!W{b>!Fv-fAO^Hm7r z8FI>%B_`ZN0>9#jkT*N7iJv_XsLLJ@1xLPQH;FlG&mkYP;`O)-1koFPt|p{sUNS<=k%nV|nY45Rh_+?j4{;5^nS2?<&j zp8;vIV1r2+ndlTRs<~XE|D)fPNiRXo->ZYd&;IulXUG`iy`t;40Hdu7-lZb*>l3fS zbq5#4-*u?<4SUtD+?`-cQlON1Bu7$rI~b&57xHy6XEm>|u9Dq{d+6ckz#CHL5md(} zY!hra-M%F;clXMq;bNenCGmQ&b4R%qJ@6r zw?r#$xtvyt3_$4ft|QQAU4W$WrPf-u*stENMEq-l79T*%^5kmlMx{*0D~;p!8V6{j z`j_}uJ-=;E(!qj)qh(iLN(h4+3eh&JlYox@^3bh?i#>*+~WmR|&-anbNwv5ma$sYkPg_^zx{>E0-^ zAFXWRZlZM={c~fj74Oarcr`UuDY`~8Mhhx-eH`@C-%jLs()k%(Y{#zF56_8T3{TU( z^gG70g%Aw#Df{cj}L?Znx7l|4WLcH3dD>QbG(k)qH zK60Jrq9@ZE2}XW1hZ`xyb_+?YC?al&ZC+Wvr^Zm~!j5pB)btz)v`JbLcQzKTb?uAK zj;gg|)(-VEC>hO#PA5xKzO?_NzyD;E!r`A}v|LIh0=hGeiPDp}YtkUh8I0;^bUyy9 zzcuE!*OL8Gg@s-(uM@lc?F5m+)gVLsLZQuyR)^aAKM1`aEAtNrW^B74tcH|fA&8JiI6^ZCUA+u9lnm; zsYi2V_!jUeeZyhA4ABN{avei1xWUJ1RIOIHH$ym?->Gw=Zvss+o{LmZL#Tfuj;Czd z*kJ<(r_wb~fh7I9p=2Vwx?>fps%c#|TW3wF`1!nuzpWu4wh5QL?+cjvXrk^mo_hzmNH}`OeSaio!4h z1~OB1NfR44x=IAQxd%R$h()klmPDbth+m-poG@9+ zxWu9DO73>@>hH-!BcaIb=I&=l3MjjOxV&}N?1YOQcS+H!kS2#-$6l6u%W+XFUDI&R ze-Gr*x9-T;qTf7Dyq|sMw+ZMA_vR`DN2;j0)EdUjnyUjLc!0w@uxVh0uSvh zxbm%9{OkgCA#dQ&)G&?Dw?Nq+E;W|m z4a`{@ch0G#ESCOtBRzVhdD!X%fywo#$PA5yFV}NmG3dSsl+p^5h>N2wRaC*rPem3b z!K;TvO_1kOlsZSIV`cu_yXb}5+0iB4>!J7+m;O+pitbTSN)%s1PcRLy-|RhSf#wgM z4aIAulN(16-b|a5cr}mj731p_Hizoo2&-JgfP4Zz?N~Kk{xfyb`qSAVz3);uKT)hj z^6kC}vvTaG&1e~lH@JqQqYF9| zZ_d?eRt?}|3CeNCxV1)~Cy_y!E5o(^hnd7HjWmbzv94DY`uV;nIVh;&cL))u!_C6O z3?WZBcddZYL4Tg*QZfE!4_c5qcL=$-F9XJ2z=sAhk5ofK6uE2S3o0X;k2sP(pZ?`) zK4;#1g3CuCyN`HeaiYp-D7FgcxsnJWm(X8t73mb|i~PVM^*NZc@wJzFO$T4?--ttT zwghzBP5yX^qrT_)pFApE%^bo(#QsHWL+<{W;;JIXL_;96I0o33{4tH@lUH!60M$};8iN)_nGSnm8t?aiM}8^Zs8$%Su$XK~nU1^mLIk>fxyAF=d7b%7 z=@O@0*<0+jSIrUz;Xgx5xH9}w7CDx`MEP8kOAM9q0<*s}x>c(FgzO6~BKHhh0av-0 zbJxJ^7;?qi41>`*%LEV$_5wc@IaZON^+QHA#4wXjwti{|x+5lV4^`e;Y+!S_twR)C z;x#^2i0@=#YGe-v8akrU)K!0@tn_J?!iHZpU!B<9E@mwh4CeCS^!#u!F} z)4xz?{f6@+c+u4^f7zNmdj@_31neQm%s522FEPpD5Ss&w@+zI#1Ci$WlhIII5h+3m zKv^M(?w(J50(uhuyZONHEj@MO^b6MVF;kME%(>Wj0k?@er z9U9Zj7v?8a+{1G3EBmxzJz6NhX68+f=#jJP9>L43?=t^a|(axQ5-&F?Pe{FbT- zm@utO^DP=cbe7wY*$6!x`g3;VEorfhOo^kwLZq;#n$d5v8VPU3`m4Wr>LDkcGi&Z4 z@OKMd`;V_Oz;vGJNVKW00a=GKW|psR-k(dSR~b!pT5LQ1b81l5ujpJ;xHYqO1+ZW5 zPGuD^=<0z^jVqy^9B~`X2Jg;vJPEf^>U$vaDS;cf|0AvMd+c>{Deslnf&Vg{xG1xc zxd-#T9U&`+Dk9OL<(=J$14Lgv`TCB9O^&h>%5k>3sm~J`un#U}2N9UlZ1+mE3)AJB z03Dv%E(4_j-H!-2x^Oc(CZ{eH5VvuO56vh_#$A3=z=aHX7;V0%%_d$pM6 z54;y(gF+b+Hbe$(t)*G`AiM{;T^V8IcKRP zK(N74_7X?YfIx6cfz%dzxnxdgY`Ro%i1j+i#G-y+$@|EC{exHZ#D5Rq2rIcGMBnJO zmYtkeuK_8D29U+vYh)6O1A+GXq{@F|nPP~`U`5d;waZ1x=qYGi23zJ3a9#o3sZIx| z?wDJ$Qu_1U2#MqQ-{}Bj;p8v3EZgJ-Qr9t*g{|-7*FNKyb`u`PgUcj^MnLs+ZZpWQ z`qJ^OXmMsQ(NexCyoM_OMZbB<=2KKy@G?bn%ovib)30zrN7EyqlTkd^@@LbVxiY%v z^5;~H52qvI=tlvw$xe-sI6&$yQY7?p%N&j7ivwgD<)j=bf32TTwCS+p=o0%J zAajbVwm@Z#fq0=fQG;ZSOy3m^pbZaDp$Wj&7m-N&XCU0+k&j}s4!2J8T|cq-2;}_T z$sA{YBMnk6_m6i)I+eWjx_?k>w)!u=D&nU~eSkhdJEyNFWkO0w>#Inocbf<=K*dH4 zzmQTPd7dlTSI{#cvCcxQF3eSWa-L9P*5?PLM1m3K{tnQg6xY1;-?gFN#Q*S5torXE zm)Z)z1LjwwBy>$_X}Xt%q}J^6Ibjp;I&MozS#l=Jh!ls3Gf4TZ|L&!TF+UBBrgN&6 zREBD|we6L#r*<2rv%I8Dq?(|;^WFgD1E4dk7fgt|Jla3J*C`4U*+De)T+RfpN|Fp&Ss->BtVy~1{EF6WMYl-bh;yGe zE)`UL0Iy)`aHrH#-ms?bkIRcWv)KM8d)`^_54I99__<=NpD1Ayf`DQq3}yE!LzRa{ zmK4jK!?S*4j!ZJYjFnWsYS8FMwComJY6cN zg8M8?^AAL|cl*EbUbA#HzC+^sI>Kbow+v2I3$Ic5rC;mF{y9|KJ*YU8c~smUmtvxo zS4k4Byq_)j9d8vdm=YQ*u+D_a71!ncXYLSJSMnIIMUEh#J!Tf&p*p=uhA%3VPb2O= z%E5U>f~H4w)<_c<%SkuAE7klb3l)exMSVbxF!SG7D%-sp8G_xTJjy~mLe%Qix3J6L zdJKceq1R1hBc#n>)B)X3kD|kvlps0G z!lZuBH4zANRe{5csM*$^Dir*e%J!1vTbST$;l09jR|vCPtrJ7h)#XN>R@jYYMNd^K z5C(ud4(m)}Ha`gQC*0ijZ2wYWT|)d2bDVXJ^Tj-XGhVxO7VT|uT%z9>u?bAwnI!v} zt0-z~Breq;2W;>nYOmR+-XlIsKNjK*<=JFOYjCIZZ~80m>V^CT5g2u+rkXLhvt&us zrCYC1h7jj4x`cLToy)I~hzllfL#NRAl4xRk%HrL-ygx%yNq@4!u1%@y6$dvN6`lIw zO_25qy_Vh_EWqB!*$$!W(u+ECmM}oZB{Cb`qmNf}@m;SzmNy$KI4-};a^;Tl;0&isMbydW0F@H*VR9f6c6$-w z(Bc zA0&nM6!tYrvpct*3{j52_`SZ%KG}EX!xBl6g5ms61$y+2rHlgUS9|@*0HaJ zs_ZMqnC+``t9rG&4&_0SPx}4}q@ukcxl@4>5EZ6;7iZGKZK8nyE^NBCwf_@x9#SX)Va!MEQ}OY7@h6Ycw5#LN z*o4@%yW*rQYJNnBdjHZg(d97dZn$C;2*e5VHQ5bd#hHf7=CvqLWzk3|IMzSyE$Brz z6#5)~P#t_^bt}Umt5-`LEfCnid8tO`xsU|PjQ?UOh|q@SkVTZ-6%|3gpi=MgXbtqL zTpC+(XuBa_wuzK?e?}L0;Rz>6urAj@*V9$+w04)15Cu=A!1ZtZx1+pyR%P#IZFq2 zV@xL)l8F3a6BvThKGM~kv+VgC9$1>$n-%(tiqvF~Hen8v2*uL$t~_$3txzFg8MQF0 zet|KsFEV?*oZSfQ?tB~~+UI-5i{f27bnausxv$F8F_%6{d_lBlp@4sz{@#t;)1N_|X#uEMzUhF=dx1B8UFc+)@v&=7utkk1X68`#>A+@h;Cxm?WPBUqc-Pgv5fJU* zvvI)PEw^J;&0qb{>%^}^+|l=~Y!4SG9kHz*(STfb^l^Pi(+c?oZL0CPgjnYC)68GA znjDToV;Q9SOxRa-HZgVWxq&n8Bt(j*3Q}I0fk2DRr+`>4CvD? zW9QeIAVZjpt`1h6Zo_ssh@32`Vm-|3l5uMzu=e=%`OqojEBDz+^kj%N#sg=rJT{?zG7#HT{L7kAsD={6rlXNkYQy>2KW4Y%Lkza;)<;T<{uGo9j>I23Ik z7P9?KuDD*#JIQL~rR1=Ex4f2x)SAvp$U1G_`k(dQWK)fC0#=J!NH{OXvKzd$C1@LLmC>Tn>tUHuc^DlE9Y={zSScLw^z$i=l5kir z`j#rAiF(4a@MLcRC#;xGV4S3ztk&DrCqQ}baVg}ls5h(4S(4ifV#?*?AbKXS#4EY` z2ehhwEj8cCz5<*|2HDbJN@(uTUjaGLXFNN>s{+MtTZ!LzLvt879F_smcw7Qd&cNxe zX@&juxfJh_RHosn~nL4zIR}re=a~3*mozK2`{EDslI+CVDLV`1o7h zMnDh?)l|k*ZO3i5W6v_Wu+r>UMGW$9W|!)qS|gML+hG+0^;VP zB?@xMZo5O50oQ9O;(ClEU0esq@+RSC^VYVK%g`00WO~dJSgh#WUbhNxrOlU)?wLig zVkc9UK(UwDpFdA9gjNADOIsbId=l_jD?aM?~ zcc8y2@p(gN6Em|6yuyRESM)M60Jf-zEA&_VhapcfAJRU26z~s-y0eyB>PG*7_h1um zwgi`fVD7jEIs2ze0=S)}z7nH1)25~Ys18Yg$d>{8_P&t(*_~3I>bAw5`)Q)va9e|u z0$5{tLU3u(rX$|aR0=UqF$&!lbH|Nu+!s~uTfD}`YdY@A5QwuD+&F5q8q<8|$*-`C zjb}b3x~~>=eESOo9F`VBTru6{Q$Pnlkh^Pe`?P$h#z2I-shhPCU$dEj)c$(1&zZtd zD7Y!LGz`6Jm${)=aq~_h#+&gTCqadwDnJ_>HxZM|_^%?gE)!@OMm*_=u&^1+!EPAX zf#Y-O-!J;%dN>xE9lzqDm(RiWj5b*nWtV0*uq`jghi9pKmVI%BdYTe$_VGZq-rY;|-5a9~eMonck-^tbkAis1g+ z7RbLKM=gOLl+cz2yF?^9H&Vbdm)u&K(0g$+>YU4!3vE*P;8nCcRSn$0Z2B`Vi{lqH zs+z}MYvTY#WPp1>R0fCGF0D8N=8ZHnIzY%m7fE6h&otK!?CzjCm))i2Dia^*5(G=Y zbTq|5bku>NX^<>#Kse>)y;75x=nrRO3lFOiy^7+TlpL3{E86cs3Y7Q$<>JwcD;DtJ z?nBD;>2SdxeQUQo@&kVebkAb`qB(Ji;T0yl!(WdvMJAgEvQXvu#SJ!Hx#P`XD6~LS z;F(@E4ng8`EuHKS92okTr*u)sum< z;PzwlLlb&KtLnPjASCTrj$APGu*d6x%~JGT1i_cKCT0jFXAeVWO?SQljl7O|?daw` zwYbGH({Ti7FIm_kmwI<~K9m}?{=n-d&o=LdA_JIg67&ead)gcpRMEh)JL_OzdNZ0S zZ7sSR)?RGLKvE2L|FU7DeJ$*6xGAKhfDfb=N{~rX&!6+Cc9Fj2@-XjLJFe6m&B0!M zTGe#Tn{pQdX(TX~QxI-avh}y~RhIdU>lz@P#4AK>00>?*5;nRX8RhO)5&su|&Czgu zE==At2dgW^HCAq)*Q1z)|Hj>367uS`-HW$Yj5mz{z&o}*_gP&r{@MwCr#yehK*d^g zL+ahn$aF(f1i)FQ9CN?Xi0Isb&=|Nr_c~Y-P&D6jU(l_VTAL$@y)D)ri-;tvh$JB| zhwB?)$)VQzXwco8!1q_PS{~h$W zoH*~P1dk>vVPS}Vt5>*xMq7(+`H=nS63RZ|d__djZYM>6cAg@E_KB-N zIYSF4Or9m%dP!j2ST6%N-;&aZ412dJ^gJm_Yuo{TqDQxZ?m=R1Z8mzmyx^TMJo6WA zXuun^k=ubSjk77msnA{@OqZbP7FLic(Sq{w3VrMTnneM{ToZ5MHe`h)2PaB6dnw*S<;1$)a zh)!Np?2I4CHc&~?2M7KBb9~k;mgv+MNVzh>*5h8ORltk9id}ns&%7}Ogi>+Qw?qZ? zFReo}NaE5?9vfjtHD^Q>c0&Mf^cz0BOMMUS@EhM0g2bsFHz@9T1MOds0#h|g5OrM+ z1RlJ}y^3Pc{sVAwaM%uxcZ+SVynf~vGQ1GlDV=#ks)@G_IWN#&F@rOKnFP4I_jS`d zEqVsu(_S#f=g*g4e0deY9!|%=?kq#1@~pt_)O1wDZ&kqC!$u}-^^vPY0LA`DKkvy~ zCIELjE3np(r!Hz3J4c*l2)1XbLo=ngRAW3x3P8fUR*>O#$mgvMaGOYfgOt=Xv+I8u zHpKw`&?jP>-Eo_tT*Yn?K%$+?Qs>ogc~z9w(A1(p<*7sCGIUZsb%57|k>0cTKcU%c z<@00aI90kZ&vtKa*8lBcKA}@3UTyOfsz_4Fyu0%|mzQ)6tsI!$?-?-4QxnWPf*hC` z$v}9M*;H3UZzHtNgECHNBbgBxgDp{T8NHs~Vd3UG+uKTD`pgzhsIC(d-M53j$rff3 zA2xbH(=p(X_Qf*Q;*OYnXD@>RkYc%_uJ zhIsJD&ATS&Q5Jh4`Ber|kX!0@9Kq#Cnh#~HZ$E>L;kEuSG`XcLmd6ms?c!#dSB$qT ziA?2~LquR%`~C}W8COsdavtCHdI1k%o(lGdna8xdYb0HVed6QI*Ftx_gym42x0N7| z9M`euK}Gyc=(;(<^g33IZH-cLf3_56t~f&cKvX$!ph~di0w0y1PA+rbQLKCg5X9`6 zK2XL|J6C_YVsdmde8|$OW`7lkZ0~nj+Lag%Wq-6JCX?8)o3Rx-x1d;K9?>;&G9>%M zaG7*)jXnm(>&)aITLj#9LFQ(k0T|t&F#HyP$EqjZWBy-KAKW zQ`*-t=&;n>2P@F>VlBt|G1u(q#%&dC5*DCi7fy(&bt7M*qrL4oZ{4hLWRzpcfh7A> z(*3e-ITUwLrZa`sj7?~rd{(G{VN{zax-qU-wWX~_;0ktcfo7_!CEu;sI1UrRab;3vjywuOYbR;x#{4fuoaK-c~i?xAkz zd{1~$Wf4)EFF=V~pUbvF8SGG>>ib)#MpUtJAG!iz?n#!GoKb(=>za5tmybOv#6&VQA48<}fpafb zSG*fH0pR87qqjRoQ?Rskw?iqii6&OJmP)B2Cjj6@DI7a(8Lr}|j8|1u;z>d-P0ixd zjrTf(Ekh8YqffT{RRk$3s=NukfAk-Jb6ylQr9q+#kph#BdUCj?!+A`^eQDhe(q1z= zF)e>CH?Ma!v;-+gGj@5!_oNr)5tH-z0a9br2m&@tuI@xB z1V7=?2X2o*$|VR^k*N(mxP*PACbUk>8m{kXwD{;n$N;L_?9d zf@&j~J&uP$qO-?J$$Ll!Reul~a4BkDcWC#*^Isr^ka=s_lfT0)y$_9*_61H%Tsg^}L}loE-xiDH zZgK$uj&`;%Zt`fZ_nD|roV<5zbp&ikMB6?!12dz)M>C_Hfv6J!%^OoBgRibO`sz)p zO0M6dkrwQ{Bs4p zaanlJW5KI$JgIpACToW0WO}t)wgPJ5Ld2e@HZ~w!Y@Q$+7Z4|7ve`oww;&CI zsDLhD7@ct5)vdibvZTKhP&x#BsBeu;CT^3@E`ULpcLQLl?yNvo3^KF~1NZ)y0i1RQ z`W~w?yy2G$?20M51Jxsyq?yJskA#f@P#^4GanG5|Rd#=~AA0Yx@vpCz>-?U#F6~MP z0zB!7p*_;o3GR-_;(I5Jrxe6`2R`E%r9`RDa0m=`ny}juX4j|PZ#*SL+FKyiBVFLU z;&2vJP=P%P&oIqX{tdrs(w`4fjJBY6r8{ghScN$!bWy|I)d=A{rZCW5u!WA(ijRf$ zFUmPf2hAptgHd@*A%TlDg789qKscp)^ka%vB>NF=F;HAT^m%(aau!(1ikp0g{vJbu#vyMe>P;4{i9>bpKKK*>JbR3jOH znFwY8a-=^4XkE7vXv>Cuo#?Fgu%fi)yRfBteiqeNf_@%oUC}}%_bLsrF3RIR7IAJP znP_TSgcY{B2P@pcpS~a4Ai=bFwY%b%lPcrMIaKLpOabUa^8NepY#*ExLHT&+r`G1~ z=EH>OPZ8{uo%|DVtS1jg!Te-l+YItwbvUG*0;D|5pG$`89_(^$zA{;*1@=aH>Ld2x zdjeox`gkxGq2E}^W4NMpdovIA!oVHMYHEWeA#0}3X`?|WdH-@`qp z-QkEMy|2Slyun`}U{Lk@#uPZq>!L=`*AsorNtm6>3&k0->?v0!gK~XfgBR1t2HdS; zng@noJa77uG!v(U4%KoGOK{UZ!ca4#biO<22v0a_e}77wX+zGdhyBCq0=W#kp8;+y zc>w4RUG$I8u3MHJku~0l5O)mXj22@2gGDL#CCF+ng6$N+h6ycPw9p8QzE93;R2h*| zvgLDpejgMhxf`aB{sYY==9z$NylS-EG9>Q?HXWUpKzk=IqLa{vlK_SzI zv<`)-uc(;pQ;h&rXv3KNanQo_v|Y*V)ppD{rAY9d(r=b~+oAw@iL!!Dd@f-#{mX#t1CZfHVNLd3b@W8B@;=$#nh?VrMdv}w+Pie}wNznGdc(FpU7 zmLZoPH#OlbRt&VEONzeZP;>dkMjlnScTYefbsc<3$4ThMzyyNQskOu-V|aLDKBUsc zaFKPel{3{mjU>ezH`1H<5*i)B(3r6pcNKYrfbN2R-DO|jnjow)@{2ffu$lT48#}dq z;S=C=2P?RouFXDhN#zoFQU^Bb>pj;1*qK6@9V$v~g{`^zI#h&x9Bj8ppFYoxysQJb z92xt%k_t8`vZn@uHddsvTbSuZ%Ebks*FYD1uY^`lscX=2KSp(djw9 zeFRR=4>kq(;4`Ms7Vg;!>vRMay>w+|lqxu%gIEck0MXQE0n^pPVU)w%7Y5esG4_M* zU|6}1AGy13tl5|$mM(F7!dV5kGk?=|o$87-Z~1-tXl#lY!EO?CdkKcflp-i-TQJ%} z^AEa`MpTA^shtNin5pp zbtsOVD^!NT;Q$v6xidX+T8oDwnBqp?Z`StFaKkYghgV1vgr;F zRQp4!1Q!3~6?NlE(7Kg!S~m_-bN2jM@A#wZ*WVo{At$4R7(%3XA5|qULP{Fa#MRdHMq8w+H}IW#yz3%V^DTeufqDrPP@y7#;W>; zY%L(4%j@T}t3cl7}98Z^xqeiUBnGbihgn^z1gVo zTwz%uuv6O9bBop($H2`4D(S;u`a8|W%bU9=-^-d))GKAUOxvT<9(pu#$wk&-_)GZJ=$nI9 z&ab7R&4wOBrt)7ODcgtnwo{JPe*D&8EJ;7e_neb(s(uhG-@!_Q8OGqZb8b>(Oms`= z<=!2)Wn{v;Dcy&+qvY<_98bS**_+)kmtx+>elBKf%}90j7dR3EPQ-`(ASBkcI)=Op z2f10-_vNwGWQQ!sopxgM_JO%8XJH*^Z0nUEk#GDLNN}USuYQ8(3poX>)c7EHVim~>iPJbOFE4VSN z?+^XQLm9!x(jRVz@ht!W%#Bse&L-W??5{341fnEuCS&A{14Ghj*u?heM5O@$8nLOIIfvGiY{u^7)IW-}hWp=Y z#c@V5t*TE)0W_J08{s2opK;lq==||T1I^l~!dd?Vi-uVEG7BSm<6P^oHyu{|&Fm#r z^pEEd5fCQ6%!kkNOlTJy8Z0lq+=z{B^t*!%X*y2ht8oR7Vy`QGiLXd**4*3y1t)jj z^hNOA1=d4j0wMu8`jWwBj{Bm;dd5>~?r#ul+q^f+-K{y3{qR&xf))6N zb(axqjO~X zGx&lWTcVSvK8ab$p61!9@TSRa7+fZQh;+)1%MdeaKuK>lemPTW=zgqpoui%sAbLHj zHIf(l4<&XDCdEEPW1}|Zmn;w0vy(b*EH=@D_J}ijzjP3K>b`ja`VT|@xJLjzM;V^$ zJF61e>8EgaJjB)p6iIC=9jy$1*dpByzJfwow5I4he<9;;!N z2iOVy0xEXh$%|i~OE|Z1ERjaIZgVPk%Chuksg7%JBM4GS2wsKA=A7(|pwPECBi-M} za$AqcjX0%!Ntq!(IjJe%BS(*khUN0Pp?WG` z0E~cQ-iU8bOUS6b)3k|Ve#VrP9y{dpPQwF&Qm&h81KfX=J~XGjHr96yxF#AuF6?0a zm{s|ECu8l8YVOI~;TEs2!nvAO4;wVax@y2O6?db;w5&#h7|?JD9=^KK>8R6}7qR&) zxVs-;8zY|c!J98|^lTzz9 zdr53Ydl+%4oh7ep-n9l*e>rgpr@0CqyV@J(YFSvh^vfOx_w@=?`*0c!XeWlGMC-OXLxo`2n@ioocyd- z+jqwfG{b#1{wpxeixx|##CFxsg*$@(4L$f$If@Dx51+h86gJUpiwYZc5u4~fYL#~8 zVZCcF2(L%T_)n{SV`bTd`K9Dy-6w`Sx#$xPhey1`CI`~1Mw4IRno#~{1_S)7IfHjrsz3uU35=}3DHNA>bP}7tZV6KZ~=O^5e$FK<6J+L`i!Ze)Q|7YOE3)s zPkO?!z%w}0Qmgvi@dg-yw2bSKxvt??DyEPaQWT_nDI^`hp1;F!-L3iv&s2*Jp^h;NZ?sz9%!r$3_e6XPT1lP~pRt?6qA-`DNhx7?1ASS-?q2!S zPMt(>sCoT}^W{;wLp6MBlXAv;-4d{cBSzK=xPrV zKi1#yC^93`{~Uo>u|ut4wYA(sOB$r{%=;LrZ#H_^ZuHCTzX8L-LJz)gPAiZKs{;>o zA3K!k$9#A9{q`+KqPK=*jz$E_fAB&f_~D79Gf)#mV{OpMo`BpN0!Gelx8azlUFkI? z*TbqLK@OtW{wD*k`LaH3Awl68afKh%qWOHmpU_XE3%XxBQXP8nzz}?S0b)$?=GPlX zYx)w*(*fzHF@)-!FUTE_W?2wI6ZHbaP7E@N`Hc@dyS9LvOvOl*zULo z44J2W%jL~=OPel-X-Amkj4QM4Hv6VQtgK@s0qX-5#z1Lx_T;Cr_C7EnP(P)|SI{!q z!r(*-V2(!}y7YBpP*op)FO+h5ACPfL`qh&$xmiMPE zY5s*hdP%JD2AjD2SzU3Q9w)N4&cDVfT-=i&GyE2$l#>Jz=q)~l63+QcCD=iX)0i*3 z*GTx6J1irD(jcl4Q=l9R4V`qH-hI{a*aOS_MH*+io@CySUz4OIDegtBkwJl2a}{7v z9x?b{v$B#dTui*s29Wih?pK<&WoiDcJHYW{LmDGM}xGt*A z=1I;e_o-TVhCYG_az2z%%MKvRu18H-r|URP{-hJB(ExI+Lpcgn1SaXeO;bI%tdxKC z=mO*DmO6q!^88!DsiV32vWwkSs@+B)hNI}G%&mI7Us+AN!dgT!lv#$UCI!D$!)6yi z6A*Xr_GbB*wlt%o(-~pzEwu2)N<_RjS01IQQmLaO{ny($i|0{qbx^hG3&H=Xa0b;7 z@6@VS82d*3oWS+J=Rtxz=@sS+9_I3y+>Dl@Ya|#M+8JlWo{~C)2Cj;})^R`K8gd0_ zuH$x!KaQFF*0=_Jdy-27kO5L5`oCLqhB+5J>Cy&SBN%KJ4~ zzAul2<<4q|hKFQP7o4NOFI4lp`EVCz);gcjOSW>4Aw*zi%YNm2+(XbW{_Fi9QW7RD zD{DP302v+J>({3W0)?llQ^iMeIpBu_~*t|=8S_xKXO zE>^de)v;-_s0a9U6ZGOCIEC&|7*0qnN;m0iyMl2+?&uYmS0xsvw9>gAd~yR<`Hbxj z8{ja)HBgth^>_!%f4Z6mp28PL@ped@61>EL%U4gzh2^#;Lfj%3;gbhd9eV|0E1KC{ z)Bh2{2Nk`n!jnlJ5CZQ|=cFd;ICY*T;JfA{lJf*9fe?y$dS_*C)$Z9;<@=sYt3uD& zahw-YBsuYVe8HjAZS0^#rn?)6Rf#>Nw8P`>Y(7OI#?KGCVrARjj)}n3EBC@Xv_9o` zaa05*^g`edrs>phcNp~}b1R+@y0z@%;SkHSqmN^`TmtnVzjGw)Xq?elF=*i>z=bwv zT!5WK63&|jBrCnempgbcwJkW#>J(=RT;@J3ulGsup}Qd-kgnh8WV{ILbIueP<~_*b z6`!=+wv7b^H>0i4`G$-q^c~Ez(hgIKLI4KEq>4fXqsA*nq)?^TC*<@Mq;}pif%Uw% z6fd{PHXj?Rlx_GiFYFd4eeek9<`0Md$R2rE7Z;Rt( zdXzRNv^V7^W~=zXnp_R595*eTzjJimFd8WS)60hma{v9T`0Y1p*35^Xiy4IwK+J#v z)i48w88FOv#Ti2&RscU{ydr91#w!v$%z$AA38U?xNoMa+0b zRKpAyX2390Ma~!ku>$xp;}ua8GhUJ4VFnB{U?4!iA2VQ>0mBR!W(;8(12Z9#C}PGd zq8k2Bfq@ehDhsV5Kb~Aa{6#@rJ?Y2InZ-XxQHo5m7Wm_be~Ov)-#%ng*oj2`{RmA; z+<)s8zx_tdBK;`%=YOz)mHe9-az>W`grC=Q;Q&24Ga#a7tcRL$8&C<%_{*6s3=A-g3JVxeEZycg0{NezrMBJKVGwz6z&o>j z3F1o3*r6Sx;qUME{=C(fASU~veT0hY zt}dHgcI*n;ci+W`AV&SU$Hv~ze*HQ_XCE)^9q2vUfnIxIG(i}d2JYSA?BU|4y3@sV zkGHW}djU^Pby z1HC-GeGLPR)yR1b;dgXdM@^M{i=T(F8YPtd`i-iqeD=GjF4bP9<*d78xvIW_w(e4c z<%{(esV=7JF4LhI=;-Qc(R2-I28J|URs2$er|sXh+i;Va1%4L%Wvu4r=eO5TM<*a4 zKs#WGw$FZ79bE$h10C98oyCi_;2m1NLEe5l0=2w-)#Wpox%fKo-?P_mkB_%1nsLWY zAAdh%HIS5Ag4f>l>xU=y_Qi?Aq3lk0hxkMo{ghI`$7 z{Cs@feD)gdUTWaH%w^dUt;M@s^tE(#T@19A>w`L%>o23Z>{_yT$BrE?@>xHf4W6UD z3ue+^Y_NEVf!@-^<_1f3bGIpDI( zV!w}iAt<$i<27zpcr8WKF-Kn)+lV-P(F1Kl;g)#*yK_aZ)wIMz5SW zdS$rkmj8Y8zaPJuTq3R=mGCypdeeceZF!eHA|rEZ`^LYzHI!~3yTpQQL%q~RyfO{^ zJMEuuLH{v^#w#b+2h!OH%e^izK#{TB(q?9hc>QwF% zUtJ1o;%h|7UE*s(k!#{>KE;~&T2ACH@wJ*_O?(9ta+mlDCghs<3MQ~7zJdw4OMC?r za!q^%6Ic^p!Gzo;zJdv?iLYQn?h;?Ygj^F}!35UC{~KUpd#dDp0C%A3VyQk__h}VG zaI(vL?o6@fedtK-GgaLw;<_LLlRfYQddHJ-k|_ORr~5Sm=0KSXqC43GbIBWKq8YC1 zRHS|SPd83S7f!RtxuSZWI9sdqm!>xDwZGFG6E_LnJA4TJbW-=TW6U{p^u8OfD=`~g z;qN7H8^smHv}{fecTe!*@|vR;qlx$()U62Vxg(t5w`H85Hw9{~`RQmF?JP;LR-_bk zKT4f9k30Awri^52Z?8wUJ1Xjz#VdqrrX@N~loa-zqC`kWw^D@d1v+VpqS@tROq2xv zE~DWZTcC<=1#Sv>@rSk6>9F^;JngaQO5}93UfQ!(!}tJ|Y1PUh7P87!lyU^>=nciT ztU-~rS6--Ia=+PDbj8W+}&k?0~#j8?;cBJ{bb`)x#=+2F}cYD_0dL_41|ZjO9=TXs&54>7u@&xZG&^(`e;5=07gP;3%!#ax``l@}q6UQtRi*f+>K zHsT}7;jMFZqFNlYnwNI; zzL42@oDwTx6}tT(CN~P{u;({L3s!p}>2<`iICSf@uhpD>Q~!>pvwMFst35dlU3)T_ zROSX_|7uo_lUn{-9W7Eg+7wcPr>SXf&wAdcIu89QRAF8x-HyMGjEk$6d6M4L+y>+y z*`$^E>!zS7uck>J2JEEe(DF^CSEw7Fq(fe9KB~cC-rj+tJj_ysvOjG*`Jl))(ut>A zh7`}BOtzb}XY&>@Kd)u~ymZRCT0KcjxWHWaJaR=IEB^ zmG=s)uv=CCxK$Wjq@Mo^DOf^gJ9prY2B+S8P}qK*OD*OgDO$pLmhc=}rQ5Sm8#9ME zQa7h{NZlOw=MAj489R?N_|}Tb77z5139>$*Y>_mvdaR?8B((1&sTHMf$uZpSzGo{! z|D|cA>FCb$Ab-<=`;YCUjNm=gdUlW&Pjc8|-gP;^vgc)-nXKbBWwyhyXgz@zq&qkE z3J!K2r*w0ebj^MRQ9#j@Lx2AvfY`-1648kMBN|Cz;_*k!L!U1k&K7)4a;1;OvwR|N zaqbF|_E}H@SgWBi97(Aic=KR__X5fR+>u>q4{I(*1Gp%7s2d)y~DIMi(I#aq=K@YLD@t`SaEC}%iDb}JZ9txnR3Zb{{; zyG%(CUcDvB<_h3Yc$JptShD^%7@z>WW%iA%171~wB9)#O zmS&z$Hj=K%K0{hqu3 zsduh$i#9am>?tMFGcAO?bvvISS&%k*ia_$tl?u(%p~!Nl=X=d6A2gj<9dRIf*q7 zv_XM00AQ#Jmgfo%iXUSU7)XRCW}-aaoI@8c5Aj;!DMx%@iUjaX?`h*QC9^op*O%04 zG8R&H+l$f$-$IzlGx>IHZuGEIQxJ^b<;Lqi4=6)=ApxuHAW}ewCrTVV3D;yOENuKN z3OG>kt7BaLrOV;BUfEo08g!%1K|X-aVcv!fcY#lT?T(86yQ0 z+wyjr+mr=_x7?YcE_Z3}YPiFPKds4(5&OfxEo02nx7$%J zNUH3wY6dHm%o`qzg=7woq0>Y%13$Rffk-Z|XNpFqelD^EeGJAZ2 zEPxaMQ`*|7!9;`Uz`JFEke2h=HhqE`htdsmLLnS%HWA|5j?7|ICz0tzY&>)S6wn5 ze5bT-gLy#tQp&-fla)cqq^;Ick`MpV4h{P;QGvh#f8$%^#|SLvWS%6`3_I!vxZ&h> zjWM)y+$qmF5{7gW=|{w}Q*eVFRBPJ#bJgH`#hyt%;ZL&8rNc!z3hPQM=qyczq+#6m zl!~M*1GN4JF|aSG+RUxraZlKue~I!JPi?ds-^;9yTd4<{)Z_bRPZ8*m8wtW`EsFBf zn;YlGnJv|w(OAK9q(s>L8(e4K5abGOw)dwVs9QR$XbOeV+E9AlmTMG$d_%Y}p9&1x zaZ-k~_m-yN?w3Xj9GF3r*-no~{?kwrBq}%<&qNYlVs#sQHX$`zN#wk=mfB-bILv7`%FZ4P#h#U8EamP@v>-^#)~X@>Su47?jiE#O zGvP}{)AT*0Lpx5El+<4fZ z-0Y&liGL8ede#SU>CIMA?nmZud2N>|d_WsV4mm-(bZCs*Gv9S`muBxk)&>+7_se9` zrDa$*O3TnXlN=f>x{8{)^)9tSyUUBn3`pGm8Se0xwA!VIxz}~NZ7`hAX`_-oKWj4F z>QKp7k!Yr6Og9S{cuhH?(-Ty1`;XjGZOtn*PKzrv5-;_j;*G*#v~8lD+!eq79bGYarbMiTqdo zTJ57K)D<15B1|ks7Tfh$k8)FJ)L%Dyxr@mf}y03ZUG1j_ONO2oF#HK-A*Z`_$18d zWR`;!EO~2%ZFLqs+@f6EW33{tPgOAaac5&bcBJ=c@#=rcx{{r<_F7+S>ZdR>LBcTh zBmwiqScE^i^Pb|IL4q*;v9{Xuqru6cT;}5hb-5$+dB|DDUHPwui6qimN?%Yh|0>eh zxHDhSF@?csW}hkf$#S&*9hIQvzEEq?&9&WqO$@Tk5KjWpt)QBw&;YXhsjHk}4ywQt z07x8xA5O|SZ<19|Si~`K0(xSEh78b@%tBvn=Q8g)3Np8D#BOmsCVTmG`T4#0EG$0}Z&5Z0W0zNcLDMY=>o`sMOw%L{#*SM0 z1x+hWKo5$lL@xa=P2WZ}t;6UuO)Ht80j^iSq-l}@t4R4w(@NfG4D0b{npQ%j4x7Wc zIE zuWXdAoSXmFmtJxy;|>TdlZPHr+je3m@k?4SUsnU3$Bor-h=LgWexxVv#Ws$?z^l{)Pjtlv?bIHNh(yE$ zZIgJ6a+rHwBiEq!dRVU3LU=bMYWQbi5%A$IFqNmJ$fF5DiZY@SbN!U^eeF^1wT%~i z$jfl!IJ)6(RrrCSwOzT~(p3B^u85L~&qHfpb?Gzhc6cIjI}lR-uX+Qu(IQj3Khv+1 zGt$aA!DkA7Vvj~hGeE;XWF|=!+iEF-k9aZ_-Ej1;b)0qRkBAE_i2^CIrwLlPPyJ)7 z827i!9=A)$;z4Xjnd-p}W_f%nkLFA<_Y=8W1Gp zIz7ul5tcoZEO>8{DBmTPpm2MTFO?2*>rurE@iA*SMIvS5^lBuRt-qqfRFpr5bA;0} zw8A=po?v#!({3Hv;233!;v-1niyzt6UKAqEkhQ!z{?UO?uSb(vc)G$sS4erWzUuh$ZhG>cVwm+$=C!$2-UpF-*O*IdSH! z3S<0ylKBGSOVVeV)9_v}yYJbsBh%86;aEcLd`(1uY8PF{%gI8HDTBKAnWn!-Bd$TR zPhht3AZRpr-BhI@EdGEoVUW03;!@ed%bH{1PjDo}ebF8+^9)1TF1S6E!+I5qeSrHj zyumq*H_)QAsBvC>1*-@@UK1YAS90eKl%vT1m@Ab0!I(-KZ8heh9Y0v}S}MbO+9(!* z*rf`J(G@s^cp;7_q~#1&=3+=k^aG(PqPG_LeF}3Tkz52Ffz+SV8HI+eg}u?@ zk~|BWEn7i}Fij+ge9Q&_sP+1F79YJCK`#0-yDNvuWr z+x6N*8NzTNewaH?CLt-g&Qk2mB>TnPefw}~)6l8ZzGoU@OXc~fa)a&>?xOu9PVkAo z^~j4O8G3_Vrb7=_8yVJ{&_r^Wi~t8Jy%N%uFzmKB@@11BTWe>}yuu8nWTUd&Vfz44 z4oc#pGp-bqMm#?Qf#C$O>)OR+Q}U?H_f!(f;}b> zl}RPF#@BI{uu~HayrFh5gi|wkxs#HggPum>)PHH3Sca&YmaU|!vpw|MSD0|TC@!DK z+JhDvlOLf??bP7CR^H);GEU-$c@+W2cGPK5xT+Y zoz)bE$YR+*1@=u6cby)O+_~}=0?Z%XnWVmGxARRU^S?d5S&-y!ix;yS6~*0ank)zF zDlBsR5`Z$vpd6a;T?Mz6q<}}K*}a?Av%P8hu%=J108KynsnI3Q9PNn}SoTy=X5WBK z48Sgb!CAje2**m3La413K{JJ=X3cH zT`O8z!J?XoP)kupX)^A$uNpIFcF(!Ys9}^r0WYi8%QxnIyLl|vxGf!!+dZaF7djCWO6?l^q^$ zt@7alqQ5?74YKP!?l3&Mu8tlouM;1UHPT52=)N{UD$h#}43Wm#D zYm2mBez=EIGYx^S$n^K|9;lO5fAt|nRud%nq6Ldh>K|{2AluHOT%0sW@TGnpxpEv& z4ek3mX&5K7VePR3hXY&5Hj*F)yB@y@Os~X*>Q=c*woS}_J>Wel9o*skDwPW@H>dhG`D(i#uM0A-3L>-Ys0GwvkN z*WCJjTlFp`ZKEQISaujqB}fYKM$9*GS=f!p{^J84;0&N|k&<_c>hWAz^I@(Bm!vwZ zqqknp6)@kf#m?g73qf&OUsPK({g8PCm-phZe6ky8MBzQ<2*i0JUd~7wh;2`{A6sk! zdaB9XT<40jDf^5nEXKP#^jh-3I-3S>MTu7)&VTGPYH+Kj=aQXePj;N8q&L7!UIZx= zwtGuJoeT7fRe@^61)aExobsI;w4aT1(_p{A>wAXRL&C5J*QG^+93Xw%qFF3C^$xJ@ zM|hHjKhT~wQ;rKHopJJ|YNMsj@SjsIXg})SXZ%UZcrXp}=Js@6*F%KNfo#P*GVx$3 zy73nfg@~~PepbFxM147Rc|Mtlni7TW%t;=#)WHKtS!kuldsqW&Nm_U<13Mwn1w0ym z-X30W4v96!>*HL)-hn1-hK5vCrlDqQZK26WkLG8=wy5J~{-w-lvNvi{u!taE;}T@8 z$u`n&*{q&dtVyCh7tKSvL)6kB3G$bSlVwL`VwNoPAV^OX3uHIi9(F1|P=LQGQV|S+ zO4~SE5kEdqTb9>e${@4w(2@7qWgL^|d|`WG9`z)C*Cc}0BrP~Nl5Pex+Y1HD9M2oK zS)>r`NzLC9#D$)|Mv_YGyTrg-ttV5x38$hPBM7!o`z9^z=;|XfN^EtA5ZXgXD9{pc zk1^(cOxuxaz|2SfjockQ|8jmBe*USBZ-}n)@qph_q06(gqw1t=0@)A!ZqgkFI@*h$CtgM4~`D0FwIaq?t`qZpv&z>n^@Z1-oB`5#N<<1 z?GcMkC8m5=!ud^AbHRz^qW3Ih51RGd+BvBCNNt?*gSeq0I(jqn-{y_@%zcWG+og(yNoJE`1`p9N#3-j=xyA z^e`Mp(j(_08u??1si39GmD@&*D)W)#!O0CR@)kXBBFqMsFkD$MXYE5%)5DHek`=Jq z+0S((2u=Gzfh9NS(S1RFZ~ZkqUkNqe#*~`hMhnjRdtOsvE|*U@nVK-1W;A=P$c!BoZdydf987-Q{iU2iT@i_#pWLoF)uTuo2yy~?DJ0qkGwNg$lk*z(l7>+PfkV8{4kO*hw0KU)bQzg7uU!1u2MLU4G0Gm z!dpP_H1|B``vY(8RW9u9dSObABmU?bN$?lAnTp-?tPBmd)jB3n#W1BdXat)B1=)6! z$F1Mo9vUvIS1>(`3*`vnE;x&m`FMqUe=4w+AD&?NMD7xPv%w|O*}c#sD+e~KW@um! z%9X(W`#KUSZeZWQNf~XKG3Si?I^{CVSr4iBV0^j#{@#$C!X8UAaDc~9Q_w5%{&%oj zu4D?&xjj5RBcrGYd&Ete2B8_R2t5jy{?4-Iw?{(;&-*x4%V;7c!1%+RP7PUHCoPpls;1q zLT`V~B}o~>!nfv1nXH#GDBsPO@*U0dHU71CE0sgUa=j$|0F$}6X`VVONm4R=IbOhg zcLfJOeZXJ@al&E{nw|!}w%5esM^sXv9l)wtvxC%fA*1Csi&O#;e2O51-d4ub%Ihwg z`xZY4(@6RmAQyUdD{Bz!%hg5gMN07|&I3G3VB~`2Do-BP$=CcejT{RcK?t?2jIIpb zm$~TUTwr)q5ey8^n3*A!x@m`W%FZ3ZQdL4%accQ@L`qjq!H~^!CYBW~2ZP zI41*wR$%nuFSqhU?9l9ouSP={fIXdaydhcj#tY?3u^$1(>>3Bo>{}6a?hs>&=!nV& zyq1oiK+T4w*$P7mSEHjK`(Sq#PQY1lj&t2+*{YEDuZL$F4YLKVT6N`BqwBrOSP1;4-UNELp?@Q1tr801TAe_XsF<1;}cZ4v-eXOmMsu~Q(LhN5BHk#kI1NT zv~O>MeAj!qF&16FPvQDE`eOxYn&J$rp61_{p?mF(qX~{5wk{NXi{g&Giwxd8RWj^f zDv-X`k;i-FH1M738fO0slykO?o&Fb<#8Uc}kDv?SS?Q;0p5CZ18fcg6Tk`}#*f0IE zzBf*V*-qAcrtjyJD`ss%88qqHpv$mq6Tnio4>ntwcWGTkvG7T{7EXmuj!qhxuDyb< zL7}A5HDQ!61^jU=!5=$QT59+5ZJgC`YV%tT-dG{}aE}Y=-x*@)F{L*CSe&m}=lp9O z{#7A~n@S@HbI7m#rlJFj4BBrh89t}W^FKWf#%29NR>-061o=`i_MoiAHwjWdW**WZ zrFv(p;Sq{c2)fQJ<>?{LD-f{4s72iHCW2bT+5 zj=8~U37oLmj&Hsp{9=1`n3KrLIGjpSHe=Uz;P?Y8cdgb;Zabm^sE9;wl(Ku?D+Mx`CjN@c`CQ?_xz5RDCR*9Iw%j%q)7B9T@!bncTSv+c3yw%Asq}b3VNLL1eF_4}pH+np~sZ{T)Gpr$Xh)L%iP$3VxZ5TIazuPsH zpdX_sF$nd0-w{eKBF2zfJj&hw{DD(bN+ea)*w$6~E%8eA9vnFUWy6U8wt%KLb?q~M z+i`_&OWaI*?XmqxxJLV@Ucp4Ee9vR<(&eWy8VdfE3V+&f2muEM!+M7`UVIu--9K`T zZ@p(>G_XrPUvcylA}hYW@9C6POLkj)ba1*3c5vI<9e*emKR({~LGIuiA)WBk0*5}h z6}cQ3#|UznNi9|APeBs<)folv!&|a7WGwMxoEg{z`z2KOg=wEFJf#^FZcG1M;RNd; z0B%TW9ctUUTJC-Vj|m|lpFoq_x39cf<-1dOY!z2hqAqty;kpe3-`7p{Qjx^y)3w)8 z2#0hogw~#K-B$Zc*MmYcT3v4^P2bdA8^K{1ylK(K0n9%#@tUc zZi?&w2+g<`FYG&SDcr3D-m_OdM!thc8G`5N)${tz^;{o@*LdY&$WI{OLiRiHQyXx0 zZWV>Yc%pmJ2%-^MDPL50`@WF?+?daQb=#0UDdW~H>_YT?RKTPx9M2kT_|Sc)FjNjt zj{Ogy8&4LhXJxQ7{+_bphgZkt-oXEk$hR0w3fbugq-3mtqL>vhFkJc06g_8T=KrFlzlgHGqIUsGov z+>5<~2wXOTaQLAiu(^cQeLJ;KCczITo?E$y&OfTHoCZ!frM%fHtXDQ%Lqr=aI=FoJGZ>e%^bN&9uv5WZixL193dp*ibWMK zSkTEj6*?ZL!7|X=)KiHg?GH?Ls>7Z`X#OU*jLXYAC4+;U&SL!w6viP^^1#$lp8xz_ zB6~e(J@~{jPO8%&yGG$>_OqAY5a+A%UqhihJwwEh8OmKJA6Z8luXoE2W~B;ciL$-R~T?lFMLm3glZ)&?}J1 zboF{pe}XHWUV(h^5Ji!mZxXpz0&4ix?NA48pT2 z+_kn%EqBovp)B9I6Ird;tz5VCHtKg4jN$Gt`9W?hA)NLM-j*w{h;7;%T4mDlEA~YK zVP(}l<%zS(^;J|vK=oiXWW7YQ0c@HgN|x%yZ;mTTczxBfl+ zqzRDGa+lVGiS3GJ_hg3p57goU(g-dbI6}md)G8SUueml%Vh|lqDaqN2$3!<=UyYJj z8+4Wo3kc-Z%`nfx9yOjgEj9FI^IDlovurUnC*5`bNW%6fC}Rljh~QW>7QbU00!h4w z;})LVU%4_?VS<^9Od`)vl{3B}vi{62*N-{)Ov`#j*8};prdE7M*pI($=QyMMxYg0X z&inXAQB|>^i+iARVZ{;?d=Ng@wIKa;Tch?6A^vN96wG)cqaMBD-dJ zD-HD2nu`vp{32d|$`*&P0Qi*1Y}lxpcU{-F9L(e4EivKp3P8sc=pehv-nk0S2CuvJ z?YD9;0H<1!6VkrT_R5PwwloYmAdh{EQ;P7pit&v7tM!@=1mD?gh2wy|xP#?4|0O5tmV#O4`-w`OY_?-Bx&vDqT|V7skZX1 zN|rmI=LwbZrl#?ze%tXd2|zR!Q}skhoV4Q^l77t}F+8EcNJ2QVZg+yYN&BhPM1Nbk z=(cC45S70k=Jgf2CHd{Y)6R^;xyLY(j7VZmn&f!$oyrq`3yS)l$?bff+6oId)@@i} z?kq^OHhzCy?i@y@BM86jea#$cxsRD7f)Q5IB}aQha{=wGz4ktTAqte<3RaT*VMnR- zR5^FSaScmmpOejm6^rD)A+rQL{9}XDp_0smSvdy2rh!o+rj9K1csOX{^ zj`NH;#xnUfuRCt5BiHzAwOkd!X8KzCD@^whU$@YO=IC+B-@CZxGp6pd7dXBtE*Upj|oYS81wps2|oX+wlj2oxRmH zF_qO)Pc+_3FHV3#o~ra_3_M3rGZ)bZoIR@A~VwdQzYoUQZRQ+&t(qvIc zyWG>&SCVLft$bW`-C1wCPI&8wdl-5XnxkN|#mT7&7td9+l>DY+{whemneYZSrTaQC zka{s^ri)}l71-!`6?FcL%!30v|x;~(!g`N zjbl%mJU$R#dg;dozsDs$Mf2U;Lw)4WQ3Iby&wbI(GL6?rn);!?881m_j7T3KN!02U zj3%zye8FO{NvegdTxd=jlCUt#y*)u-@8@b`wOo$w`1X?_tGbpize(+X?b?Chn!#5C#^3ym#exx1SS;>?g+3yjf2Ri&?Pg4M6-1;*!QLVw!`{__Q zRdZc#+hu{UU}4(ki}I3SzXcdFdymXHJqt6#>IagKrdB_~bZ`11cviF^U()NgAwgNh zkS@mBZM;q8)D&l%-X>Ghul+X4?KKT(Qo}X5_vghn^>b4T+e76pX#4vVf_~3kQpPju zx^tW(F_j(1vOj!H$qr26^Fw4kko7QdJ*zx}`9-cvgO5toiuSP9qZ)GI(doUEu8bSI zt9a6!R7Us7Fbj2@OZdr<0E7zwHzV{||8di6c!)}>bi2Rb6$X%S;boZI3!%l%zI=TB z>4^hNO~dLfO|!f0ba{~!=HoAh?X5$G|Ks)KhKeO=!=t8>>d1UJ(jfyd6KTn&P%J)C z2&{o$p=X(vI?tbJ(=_l9526FSCp1sKDAS2)nSaq@NZN<>q%@22>y3sYI4g4Q?|Wv0 z_e?iXuErPQfP8fSK;7J#0b0?m*Y@CX>`t)$Ydz+{DjnXU)?{N-j-wT(mQKWh=HKSL zzpftt_=4r&iz8S#S|^2^h&7qnO-v;C>*t5$g1?5r!9V4GD2|m0k64GuN|2>|Eg;(|TV+o?7$a z+_BKXBYjd&rsK7tWEaLLGP%?BeNl(N9mENeZsA|LeH2dEtzN zj|uXB-tHWg%6eU9EvvVSV~wZG$Z;G{l`KPjIOJ{Q2=K=b~kN=IT_#p@Ud3pU0{32loAAuZ!>1UKlx zH8=Qh3|2-yrmcuM7qTl%$VjYQC67cM5U}#s?D6`ML*h10?=1yw$-K1-DP0(uqW0}C zZTW4Spr;93NkbFPjY2ajjnEZI)Q-xTSRTTDQ0@@MP8qwa!Fv`$3LjDX^9rE$Qp(1C zhT4VSP_!0XyGokJiXf2!e-xG<(Jz4a2)}clF~%H0lVUYDT8_XAk@y)k4*IQjp*rr# zLuO_<@fMWy!6zYS&HWs;(`s;H()_jb5@XIl;~{H<4n7XNN)Ir~+*q&Nt*`Q)&d#~| zaQH!Yz%M4xls@a@K*xF#Z_t4XEVcmG#uGM!8m32)Rrz4{oW9L!M#%IcP_HC9+j3v_5%TA?Dy-)dk1r z$v0Bo(7X}us9V-xR&FRJqpM&c0J}Zo0DzGp!fO=kNUrtEv5E&#C z&KCf|ghwr0Lpk+xmdj_TU5LISK>F0M%}i2YXCb<2Wo~l`=cbg$fYA6|?ppQ}%ik{H zNEk943C{;`rsj90-RwLW+hlxwsEIPXAJ9UCj;0*$xhBiG9m81gi1e%%@G;z$)f$#Y zAIz`~O{v`mVLx9a>yJ^2U%V8y9T-5MqrS+W*(d)baeL#8>gE_LjLs72aGs)cyGKSU zWB^BWTHY-_z4WCDjTUPIcY$a8k9`I=T8dxrcsnL{7o0K_0R9suQClQgUH3}>x)K)<47|OiCBI5{%Y+s0&KxI>%c~#z ziYnOZjtj!<|BSXamULrt(CU#9ZN|gbF`yR8ha;vqua`m_9s&-&xgZCQDIC7AE~?jx z`6rcqG;w`lTgQC{*_F@-^oxtX1lehu(6b)=3$oL{OE2)=)s_)Qey%0hy4lrqJ!7RV z1m9F-?8~8p7K-Q)8!dxj6>n^n1Hj;hpuayZDf`>NCPS^kIR>jBD;u8X_q*qjIh-rPhp9<>f5MSu zk3O$ucrV_=Lh>@xQu5DOwV6?P_mQQB#++?^R~OrqO9NU$UZZp%>Ci3H>|#yFnxeT>b=$fM(VHCV2Q9nGnk8Dp=W^zKYpV!EHQYEOM9WZiZG^hk|lQkl-cl% z?z4!Q%^X-+Wg?C}&zmC70N;X_=9uJQqB0?SkvnXEVr3nNOP1AZ;_BPD7G$uxG<*Ng zuMUl}t_x_wUgoC(3NzMe*k4xSlc-Y78%U7ffM6mP9e-mjd+N$%)&+bt7rhT2$4^e( zkgOb4Fx@h@>!I8(z+V!9r##~vPFWJwdmhVGIRG+u{8AhfBYqucF1h-~av0hPe?cQg z03955P(~7<{D>naeYLwLxg&R zOB^k?Q?{@`0$h!<)9mCHcbK6wS1~+br&vg@bm410|*cQ2ExNU}oNL?j*sNO>@ zf%XIT)P-oSIh_4>CLyW;A^?YQ)=Myb<;u@_b9>-^2%#Rig*s@^%8=D}W>S{1{T-$< zw1IC!<3b88$!#*h_N@SJnV7Sv!M6f6KK8$g#TFw!MIzh_u4B&Z*Jyz&yd{yICZNN;9@ zqB&$stm8t+tAxuZko)x;YW3`AumxgI{<}ybLcC_3?RK2>gwsG_nrBK)2F*;CPlOaM zf5cdL#KxcM4$rb+O8l({pO1+f=2bP(cRrlh0^y~QJZs>ohx)L==v%?TQeG{{3~5}V zF~U*WiRE(n5uUDm%&WlbRi0KPlq9UVJmEL-c|MGu@Tm56J z=Wj;9zs|cru3|r!>$!o;3enUkbNC*Z>&-YB`Ync~bPN?oMTqrzlX`TRKd4pUlIn-P zHlTx(1|NF@Fcj-m=uf37HhBch_Gg#QS0!V{aP~jhfi-D(6drEBqwd>TX3WN?sennk z6BcE_HCUboDhUfOZbH!H)DZ$88_oxa|0V3_0-k2I{Ky~Xz{9~>gzeVPIB>c(D2v~^ zM~@>t&x%I$Z+ea`HrExX&%iSF^f!~?b>OKk<@6-UNT|z0?lbR!ueJkiz$+4+ z!lz}|Y}IIODqQUTCUgO3+j?+Pc+u+7b4tpxQws+hW1IH-?n>~+J0&MQFeTf1bI|LB z>b#J>_!u8s09+ekQJt+wbSC(O*VnmXkg7BunX$Xt-FmRf)It){6lL$4i1Cs7Y8VrF zrd42RiGr&!0K*{KCiL{vrLcsV5$_{EGT%zyp~>E5*nFrr$O-`{zzLFPo{zirt;lU8ZyZrWpb+Ytif8A;fH2e8@$rLXZ;{`##0r|zG{}w84KvArtT=_%{yg~Tg zXV6#^eWhaMlFy0l*FV63;I&DXk}lcQp0&Jby57G~A(k?TWJ|JvwkS&ay>=|Ty%a+0 z2Y@4qjRAx8oOZ_f1>roRJ2$5`T0AX|tS(jVRIXybN8;J19cVd&TJUu(3D{u}Z%C;A z4RjG%yoD)PF9_xlLq|Wy#*HiCMu%s$dzFb)A(ka;EvebALpf_Dau}k53newSug}~i zvk=Rbh~(-RnJvnT8H#S;20y~hH}=CH;YOgY$K@H&@m|`h7&@0Dz~^`U(D!xnzfVir zU)otqK;g$t2R{^f{57fnrLgI)NaFOrK1Ii->j(CcUjW8__}nTT4jGw4`EHk)bgDd? z2;?C4SVR^ATX=HSgrjITlNo4ErQQ@JP&2#wgx3w1S6y$+dwirg$Z5T3o$5bSkW{54 zyWK2uRvZ-=O6c>E>`69>CdP=Q27HCHpYtjhLi;BhK5wQx0`M4KO(gn^Jl{oQ@2zsSMMC?Qft^5L79f62!SJn;}zy8!fJ2I#p*<2IjfRqP6Ag| zN#D0){li%xc(`p^b!zB4ZY-ng&_|om7L$Y0I}hudnN+HrJURsnd%31D9(FZSmuBfq4>QRnMJ<_YT`l|#xZDs;GqYTa*{#eH8mG)UOn`6{q zQB)e|M*!16_@$KI8e@r;FX_dqyh#I9(vOtFJ_7W`2`-+21t!1iQ@E=qxXLtyiFyP( zhx+kc43u5{euZ9w;JU}YT?OxO>g)GKX4H-q-Sj1!p%2dBxnyYZ!g=U`Nkg24B-tcy z$Ox{$YbX|eq>SAHjgAt!N3Gb7r0$QxmXI`7VIOXf6q>F^so2sW+MHX{bs5dYNDepqeAK=Ea z-lt2@er9&iE-Dx_7b5N6cWKK|9H_Q47fn%Nh#x1bQ0K2pOOuIFME7rtBI=u@Ua#~U zmFngtV3E=1=85iOr7Opf-YV(CRoCSQxGvO%Ok|0UAQZMaP%2Itha96Y)iI{t)r9QL zL2yv{#Sg(yy27Omi8G;4l^kfqt$IIFwwN+U@gr2(s<&RntJg>7od^k4PDsnqvCsro z2~=Q@$S3CDi{DCe>+t~?Kk^$US)XyybbX}A4#i*s%L|jI?rndlqGD)M3hGO;efcHJ&UT?B#+By zsMKQk2i#(x++_UXceh3POS0!2!2W`GKFEk=y-(Ca6fMF(|wfnNw`NS88;W3OA?yG#HK7=Ip*TKArsJA(|kg>nP57E$V$vOv#XK2rqDiPoU_uCCS6)++|zQEowg@R;x`+NR~6EWVe@=qU{I zufe+`7D_$z+Ei%|N2oBlq>9|czRhd9uFGP?lImD~#A?#>0eldMX z+Na`Z@I47wBWZG3b`jTL0d6B|bc@VfvW< z28Al$H}$^|nGR=U;6_);r}Xjht15|T9`?f)E8P*q^FMZdj*;naNa?;$ogM5(@{z8% zk4{29B0a_PQid91uZK<3hiJ-WNz6y2M;gV5-^k{-#xWP}e0rTy=Trn!h)XGk9=51b zzsr>3OpaJQ_)K9bR0;C9fbKntPe@sg9LjzUdGJF!=F@{86t1Iwi-I2T6t}8$<_}Ka$9opqUByF70N^QZj6(W#SprkTvPIvbFLefyPah zmN!v~c6yD{a>|rfK~<)Gb*YTr#ISwMlnO{T59qwK#}_T(;3tAvl%j1T(L)T^<(6re zsk4WVcm%?U5lDV!2zGUrae(GjZ|$M%k4_gtHpyz8;cCWg8~Vs1Q(uQX=W=Jb9Z7Tz z!(`TK^bCj3VR8q2G6sTH>q{`X0;!E2_xH^g<4I!jtT z!JA2SP;ig^X9+Uapq-^i#U!^|Bh<8Y6bypT+Ftw(Al$q!aL7XV@E>6GbN|K28xN4z z|MrZ~QcE_~Npn3*^=DEZAaOVD{sKfsL>@4C8xxml%?u4N2g6V~ktFg6W3|Ccyzt_e z=GKV@OGsc(KSQb{E>cCM$A>Yqhb4a6*#%R8z(M4lF`pr1At@DfdH;iuQxZrAI`SDp zuFN2{+x7*7EJQRO@OW~B99Kvk8>QLy1qm?l3D^xf(5q|NW)eejCYc_;WVp zUWq@Uq3I`}m!*zq$zhai_$#_$9|RUN>3WO!nLGU-C;&&2dBEoRw^ktn4i3Ii7DJ5+ z0CsEtdv1dQd`>-4vlJ2i(4%vZIS_>23e*?5ph=rU2OHEG*HwYMpiUgnY)N^;(%xOQ zLh?fCrBo9+8bu@RB?*)BZ&(jj9vMEJtAxHl4gQ}RHkYhd^qobAKcP25iEI&p9;dYB zWNqPl0A28n?3DitRMB+{hg?xEYH6lj#WWw;&n28Z^=2ZHCzUbO6SlOLB49`|57@l4 z|MJKrnFnalCFI>CL~{Yep$e}(YA6yZN^O^C^|XiTyUY6T%Ma%ANj8tTdmo6&H^#9| z2RH9Z@cfg+iB4OPRoVY+fs>s7Vv_B*lGCa0O7NOKprvmqO2@mA^l?Zxl?LuPsiESV z=nQZee3Kj6&=F+k7CNziZ#XlV+}Six$2s{Cq}R@w->~N*!u$wHQkqdDjcHhWeV?_g zc&@eVjgAFAm5V-*0xv_y9xtB=a&PmDV&KT8Ep%r$o-r~YPcGuq8EjL;rNW0~a&LVb z%h1;c4swxvYm-IhW1%*{E`Vc3-=JDgqB}MkB3$!tBAM*j!c4ZqL~3Ssa3ES5vGb3SF^IC?|F*_R}7~*{HyV2~SmIO|3QXf^iP|p_L%>dG$ zHMFZLQ|x%hu#MW!mYSnm-I35~@+VvNq10JZD!Z|hK0Aj&;yprW?2$38XRUU$cr+s% zAAqL^kdHUM6kNZD>e%N}=he}vRq&L@aNdR7Gv8LA_RM6vmZ&cK#NMZED&}-a2XXUzm)#wvhNn ze+H9Dyho&`eFBpUF_C$X6wNRRR?m;0b)0PwfOZNCQgWmh)QM0!JBA zw+J>d9DyT;L+O9Rp{7d5@B8}3uj-Mz!dIvG8Z+1zzGez}P<&0KU&{yfg|GSXYkvHi zA4v^-4TZ0v@HG^^h5~5dD?s`RkZ>yazgQKX7m5gDi{mC;?jLp{X;zzWFuVMd({KMD DB&YL5 literal 0 HcmV?d00001 diff --git a/DoubleDeckerBus/Resources/стрелка вниз.png b/DoubleDeckerBus/Resources/стрелка вниз.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef3ae931619ca48b22a10fee7f626513fc36279 GIT binary patch literal 38653 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 literal 0 HcmV?d00001 diff --git a/DoubleDeckerBus/Resources/стрелка вправо.png b/DoubleDeckerBus/Resources/стрелка вправо.png new file mode 100644 index 0000000000000000000000000000000000000000..27c5130af35cab22048867d463393e472d941df8 GIT binary patch literal 38634 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 X_FL{%7A(4iw6R@xmrnApj6ePtLiF#6 literal 0 HcmV?d00001 diff --git a/DoubleDeckerBus/serilog.json b/DoubleDeckerBus/serilog.json new file mode 100644 index 0000000..d83ac59 --- /dev/null +++ b/DoubleDeckerBus/serilog.json @@ -0,0 +1,20 @@ +{ + "Serilog": { + "Using": [ "Serilog.Sinks.File" ], + "MinimumLevel": "Information", + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "Logs/buslog.log", + "rollingInterval": "Day", + "outputTemplate": "[{Timestamp:HH:mm:ss.fff}]{Level:u4}: {Message:lj}{NewLine}{Exception}" + } + } + ], + "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ], + "Properties": { + "Application": "ProjectAirbus" + } + } +} \ No newline at end of file -- 2.25.1