pre_final

This commit is contained in:
Teochrome 2025-04-28 20:28:37 +03:00
parent c4b6f37f94
commit ce0d9af188
8 changed files with 125 additions and 125 deletions

Binary file not shown.

View File

@ -1,4 +1,4 @@
using System; using System;
using System.Buffers.Text; using System.Buffers.Text;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
@ -9,61 +9,61 @@ namespace Covid
{ {
public partial class Form1 : Form public partial class Form1 : Form
{ {
private Label labelRemoved; // Метка для отображения количества нейтрализованных случаев private Label labelRemoved; // Метка для отображения количества нейтрализованных случаев
private Label labelActive; // Метка для отображения количества активных случаев private Label labelActive; // Метка для отображения количества активных случаев
private Label labelR; // Метка для отображения значения R private Label labelR; // Метка для отображения значения R
private Label labelDay; // Метка для отображения текущего дня private Label labelDay; // Метка для отображения текущего дня
public enum HealthState { Susceptible, Infected, Recovered, Dead } // Перечисление состояний здоровья public enum HealthState { Susceptible, Infected, Recovered, Dead } // Перечисление состояний здоровья
private PictureBox pictureBoxLeft; // Левый PictureBox для графика private PictureBox pictureBoxLeft; // Левый PictureBox для графика
private PictureBox pictureBoxRight; // Правый PictureBox для отображения людей private PictureBox pictureBoxRight; // Правый PictureBox для отображения людей
private List<Person> population = new List<Person>(); // Список людей private List<Person> population = new List<Person>(); // Список людей
private const int N = 500; // Увеличено количество населения private const int N = 500; // Увеличено количество населения
private const float InfectionRadius = 10f; // Радиус инфекции private const float InfectionRadius = 10f; // Радиус инфекции
private const float ContagionProbability = 0.3f; // Вероятность заражения private const float ContagionProbability = 0.3f; // Вероятность заражения
private const int DiseaseTime = 35; // Время заболевания private const int DiseaseTime = 35; // Время заболевания
private const float MortalityRate = 0.12f; // Уровень смертности private const float MortalityRate = 0.12f; // Уровень смертности
private int day = 0; // Текущий день private int day = 0; // Текущий день
private System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer(); // Таймер для обновления симуляции private System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer(); // Таймер для обновления симуляции
private List<int> historyS = new List<int>(); // История уязвимых private List<int> historyS = new List<int>(); // История уязвимых
private List<int> historyI = new List<int>(); // История инфицированных private List<int> historyI = new List<int>(); // История инфицированных
private List<int> historyR = new List<int>(); // История выздоровевших private List<int> historyR = new List<int>(); // История выздоровевших
private List<int> historyD = new List<int>(); // История погибших private List<int> historyD = new List<int>(); // История погибших
private Random rand = new Random(); // Генератор случайных чисел private Random rand = new Random(); // Генератор случайных чисел
private int newInfectionsThisDay = 0; // Новые инфекции за день private int newInfectionsThisDay = 0; // Новые инфекции за день
private int infectedCountPreviousDay = 0; // Количество инфицированных на предыдущий день private int infectedCountPreviousDay = 0; // Количество инфицированных на предыдущий день
public class Person public class Person
{ {
public PointF Position; // Позиция человека public PointF Position; // Позиция человека
public PointF Velocity; // Скорость движения человека public PointF Velocity; // Скорость движения человека
public HealthState State = HealthState.Susceptible; // Состояние здоровья public HealthState State = HealthState.Susceptible; // Состояние здоровья
public int DaysInfected = 0; // Количество дней, в течение которых человек был инфицирован public int DaysInfected = 0; // Количество дней, в течение которых человек был инфицирован
private static Random rand = new Random(); // Генератор случайных чисел для класса Person private static Random rand = new Random(); // Генератор случайных чисел для класса Person
public Person(float x, float y) // Конструктор класса Person public Person(float x, float y) // Конструктор класса Person
{ {
Position = new PointF(x, y); // Установка начальной позиции Position = new PointF(x, y); // Установка начальной позиции
Velocity = new PointF(RandomFloat(-1, 1), RandomFloat(-1, 1)); // Установка случайной скорости Velocity = new PointF(RandomFloat(-1, 1), RandomFloat(-1, 1)); // Установка случайной скорости
} }
private static float RandomFloat(float min, float max) // Метод для генерации случайного числа с плавающей запятой private static float RandomFloat(float min, float max) // Метод для генерации случайного числа с плавающей запятой
{ {
return (float)(rand.NextDouble() * (max - min) + min); return (float)(rand.NextDouble() * (max - min) + min);
} }
public void Move(int width, int height) // Метод для перемещения человека public void Move(int width, int height) // Метод для перемещения человека
{ {
if (State == HealthState.Dead) return; // Если человек мертв, не перемещаем его if (State == HealthState.Dead) return; // Если человек мертв, не перемещаем его
Position = new PointF(Position.X + Velocity.X, Position.Y + Velocity.Y); // Обновление позиции Position = new PointF(Position.X + Velocity.X, Position.Y + Velocity.Y); // Обновление позиции
// Проверка границ экрана и изменение направления движения // Проверка границ экрана и изменение направления движения
if (Position.X < 0 || Position.X > width) Velocity = new PointF(-Velocity.X, Velocity.Y); if (Position.X < 0 || Position.X > width) Velocity = new PointF(-Velocity.X, Velocity.Y);
if (Position.Y < 0 || Position.Y > height) Velocity = new PointF(Velocity.X, -Velocity.Y); if (Position.Y < 0 || Position.Y > height) Velocity = new PointF(Velocity.X, -Velocity.Y);
} }
@ -71,11 +71,11 @@ namespace Covid
public Form1() public Form1()
{ {
InitializeComponent(); // Инициализация компонентов формы InitializeComponent(); // Инициализация компонентов формы
this.BackColor = Color.Black; // Установка фона формы this.BackColor = Color.Black; // Установка фона формы
this.ForeColor = Color.White; // Установка цвета текста this.ForeColor = Color.White; // Установка цвета текста
// Инициализация PictureBox для графика // Инициализация PictureBox для графика
pictureBoxLeft = new PictureBox pictureBoxLeft = new PictureBox
{ {
Name = "pictureBoxLeft", Name = "pictureBoxLeft",
@ -84,10 +84,10 @@ namespace Covid
Location = new Point(10, 10), Location = new Point(10, 10),
BackColor = Color.Black BackColor = Color.Black
}; };
pictureBoxLeft.Paint += pictureBoxLeft_Paint; // Подписка на событие отрисовки pictureBoxLeft.Paint += pictureBoxLeft_Paint; // Подписка на событие отрисовки
this.Controls.Add(pictureBoxLeft); // Добавление PictureBox на форму this.Controls.Add(pictureBoxLeft); // Добавление PictureBox на форму
// Инициализация PictureBox для отображения людей // Инициализация PictureBox для отображения людей
pictureBoxRight = new PictureBox pictureBoxRight = new PictureBox
{ {
Name = "pictureBoxRight", Name = "pictureBoxRight",
@ -95,20 +95,20 @@ namespace Covid
Height = 400, Height = 400,
Location = new Point(420, 10), Location = new Point(420, 10),
BackColor = Color.Black, BackColor = Color.Black,
BorderStyle = BorderStyle.FixedSingle // Добавление белой границы BorderStyle = BorderStyle.FixedSingle // Добавление белой границы
}; };
pictureBoxRight.Paint += pictureBoxRight_Paint; // Подписка на событие отрисовки pictureBoxRight.Paint += pictureBoxRight_Paint; // Подписка на событие отрисовки
this.Controls.Add(pictureBoxRight); // Добавление PictureBox на форму this.Controls.Add(pictureBoxRight); // Добавление PictureBox на форму
// Создание населения // Создание населения
for (int i = 0; i < N; i++) for (int i = 0; i < N; i++)
{ {
float x = rand.Next(pictureBoxRight.Width); // Случайная позиция по X float x = rand.Next(pictureBoxRight.Width); // Случайная позиция по X
float y = rand.Next(pictureBoxRight.Height); // Случайная позиция по Y float y = rand.Next(pictureBoxRight.Height); // Случайная позиция по Y
population.Add(new Person(x, y)); // Добавление нового человека в популяцию population.Add(new Person(x, y)); // Добавление нового человека в популяцию
} }
// Установка начального состояния для нескольких инфицированных // Установка начального состояния для нескольких инфицированных
population[0].State = HealthState.Infected; population[0].State = HealthState.Infected;
population[1].State = HealthState.Infected; population[1].State = HealthState.Infected;
population[2].State = HealthState.Infected; population[2].State = HealthState.Infected;
@ -116,14 +116,14 @@ namespace Covid
population[4].State = HealthState.Infected; population[4].State = HealthState.Infected;
population[5].State = HealthState.Infected; population[5].State = HealthState.Infected;
timer.Interval = 200; // Установка интервала таймера timer.Interval = 200; // Установка интервала таймера
timer.Tick += Timer_Tick; // Подписка на событие таймера timer.Tick += Timer_Tick; // Подписка на событие таймера
timer.Start(); // Запуск таймера timer.Start(); // Запуск таймера
// Инициализация меток для отображения статистики // Инициализация меток для отображения статистики
labelRemoved = new Label(); labelRemoved = new Label();
labelRemoved.Name = "labelRemoved"; labelRemoved.Name = "labelRemoved";
labelRemoved.Text = "# Нейтрализованные случаи = 0"; labelRemoved.Text = "# Нейтрализованные случаи = 0";
labelRemoved.ForeColor = Color.LightGray; labelRemoved.ForeColor = Color.LightGray;
labelRemoved.BackColor = Color.Black; labelRemoved.BackColor = Color.Black;
labelRemoved.AutoSize = true; labelRemoved.AutoSize = true;
@ -131,7 +131,7 @@ namespace Covid
labelActive = new Label(); labelActive = new Label();
labelActive.Name = "labelActive"; labelActive.Name = "labelActive";
labelActive.Text = "# Активные случаи = 0"; labelActive.Text = "# Активные случаи = 0";
labelActive.ForeColor = Color.Red; labelActive.ForeColor = Color.Red;
labelActive.BackColor = Color.Black; labelActive.BackColor = Color.Black;
labelActive.AutoSize = true; labelActive.AutoSize = true;
@ -147,162 +147,162 @@ namespace Covid
labelDay = new Label(); labelDay = new Label();
labelDay.Name = "labelDay"; labelDay.Name = "labelDay";
labelDay.Text = "День: 0"; labelDay.Text = "День: 0";
labelDay.ForeColor = Color.White; labelDay.ForeColor = Color.White;
labelDay.BackColor = Color.Black; labelDay.BackColor = Color.Black;
labelDay.AutoSize = true; labelDay.AutoSize = true;
labelDay.Font = new Font(this.Font, FontStyle.Regular); labelDay.Font = new Font(this.Font, FontStyle.Regular);
// Расположение меток под PictureBox // Расположение меток под PictureBox
int spacing = 5; int spacing = 5;
labelRemoved.Location = new Point(pictureBoxRight.Left, pictureBoxRight.Bottom + spacing); labelRemoved.Location = new Point(pictureBoxRight.Left, pictureBoxRight.Bottom + spacing);
labelActive.Location = new Point(labelRemoved.Right + 20, pictureBoxRight.Bottom + spacing); labelActive.Location = new Point(labelRemoved.Right + 20, pictureBoxRight.Bottom + spacing);
labelR.Location = new Point(pictureBoxRight.Left, labelRemoved.Bottom + spacing + 5); labelR.Location = new Point(pictureBoxRight.Left, labelRemoved.Bottom + spacing + 5);
labelDay.Location = new Point(pictureBoxRight.Left + pictureBoxRight.Width / 2 - 30, labelRemoved.Bottom + spacing + 5); labelDay.Location = new Point(pictureBoxRight.Left + pictureBoxRight.Width / 2 - 30, labelRemoved.Bottom + spacing + 5);
// Добавление меток на форму // Добавление меток на форму
this.Controls.Add(labelRemoved); this.Controls.Add(labelRemoved);
this.Controls.Add(labelActive); this.Controls.Add(labelActive);
this.Controls.Add(labelR); this.Controls.Add(labelR);
this.Controls.Add(labelDay); this.Controls.Add(labelDay);
} }
private void Timer_Tick(object sender, EventArgs e) // Метод, вызываемый при каждом тике таймера private void Timer_Tick(object sender, EventArgs e) // Метод, вызываемый при каждом тике таймера
{ {
day++; // Увеличение дня day++; // Увеличение дня
newInfectionsThisDay = 0; // Сброс новых инфекций newInfectionsThisDay = 0; // Сброс новых инфекций
// Перемещение всех людей // Перемещение всех людей
foreach (var p in population) foreach (var p in population)
p.Move(pictureBoxRight.Width, pictureBoxRight.Height); p.Move(pictureBoxRight.Width, pictureBoxRight.Height);
// Обработка инфицированных людей // Обработка инфицированных людей
foreach (var p in population.Where(p => p.State == HealthState.Infected).ToList()) foreach (var p in population.Where(p => p.State == HealthState.Infected).ToList())
{ {
p.DaysInfected++; // Увеличение количества дней инфицирования p.DaysInfected++; // Увеличение количества дней инфицирования
if (p.DaysInfected >= DiseaseTime) // Проверка, достиг ли человек летального исхода if (p.DaysInfected >= DiseaseTime) // Проверка, достиг ли человек летального исхода
{ {
if (rand.NextDouble() < MortalityRate) // Проверка на смерть человека if (rand.NextDouble() < MortalityRate) // Проверка на смерть человека
p.State = HealthState.Dead; p.State = HealthState.Dead;
else else
p.State = HealthState.Recovered; // Изменение состояния на "вылеченный" p.State = HealthState.Recovered; // Изменение состояния на "вылеченный"
} }
} }
InfectNearby(); // Используем метод заражения рядом окружающих людей InfectNearby(); // Используем метод заражения рядом окружающих людей
// Подсчет статистики // Подсчет статистики
int sCount = population.Count(p => p.State == HealthState.Susceptible); int sCount = population.Count(p => p.State == HealthState.Susceptible);
int iCount = population.Count(p => p.State == HealthState.Infected); int iCount = population.Count(p => p.State == HealthState.Infected);
int rCount = population.Count(p => p.State == HealthState.Recovered); int rCount = population.Count(p => p.State == HealthState.Recovered);
int dCount = population.Count(p => p.State == HealthState.Dead); int dCount = population.Count(p => p.State == HealthState.Dead);
// Сохранение истории // Сохранение истории
historyS.Add(sCount); historyS.Add(sCount);
historyI.Add(iCount); historyI.Add(iCount);
historyR.Add(rCount); historyR.Add(rCount);
historyD.Add(dCount); historyD.Add(dCount);
// Обновление R // Обновление R
float R = infectedCountPreviousDay > 0 ? (float) newInfectionsThisDay / infectedCountPreviousDay : 0f; float R = infectedCountPreviousDay > 0 ? (float) newInfectionsThisDay / infectedCountPreviousDay : 0f;
infectedCountPreviousDay = iCount; // Обновление количества инфицированных на предыдущий день infectedCountPreviousDay = iCount; // Обновление количества инфицированных на предыдущий день
// Обновление Tag для отрисовки // Обновление Tag для отрисовки
pictureBoxRight.Tag = new { Active = iCount, Removed = rCount + dCount, R = R, Day = day }; pictureBoxRight.Tag = new { Active = iCount, Removed = rCount + dCount, R = R, Day = day };
// Обновление текста меток // Обновление текста меток
labelRemoved.Text = $"# Нейтрализованные случаи = {rCount + dCount}"; labelRemoved.Text = $"# Нейтрализованные случаи = {rCount + dCount}";
labelActive.Text = $"# Активные случаи = {iCount}"; labelActive.Text = $"# Активные случаи = {iCount}";
labelR.Text = $"R = {R:F2}"; labelR.Text = $"R = {R:F2}";
labelDay.Text = $"День: {day}"; labelDay.Text = $"День: {day}";
pictureBoxLeft.Invalidate(); // Перерисовка левого PictureBox pictureBoxLeft.Invalidate(); // Перерисовка левого PictureBox
pictureBoxRight.Invalidate(); // Перерисовка правого PictureBox pictureBoxRight.Invalidate(); // Перерисовка правого PictureBox
} }
private void InfectNearby() // Метод для заражения соседей private void InfectNearby() // Метод для заражения соседей
{ {
var infected = population.Where(p => p.State == HealthState.Infected).ToList(); // Список инфицированных var infected = population.Where(p => p.State == HealthState.Infected).ToList(); // Список инфицированных
var susceptible = population.Where(p => p.State == HealthState.Susceptible).ToList(); // Список уязвимых var susceptible = population.Where(p => p.State == HealthState.Susceptible).ToList(); // Список уязвимых
// Проверка расстояния между инфицированными и уязвимыми // Проверка расстояния между инфицированными и уязвимыми
foreach (var inf in infected) foreach (var inf in infected)
{ {
foreach (var sus in susceptible) foreach (var sus in susceptible)
{ {
float dist = Distance(inf.Position, sus.Position); // Вычисление расстояния float dist = Distance(inf.Position, sus.Position); // Вычисление расстояния
if (dist < InfectionRadius) // Если в пределах радиуса инфекции if (dist < InfectionRadius) // Если в пределах радиуса инфекции
{ {
if (rand.NextDouble() < ContagionProbability) // Проверка на заражение if (rand.NextDouble() < ContagionProbability) // Проверка на заражение
{ {
sus.State = HealthState.Infected; // Изменение состояния на инфицированный sus.State = HealthState.Infected; // Изменение состояния на инфицированный
newInfectionsThisDay++; // Увеличение счетчика новых инфекций newInfectionsThisDay++; // Увеличение счетчика новых инфекций
} }
} }
} }
} }
} }
private float Distance(PointF a, PointF b) // Метод для вычисления расстояния между двумя точками private float Distance(PointF a, PointF b) // Метод для вычисления расстояния между двумя точками
{ {
float dx = a.X - b.X; // Разность по X float dx = a.X - b.X; // Разность по X
float dy = a.Y - b.Y; // Разность по Y float dy = a.Y - b.Y; // Разность по Y
return (float)Math.Sqrt(dx * dx + dy * dy); // Возвращение расстояния return (float)Math.Sqrt(dx * dx + dy * dy); // Возвращение расстояния
} }
private void pictureBoxLeft_Paint(object sender, PaintEventArgs e) // Метод для отрисовки графика private void pictureBoxLeft_Paint(object sender, PaintEventArgs e) // Метод для отрисовки графика
{ {
Graphics g = e.Graphics; Graphics g = e.Graphics;
g.Clear(Color.Black); // Очистка фона g.Clear(Color.Black); // Очистка фона
if (historyS.Count < 2) return; // Если недостаточно данных для отрисовки if (historyS.Count < 2) return; // Если недостаточно данных для отрисовки
int w = pictureBoxLeft.Width; // Ширина PictureBox int w = pictureBoxLeft.Width; // Ширина PictureBox
int h = pictureBoxLeft.Height; // Высота PictureBox int h = pictureBoxLeft.Height; // Высота PictureBox
int maxY = population.Count; // Максимальное значение по Y int maxY = population.Count; // Максимальное значение по Y
Pen axisPen = Pens.White; // Перо для осей Pen axisPen = Pens.White; // Перо для осей
g.DrawLine(axisPen, 40, 10, 40, h - 30); // Вертикальная ось g.DrawLine(axisPen, 40, 10, 40, h - 30); // Вертикальная ось
g.DrawLine(axisPen, 40, h - 30, w - 10, h - 30); // Горизонтальная ось g.DrawLine(axisPen, 40, h - 30, w - 10, h - 30); // Горизонтальная ось
// Отрисовка линий графика для различных состояний // Отрисовка линий графика для различных состояний
DrawGraphLine(g, historyS, maxY, Color.Cyan, 40, h - 30, w - 50, h - 40); DrawGraphLine(g, historyS, maxY, Color.Cyan, 40, h - 30, w - 50, h - 40);
DrawGraphLine(g, historyI, maxY, Color.Red, 40, h - 30, w - 50, h - 40); DrawGraphLine(g, historyI, maxY, Color.Red, 40, h - 30, w - 50, h - 40);
DrawGraphLine(g, historyR, maxY, Color.Green, 40, h - 30, w - 50, h - 40); DrawGraphLine(g, historyR, maxY, Color.Green, 40, h - 30, w - 50, h - 40);
DrawGraphLine(g, historyD, maxY, Color.Gray, 40, h - 30, w - 50, h - 40); DrawGraphLine(g, historyD, maxY, Color.Gray, 40, h - 30, w - 50, h - 40);
// Подписи для графика // Подписи для графика
g.DrawString("Уязвимые", this.Font, Brushes.Cyan, w - 130, 20); g.DrawString("Уязвимые", this.Font, Brushes.Cyan, w - 130, 20);
g.DrawString("Инфицированные", this.Font, Brushes.Red, w - 130, 40); g.DrawString("Инфицированные", this.Font, Brushes.Red, w - 130, 40);
g.DrawString("Вылеченные", this.Font, Brushes.Green, w - 130, 60); g.DrawString("Вылеченные", this.Font, Brushes.Green, w - 130, 60);
g.DrawString("Погибшие", this.Font, Brushes.Gray, w - 130, 80); g.DrawString("Погибшие", this.Font, Brushes.Gray, w - 130, 80);
} }
private void DrawGraphLine(Graphics g, List<int> data, int maxY, Color color, int x0, int y0, int width, int height) // Метод для отрисовки линии графика private void DrawGraphLine(Graphics g, List<int> data, int maxY, Color color, int x0, int y0, int width, int height) // Метод для отрисовки линии графика
{ {
if (data.Count < 2) return; // Если недостаточно данных для отрисовки if (data.Count < 2) return; // Если недостаточно данных для отрисовки
Pen pen = new Pen(color, 2); // Перо для линии Pen pen = new Pen(color, 2); // Перо для линии
int count = data.Count; // Количество точек int count = data.Count; // Количество точек
float xStep = (float)width / (count - 1); // Шаг по X float xStep = (float)width / (count - 1); // Шаг по X
PointF[] points = new PointF[count]; // Массив точек для линии PointF[] points = new PointF[count]; // Массив точек для линии
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
float x = x0 + i * xStep; // Вычисление координаты X float x = x0 + i * xStep; // Вычисление координаты X
float y = y0 - (data[i] / (float)maxY) * height; // Вычисление координаты Y float y = y0 - (data[i] / (float)maxY) * height; // Вычисление координаты Y
points[i] = new PointF(x, y); // Добавление точки в массив points[i] = new PointF(x, y); // Добавление точки в массив
} }
g.DrawLines(pen, points); // Отрисовка линии g.DrawLines(pen, points); // Отрисовка линии
} }
private void pictureBoxRight_Paint(object sender, PaintEventArgs e) // Метод для отрисовки людей private void pictureBoxRight_Paint(object sender, PaintEventArgs e) // Метод для отрисовки людей
{ {
Graphics g = e.Graphics; Graphics g = e.Graphics;
g.Clear(Color.Black); // Очистка фона g.Clear(Color.Black); // Очистка фона
// Отрисовка каждого человека в зависимости от его состояния // Отрисовка каждого человека в зависимости от его состояния
foreach (var p in population) foreach (var p in population)
{ {
Color c = p.State switch Color c = p.State switch
@ -313,7 +313,7 @@ namespace Covid
HealthState.Dead => Color.Gray, HealthState.Dead => Color.Gray,
_ => Color.White _ => Color.White
}; };
g.FillEllipse(new SolidBrush(c), p.Position.X, p.Position.Y, 5, 5); // Отрисовка человека g.FillEllipse(new SolidBrush(c), p.Position.X, p.Position.Y, 5, 5); // Отрисовка человека
} }
} }
} }

View File

@ -14,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Covid")] [assembly: System.Reflection.AssemblyCompanyAttribute("Covid")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c4b6f37f94da0dd94f125b72795dc574ea0de202")]
[assembly: System.Reflection.AssemblyProductAttribute("Covid")] [assembly: System.Reflection.AssemblyProductAttribute("Covid")]
[assembly: System.Reflection.AssemblyTitleAttribute("Covid")] [assembly: System.Reflection.AssemblyTitleAttribute("Covid")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@ -1 +1 @@
791c09cd43fa4cea4c5a0aea34bd9a64d9a3d91a582e44ce4a8ba2b8f54cb8e8 760fc87965472c3c0c9a35e2c992cbab439a47f5b4066ff26223e957d90ede06