From c40a839791dd59fb174d2872a547e5135a708e0d Mon Sep 17 00:00:00 2001 From: Eternal-code-maker Date: Sun, 4 Oct 2026 11:54:00 -0400 Subject: [PATCH 1/4] final --- .idea/.gitignore | 15 +++++++++++++++ .idea/encodings.xml | 4 ++++ .idea/indexLayout.xml | 8 ++++++++ .idea/vcs.xml | 7 +++++++ 4 files changed, 34 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/encodings.xml create mode 100644 .idea/indexLayout.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..4ed7e6c9 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,15 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Rider ignored files +/modules.xml +/contentModel.xml +/projectSettingsUpdater.xml +/.idea.CodeReviews.Console.MathGame.iml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 00000000..df87cf95 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/indexLayout.xml b/.idea/indexLayout.xml new file mode 100644 index 00000000..7b08163c --- /dev/null +++ b/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..48ff548d --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file From 5ed4a40cbe8e9ff6412af2d47914f48345d4ffc5 Mon Sep 17 00:00:00 2001 From: Eternal-code-maker Date: Sun, 4 Oct 2026 12:03:17 -0400 Subject: [PATCH 2/4] this --- .idea/vcs.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 48ff548d..94a25f7f 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -2,6 +2,5 @@ - \ No newline at end of file From a7d1f1519b0bd5741b1926b163bb869181516c86 Mon Sep 17 00:00:00 2001 From: Eternal-code-maker Date: Sun, 4 Oct 2026 12:06:42 -0400 Subject: [PATCH 3/4] final --- .../.idea.CSharpMathGame/.idea/.gitignore | 0 .../.idea.CSharpMathGame/.idea/encodings.xml | 4 + .../.idea/indexLayout.xml | 8 + .../.idea/projectSettingsUpdater.xml | 8 + .../.idea.CSharpMathGame/.idea/workspace.xml | 162 ++++++++++++ CSharpMathGame/CSharpMathGame.csproj | 10 + CSharpMathGame/CSharpMathGame.sln | 16 ++ CSharpMathGame/Program.cs | 233 ++++++++++++++++++ 8 files changed, 441 insertions(+) create mode 100644 CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/.gitignore create mode 100644 CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/encodings.xml create mode 100644 CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/indexLayout.xml create mode 100644 CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/projectSettingsUpdater.xml create mode 100644 CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/workspace.xml create mode 100644 CSharpMathGame/CSharpMathGame.csproj create mode 100644 CSharpMathGame/CSharpMathGame.sln create mode 100644 CSharpMathGame/Program.cs diff --git a/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/.gitignore b/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/encodings.xml b/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/encodings.xml new file mode 100644 index 00000000..df87cf95 --- /dev/null +++ b/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/indexLayout.xml b/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/indexLayout.xml new file mode 100644 index 00000000..7b08163c --- /dev/null +++ b/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/projectSettingsUpdater.xml b/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/projectSettingsUpdater.xml new file mode 100644 index 00000000..ef20cb08 --- /dev/null +++ b/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/projectSettingsUpdater.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/workspace.xml b/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/workspace.xml new file mode 100644 index 00000000..833c36b6 --- /dev/null +++ b/CSharpMathGame/.idea/.idea.CSharpMathGame/.idea/workspace.xml @@ -0,0 +1,162 @@ + + + + CSharpMathGame.csproj + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + "associatedIndex": 7, + "fromUser": false +} + + + + { + "keyToString": { + "ModuleVcsDetector.initialDetectionPerformed": "true", + "RunOnceActivity.MCP Project settings loaded": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.cidr.known.project.marker": "true", + "RunOnceActivity.readMode.enableVisualFormatting": "true", + "RunOnceActivity.typescript.service.memoryLimit.init": "true", + "cidr.known.project.marker": "true", + "codeWithMe.voiceChat.enabledByDefault": "false", + "com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true", + "junie.onboarding.icon.badge.shown": "true", + "nodejs_package_manager_path": "npm", + "to.speed.mode.migration.done": "true" + } +} + + + + + + + + 1791129897174 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CSharpMathGame/CSharpMathGame.csproj b/CSharpMathGame/CSharpMathGame.csproj new file mode 100644 index 00000000..6c1dc922 --- /dev/null +++ b/CSharpMathGame/CSharpMathGame.csproj @@ -0,0 +1,10 @@ + + + + Exe + net10.0 + enable + enable + + + diff --git a/CSharpMathGame/CSharpMathGame.sln b/CSharpMathGame/CSharpMathGame.sln new file mode 100644 index 00000000..efc4458b --- /dev/null +++ b/CSharpMathGame/CSharpMathGame.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpMathGame", "CSharpMathGame.csproj", "{E125FF75-3FA9-470D-B7D1-591B02733878}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E125FF75-3FA9-470D-B7D1-591B02733878}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E125FF75-3FA9-470D-B7D1-591B02733878}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E125FF75-3FA9-470D-B7D1-591B02733878}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E125FF75-3FA9-470D-B7D1-591B02733878}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/CSharpMathGame/Program.cs b/CSharpMathGame/Program.cs new file mode 100644 index 00000000..05f86acd --- /dev/null +++ b/CSharpMathGame/Program.cs @@ -0,0 +1,233 @@ +public class CSharpMathgame +{ + public static int d = 1; + private static string _dif = ""; + private static int _x = 0; + private static int _y = 0; + private static int _gameScore = 0; + private static List> _history = new List>(); + private static List _currentHistoryArray = new List(); + private static string _currentHistory = ""; + + public static void Main(string[] args) + { + Console.WriteLine("Would you like to play a math game?"); + var a = Console.ReadLine(); + if (a.ToLower() == "yes") + { + Game(); + } + else + { + Console.WriteLine("Goodbye!"); + } + } + + + private static void Game() + { + _gameScore = 0; + Difficulty(); + for (int i = 0; i < 5; i++) + { + _currentHistory = ""; + var temp = Values(); + Console.WriteLine($"What would you like to do: \nAddition \nSubtraction \nMultiplication \nDivison"); + string answer = Console.ReadLine(); + bool indicator = true; + while (indicator) + { + switch (answer.ToLower()) + { + case "addition": + Addition(temp[0], temp[1]); + indicator = false; + break; + case "subtraction": + Subtraction(temp[0], temp[1]); + indicator = false; + break; + case "multiplication": + Multiplication(temp[0], temp[1]); + indicator = false; + break; + case "division": + Division(temp[0], temp[1]); + indicator = false; + break; + default: + Console.WriteLine("Not Valid! Try again"); + answer = Console.ReadLine(); + break; + } + + } + } + + _history.Add(_currentHistoryArray); + Console.WriteLine($"Your final score is {_gameScore}."); + Console.WriteLine("Would you like to play again or Look at your history?"); + var b = Console.ReadLine(); + if (b.ToLower() == "history") + { + foreach (var item in _history) + { + foreach (var jtem in item) + { + Console.WriteLine(jtem); + } + } + + Console.WriteLine("Would you like to play again?"); + var c = Console.ReadLine(); + if (c.ToLower() == "yes") + { + Game(); + } + else + { + Console.WriteLine("Goodbye!"); + } + } + else + { + Console.WriteLine("Goodbye!"); + } + + } + + private static int[] Values() + { + Random random = new Random(); + if (_dif == "easy") + { + _x = random.Next(1, 100); + _y = random.Next(1, 100); + } + else if (_dif == "medium") + { + _x = random.Next(1, 1000); + _y = random.Next(1, 1000); + } + else + { + _x = random.Next(1, 10000); + _y = random.Next(1, 10000); + } + + return [_x, _y]; + } + + private static void Difficulty() + { + bool indicator = true; + while (indicator) + { + Console.WriteLine("What difficulty would you like to play in:\nEasy \nMedium \nHard"); + var answer = Console.ReadLine(); + switch (answer.ToLower()) + { + case "easy": + _dif = "easy"; + indicator = false; + break; + case "medium": + _dif = "medium"; + indicator = false; + break; + case "hard": + _dif = "hard"; + indicator = false; + break; + default: + Console.WriteLine("That difficulty doesn't work! Try again"); + break; + + } + } + + } + + private static void Multiplication(int f, int g) + { + Console.WriteLine($"What is {f} times {g}?"); + var answer = Convert.ToInt32(Console.ReadLine()); + if (answer == f * g) + { + _gameScore++; + Console.WriteLine($"Correct! Your score is {_gameScore}!"); + _currentHistory = $"Multiplication, Correct! Score: {_gameScore}!"; + _currentHistoryArray.Add(_currentHistory); + } + else + { + Console.WriteLine($"WRONG! The answer is: {f * g}. Your score is {_gameScore}!"); + _currentHistory = $"Multiplication, Wrong! Score: {_gameScore}!"; + _currentHistoryArray.Add(_currentHistory); + } + } + + private static void Division(int f, int g) + { + while (f % g != 0) + { + var temp = Values(); + g = temp[1]; + + } + + Console.WriteLine($"What is {f}/{g}?"); + var answer = Convert.ToInt32(Console.ReadLine()); + if (answer == f / g) + { + _gameScore++; + Console.WriteLine($"Correct! Your score is {_gameScore}!"); + _currentHistory = $"Division, Correct! Score: {_gameScore}!"; + _currentHistoryArray.Add(_currentHistory); + } + else + { + Console.WriteLine($"WRONG! The answer is: {f / g}. Your score is {_gameScore}!"); + _currentHistory = $"Division, Wrong! Score: {_gameScore}!"; + _currentHistoryArray.Add(_currentHistory); + } + } + + private static void Addition(int f, int g) + { + Console.WriteLine($"What is {f} + {g}?"); + var answer = Convert.ToInt32(Console.ReadLine()); + if (answer == f + g) + { + _gameScore++; + Console.WriteLine($"Correct! Your score is {_gameScore}!"); + _currentHistory = $"Addition, Correct! Score: {_gameScore}!"; + _currentHistoryArray.Add(_currentHistory); + } + else + { + Console.WriteLine($"WRONG! The answer is: {f + g}. Your score is {_gameScore}!"); + _currentHistory = $"Addition, Wrong! Score: {_gameScore}!"; + _currentHistoryArray.Add(_currentHistory); + } + } + + private static void Subtraction(int f, int g) + { + Console.WriteLine($"What is {f} - {g}?"); + var answer = Convert.ToInt32(Console.ReadLine()); + if (answer == f - g) + { + _gameScore++; + Console.WriteLine($"Correct! Your score is {_gameScore}!"); + _currentHistory = $"Subtraction, Correct! Score: {_gameScore}!"; + _currentHistoryArray.Add(_currentHistory); + } + else + { + Console.WriteLine($"WRONG! The answer is: {f - g}. Your score is {_gameScore}!"); + _currentHistory = $"Subtraction, Wrong! Score: {_gameScore}!"; + _currentHistoryArray.Add(_currentHistory); + } + } +} \ No newline at end of file From afafb27a3b9cdd2a5ff489fec8a21b01341d03dd Mon Sep 17 00:00:00 2001 From: Eternal-code-maker Date: Fri, 9 Oct 2026 19:39:43 -0400 Subject: [PATCH 4/4] Fixed --- CSharpMathGame/Program.cs | 325 +++++++++++++++++--------------------- 1 file changed, 148 insertions(+), 177 deletions(-) diff --git a/CSharpMathGame/Program.cs b/CSharpMathGame/Program.cs index 05f86acd..bc5cd823 100644 --- a/CSharpMathGame/Program.cs +++ b/CSharpMathGame/Program.cs @@ -1,233 +1,204 @@ -public class CSharpMathgame +using System.Net.Mail; +using System.Runtime.InteropServices.JavaScript; + +public class CSharpMathgame { - public static int d = 1; - private static string _dif = ""; - private static int _x = 0; - private static int _y = 0; private static int _gameScore = 0; - private static List> _history = new List>(); - private static List _currentHistoryArray = new List(); + private static List> _history = []; + private static List _currentHistoryArray = []; private static string _currentHistory = ""; + public static void Main(string[] args) { - Console.WriteLine("Would you like to play a math game?"); - var a = Console.ReadLine(); - if (a.ToLower() == "yes") - { - Game(); - } - else + Menu(); + } + + private static class Helpers + { + public static string ValidateResult(string input) { - Console.WriteLine("Goodbye!"); + while (!int.TryParse(input, out _)) + { + Console.WriteLine("Invalid input! Please enter a valid number:"); + input = Console.ReadLine(); + } + + return input; } } - private static void Game() + private enum MathOperation { - _gameScore = 0; - Difficulty(); - for (int i = 0; i < 5; i++) + addition, + subtraction, + division, + multiplication + } + + + public static int Reroll(string symbol,string diff, int x, int y) + { + Random random = new Random(); + if (symbol == "/") { - _currentHistory = ""; - var temp = Values(); - Console.WriteLine($"What would you like to do: \nAddition \nSubtraction \nMultiplication \nDivison"); - string answer = Console.ReadLine(); - bool indicator = true; - while (indicator) + while (x%y != 0) { - switch (answer.ToLower()) + switch (diff) { - case "addition": - Addition(temp[0], temp[1]); - indicator = false; - break; - case "subtraction": - Subtraction(temp[0], temp[1]); - indicator = false; + case "Easy": + + y = random.Next(1, 10); break; - case "multiplication": - Multiplication(temp[0], temp[1]); - indicator = false; - break; - case "division": - Division(temp[0], temp[1]); - indicator = false; + case "Medium": + y = random.Next(1, 100); break; default: - Console.WriteLine("Not Valid! Try again"); - answer = Console.ReadLine(); + y = random.Next(1, 1000); break; } - } + } + return y; + } - _history.Add(_currentHistoryArray); - Console.WriteLine($"Your final score is {_gameScore}."); - Console.WriteLine("Would you like to play again or Look at your history?"); - var b = Console.ReadLine(); - if (b.ToLower() == "history") - { - foreach (var item in _history) + public static void Menu() + { + Console.WriteLine("Play"); + Console.WriteLine("History"); + Console.WriteLine("Quit"); + var a = Console.ReadLine(); + switch (a) { - foreach (var jtem in item) - { - Console.WriteLine(jtem); - } - } + case "Play": + Game(); + break; - Console.WriteLine("Would you like to play again?"); - var c = Console.ReadLine(); - if (c.ToLower() == "yes") - { - Game(); - } - else - { - Console.WriteLine("Goodbye!"); - } - } - else - { - Console.WriteLine("Goodbye!"); - } + case "History": + History(); + break; - } + case "Quit": + Console.WriteLine("Goodbye!"); + break; - private static int[] Values() - { - Random random = new Random(); - if (_dif == "easy") - { - _x = random.Next(1, 100); - _y = random.Next(1, 100); - } - else if (_dif == "medium") - { - _x = random.Next(1, 1000); - _y = random.Next(1, 1000); - } - else - { - _x = random.Next(1, 10000); - _y = random.Next(1, 10000); + default: + throw new ArgumentException("GoodBye!"); + } } + - return [_x, _y]; - } - - private static void Difficulty() + private static void Game() { - bool indicator = true; - while (indicator) + + _gameScore = 0; + Random random = new Random(); + Console.WriteLine("\nWhat difficulty would you like to play in:\nEasy \nMedium \nHard"); + var d = Console.ReadLine(); + int x; + int y; + for (var i = 0; i < 5; i++) { - Console.WriteLine("What difficulty would you like to play in:\nEasy \nMedium \nHard"); - var answer = Console.ReadLine(); - switch (answer.ToLower()) + switch (d) { - case "easy": - _dif = "easy"; - indicator = false; + case "Easy": + x = random.Next(1, 10); + y = random.Next(1, 10); break; - case "medium": - _dif = "medium"; - indicator = false; + case "Medium": + x = random.Next(1, 100); + y = random.Next(1, 100); break; - case "hard": - _dif = "hard"; - indicator = false; + case "Hard": + x = random.Next(1, 1000); + y = random.Next(1, 1000); break; default: - Console.WriteLine("That difficulty doesn't work! Try again"); - break; - + throw new ArgumentException("Not an Difficulty"); + } + _currentHistory = ""; + int firstNumber = x; + int secondNumber = y; + Console.WriteLine($"\nWhat would you like to do: \nAddition \nSubtraction \nMultiplication \nDivision\n"); + var answer = Console.ReadLine(); + MathOperation l = Enum.Parse(answer.ToLower()); + string operatorSymbol = l switch + { + MathOperation.addition => "+", + MathOperation.subtraction => "-", + MathOperation.multiplication => "*", + MathOperation.division => "/", + _ => throw new ArgumentException("Invalid operation") + }; + secondNumber = Reroll(operatorSymbol, d, firstNumber, secondNumber); + + Console.WriteLine($"What is {firstNumber} {operatorSymbol} {secondNumber}?"); + var result = Console.ReadLine(); + result = Helpers.ValidateResult(result); + + int correctAnswer = l switch + { + MathOperation.addition => firstNumber + secondNumber, + MathOperation.subtraction => firstNumber - secondNumber, + MathOperation.multiplication => firstNumber * secondNumber, + MathOperation.division => firstNumber / secondNumber, + _ => throw new ArgumentException("Invalid operation") + }; + + if (int.Parse(result) == correctAnswer) + { + Console.WriteLine("Your answer was correct!"); + _gameScore++; + _currentHistory = $"Correct, Score: {_gameScore}, Problem: {answer}."; + } + else + { + Console.WriteLine("Your answer wasn't correct!"); + _currentHistory = $"Wrong, Score: {_gameScore}, Problem: {answer}."; } - } - - } - private static void Multiplication(int f, int g) - { - Console.WriteLine($"What is {f} times {g}?"); - var answer = Convert.ToInt32(Console.ReadLine()); - if (answer == f * g) - { - _gameScore++; - Console.WriteLine($"Correct! Your score is {_gameScore}!"); - _currentHistory = $"Multiplication, Correct! Score: {_gameScore}!"; - _currentHistoryArray.Add(_currentHistory); - } - else - { - Console.WriteLine($"WRONG! The answer is: {f * g}. Your score is {_gameScore}!"); - _currentHistory = $"Multiplication, Wrong! Score: {_gameScore}!"; _currentHistoryArray.Add(_currentHistory); - } - } - - private static void Division(int f, int g) - { - while (f % g != 0) - { - var temp = Values(); - g = temp[1]; - - } - Console.WriteLine($"What is {f}/{g}?"); - var answer = Convert.ToInt32(Console.ReadLine()); - if (answer == f / g) - { - _gameScore++; - Console.WriteLine($"Correct! Your score is {_gameScore}!"); - _currentHistory = $"Division, Correct! Score: {_gameScore}!"; - _currentHistoryArray.Add(_currentHistory); } - else + _history.Add(_currentHistoryArray); + Console.WriteLine($"Your final score is {_gameScore}."); + Console.WriteLine("Would you like to the menu or play again?"); + var b = Console.ReadLine(); + if (b.ToLower() == "menu") { - Console.WriteLine($"WRONG! The answer is: {f / g}. Your score is {_gameScore}!"); - _currentHistory = $"Division, Wrong! Score: {_gameScore}!"; - _currentHistoryArray.Add(_currentHistory); + Menu(); } - } - - private static void Addition(int f, int g) - { - Console.WriteLine($"What is {f} + {g}?"); - var answer = Convert.ToInt32(Console.ReadLine()); - if (answer == f + g) + else if (b.ToLower() == "play") { - _gameScore++; - Console.WriteLine($"Correct! Your score is {_gameScore}!"); - _currentHistory = $"Addition, Correct! Score: {_gameScore}!"; - _currentHistoryArray.Add(_currentHistory); + Game(); } else { - Console.WriteLine($"WRONG! The answer is: {f + g}. Your score is {_gameScore}!"); - _currentHistory = $"Addition, Wrong! Score: {_gameScore}!"; - _currentHistoryArray.Add(_currentHistory); + Console.WriteLine("Goodbye!"); } - } - private static void Subtraction(int f, int g) + } + + private static void History() { - Console.WriteLine($"What is {f} - {g}?"); - var answer = Convert.ToInt32(Console.ReadLine()); - if (answer == f - g) + foreach (var item in _history) { - _gameScore++; - Console.WriteLine($"Correct! Your score is {_gameScore}!"); - _currentHistory = $"Subtraction, Correct! Score: {_gameScore}!"; - _currentHistoryArray.Add(_currentHistory); + foreach (var jtem in item) + { + Console.WriteLine(jtem); + } } - else + Console.WriteLine("\nType 1 to go back to Menu"); + string a = Console.ReadLine(); + switch (a) { - Console.WriteLine($"WRONG! The answer is: {f - g}. Your score is {_gameScore}!"); - _currentHistory = $"Subtraction, Wrong! Score: {_gameScore}!"; - _currentHistoryArray.Add(_currentHistory); + case "1": + Menu(); + break; + default: + throw new ArgumentException("Nope"); } } } \ No newline at end of file