From 76fb4659cb5503f178485bd7731277bd676324b1 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Tue, 7 Feb 2017 20:01:44 +0100 Subject: [PATCH 01/19] Replace NUnit with xUnit --- .gitignore | 4 +- build.fsx | 20 +- circle.yml | 6 +- exercises/accumulate/AccumulateTest.cs | 43 ++- exercises/acronym/AcronymTest.cs | 37 ++- exercises/acronym/Example.cs | 25 +- exercises/all-your-base/AllYourBaseTest.cs | 81 +++--- exercises/allergies/AllergiesTest.cs | 68 ++--- exercises/alphametics/AlphameticsTest.cs | 42 ++- exercises/alphametics/Example.cs | 7 +- exercises/anagram/AnagramTest.cs | 47 ++-- exercises/atbash-cipher/AtbashTest.cs | 22 +- exercises/bank-account/BankAccountTest.cs | 32 +-- exercises/beer-song/BeerTest.cs | 24 +- .../BinarySearchTreeTest.cs | 64 ++--- exercises/binary-search/BinarySearchTest.cs | 47 ++-- exercises/bob/BobTest.cs | 92 +++---- exercises/book-store/BookStoreTest.cs | 62 ++--- exercises/bowling/BowlingTest.cs | 121 ++++----- exercises/bracket-push/BracketPushTest.cs | 61 ++--- exercises/change/ChangeTest.cs | 37 ++- .../circular-buffer/CircularBufferTest.cs | 79 +++--- exercises/clock/ClockTest.cs | 83 +++--- exercises/connect/ConnectTest.cs | 41 ++- exercises/crypto-square/CryptoSquareTest.cs | 82 +++--- exercises/custom-set/CustomSetTest.cs | 186 ++++++------- exercises/custom-set/Example.cs | 17 +- exercises/diamond/DiamondTest.cs | 61 +++-- .../DifferenceOfSquaresTest.cs | 57 ++-- exercises/diffie-hellman/DiffieHellmanTest.cs | 34 ++- exercises/dominoes/DominoesTest.cs | 81 +++--- exercises/dot-dsl/DotDslTest.cs | 70 ++--- exercises/error-handling/ErrorHandlingTest.cs | 28 +- exercises/etl/ETLTest.cs | 22 +- exercises/exercises.csproj | 246 +++++++++--------- exercises/exercises.sln | 22 ++ exercises/flatten-array/FlattenArrayTest.cs | 40 ++- exercises/food-chain/FoodChainTest.cs | 26 +- exercises/forth/ForthTest.cs | 98 +++---- exercises/gigasecond/GigasecondTest.cs | 17 +- exercises/go-counting/GoCountingTest.cs | 75 +++--- exercises/grade-school/Example.cs | 26 +- exercises/grade-school/GradeSchoolTest.cs | 62 ++--- exercises/grains/GrainsTest.cs | 42 ++- exercises/grep/GrepTest.cs | 141 +++++----- exercises/hamming/HammingTest.cs | 32 +-- exercises/hangman/HangmanTest.cs | 79 +++--- exercises/hello-world/HelloWorldTest.cs | 17 +- exercises/house/HouseTest.cs | 6 +- exercises/isogram/IsogramTest.cs | 28 +- .../KinderGartenGardenTest.cs | 61 ++--- .../LargestSeriesProductTest.cs | 79 +++--- exercises/leap/LeapTest.cs | 22 +- exercises/ledger/LedgerTest.cs | 42 +-- exercises/linked-list/LinkedListTest.cs | 69 ++--- exercises/list-ops/ListOpsTest.cs | 123 ++++----- exercises/luhn/LuhnTest.cs | 20 +- exercises/markdown/MarkdownTest.cs | 38 +-- exercises/matrix/MatrixTest.cs | 78 +++--- exercises/meetup/MeetupTest.cs | 122 ++++----- exercises/minesweeper/MinesweeperTest.cs | 37 ++- exercises/nth-prime/NthPrimeTest.cs | 29 ++- .../nucleotide-count/NucleotideCountTest.cs | 40 ++- exercises/ocr-numbers/OcrNumbersTest.cs | 76 +++--- exercises/paket.references | 4 +- .../palindrome-products/PalindromeTest.cs | 57 ++-- exercises/pangram/PangramTest.cs | 52 ++-- .../ParallelLetterFrequencyTest.cs | 41 ++- .../pascals-triangle/PascalsTriangleTest.cs | 68 +++-- .../perfect-numbers/PerfectNumbersTest.cs | 30 ++- exercises/phone-number/PhoneNumberTest.cs | 37 ++- exercises/pig-latin/PigLatinTest.cs | 77 +++--- exercises/poker/PokerTest.cs | 101 +++---- exercises/pov/PovTest.cs | 54 ++-- exercises/prime-factors/PrimeFactorsTest.cs | 57 ++-- .../ProteinTranslationTest.cs | 72 ++--- exercises/proverb/ProverbTest.cs | 21 +- .../PythagoreanTripletTest.cs | 37 ++- exercises/queen-attack/QueenAttackTest.cs | 25 +- .../rail-fence-cipher/RailFenceCipherTest.cs | 31 +-- exercises/raindrops/RaindropsTest.cs | 58 ++--- exercises/react/ReactTest.cs | 54 ++-- exercises/rectangles/RectanglesTest.cs | 51 ++-- exercises/rna-transcription/ComplementTest.cs | 27 +- exercises/robot-name/RobotNameTest.cs | 30 +-- .../robot-simulator/RobotSimulatorTest.cs | 43 ++- exercises/roman-numerals/RomanNumeralsTest.cs | 46 ++-- .../RunLengthEncodingTest.cs | 36 ++- exercises/saddle-points/SaddlePointTest.cs | 26 +- exercises/say/Example.cs | 2 +- exercises/say/SayTest.cs | 82 +++--- .../scale-generator/ScaleGeneratorTest.cs | 71 +++-- exercises/scrabble-score/ScrabbleScoreTest.cs | 47 ++-- .../secret-handshake/SecretHandshakeTest.cs | 37 ++- exercises/series/SeriesTest.cs | 51 ++-- exercises/sgf-parsing/Example.cs | 12 +- exercises/sgf-parsing/SgfParsingTest.cs | 64 ++--- exercises/sieve/SieveTest.cs | 20 +- exercises/simple-cipher/SimpleCipherTest.cs | 119 ++++----- .../SimpleLinkedListTest.cs | 66 +++-- exercises/space-age/Example.cs | 36 +-- exercises/space-age/SpaceAgeTest.cs | 62 ++--- exercises/strain/StrainTest.cs | 62 ++--- exercises/sublist/SublistTest.cs | 91 +++---- .../sum-of-multiples/SumOfMultiplesTest.cs | 37 ++- exercises/tournament/TournamentTest.cs | 21 +- exercises/transpose/TransposeTest.cs | 51 ++-- exercises/tree-building/TreeBuildingTest.cs | 53 ++-- exercises/triangle/TriangleTest.cs | 67 ++--- exercises/twelve-days/TwelveDaysTest.cs | 80 +++--- exercises/two-bucket/TwoBucketTest.cs | 37 ++- .../VariableLengthQuantityTest.cs | 91 +++---- exercises/word-count/WordCountTest.cs | 57 ++-- exercises/word-search/WordSearchTest.cs | 60 ++--- exercises/wordy/WordyTest.cs | 83 +++--- exercises/zebra-puzzle/ZebraPuzzleTest.cs | 11 +- exercises/zipper/ZipperTest.cs | 41 ++- paket.dependencies | 5 +- paket.lock | 229 ++++++++++------ 119 files changed, 2908 insertions(+), 3548 deletions(-) create mode 100644 exercises/exercises.sln diff --git a/.gitignore b/.gitignore index 5e2dfe72fb..2edac62927 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,6 @@ build/ packages/ paket-files TestResult.xml -junit-results.xml \ No newline at end of file +junit-results.xml +exercises/obj/ +exercises/bin/ \ No newline at end of file diff --git a/build.fsx b/build.fsx index 3cfffc6e29..ff8ac8f94d 100644 --- a/build.fsx +++ b/build.fsx @@ -2,7 +2,7 @@ #r "./packages/FAKE/tools/FakeLib.dll" open Fake -open Fake.Testing.NUnit3 +open Fake.Testing.XUnit2 // Directories let buildDir = "./build/" @@ -11,7 +11,6 @@ let sourceDir = "./exercises/" // Files let solutionFile = buildDir @@ "/exercises.csproj" let compiledOutput = buildDir @@ "xcsharp.dll" -let nunitToJunitTransformFile = "./paket-files" @@ "nunit" @@ "nunit-transforms" @@ "nunit3-junit" @@ "nunit3-junit.xslt" // Targets Target "PrepareUnchanged" (fun _ -> @@ -28,7 +27,7 @@ Target "PrepareTests" (fun _ -> CleanDirs [buildDir] CopyDir buildDir sourceDir allFiles - let ignorePattern = "(\[Ignore\(\"Remove to run test\"\)]|, Ignore = \"Remove to run test case\")" + let ignorePattern = "Skip\s*=\s*\"Remove to run test\"" !! (buildDir @@ "**/*Test.cs") |> RegexReplaceInFilesWithEncoding ignorePattern "" System.Text.Encoding.UTF8 @@ -40,19 +39,8 @@ Target "BuildTests" (fun _ -> ) Target "Test" (fun _ -> - if getEnvironmentVarAsBool "APPVEYOR" then - [compiledOutput] - |> NUnit3 (fun p -> { p with - ShadowCopy = false - ToolPath = "nunit3-console.exe" }) - else if getEnvironmentVarAsBool "CIRCLECI" then - [compiledOutput] - |> NUnit3 (fun p -> { p with - ShadowCopy = false - ResultSpecs = [sprintf "junit-results.xml;transform=%s" nunitToJunitTransformFile] }) - else - [compiledOutput] - |> NUnit3 (fun p -> { p with ShadowCopy = false }) + [compiledOutput] + |> xUnit2 (fun p -> { p with ShadowCopy = false }) ) // Build order diff --git a/circle.yml b/circle.yml index a83b9814cb..44d5882948 100644 --- a/circle.yml +++ b/circle.yml @@ -9,8 +9,4 @@ dependencies: - sudo apt-get install mono-complete test: override: - - ./build.sh - post: - - mkdir -p $CIRCLE_TEST_REPORTS/junit/ - - sed -i '1 s/^\xef\xbb\xbf//' .*/junit-results.xml - - find . -type f -regex ".*/junit-results.xml" -exec cp {} $CIRCLE_TEST_REPORTS/junit/ \; \ No newline at end of file + - ./build.sh \ No newline at end of file diff --git a/exercises/accumulate/AccumulateTest.cs b/exercises/accumulate/AccumulateTest.cs index c424a87af5..f51ec956b2 100644 --- a/exercises/accumulate/AccumulateTest.cs +++ b/exercises/accumulate/AccumulateTest.cs @@ -1,38 +1,32 @@ using System; using System.Collections.Generic; using System.Linq; -using NUnit.Framework; +using Xunit; -[TestFixture] public class AccumulateTest { - [Test] + [Fact] public void Empty_accumulation_produces_empty_accumulation() { - Assert.That(new int[0].Accumulate(x => x * x), Is.EqualTo(new int[0])); + Assert.Equal(new int[0], new int[0].Accumulate(x => x * x)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Accumulate_squares() { - Assert.That(new[] { 1, 2, 3 }.Accumulate(x => x * x), Is.EqualTo(new[] { 1, 4, 9 })); + Assert.Equal(new[] { 1, 4, 9 }, new[] { 1, 2, 3 }.Accumulate(x => x * x)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Accumulate_upcases() { - Assert.That(new List { "hello", "world" }.Accumulate(x => x.ToUpper()), - Is.EqualTo(new List { "HELLO", "WORLD" })); + Assert.Equal(new List { "HELLO", "WORLD" }, new List { "hello", "world" }.Accumulate(x => x.ToUpper())); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Accumulate_reversed_strings() { - Assert.That("the quick brown fox etc".Split(' ').Accumulate(Reverse), - Is.EqualTo("eht kciuq nworb xof cte".Split(' '))); + Assert.Equal("eht kciuq nworb xof cte".Split(' '), "the quick brown fox etc".Split(' ').Accumulate(Reverse)); } private static string Reverse(string value) @@ -42,33 +36,28 @@ private static string Reverse(string value) return new string(array); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Accumulate_within_accumulate() { var actual = new[] { "a", "b", "c" }.Accumulate(c => string.Join(" ", new[] { "1", "2", "3" }.Accumulate(d => c + d))); - Assert.That(actual, Is.EqualTo(new[] { "a1 a2 a3", "b1 b2 b3", "c1 c2 c3" })); + Assert.Equal(new[] { "a1 a2 a3", "b1 b2 b3", "c1 c2 c3" }, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Accumulate_is_lazy() { var counter = 0; var accumulation = new[] { 1, 2, 3 }.Accumulate(x => x * counter++); - Assert.That(counter, Is.EqualTo(0)); + Assert.Equal(0, counter); accumulation.ToList(); - Assert.That(counter, Is.EqualTo(3)); + Assert.Equal(3, counter); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Accumulate_allows_different_return_type() { - Assert.That( - new[] { 1, 2, 3 }.Accumulate(x => x.ToString()), - Is.EqualTo(new[] { "1", "2", "3" })); + Assert.Equal(new[] { "1", "2", "3" }, new[] { 1, 2, 3 }.Accumulate(x => x.ToString())); } } \ No newline at end of file diff --git a/exercises/acronym/AcronymTest.cs b/exercises/acronym/AcronymTest.cs index 2aa04a84e5..3ebb91534f 100644 --- a/exercises/acronym/AcronymTest.cs +++ b/exercises/acronym/AcronymTest.cs @@ -1,25 +1,22 @@ -namespace Exercism -{ - using NUnit.Framework; +using Xunit; - [TestFixture] - public class AcronymTest +public class AcronymTest +{ + [Fact] + public void Empty_string_abbreviated_to_empty_string() { - [Test] - public void Empty_string_abbreviated_to_empty_string() - { - Assert.That(Acronym.Abbreviate(string.Empty), Is.EqualTo(string.Empty)); - } + Assert.Equal(string.Empty, Acronym.Abbreviate(string.Empty)); + } - [TestCase("Portable Network Graphics", ExpectedResult = "PNG", Ignore = "Remove to run test case")] - [TestCase("Ruby on Rails", ExpectedResult = "ROR", Ignore = "Remove to run test case")] - [TestCase("HyperText Markup Language", ExpectedResult = "HTML", Ignore = "Remove to run test case")] - [TestCase("First In, First Out", ExpectedResult = "FIFO", Ignore = "Remove to run test case")] - [TestCase("PHP: Hypertext Preprocessor", ExpectedResult = "PHP", Ignore = "Remove to run test case")] - [TestCase("Complementary metal-oxide semiconductor", ExpectedResult = "CMOS", Ignore = "Remove to run test case")] - public string Phrase_abbreviated_to_acronym(string phrase) - { - return Acronym.Abbreviate(phrase); - } + [Theory(Skip = "Remove to run test")] + [InlineData("Portable Network Graphics", "PNG")] + [InlineData("Ruby on Rails", "ROR")] + [InlineData("HyperText Markup Language", "HTML")] + [InlineData("First In, First Out", "FIFO")] + [InlineData("PHP: Hypertext Preprocessor", "PHP")] + [InlineData("Complementary metal-oxide semiconductor", "CMOS")] + public void Phrase_abbreviated_to_acronym(string phrase, string expected) + { + Assert.Equal(expected, Acronym.Abbreviate(phrase)); } } \ No newline at end of file diff --git a/exercises/acronym/Example.cs b/exercises/acronym/Example.cs index 1fe9b634cb..1bb25383b8 100644 --- a/exercises/acronym/Example.cs +++ b/exercises/acronym/Example.cs @@ -1,19 +1,16 @@ -namespace Exercism -{ - using System.Collections.Generic; - using System.Linq; - using System.Text.RegularExpressions; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; - public static class Acronym +public static class Acronym +{ + public static string Abbreviate(string phrase) { - public static string Abbreviate(string phrase) - { - return Words(phrase).Aggregate("", (abbr, word) => abbr + char.ToUpperInvariant(word[0])); - } + return Words(phrase).Aggregate("", (abbr, word) => abbr + char.ToUpperInvariant(word[0])); + } - private static IEnumerable Words(string phrase) - { - return Regex.Matches(phrase, "[A-Z]+[a-z]*|[a-z]+").Cast().Select(m => m.Value); - } + private static IEnumerable Words(string phrase) + { + return Regex.Matches(phrase, "[A-Z]+[a-z]*|[a-z]+").Cast().Select(m => m.Value); } } \ No newline at end of file diff --git a/exercises/all-your-base/AllYourBaseTest.cs b/exercises/all-your-base/AllYourBaseTest.cs index 21899bc84c..4347393e19 100644 --- a/exercises/all-your-base/AllYourBaseTest.cs +++ b/exercises/all-your-base/AllYourBaseTest.cs @@ -1,98 +1,89 @@ using System; -using NUnit.Framework; +using Xunit; -[TestFixture] public class AllYourBaseTest { - [Test] + [Fact] public void Single_bit_one_to_decimal() { const int inputBase = 2; var inputDigits = new [] { 1 }; const int outputBase = 10; var outputDigits = new [] { 1 }; - Assert.That(Base.Rebase(inputBase, inputDigits, outputBase), Is.EqualTo(outputDigits)); + Assert.Equal(outputDigits, Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Binary_to_single_decimal() { const int inputBase = 2; var inputDigits = new [] { 1, 0, 1 }; const int outputBase = 10; var outputDigits = new [] { 5 }; - Assert.That(Base.Rebase(inputBase, inputDigits, outputBase), Is.EqualTo(outputDigits)); + Assert.Equal(outputDigits, Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Single_decimal_to_binary() { const int inputBase = 10; var inputDigits = new [] { 5 }; const int outputBase = 2; var outputDigits = new [] { 1, 0, 1 }; - Assert.That(Base.Rebase(inputBase, inputDigits, outputBase), Is.EqualTo(outputDigits)); + Assert.Equal(outputDigits, Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Binary_to_multiple_decimal() { const int inputBase = 2; var inputDigits = new [] { 1, 0, 1, 0, 1, 0 }; const int outputBase = 10; var outputDigits = new [] { 4, 2 }; - Assert.That(Base.Rebase(inputBase, inputDigits, outputBase), Is.EqualTo(outputDigits)); + Assert.Equal(outputDigits, Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Decimal_to_binary() { const int inputBase = 10; var inputDigits = new [] { 4, 2 }; const int outputBase = 2; var outputDigits = new [] { 1, 0, 1, 0, 1, 0 }; - Assert.That(Base.Rebase(inputBase, inputDigits, outputBase), Is.EqualTo(outputDigits)); + Assert.Equal(outputDigits, Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Trinary_to_hexadecimal() { const int inputBase = 3; var inputDigits = new [] { 1, 1, 2, 0 }; const int outputBase = 16; var outputDigits = new [] { 2, 10 }; - Assert.That(Base.Rebase(inputBase, inputDigits, outputBase), Is.EqualTo(outputDigits)); + Assert.Equal(outputDigits, Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Hexadecimal_to_trinary() { const int inputBase = 16; var inputDigits = new [] { 2, 10 }; const int outputBase = 3; var outputDigits = new [] { 1, 1, 2, 0 }; - Assert.That(Base.Rebase(inputBase, inputDigits, outputBase), Is.EqualTo(outputDigits)); + Assert.Equal(outputDigits, Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Using_15_bit_integer() { const int inputBase = 97; var inputDigits = new [] { 3, 46, 60 }; const int outputBase = 73; var outputDigits = new [] { 6, 10, 45 }; - Assert.That(Base.Rebase(inputBase, inputDigits, outputBase), Is.EqualTo(outputDigits)); + Assert.Equal(outputDigits, Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_array() { const int inputBase = 2; @@ -101,8 +92,7 @@ public void Empty_array() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Single_zero() { const int inputBase = 10; @@ -111,8 +101,7 @@ public void Single_zero() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_zeros() { const int inputBase = 10; @@ -121,8 +110,7 @@ public void Multiple_zeros() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Leading_zeros() { const int inputBase = 7; @@ -131,8 +119,7 @@ public void Leading_zeros() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Negative_digit() { const int inputBase = 2; @@ -141,8 +128,7 @@ public void Negative_digit() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Invalid_positive_digit() { const int inputBase = 2; @@ -151,8 +137,7 @@ public void Invalid_positive_digit() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void First_base_is_one() { const int inputBase = 1; @@ -161,8 +146,7 @@ public void First_base_is_one() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Second_base_is_one() { const int inputBase = 2; @@ -171,8 +155,7 @@ public void Second_base_is_one() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void First_base_is_zero() { const int inputBase = 0; @@ -181,8 +164,7 @@ public void First_base_is_zero() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Second_base_is_zero() { const int inputBase = 10; @@ -191,8 +173,7 @@ public void Second_base_is_zero() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void First_base_is_negative() { const int inputBase = -2; @@ -201,8 +182,7 @@ public void First_base_is_negative() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Second_base_is_negative() { const int inputBase = 2; @@ -211,8 +191,7 @@ public void Second_base_is_negative() Assert.Throws(() => Base.Rebase(inputBase, inputDigits, outputBase)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Both_bases_are_negative() { const int inputBase = -2; diff --git a/exercises/allergies/AllergiesTest.cs b/exercises/allergies/AllergiesTest.cs index 98c3284e36..7f1cde649d 100644 --- a/exercises/allergies/AllergiesTest.cs +++ b/exercises/allergies/AllergiesTest.cs @@ -1,84 +1,73 @@ using System.Collections.Generic; -using NUnit.Framework; +using Xunit; -[TestFixture] public class AllergiesTest { - [Test] + [Fact] public void No_allergies_means_not_allergic() { var allergies = new Allergies(0); - Assert.That(allergies.AllergicTo("peanuts"), Is.False); - Assert.That(allergies.AllergicTo("cats"), Is.False); - Assert.That(allergies.AllergicTo("strawberries"), Is.False); + Assert.False(allergies.AllergicTo("peanuts")); + Assert.False(allergies.AllergicTo("cats")); + Assert.False(allergies.AllergicTo("strawberries")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Allergic_to_eggs() { var allergies = new Allergies(1); - Assert.That(allergies.AllergicTo("eggs"), Is.True); + Assert.True(allergies.AllergicTo("eggs")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Allergic_to_eggs_in_addition_to_other_stuff() { var allergies = new Allergies(5); - Assert.That(allergies.AllergicTo("eggs"), Is.True); - Assert.That(allergies.AllergicTo("shellfish"), Is.True); - Assert.That(allergies.AllergicTo("strawberries"), Is.False); + Assert.True(allergies.AllergicTo("eggs")); + Assert.True(allergies.AllergicTo("shellfish")); + Assert.False(allergies.AllergicTo("strawberries")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void No_allergies_at_all() { var allergies = new Allergies(0); - Assert.That(allergies.List(), Is.Empty); + Assert.Empty(allergies.List()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Allergic_to_just_eggs() { var allergies = new Allergies(1); - Assert.That(allergies.List(), Is.EqualTo(new List { "eggs" })); + Assert.Equal(new List { "eggs" }, allergies.List()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Allergic_to_just_peanuts() { var allergies = new Allergies(2); - Assert.That(allergies.List(), Is.EqualTo(new List { "peanuts" })); + Assert.Equal(new List { "peanuts" }, allergies.List()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Allergic_to_eggs_and_peanuts() { var allergies = new Allergies(3); - Assert.That(allergies.List(), Is.EqualTo(new List { "eggs", "peanuts" })); + Assert.Equal(new List { "eggs", "peanuts" }, allergies.List()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Allergic_to_lots_of_stuff() { var allergies = new Allergies(248); - Assert.That(allergies.List(), - Is.EqualTo(new List { "strawberries", "tomatoes", "chocolate", "pollen", "cats" })); + Assert.Equal(new List { "strawberries", "tomatoes", "chocolate", "pollen", "cats" }, allergies.List()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Allergic_to_everything() { var allergies = new Allergies(255); - Assert.That(allergies.List(), - Is.EqualTo(new List + Assert.Equal(new List { "eggs", "peanuts", @@ -88,16 +77,15 @@ public void Allergic_to_everything() "chocolate", "pollen", "cats" - })); + }, + allergies.List()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Ignore_non_allergen_score_parts() { var allergies = new Allergies(509); - Assert.That(allergies.List(), - Is.EqualTo(new List + Assert.Equal(new List { "eggs", "shellfish", @@ -106,6 +94,6 @@ public void Ignore_non_allergen_score_parts() "chocolate", "pollen", "cats" - })); + }, allergies.List()); } } \ No newline at end of file diff --git a/exercises/alphametics/AlphameticsTest.cs b/exercises/alphametics/AlphameticsTest.cs index 20c6b840e1..1648a3e1b8 100644 --- a/exercises/alphametics/AlphameticsTest.cs +++ b/exercises/alphametics/AlphameticsTest.cs @@ -1,9 +1,10 @@ -using NUnit.Framework; +using Xunit; using System.Collections.Generic; +using System; public class AlphameticsTest { - [Test] + [Fact] public void Puzzle_with_three_letters() { var actual = Alphametics.Solve("I + BB == ILL"); @@ -13,25 +14,22 @@ public void Puzzle_with_three_letters() ['B'] = 9, ['L'] = 0 }; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Solution_must_have_unique_value_for_each_letter() { - Assert.That(() => Alphametics.Solve("A == B"), Throws.Exception); + Assert.Throws(() => Alphametics.Solve("A == B")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Leading_zero_solution_is_invalid() { - Assert.That(() => Alphametics.Solve("ACA + DD == BD"), Throws.Exception); + Assert.Throws(() => Alphametics.Solve("ACA + DD == BD")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Puzzle_with_four_letters() { var actual = Alphametics.Solve("AS + A == MOM"); @@ -42,11 +40,10 @@ public void Puzzle_with_four_letters() ['M'] = 1, ['O'] = 0 }; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Puzzle_with_six_letters() { var actual = Alphametics.Solve("NO + NO + TOO == LATE"); @@ -59,11 +56,10 @@ public void Puzzle_with_six_letters() ['A'] = 0, ['E'] = 2 }; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Puzzle_with_seven_letters() { var actual = Alphametics.Solve("HE + SEES + THE == LIGHT"); @@ -77,11 +73,10 @@ public void Puzzle_with_seven_letters() ['S'] = 9, ['T'] = 7, }; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Puzzle_with_eight_letters() { var actual = Alphametics.Solve("SEND + MORE == MONEY"); @@ -96,11 +91,10 @@ public void Puzzle_with_eight_letters() ['R'] = 8, ['Y'] = 2, }; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Puzzle_with_ten_letters() { var actual = Alphametics.Solve("AND + A + STRONG + OFFENSE + AS + A + GOOD == DEFENSE"); @@ -117,6 +111,6 @@ public void Puzzle_with_ten_letters() ['S'] = 6, ['T'] = 9, }; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } } diff --git a/exercises/alphametics/Example.cs b/exercises/alphametics/Example.cs index 0630272fa6..c3fe804e87 100644 --- a/exercises/alphametics/Example.cs +++ b/exercises/alphametics/Example.cs @@ -10,7 +10,12 @@ public static IDictionary Solve(string equation) var expression = ExpressionParser.Equation.Parse(equation); var maps = GetValidMaps(expression.Chars, expression.StartChars); - return maps.First(map => expression.Solve(map) == 0); + var solution = maps.FirstOrDefault(map => expression.Solve(map) == 0); + + if (solution == null) + throw new ArgumentException(nameof(equation)); + + return solution; } private static IEnumerable> GetValidMaps(HashSet chars, HashSet startChars) diff --git a/exercises/anagram/AnagramTest.cs b/exercises/anagram/AnagramTest.cs index b34dce32f7..c2e4ccb07a 100644 --- a/exercises/anagram/AnagramTest.cs +++ b/exercises/anagram/AnagramTest.cs @@ -1,95 +1,86 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class AnagramTest { - [Test] + [Fact] public void No_matches() { var detector = new Anagram("diaper"); var words = new[] { "hello", "world", "zombies", "pants" }; var results = new string[0]; - Assert.That(detector.Match(words), Is.EquivalentTo(results)); + Assert.Equal(results, detector.Match(words)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Detect_simple_anagram() { var detector = new Anagram("ant"); var words = new[] { "tan", "stand", "at" }; var results = new[] { "tan" }; - Assert.That(detector.Match(words), Is.EquivalentTo(results)); + Assert.Equal(results, detector.Match(words)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Detect_multiple_anagrams() { var detector = new Anagram("master"); var words = new[] { "stream", "pigeon", "maters" }; var results = new[] { "maters", "stream" }; - Assert.That(detector.Match(words), Is.EquivalentTo(results)); + Assert.Equal(results, detector.Match(words)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Does_not_confuse_different_duplicates() { var detector = new Anagram("galea"); var words = new[] { "eagle" }; var results = new string[0]; - Assert.That(detector.Match(words), Is.EquivalentTo(results)); + Assert.Equal(results, detector.Match(words)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Identical_word_is_not_anagram() { var detector = new Anagram("corn"); var words = new[] { "corn", "dark", "Corn", "rank", "CORN", "cron", "park" }; var results = new[] { "cron" }; - Assert.That(detector.Match(words), Is.EquivalentTo(results)); + Assert.Equal(results, detector.Match(words)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Eliminate_anagrams_with_same_checksum() { var detector = new Anagram("mass"); var words = new[] { "last" }; var results = new string[0]; - Assert.That(detector.Match(words), Is.EquivalentTo(results)); + Assert.Equal(results, detector.Match(words)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Eliminate_anagram_subsets() { var detector = new Anagram("good"); var words = new[] { "dog", "goody" }; var results = new string[0]; - Assert.That(detector.Match(words), Is.EquivalentTo(results)); + Assert.Equal(results, detector.Match(words)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Detect_anagrams() { var detector = new Anagram("allergy"); var words = new[] { "gallery", "ballerina", "regally", "clergy", "largely", "leading" }; var results = new[] { "gallery", "largely", "regally" }; - Assert.That(detector.Match(words), Is.EquivalentTo(results)); + Assert.Equal(results, detector.Match(words)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Anagrams_are_case_insensitive() { var detector = new Anagram("Orchestra"); var words = new[] { "cashregister", "Carthorse", "radishes" }; var results = new[] { "Carthorse" }; - Assert.That(detector.Match(words), Is.EquivalentTo(results)); + Assert.Equal(results, detector.Match(words)); } } \ No newline at end of file diff --git a/exercises/atbash-cipher/AtbashTest.cs b/exercises/atbash-cipher/AtbashTest.cs index 5f197fe2c5..9f663c4e02 100644 --- a/exercises/atbash-cipher/AtbashTest.cs +++ b/exercises/atbash-cipher/AtbashTest.cs @@ -1,17 +1,17 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class AtbashTest { - [TestCase("no", ExpectedResult = "ml")] - [TestCase("yes", ExpectedResult = "bvh", Ignore = "Remove to run test case")] - [TestCase("OMG", ExpectedResult = "lnt", Ignore = "Remove to run test case")] - [TestCase("mindblowingly", ExpectedResult = "nrmwy oldrm tob", Ignore = "Remove to run test case")] - [TestCase("Testing, 1 2 3, testing.", ExpectedResult = "gvhgr mt123 gvhgr mt", Ignore = "Remove to run test case")] - [TestCase("Truth is fiction.", ExpectedResult = "gifgs rhurx grlm", Ignore = "Remove to run test case")] - [TestCase("The quick brown fox jumps over the lazy dog.", ExpectedResult = "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt", Ignore = "Remove to run test case")] - public string Encodes_words_using_atbash_cipher(string words) + [Theory] + [InlineData("no", "ml")] + [InlineData("yes", "bvh")] + [InlineData("OMG", "lnt")] + [InlineData("mindblowingly", "nrmwy oldrm tob")] + [InlineData("Testing, 1 2 3, testing.", "gvhgr mt123 gvhgr mt")] + [InlineData("Truth is fiction.", "gifgs rhurx grlm")] + [InlineData("The quick brown fox jumps over the lazy dog.", "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt")] + public void Encodes_words_using_atbash_cipher(string words, string expected) { - return Atbash.Encode(words); + Assert.Equal(expected, Atbash.Encode(words)); } } \ No newline at end of file diff --git a/exercises/bank-account/BankAccountTest.cs b/exercises/bank-account/BankAccountTest.cs index b82a44003b..d001d043b8 100644 --- a/exercises/bank-account/BankAccountTest.cs +++ b/exercises/bank-account/BankAccountTest.cs @@ -1,21 +1,20 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; -using NUnit.Framework; +using Xunit; public class BankAccountTest { - [Test] + [Fact] public void Returns_empty_balance_after_opening() { var account = new BankAccount(); account.Open(); - Assert.That(account.Balance, Is.EqualTo(0)); + Assert.Equal(0, account.Balance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Check_basic_balance() { var account = new BankAccount(); @@ -26,12 +25,11 @@ public void Check_basic_balance() account.UpdateBalance(10); var updatedBalance = account.Balance; - Assert.That(openingBalance, Is.EqualTo(0)); - Assert.That(updatedBalance, Is.EqualTo(10)); + Assert.Equal(0, openingBalance); + Assert.Equal(10, updatedBalance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Balance_can_increment_and_decrement() { var account = new BankAccount(); @@ -44,24 +42,22 @@ public void Balance_can_increment_and_decrement() account.UpdateBalance(-15); var subtractedBalance = account.Balance; - Assert.That(openingBalance, Is.EqualTo(0)); - Assert.That(addedBalance, Is.EqualTo(10)); - Assert.That(subtractedBalance, Is.EqualTo(-5)); + Assert.Equal(0, openingBalance); + Assert.Equal(10, addedBalance); + Assert.Equal(-5, subtractedBalance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Closed_account_throws_exception_when_checking_balance() { var account = new BankAccount(); account.Open(); account.Close(); - Assert.That(() => account.Balance, Throws.InvalidOperationException); + Assert.Throws(() => account.Balance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Change_account_balance_from_multiple_threads() { var account = new BankAccount(); @@ -84,6 +80,6 @@ public void Change_account_balance_from_multiple_threads() } Task.WaitAll(tasks.ToArray()); - Assert.That(account.Balance, Is.EqualTo(0)); + Assert.Equal(0, account.Balance); } } diff --git a/exercises/beer-song/BeerTest.cs b/exercises/beer-song/BeerTest.cs index d66f4c51b7..cbdb2d6f29 100644 --- a/exercises/beer-song/BeerTest.cs +++ b/exercises/beer-song/BeerTest.cs @@ -1,20 +1,22 @@ -using NUnit.Framework; +using Xunit; public class BeerTests { - [TestCase(8, ExpectedResult = "8 bottles of beer on the wall, 8 bottles of beer.\nTake one down and pass it around, 7 bottles of beer on the wall.\n")] - [TestCase(2, ExpectedResult = "2 bottles of beer on the wall, 2 bottles of beer.\nTake one down and pass it around, 1 bottle of beer on the wall.\n", Ignore = "Remove to run test case")] - [TestCase(1, ExpectedResult = "1 bottle of beer on the wall, 1 bottle of beer.\nTake it down and pass it around, no more bottles of beer on the wall.\n", Ignore = "Remove to run test case")] - [TestCase(0, ExpectedResult = "No more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.\n", Ignore = "Remove to run test case")] - public string Verse(int number) + [Theory] + [InlineData(8, "8 bottles of beer on the wall, 8 bottles of beer.\nTake one down and pass it around, 7 bottles of beer on the wall.\n")] + [InlineData(2, "2 bottles of beer on the wall, 2 bottles of beer.\nTake one down and pass it around, 1 bottle of beer on the wall.\n")] + [InlineData(1, "1 bottle of beer on the wall, 1 bottle of beer.\nTake it down and pass it around, no more bottles of beer on the wall.\n")] + [InlineData(0, "No more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.\n")] + public void Verse(int number, string expected) { - return Beer.Verse(number); + Assert.Equal(expected, Beer.Verse(number)); } - [TestCase(8, 6, ExpectedResult = "8 bottles of beer on the wall, 8 bottles of beer.\nTake one down and pass it around, 7 bottles of beer on the wall.\n\n7 bottles of beer on the wall, 7 bottles of beer.\nTake one down and pass it around, 6 bottles of beer on the wall.\n\n6 bottles of beer on the wall, 6 bottles of beer.\nTake one down and pass it around, 5 bottles of beer on the wall.\n\n", Ignore = "Remove to run test case")] - [TestCase(3, 0, ExpectedResult = "3 bottles of beer on the wall, 3 bottles of beer.\nTake one down and pass it around, 2 bottles of beer on the wall.\n\n2 bottles of beer on the wall, 2 bottles of beer.\nTake one down and pass it around, 1 bottle of beer on the wall.\n\n1 bottle of beer on the wall, 1 bottle of beer.\nTake it down and pass it around, no more bottles of beer on the wall.\n\nNo more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.\n\n", Ignore = "Remove to run test case")] - public string Sing(int start, int stop) + [Theory(Skip = "Remove to run test")] + [InlineData(8, 6, "8 bottles of beer on the wall, 8 bottles of beer.\nTake one down and pass it around, 7 bottles of beer on the wall.\n\n7 bottles of beer on the wall, 7 bottles of beer.\nTake one down and pass it around, 6 bottles of beer on the wall.\n\n6 bottles of beer on the wall, 6 bottles of beer.\nTake one down and pass it around, 5 bottles of beer on the wall.\n\n")] + [InlineData(3, 0, "3 bottles of beer on the wall, 3 bottles of beer.\nTake one down and pass it around, 2 bottles of beer on the wall.\n\n2 bottles of beer on the wall, 2 bottles of beer.\nTake one down and pass it around, 1 bottle of beer on the wall.\n\n1 bottle of beer on the wall, 1 bottle of beer.\nTake it down and pass it around, no more bottles of beer on the wall.\n\nNo more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.\n\n")] + public void Sing(int start, int stop, string expected) { - return Beer.Sing(start, stop); + Assert.Equal(expected, Beer.Sing(start, stop)); } } \ No newline at end of file diff --git a/exercises/binary-search-tree/BinarySearchTreeTest.cs b/exercises/binary-search-tree/BinarySearchTreeTest.cs index 0d7efb8c38..ebf718d684 100644 --- a/exercises/binary-search-tree/BinarySearchTreeTest.cs +++ b/exercises/binary-search-tree/BinarySearchTreeTest.cs @@ -1,85 +1,77 @@ using System.Linq; -using NUnit.Framework; +using Xunit; public class BinarySearchTreeTest { - [Test] + [Fact] public void Data_is_retained() { var tree = new BinarySearchTree(4); - Assert.That(tree.Value, Is.EqualTo(4)); + Assert.Equal(4, tree.Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Inserting_less() { var tree = new BinarySearchTree(4).Add(2); - Assert.That(tree.Value, Is.EqualTo(4)); - Assert.That(tree.Left.Value, Is.EqualTo(2)); + Assert.Equal(4, tree.Value); + Assert.Equal(2, tree.Left.Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Inserting_same() { var tree = new BinarySearchTree(4).Add(4); - Assert.That(tree.Value, Is.EqualTo(4)); - Assert.That(tree.Left.Value, Is.EqualTo(4)); + Assert.Equal(4, tree.Value); + Assert.Equal(4, tree.Left.Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Inserting_greater() { var tree = new BinarySearchTree(4).Add(5); - Assert.That(tree.Value, Is.EqualTo(4)); - Assert.That(tree.Right.Value, Is.EqualTo(5)); + Assert.Equal(4, tree.Value); + Assert.Equal(5, tree.Right.Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Complex_tree() { var tree = new BinarySearchTree(new [] { 4, 2, 6, 1, 3, 7, 5 }); - Assert.That(tree.Value, Is.EqualTo(4)); - Assert.That(tree.Left.Value, Is.EqualTo(2)); - Assert.That(tree.Left.Left.Value, Is.EqualTo(1)); - Assert.That(tree.Left.Right.Value, Is.EqualTo(3)); - Assert.That(tree.Right.Value, Is.EqualTo(6)); - Assert.That(tree.Right.Left.Value, Is.EqualTo(5)); - Assert.That(tree.Right.Right.Value, Is.EqualTo(7)); + Assert.Equal(4, tree.Value); + Assert.Equal(2, tree.Left.Value); + Assert.Equal(1, tree.Left.Left.Value); + Assert.Equal(3, tree.Left.Right.Value); + Assert.Equal(6, tree.Right.Value); + Assert.Equal(5, tree.Right.Left.Value); + Assert.Equal(7, tree.Right.Right.Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Iterating_one_element() { var elements = new BinarySearchTree(4).AsEnumerable(); - Assert.That(elements, Is.EqualTo(new [] { 4 })); + Assert.Equal(new [] { 4 }, elements); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Iterating_over_smaller_element() { var elements = new BinarySearchTree(new[] { 4, 2 }).AsEnumerable(); - Assert.That(elements, Is.EqualTo(new[] { 2, 4 })); + Assert.Equal(new[] { 2, 4 }, elements); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Iterating_over_larger_element() { var elements = new BinarySearchTree(new[] { 4, 5 }).AsEnumerable(); - Assert.That(elements, Is.EqualTo(new[] { 4, 5 })); + Assert.Equal(new[] { 4, 5 }, elements); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Iterating_over_complex_element() { var elements = new BinarySearchTree(new[] { 4, 2, 1, 3, 6, 7, 5 }).AsEnumerable(); - Assert.That(elements, Is.EqualTo(new[] { 1, 2, 3, 4, 5, 6, 7 })); + Assert.Equal(new[] { 1, 2, 3, 4, 5, 6, 7 }, elements); } } \ No newline at end of file diff --git a/exercises/binary-search/BinarySearchTest.cs b/exercises/binary-search/BinarySearchTest.cs index a607afe69d..d1d98f49e0 100644 --- a/exercises/binary-search/BinarySearchTest.cs +++ b/exercises/binary-search/BinarySearchTest.cs @@ -1,76 +1,67 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class BinarySearchTest { - [Test] + [Fact] public void Should_return_minus_one_when_an_empty_array_is_searched() { var input = new int[0]; - Assert.That(BinarySearch.Search(input, 6), Is.EqualTo(-1)); + Assert.Equal(-1, BinarySearch.Search(input, 6)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_be_able_to_find_a_value_in_a_single_element_array_with_one_access() { var input = new[] { 6 }; - Assert.That(BinarySearch.Search(input, 6), Is.EqualTo(0)); + Assert.Equal(0, BinarySearch.Search(input, 6)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_return_minus_one_if_a_value_is_less_than_the_element_in_a_single_element_array() { var input = new[] { 94 }; - Assert.That(BinarySearch.Search(input, 6), Is.EqualTo(-1)); + Assert.Equal(-1, BinarySearch.Search(input, 6)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_return_minus_one_if_a_value_is_greater_than_the_element_in_a_single_element_array() { var input = new[] { 94 }; - Assert.That(BinarySearch.Search(input, 602), Is.EqualTo(-1)); + Assert.Equal(-1, BinarySearch.Search(input, 602)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_find_an_element_in_a_longer_array() { var input = new[] { 6, 67, 123, 345, 456, 457, 490, 2002, 54321, 54322 }; - Assert.That(BinarySearch.Search(input, 2002), Is.EqualTo(7)); + Assert.Equal(7, BinarySearch.Search(input, 2002)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_find_elements_at_the_beginning_of_an_array() { var input = new[] { 6, 67, 123, 345, 456, 457, 490, 2002, 54321, 54322 }; - Assert.That(BinarySearch.Search(input, 6), Is.EqualTo(0)); + Assert.Equal(0, BinarySearch.Search(input, 6)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_find_elements_at_the_end_of_an_array() { var input = new[] { 6, 67, 123, 345, 456, 457, 490, 2002, 54321, 54322 }; - Assert.That(BinarySearch.Search(input, 54322), Is.EqualTo(9)); + Assert.Equal(9, BinarySearch.Search(input, 54322)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_return_minus_one_if_a_value_is_less_than_all_elements_in_a_long_array() { var input = new[] { 6, 67, 123, 345, 456, 457, 490, 2002, 54321, 54322 }; - Assert.That(BinarySearch.Search(input, 2), Is.EqualTo(-1)); + Assert.Equal(-1, BinarySearch.Search(input, 2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_return_minus_one_if_a_value_is_greater_than_all_elements_in_a_long_array() { var input = new[] { 6, 67, 123, 345, 456, 457, 490, 2002, 54321, 54322 }; - Assert.That(BinarySearch.Search(input, 54323), Is.EqualTo(-1)); + Assert.Equal(-1, BinarySearch.Search(input, 54323)); } } \ No newline at end of file diff --git a/exercises/bob/BobTest.cs b/exercises/bob/BobTest.cs index 5a4a542d05..1019d9bb18 100644 --- a/exercises/bob/BobTest.cs +++ b/exercises/bob/BobTest.cs @@ -1,130 +1,112 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class BobTest { - [Test] + [Fact] public void Stating_something () { - Assert.That(Bob.Hey("Tom-ay-to, tom-aaaah-to."), Is.EqualTo("Whatever.")); + Assert.Equal("Whatever.", Bob.Hey("Tom-ay-to, tom-aaaah-to.")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Shouting () { - Assert.That(Bob.Hey("WATCH OUT!"), Is.EqualTo("Whoa, chill out!")); + Assert.Equal("Whoa, chill out!", Bob.Hey("WATCH OUT!")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Asking_a_question () { - Assert.That(Bob.Hey("Does this cryogenic chamber make me look fat?"), Is.EqualTo("Sure.")); + Assert.Equal("Sure.", Bob.Hey("Does this cryogenic chamber make me look fat?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Asking_a_question_with_a_trailing_space() { - Assert.That(Bob.Hey("Do I like my spacebar too much? "), Is.EqualTo("Sure.")); + Assert.Equal("Sure.", Bob.Hey("Do I like my spacebar too much? ")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Asking_a_numeric_question () { - Assert.That(Bob.Hey("You are, what, like 15?"), Is.EqualTo("Sure.")); + Assert.Equal("Sure.", Bob.Hey("You are, what, like 15?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Talking_forcefully () { - Assert.That(Bob.Hey("Let's go make out behind the gym!"), Is.EqualTo("Whatever.")); + Assert.Equal("Whatever.", Bob.Hey("Let's go make out behind the gym!")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Using_acronyms_in_regular_search () { - Assert.That(Bob.Hey("It's OK if you don't want to go to the DMV."), Is.EqualTo("Whatever.")); + Assert.Equal("Whatever.", Bob.Hey("It's OK if you don't want to go to the DMV.")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Forceful_questions () { - Assert.That(Bob.Hey("WHAT THE HELL WERE YOU THINKING?"), Is.EqualTo("Whoa, chill out!")); + Assert.Equal("Whoa, chill out!", Bob.Hey("WHAT THE HELL WERE YOU THINKING?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Shouting_numbers () { - Assert.That(Bob.Hey("1, 2, 3 GO!"), Is.EqualTo("Whoa, chill out!")); + Assert.Equal("Whoa, chill out!", Bob.Hey("1, 2, 3 GO!")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Only_numbers () { - Assert.That(Bob.Hey("1, 2, 3"), Is.EqualTo("Whatever.")); + Assert.Equal("Whatever.", Bob.Hey("1, 2, 3")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Question_with_only_numbers () { - Assert.That(Bob.Hey("4?"), Is.EqualTo("Sure.")); + Assert.Equal("Sure.", Bob.Hey("4?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Shouting_with_special_characters () { - Assert.That(Bob.Hey("ZOMG THE %^*@#$(*^ ZOMBIES ARE COMING!!11!!1!"), Is.EqualTo("Whoa, chill out!")); + Assert.Equal("Whoa, chill out!", Bob.Hey("ZOMG THE %^*@#$(*^ ZOMBIES ARE COMING!!11!!1!")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Shouting_with_no_exclamation_mark () { - Assert.That(Bob.Hey("I HATE YOU"), Is.EqualTo("Whoa, chill out!")); + Assert.Equal("Whoa, chill out!", Bob.Hey("I HATE YOU")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Statement_containing_question_mark () { - Assert.That(Bob.Hey("Ending with ? means a question."), Is.EqualTo("Whatever.")); + Assert.Equal("Whatever.", Bob.Hey("Ending with ? means a question.")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Prattling_on () { - Assert.That(Bob.Hey("Wait! Hang on. Are you going to be OK?"), Is.EqualTo("Sure.")); + Assert.Equal("Sure.", Bob.Hey("Wait! Hang on. Are you going to be OK?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Silence () { - Assert.That(Bob.Hey(""), Is.EqualTo("Fine. Be that way!")); + Assert.Equal("Fine. Be that way!", Bob.Hey("")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Prolonged_silence () { - Assert.That(Bob.Hey(" "), Is.EqualTo("Fine. Be that way!")); + Assert.Equal("Fine. Be that way!", Bob.Hey(" ")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_line_question () { - Assert.That(Bob.Hey("Does this cryogenic chamber make me look fat?\nno"), Is.EqualTo("Whatever.")); + Assert.Equal("Whatever.", Bob.Hey("Does this cryogenic chamber make me look fat?\nno")); } } diff --git a/exercises/book-store/BookStoreTest.cs b/exercises/book-store/BookStoreTest.cs index 8ec73c56e4..4faed66a6e 100644 --- a/exercises/book-store/BookStoreTest.cs +++ b/exercises/book-store/BookStoreTest.cs @@ -1,91 +1,79 @@ using System.Collections.Generic; using System.Linq; -using NUnit.Framework; +using Xunit; -[TestFixture] public class BookStoreTest { - [Test] + [Fact] public void Basket_with_single_book() { - Assert.That(BookStore.CalculateTotalCost(MakeList(1)), Is.EqualTo(8)); + Assert.Equal(8, BookStore.CalculateTotalCost(MakeList(1))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Basket_with_two_of_same_book() { - Assert.That(BookStore.CalculateTotalCost(MakeList(2, 2)), Is.EqualTo(16)); + Assert.Equal(16, BookStore.CalculateTotalCost(MakeList(2, 2))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_basket() { - Assert.That(BookStore.CalculateTotalCost(MakeList()), Is.EqualTo(0)); + Assert.Equal(0, BookStore.CalculateTotalCost(MakeList())); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Basket_with_two_different_books() { - Assert.That(BookStore.CalculateTotalCost(MakeList(1, 2)), Is.EqualTo(15.2)); + Assert.Equal(15.2, BookStore.CalculateTotalCost(MakeList(1, 2))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Basket_with_three_different_books() { - Assert.That(BookStore.CalculateTotalCost(MakeList(1, 2, 3)), Is.EqualTo(21.6)); + Assert.Equal(21.6, BookStore.CalculateTotalCost(MakeList(1, 2, 3))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Basket_with_four_different_books() { - Assert.That(BookStore.CalculateTotalCost(MakeList(1, 2, 3, 4)), Is.EqualTo(25.6)); + Assert.Equal(25.6, BookStore.CalculateTotalCost(MakeList(1, 2, 3, 4))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Basket_with_five_different_books() { - Assert.That(BookStore.CalculateTotalCost(MakeList(1, 2, 3, 4, 5)), Is.EqualTo(30)); + Assert.Equal(30, BookStore.CalculateTotalCost(MakeList(1, 2, 3, 4, 5))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Basket_with_eight_books() { - Assert.That(BookStore.CalculateTotalCost(MakeList(1, 1, 2, 2, 3, 3, 4, 5)), Is.EqualTo(51.20)); + Assert.Equal(51.20, BookStore.CalculateTotalCost(MakeList(1, 1, 2, 2, 3, 3, 4, 5))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Basket_with_nine_books() { - Assert.That(BookStore.CalculateTotalCost(MakeList(1, 1, 2, 2, 3, 3, 4, 4, 5)), Is.EqualTo(55.60)); + Assert.Equal(55.60, BookStore.CalculateTotalCost(MakeList(1, 1, 2, 2, 3, 3, 4, 4, 5))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Basket_with_ten_books() { - Assert.That(BookStore.CalculateTotalCost(MakeList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5)), Is.EqualTo(60)); + Assert.Equal(60, BookStore.CalculateTotalCost(MakeList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Basket_with_eleven_books() { - Assert.That(BookStore.CalculateTotalCost(MakeList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 1)), Is.EqualTo(68)); + Assert.Equal(68, BookStore.CalculateTotalCost(MakeList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 1))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Basket_with_twelve_books() { - Assert.That(BookStore.CalculateTotalCost(MakeList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 1, 2)), Is.EqualTo(75.20)); + Assert.Equal(75.20, BookStore.CalculateTotalCost(MakeList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 1, 2))); } private static List MakeList(params int[] values) diff --git a/exercises/bowling/BowlingTest.cs b/exercises/bowling/BowlingTest.cs index b8725aaebc..3441476f98 100644 --- a/exercises/bowling/BowlingTest.cs +++ b/exercises/bowling/BowlingTest.cs @@ -1,221 +1,198 @@ using System.Collections.Generic; -using NUnit.Framework; +using Xunit; public class BowlingTest { - [Test] + [Fact] public void Should_be_able_to_score_a_game_with_all_zeros() { var rolls = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(0)); + Assert.Equal(0, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_be_able_to_score_a_game_with_no_strikes_or_spares() { var rolls = new[] { 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(90)); + Assert.Equal(90, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void A_spare_followed_by_zeros_is_worth_ten_points() { var rolls = new[] { 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(10)); + Assert.Equal(10, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Points_scored_in_the_roll_after_a_spare_are_counted_twice() { var rolls = new[] { 6, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(16)); + Assert.Equal(16, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Consecutive_spares_each_get_a_one_roll_bonus() { var rolls = new[] { 5, 5, 3, 7, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(31)); + Assert.Equal(31, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void A_spare_in_the_last_frame_gets_a_one_roll_bonus_that_is_counted_once() { var rolls = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 7 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(17)); + Assert.Equal(17, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void A_strike_earns_ten_points_in_frame_with_a_single_roll() { var rolls = new[] { 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(10)); + Assert.Equal(10, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Points_scored_in_the_two_rolls_after_a_strike_are_counted_twice_as_a_bonus() { var rolls = new[] { 10, 5, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(26)); + Assert.Equal(26, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Consecutive_strikes_each_get_the_two_roll_bonus() { var rolls = new[] { 10, 10, 10, 5, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(81)); + Assert.Equal(81, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void A_strike_in_the_last_frame_gets_a_two_roll_bonus_that_is_counted_once() { var rolls = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 1 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(18)); + Assert.Equal(18, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rolling_a_spare_with_the_two_roll_bonus_does_not_get_a_bonus_roll() { var rolls = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 7, 3 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(20)); + Assert.Equal(20, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Strikes_with_the_two_roll_bonus_do_not_get_bonus_rolls() { var rolls = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(30)); + Assert.Equal(30, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void A_strike_with_the_one_roll_bonus_after_a_spare_in_the_last_frame_does_not_get_a_bonus() { var rolls = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 10 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(20)); + Assert.Equal(20, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void All_strikes_is_a_perfect_game() { var rolls = new[] { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.EqualTo(300)); + Assert.Equal(300, game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rolls_can_not_score_negative_points() { var rolls = new[] { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.Null); + Assert.Null(game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void A_roll_can_not_score_more_than_10_points() { var rolls = new[] { 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.Null); + Assert.Null(game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_rolls_in_a_frame_can_not_score_more_than_10_points() { var rolls = new[] { 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.Null); + Assert.Null(game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_bonus_rolls_after_a_strike_in_the_last_frame_can_not_score_more_than_10_points() { var rolls = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 5, 6 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.Null); + Assert.Null(game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void An_unstarted_game_can_not_be_scored() { var rolls = new int[0]; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.Null); + Assert.Null(game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void An_incomplete_game_can_not_be_scored() { var rolls = new[] { 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.Null); + Assert.Null(game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void A_game_with_more_than_ten_frames_can_not_be_scored() { var rolls = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.Null); + Assert.Null(game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Bonus_rolls_for_a_strike_in_the_last_frame_must_be_rolled_before_score_can_be_calculated() { var rolls = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.Null); + Assert.Null(game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Both_bonus_rolls_for_a_strike_in_the_last_frame_must_be_rolled_before_score_can_be_calculated() { var rolls = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.Null); + Assert.Null(game.Score()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Bonus_roll_for_a_spare_in_the_last_frame_must_be_rolled_before_score_can_be_calculated() { var rolls = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3 }; var game = RollMany(rolls, new BowlingGame()); - Assert.That(game.Score(), Is.Null); + Assert.Null(game.Score()); } private static BowlingGame RollMany(IEnumerable rolls, BowlingGame game) diff --git a/exercises/bracket-push/BracketPushTest.cs b/exercises/bracket-push/BracketPushTest.cs index a91f9bdd09..79cf4d3c67 100644 --- a/exercises/bracket-push/BracketPushTest.cs +++ b/exercises/bracket-push/BracketPushTest.cs @@ -1,99 +1,88 @@ -using NUnit.Framework; +using Xunit; public class BracketPushTest { - [Test] + [Fact] public void Paired_square_brackets() { const string actual = "[]"; - Assert.That(BracketPush.Matched(actual), Is.True); + Assert.True(BracketPush.Matched(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_string() { const string actual = ""; - Assert.That(BracketPush.Matched(actual), Is.True); + Assert.True(BracketPush.Matched(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Unpaired_brackets() { const string actual = "[["; - Assert.That(BracketPush.Matched(actual), Is.False); + Assert.False(BracketPush.Matched(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Wrong_ordered_brackets() { const string actual = "}{"; - Assert.That(BracketPush.Matched(actual), Is.False); + Assert.False(BracketPush.Matched(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Paired_with_whitespace() { const string actual = "{ }"; - Assert.That(BracketPush.Matched(actual), Is.True); + Assert.True(BracketPush.Matched(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Simple_nested_brackets() { const string actual = "{[]}"; - Assert.That(BracketPush.Matched(actual), Is.True); + Assert.True(BracketPush.Matched(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Several_paired_brackets() { const string actual = "{}[]"; - Assert.That(BracketPush.Matched(actual), Is.True); + Assert.True(BracketPush.Matched(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Paired_and_nested_brackets() { const string actual = "([{}({}[])])"; - Assert.That(BracketPush.Matched(actual), Is.True); + Assert.True(BracketPush.Matched(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Unpaired_and_nested_brackets() { const string actual = "([{])"; - Assert.That(BracketPush.Matched(actual), Is.False); + Assert.False(BracketPush.Matched(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Paired_and_wrong_nested_brackets() { const string actual = "[({]})"; - Assert.That(BracketPush.Matched(actual), Is.False); + Assert.False(BracketPush.Matched(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Math_expression() { const string actual = "(((185 + 223.85) * 15) - 543)/2"; - Assert.That(BracketPush.Matched(actual), Is.True); + Assert.True(BracketPush.Matched(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Complex_latex_expression() { const string actual = "\\left(\\begin{array}{cc} \\frac{1}{3} & x\\\\ \\mathrm{e}^{x} &... x^2 \\end{array}\\right)"; - Assert.That(BracketPush.Matched(actual), Is.True); + Assert.True(BracketPush.Matched(actual)); } } \ No newline at end of file diff --git a/exercises/change/ChangeTest.cs b/exercises/change/ChangeTest.cs index d34a4086be..b7808ce2ad 100644 --- a/exercises/change/ChangeTest.cs +++ b/exercises/change/ChangeTest.cs @@ -1,69 +1,63 @@ using System; -using NUnit.Framework; +using Xunit; public class ChangeTest { - [Test] + [Fact] public void Single_coin_change() { var actual = new[] { 1, 5, 10, 25, 100 }; var target = 25; var expected = new[] { 25 }; - Assert.That(Change.Calculate(target, actual), Is.EqualTo(expected)); + Assert.Equal(expected, Change.Calculate(target, actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_coin_change() { var actual = new[] { 1, 5, 10, 25, 100 }; var target = 15; var expected = new[] { 5, 10 }; - Assert.That(Change.Calculate(target, actual), Is.EqualTo(expected)); + Assert.Equal(expected, Change.Calculate(target, actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Change_with_Lilliputian_Coins() { var actual = new[] { 1, 4, 15, 20, 50 }; var target = 23; var expected = new[] { 4, 4, 15 }; - Assert.That(Change.Calculate(target, actual), Is.EqualTo(expected)); + Assert.Equal(expected, Change.Calculate(target, actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Change_with_Lower_Elbonia_Coins() { var actual = new[] { 1, 5, 10, 21, 25 }; var target = 63; var expected = new[] { 21, 21, 21 }; - Assert.That(Change.Calculate(target, actual), Is.EqualTo(expected)); + Assert.Equal(expected, Change.Calculate(target, actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Large_target_values() { var actual = new[] { 1, 2, 5, 10, 20, 50, 100 }; var target = 999; var expected = new[] { 2, 2, 5, 20, 20, 50, 100, 100, 100, 100, 100, 100, 100, 100, 100 }; - Assert.That(Change.Calculate(target, actual), Is.EqualTo(expected)); + Assert.Equal(expected, Change.Calculate(target, actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void No_coins_make_0_change() { var actual = new[] { 1, 5, 10, 21, 25 }; var target = 0; var expected = new int[0]; - Assert.That(Change.Calculate(target, actual), Is.EqualTo(expected)); + Assert.Equal(expected, Change.Calculate(target, actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Error_testing_for_change_smaller_than_the_smallest_of_coins() { var actual = new[] { 5, 10 }; @@ -71,8 +65,7 @@ public void Error_testing_for_change_smaller_than_the_smallest_of_coins() Assert.Throws(() => Change.Calculate(target, actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cannot_find_negative_change_values() { var actual = new[] { 1, 2, 5 }; diff --git a/exercises/circular-buffer/CircularBufferTest.cs b/exercises/circular-buffer/CircularBufferTest.cs index 768f33bcb0..4131bdeff2 100644 --- a/exercises/circular-buffer/CircularBufferTest.cs +++ b/exercises/circular-buffer/CircularBufferTest.cs @@ -1,20 +1,20 @@ -using NUnit.Framework; +using System; +using Xunit; public class CircularBufferTest { - [Test] + [Fact] public void Write_and_read_back_one_item() { var buffer = new CircularBuffer(1); buffer.Write('1'); var val = buffer.Read(); - Assert.That(val, Is.EqualTo('1')); - Assert.That(() => buffer.Read(), Throws.Exception); + Assert.Equal('1', val); + Assert.Throws(() => buffer.Read()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Write_and_read_back_multiple_items() { var buffer = new CircularBuffer(2); @@ -24,13 +24,12 @@ public void Write_and_read_back_multiple_items() var val1 = buffer.Read(); var val2 = buffer.Read(); - Assert.That(val1, Is.EqualTo('1')); - Assert.That(val2, Is.EqualTo('2')); - Assert.That(() => buffer.Read(), Throws.Exception); + Assert.Equal('1', val1); + Assert.Equal('2', val2); + Assert.Throws(() => buffer.Read()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Clearing_buffer() { var buffer = new CircularBuffer(3); @@ -40,7 +39,7 @@ public void Clearing_buffer() buffer.Clear(); - Assert.That(() => buffer.Read(), Throws.Exception); + Assert.Throws(() => buffer.Read()); buffer.Write('1'); buffer.Write('2'); @@ -49,12 +48,11 @@ public void Clearing_buffer() buffer.Write('3'); var val2 = buffer.Read(); - Assert.That(val1, Is.EqualTo('1')); - Assert.That(val2, Is.EqualTo('2')); + Assert.Equal('1', val1); + Assert.Equal('2', val2); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Alternate_write_and_read() { var buffer = new CircularBuffer(2); @@ -63,12 +61,11 @@ public void Alternate_write_and_read() buffer.Write('2'); var val2 = buffer.Read(); - Assert.That(val1, Is.EqualTo('1')); - Assert.That(val2, Is.EqualTo('2')); + Assert.Equal('1', val1); + Assert.Equal('2', val2); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Reads_back_oldest_item() { var buffer1 = new CircularBuffer(3); @@ -79,23 +76,21 @@ public void Reads_back_oldest_item() buffer1.Write('3'); var val2 = buffer1.Read(); var val3 = buffer1.Read(); - Assert.That(val2, Is.EqualTo('2')); - Assert.That(val3, Is.EqualTo('3')); + Assert.Equal('2', val2); + Assert.Equal('3', val3); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Writing_to_a_full_buffer_throws_an_exception() { var buffer = new CircularBuffer(2); buffer.Write('1'); buffer.Write('2'); - Assert.That(() => buffer.Write('A'), Throws.Exception); + Assert.Throws(() => buffer.Write('A')); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Overwriting_oldest_item_in_a_full_buffer() { var buffer = new CircularBuffer(2); @@ -106,13 +101,12 @@ public void Overwriting_oldest_item_in_a_full_buffer() var val1 = buffer.Read(); var val2 = buffer.Read(); - Assert.That(val1, Is.EqualTo('2')); - Assert.That(val2, Is.EqualTo('A')); - Assert.That(() => buffer.Read(), Throws.Exception); + Assert.Equal('2', val1); + Assert.Equal('A', val2); + Assert.Throws(() => buffer.Read()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Forced_writes_to_non_full_buffer_should_behave_like_writes() { var buffer = new CircularBuffer(2); @@ -122,13 +116,12 @@ public void Forced_writes_to_non_full_buffer_should_behave_like_writes() var val1 = buffer.Read(); var val2 = buffer.Read(); - Assert.That(val1, Is.EqualTo('1')); - Assert.That(val2, Is.EqualTo('2')); - Assert.That(() => buffer.Read(), Throws.Exception); + Assert.Equal('1', val1); + Assert.Equal('2', val2); + Assert.Throws(() => buffer.Read()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Alternate_read_and_write_into_buffer_overflow() { var buffer = new CircularBuffer(5); @@ -155,11 +148,11 @@ public void Alternate_read_and_write_into_buffer_overflow() var val7 = buffer.Read(); var val8 = buffer.Read(); - Assert.That(val4, Is.EqualTo('6')); - Assert.That(val5, Is.EqualTo('7')); - Assert.That(val6, Is.EqualTo('8')); - Assert.That(val7, Is.EqualTo('A')); - Assert.That(val8, Is.EqualTo('B')); - Assert.That(() => buffer.Read(), Throws.Exception); + Assert.Equal('6', val4); + Assert.Equal('7', val5); + Assert.Equal('8', val6); + Assert.Equal('A', val7); + Assert.Equal('B', val8); + Assert.Throws(() => buffer.Read()); } } \ No newline at end of file diff --git a/exercises/clock/ClockTest.cs b/exercises/clock/ClockTest.cs index e5e4a9e9f4..634d880233 100644 --- a/exercises/clock/ClockTest.cs +++ b/exercises/clock/ClockTest.cs @@ -1,127 +1,114 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class ClockTest { - [TestCase(8, "08:00")] - [TestCase(9, "09:00")] + [Theory] + [InlineData(8, "08:00")] + [InlineData(9, "09:00")] public void Prints_the_hour(int hours, string expected) { - Assert.That(new Clock(hours).ToString(), Is.EqualTo(expected)); + Assert.Equal(expected, new Clock(hours).ToString()); } - [Ignore("Remove to run test")] - [TestCase(11, 9, "11:09")] - [TestCase(11, 19, "11:19")] + [Theory(Skip = "Remove to run test")] + [InlineData(11, 9, "11:09")] + [InlineData(11, 19, "11:19")] public void Prints_past_the_hour(int hours, int minutes, string expected) { - Assert.That(new Clock(hours, minutes).ToString(), Is.EqualTo(expected)); + Assert.Equal(expected, new Clock(hours, minutes).ToString()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_add_minutes() { var clock = new Clock(10).Add(3); - Assert.That(clock.ToString(), Is.EqualTo("10:03")); + Assert.Equal("10:03", clock.ToString()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_add_over_an_hour() { var clock = new Clock(10).Add(63); - Assert.That(clock.ToString(), Is.EqualTo("11:03")); + Assert.Equal("11:03", clock.ToString()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_add_over_more_than_one_day() { var clock = new Clock(10).Add(7224); - Assert.That(clock.ToString(), Is.EqualTo("10:24")); + Assert.Equal("10:24", clock.ToString()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_subtract_minutes() { var clock = new Clock(10, 3).Subtract(3); - Assert.That(clock.ToString(), Is.EqualTo("10:00")); + Assert.Equal("10:00", clock.ToString()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_subtract_to_previous_hour() { var clock = new Clock(10, 3).Subtract(30); - Assert.That(clock.ToString(), Is.EqualTo("09:33")); + Assert.Equal("09:33", clock.ToString()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_subtract_over_an_hour() { var clock = new Clock(10, 3).Subtract(70); - Assert.That(clock.ToString(), Is.EqualTo("08:53")); + Assert.Equal("08:53", clock.ToString()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Wraps_around_midnight() { var clock = new Clock(23, 59).Add(2); - Assert.That(clock.ToString(), Is.EqualTo("00:01")); + Assert.Equal("00:01", clock.ToString()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Wraps_around_midnight_backwards() { var clock = new Clock(0, 1).Subtract(2); - Assert.That(clock.ToString(), Is.EqualTo("23:59")); + Assert.Equal("23:59", clock.ToString()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Midnight_is_zero_hundred_hours() { var clock = new Clock(24); - Assert.That(clock.ToString(), Is.EqualTo("00:00")); + Assert.Equal("00:00", clock.ToString()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sixty_minutes_is_next_hour() { var clock = new Clock(1, 60); - Assert.That(clock.ToString(), Is.EqualTo("02:00")); + Assert.Equal("02:00", clock.ToString()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Clocks_with_same_time_are_equal() { var clock1 = new Clock(14, 30); var clock2 = new Clock(14, 30); - Assert.That(clock1, Is.EqualTo(clock2)); + Assert.Equal(clock2, clock1); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Clocks_with_different_time_are_not_equal() { var clock1 = new Clock(15, 30); var clock2 = new Clock(14, 30); - Assert.That(clock1, Is.Not.EqualTo(clock2)); + Assert.NotEqual(clock2, clock1); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Overflown_clocks_with_same_time_are_equal() { var clock1 = new Clock(14, 30); var clock2 = new Clock(38, 30); - Assert.That(clock1, Is.EqualTo(clock2)); + Assert.Equal(clock2, clock1); } } \ No newline at end of file diff --git a/exercises/connect/ConnectTest.cs b/exercises/connect/ConnectTest.cs index 701720ed8c..b90f8015d9 100644 --- a/exercises/connect/ConnectTest.cs +++ b/exercises/connect/ConnectTest.cs @@ -1,4 +1,4 @@ -using NUnit.Framework; +using Xunit; using System.Linq; public class ConnectTest @@ -8,7 +8,7 @@ private static string MakeBoard(string[] board) return string.Join("\n", board.Select(x => x.Replace(" ", ""))); } - [Test] + [Fact] public void Empty_board_has_no_winner() { var lines = new[] @@ -20,29 +20,26 @@ public void Empty_board_has_no_winner() " . . . . ." }; var board = new Connect(MakeBoard(lines)); - Assert.That(board.Result(), Is.EqualTo(Connect.Winner.None)); + Assert.Equal(Connect.Winner.None, board.Result()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_by_one_board_with_black_stone() { var lines = new[] { "X" }; var board = new Connect(MakeBoard(lines)); - Assert.That(board.Result(), Is.EqualTo(Connect.Winner.Black)); + Assert.Equal(Connect.Winner.Black, board.Result()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_by_one_board_with_white_stone() { var lines = new[] { "O" }; var board = new Connect(MakeBoard(lines)); - Assert.That(board.Result(), Is.EqualTo(Connect.Winner.White)); + Assert.Equal(Connect.Winner.White, board.Result()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Convoluted_path() { var lines = new[] @@ -54,11 +51,10 @@ public void Convoluted_path() " O O O O O" }; var board = new Connect(MakeBoard(lines)); - Assert.That(board.Result(), Is.EqualTo(Connect.Winner.Black)); + Assert.Equal(Connect.Winner.Black, board.Result()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rectangle_black_wins() { var lines = new[] @@ -70,11 +66,10 @@ public void Rectangle_black_wins() " . O X ." }; var board = new Connect(MakeBoard(lines)); - Assert.That(board.Result(), Is.EqualTo(Connect.Winner.Black)); + Assert.Equal(Connect.Winner.Black, board.Result()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rectangle_white_wins() { var lines = new[] @@ -86,11 +81,10 @@ public void Rectangle_white_wins() " . O X ." }; var board = new Connect(MakeBoard(lines)); - Assert.That(board.Result(), Is.EqualTo(Connect.Winner.White)); + Assert.Equal(Connect.Winner.White, board.Result()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Spiral_black_wins() { var lines = new[] @@ -106,11 +100,10 @@ public void Spiral_black_wins() "XXXXXXXXO" }; var board = new Connect(MakeBoard(lines)); - Assert.That(board.Result(), Is.EqualTo(Connect.Winner.Black)); + Assert.Equal(Connect.Winner.Black, board.Result()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Spiral_nobody_wins() { var lines = new[] @@ -126,6 +119,6 @@ public void Spiral_nobody_wins() "XXXXXXXXO" }; var board = new Connect(MakeBoard(lines)); - Assert.That(board.Result(), Is.EqualTo(Connect.Winner.None)); + Assert.Equal(Connect.Winner.None, board.Result()); } } \ No newline at end of file diff --git a/exercises/crypto-square/CryptoSquareTest.cs b/exercises/crypto-square/CryptoSquareTest.cs index 5348ff0337..6db077fdb7 100644 --- a/exercises/crypto-square/CryptoSquareTest.cs +++ b/exercises/crypto-square/CryptoSquareTest.cs @@ -1,132 +1,116 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class CryptoSquareTest { - [Test] + [Fact] public void Strange_characters_are_stripped_during_normalization() { var crypto = new Crypto("s#$%^&plunk"); - Assert.That(crypto.NormalizePlaintext, Is.EqualTo("splunk")); + Assert.Equal("splunk", crypto.NormalizePlaintext); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Letters_are_lowercased_during_normalization() { var crypto = new Crypto("WHOA HEY!"); - Assert.That(crypto.NormalizePlaintext, Is.EqualTo("whoahey")); + Assert.Equal("whoahey", crypto.NormalizePlaintext); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Numbers_are_kept_during_normalization() { var crypto = new Crypto("1, 2, 3, GO!"); - Assert.That(crypto.NormalizePlaintext, Is.EqualTo("123go")); + Assert.Equal("123go", crypto.NormalizePlaintext); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Smallest_square_size_is_2() { var crypto = new Crypto("1234"); - Assert.That(crypto.Size, Is.EqualTo(2)); + Assert.Equal(2, crypto.Size); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Size_of_text_whose_length_is_a_perfect_square_is_its_square_root() { var crypto = new Crypto("123456789"); - Assert.That(crypto.Size, Is.EqualTo(3)); + Assert.Equal(3, crypto.Size); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Size_of_text_whose_length_is_not_a_perfect_square_is_next_biggest_square_root() { var crypto = new Crypto("123456789abc"); - Assert.That(crypto.Size, Is.EqualTo(4)); + Assert.Equal(4, crypto.Size); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Size_is_determined_by_normalized_text() { var crypto = new Crypto("Oh hey, this is nuts!"); - Assert.That(crypto.Size, Is.EqualTo(4)); + Assert.Equal(4, crypto.Size); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Segments_are_split_by_square_size() { var crypto = new Crypto("Never vex thine heart with idle woes"); - Assert.That(crypto.PlaintextSegments(), Is.EqualTo(new[] { "neverv", "exthin", "eheart", "withid", "lewoes" })); + Assert.Equal(new[] { "neverv", "exthin", "eheart", "withid", "lewoes" }, crypto.PlaintextSegments()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Segments_are_split_by_square_size_until_text_runs_out() { var crypto = new Crypto("ZOMG! ZOMBIES!!!"); - Assert.That(crypto.PlaintextSegments(), Is.EqualTo(new[] { "zomg", "zomb", "ies" })); + Assert.Equal(new[] { "zomg", "zomb", "ies" }, crypto.PlaintextSegments()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Ciphertext_combines_text_by_column() { var crypto = new Crypto("First, solve the problem. Then, write the code."); - Assert.That(crypto.Ciphertext(), Is.EqualTo("foeewhilpmrervrticseohtottbeedshlnte")); + Assert.Equal("foeewhilpmrervrticseohtottbeedshlnte", crypto.Ciphertext()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Ciphertext_skips_cells_with_no_text() { var crypto = new Crypto("Time is an illusion. Lunchtime doubly so."); - Assert.That(crypto.Ciphertext(), Is.EqualTo("tasneyinicdsmiohooelntuillibsuuml")); + Assert.Equal("tasneyinicdsmiohooelntuillibsuuml", crypto.Ciphertext()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Normalized_ciphertext_is_split_by_height_of_square() { var crypto = new Crypto("Vampires are people too!"); - Assert.That(crypto.NormalizeCiphertext(), Is.EqualTo("vrel aepe mset paoo irpo")); + Assert.Equal("vrel aepe mset paoo irpo", crypto.NormalizeCiphertext()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Normalized_ciphertext_not_exactly_divisible_by_5_spills_into_a_smaller_segment() { var crypto = new Crypto("Madness, and then illumination."); - Assert.That(crypto.NormalizeCiphertext(), Is.EqualTo("msemo aanin dnin ndla etlt shui")); + Assert.Equal("msemo aanin dnin ndla etlt shui", crypto.NormalizeCiphertext()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Normalized_ciphertext_is_split_into_segements_of_correct_size() { var crypto = new Crypto("If man was meant to stay on the ground god would have given us roots"); - Assert.That(crypto.NormalizeCiphertext(), Is.EqualTo("imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau")); + Assert.Equal("imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau", crypto.NormalizeCiphertext()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Normalized_ciphertext_is_split_into_segements_of_correct_size_with_punctuation() { var crypto = new Crypto("Have a nice day. Feed the dog & chill out!"); - Assert.That(crypto.NormalizeCiphertext(), Is.EqualTo("hifei acedl veeol eddgo aatcu nyhht")); + Assert.Equal("hifei acedl veeol eddgo aatcu nyhht", crypto.NormalizeCiphertext()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Normalized_ciphertext_is_split_into_segements_of_correct_size_when_just_less_than_full_square() { var crypto = new Crypto("I am"); - Assert.That(crypto.NormalizeCiphertext(), Is.EqualTo("im a")); + Assert.Equal("im a", crypto.NormalizeCiphertext()); } } \ No newline at end of file diff --git a/exercises/custom-set/CustomSetTest.cs b/exercises/custom-set/CustomSetTest.cs index 67091b5c62..f30fb22d59 100644 --- a/exercises/custom-set/CustomSetTest.cs +++ b/exercises/custom-set/CustomSetTest.cs @@ -1,348 +1,312 @@ -using NUnit.Framework; +using Xunit; public class CustomSetTest { - [Test] + [Fact] public void Sets_with_no_elements_are_empty() { var actual = new CustomSet(); - Assert.That(actual.IsEmpty(), Is.True); + Assert.True(actual.IsEmpty()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sets_with_elements_are_not_empty() { var actual = new CustomSet(1); - Assert.That(actual.IsEmpty(), Is.False); + Assert.False(actual.IsEmpty()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Nothing_is_contained_in_an_empty_set() { var actual = new CustomSet(); - Assert.That(actual.Contains(1), Is.False); + Assert.False(actual.Contains(1)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Detect_if_the_element_is_in_the_set() { var actual = new CustomSet(new[] { 1, 2, 3 }); - Assert.That(actual.Contains(1), Is.True); + Assert.True(actual.Contains(1)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Detect_if_the_element_is_not_in_the_set() { var actual = new CustomSet(new[] { 1, 2, 3 }); - Assert.That(actual.Contains(4), Is.False); + Assert.False(actual.Contains(4)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Add_to_empty_set() { var actual = new CustomSet().Insert(3); var expected = new CustomSet(new[] { 3 }); - Assert.That(actual, Is.EquivalentTo(expected)); + Assert.True(expected.Equals(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Add_to_non_empty_set() { var actual = new CustomSet(new[] { 1, 2, 4 }).Insert(3); var expected = new CustomSet(new[] { 1, 2, 3, 4 }); - Assert.That(actual, Is.EquivalentTo(expected)); + Assert.True(expected.Equals(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Adding_an_existing_element_does_not_change_the_set() { var actual = new CustomSet(new[] { 1, 2, 3 }); actual.Insert(3); var expected = new CustomSet(new[] { 1, 2, 3 }); - Assert.That(actual, Is.EquivalentTo(expected)); + Assert.True(expected.Equals(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_set_is_a_subset_of_another_empty_set() { var left = new CustomSet(); var right = new CustomSet(); - Assert.That(left.IsSubsetOf(right), Is.True); + Assert.True(left.IsSubsetOf(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_set_is_a_subset_of_non_empty_set() { var left = new CustomSet(); var right = new CustomSet(1); - Assert.That(left.IsSubsetOf(right), Is.True); + Assert.True(left.IsSubsetOf(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Non_empty_set_is_not_a_subset_of_empty_set() { var left = new CustomSet(1); var right = new CustomSet(); - Assert.That(left.IsSubsetOf(right), Is.False); + Assert.False(left.IsSubsetOf(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Set_is_a_subset_of_set_with_exact_same_elements() { var left = new CustomSet(new[] { 1, 2, 3 }); var right = new CustomSet(new[] { 1, 2, 3 }); - Assert.That(left.IsSubsetOf(right), Is.True); + Assert.True(left.IsSubsetOf(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Set_is_a_subset_of_larger_set_with_same_elements() { var left = new CustomSet(new[] { 1, 2, 3 }); var right = new CustomSet(new[] { 4, 1, 2, 3 }); - Assert.That(left.IsSubsetOf(right), Is.True); + Assert.True(left.IsSubsetOf(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Set_is_not_a_subset_of_set_that_does_not_contain_its_elements() { var left = new CustomSet(new[] { 1, 2, 3 }); var right = new CustomSet(new[] { 4, 1, 3 }); - Assert.That(left.IsSubsetOf(right), Is.False); + Assert.False(left.IsSubsetOf(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void The_empty_set_is_disjoint_with_itself() { var left = new CustomSet(); var right = new CustomSet(); - Assert.That(left.IsDisjointFrom(right), Is.True); + Assert.True(left.IsDisjointFrom(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_set_is_disjoint_with_non_empty_set() { var left = new CustomSet(); var right = new CustomSet(1); - Assert.That(left.IsDisjointFrom(right), Is.True); + Assert.True(left.IsDisjointFrom(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Non_empty_set_is_disjoint_with_empty_set() { var left = new CustomSet(1); var right = new CustomSet(); - Assert.That(left.IsDisjointFrom(right), Is.True); + Assert.True(left.IsDisjointFrom(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sets_are_not_disjoint_if_they_share_an_element() { var left = new CustomSet(new[] { 1, 2 }); var right = new CustomSet(new[] { 2, 3 }); - Assert.That(left.IsDisjointFrom(right), Is.False); + Assert.False(left.IsDisjointFrom(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sets_are_disjoint_if_they_share_no_elements() { var left = new CustomSet(new[] { 1, 2 }); var right = new CustomSet(new[] { 3, 4 }); - Assert.That(left.IsDisjointFrom(right), Is.True); + Assert.True(left.IsDisjointFrom(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Intersection_of_two_empty_sets_is_an_empty_set() { var left = new CustomSet(); var right = new CustomSet(); var expected = new CustomSet(); - Assert.That(left.Intersection(right), Is.EquivalentTo(expected)); + Assert.True(left.Intersection(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Intersection_of_an_empty_set_and_non_empty_set_is_an_empty_set() { var left = new CustomSet(); var right = new CustomSet(new[] { 3, 2, 5 }); var expected = new CustomSet(); - Assert.That(left.Intersection(right), Is.EquivalentTo(expected)); + Assert.True(left.Intersection(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Intersection_of_a_non_empty_set_and_an_empty_set_is_an_empty_set() { var left = new CustomSet(new[] { 1, 2, 3, 4 }); var right = new CustomSet(); var expected = new CustomSet(); - Assert.That(left.Intersection(right), Is.EquivalentTo(expected)); + Assert.True(left.Intersection(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Intersection_of_two_sets_with_no_shared_elements_is_an_empty_set() { var left = new CustomSet(new[] { 1, 2, 3 }); var right = new CustomSet(new[] { 4, 5, 6 }); var expected = new CustomSet(); - Assert.That(left.Intersection(right), Is.EquivalentTo(expected)); + Assert.True(left.Intersection(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Intersection_of_two_sets_with_shared_elements_is_a_set_of_the_shared_elements() { var left = new CustomSet(new[] { 1, 2, 3, 4 }); var right = new CustomSet(new[] { 3, 2, 5 }); var expected = new CustomSet(new[] { 2, 3 }); - Assert.That(left.Intersection(right), Is.EquivalentTo(expected)); + Assert.True(left.Intersection(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Difference_of_two_empty_sets_is_an_empty_set() { var left = new CustomSet(); var right = new CustomSet(); var expected = new CustomSet(); - Assert.That(left.Difference(right), Is.EquivalentTo(expected)); + Assert.True(left.Difference(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Difference_of_an_empty_set_and_non_empty_set_is_an_empty_set() { var left = new CustomSet(); var right = new CustomSet(new[] { 3, 2, 5 }); var expected = new CustomSet(); - Assert.That(left.Difference(right), Is.EquivalentTo(expected)); + Assert.True(left.Difference(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Difference_of_a_non_empty_set_and_an_empty_set_is_an_empty_set() { var left = new CustomSet(new[] { 1, 2, 3, 4 }); var right = new CustomSet(); var expected = new CustomSet(new[] { 1, 2, 3, 4 }); - Assert.That(left.Difference(right), Is.EquivalentTo(expected)); + Assert.True(left.Difference(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Difference_of_two_non_empty_sets_is_a_set_of_elements_that_are_only_in_the_first_set() { var left = new CustomSet(new[] { 3, 2, 1 }); var right = new CustomSet(new[] { 2, 4 }); var expected = new CustomSet(new[] { 1, 3 }); - Assert.That(left.Difference(right), Is.EquivalentTo(expected)); + Assert.True(left.Difference(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Union_of_two_empty_sets_is_an_empty_set() { var left = new CustomSet(); var right = new CustomSet(); var expected = new CustomSet(); - Assert.That(left.Union(right), Is.EquivalentTo(expected)); + Assert.True(left.Union(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Union_of_an_empty_set_and_non_empty_set_is_the_non_empty_set() { var left = new CustomSet(); var right = new CustomSet(new[] { 2 }); var expected = new CustomSet(new[] { 2 }); - Assert.That(left.Union(right), Is.EquivalentTo(expected)); + Assert.True(left.Union(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Union_of_a_non_empty_set_and_empty_set_is_the_non_empty_set() { var left = new CustomSet(new[] { 1, 3 }); var right = new CustomSet(); var expected = new CustomSet(new[] { 1, 3 }); - Assert.That(left.Union(right), Is.EquivalentTo(expected)); + Assert.True(left.Union(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Union_of_non_empty_sets_contains_all_unique_elements() { var left = new CustomSet(new[] { 1, 3 }); var right = new CustomSet(new[] { 2, 3 }); var expected = new CustomSet(new[] { 3, 2, 1 }); - Assert.That(left.Union(right), Is.EquivalentTo(expected)); + Assert.True(left.Union(right).Equals(expected)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_sets_are_equal() { var left = new CustomSet(); var right = new CustomSet(); - Assert.That(left, Is.EquivalentTo(right)); + Assert.True(left.Equals(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_set_is_not_equal_to_non_empty_set() { var left = new CustomSet(); var right = new CustomSet(new[] { 1, 2, 3 }); - Assert.That(left, Is.Not.EquivalentTo(right)); + Assert.False(left.Equals(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Non_empty_set_is_not_equal_to_empty_set() { var left = new CustomSet(new[] { 1, 2, 3 }); var right = new CustomSet(); - Assert.That(left, Is.Not.EquivalentTo(right)); + Assert.False(left.Equals(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sets_with_the_same_elements_are_equal() { var left = new CustomSet(new[] { 1, 2 }); var right = new CustomSet(new[] { 2, 1 }); - Assert.That(left, Is.EquivalentTo(right)); + Assert.True(left.Equals(right)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sets_with_different_elements_are_not_equal() { var left = new CustomSet(new[] { 1, 2, 3 }); var right = new CustomSet(new[] { 1, 2, 4 }); - Assert.That(left, Is.Not.EquivalentTo(right)); + Assert.False(left.Equals(right)); } } \ No newline at end of file diff --git a/exercises/custom-set/Example.cs b/exercises/custom-set/Example.cs index 40e69f3aaf..2d06875d26 100644 --- a/exercises/custom-set/Example.cs +++ b/exercises/custom-set/Example.cs @@ -1,8 +1,9 @@ -using System.Collections; +using System; +using System.Collections; using System.Collections.Generic; using System.Linq; -public class CustomSet : IEnumerable +public class CustomSet : IEnumerable, IEquatable> { private readonly Dictionary items = new Dictionary(); @@ -69,4 +70,16 @@ IEnumerator IEnumerable.GetEnumerator() } private IEnumerable GetValuesFromKeys(IEnumerable keys) => keys.Select(key => items[key]); + + public override bool Equals(object obj) => Equals(obj as IEnumerable); + + public bool Equals(IEnumerable other) + { + return items.Keys.OrderBy(x => x).SequenceEqual(other.Select(o => o.GetHashCode()).OrderBy(x => x)); + } + + public int GetHashCode(IEnumerable obj) + { + throw new NotImplementedException(); + } } \ No newline at end of file diff --git a/exercises/diamond/DiamondTest.cs b/exercises/diamond/DiamondTest.cs index 04290dbd0a..9f6e7db62c 100644 --- a/exercises/diamond/DiamondTest.cs +++ b/exercises/diamond/DiamondTest.cs @@ -1,38 +1,44 @@ using System; +using System.Collections.Generic; using System.Linq; -using NUnit.Framework; +using Xunit; public class DiamondTest { - private static readonly char[] Letters = GetLetterRange('A', 'Z'); + public static readonly char[] AllLetters = GetLetterRange('A', 'Z'); + public static readonly IEnumerable Letters = AllLetters.Select(letter => new[] { (object)letter }); private static char[] GetLetterRange(char min, char max) => Enumerable.Range(min, max - min + 1).Select(i => (char) i).ToArray(); private static string[] Rows(string x) => x.Split(new[] { '\n' }, StringSplitOptions.None); - private static string LeadingSpaces(string x) => x.Substring(0, x.IndexOfAny(Letters)); - private static string TrailingSpaces(string x) => x.Substring(x.LastIndexOfAny(Letters) + 1); + private static string LeadingSpaces(string x) => x.Substring(0, x.IndexOfAny(AllLetters)); + private static string TrailingSpaces(string x) => x.Substring(x.LastIndexOfAny(AllLetters) + 1); - [TestCaseSource(nameof(Letters))] + [Theory] + [MemberData(nameof(Letters))] public void First_row_contains_A(char letter) { var actual = Diamond.Make(letter); var rows = Rows(actual); var firstRowCharacters = rows.First().Trim(); - Assert.That(firstRowCharacters, Is.EqualTo("A")); + Assert.Equal("A", firstRowCharacters); } - [Ignore("Remove to run test")] - [TestCaseSource(nameof(Letters))] + [Theory(Skip = "Remove to run test")] + [MemberData(nameof(Letters))] public void All_rows_must_have_symmetric_contour(char letter) { var actual = Diamond.Make(letter); var rows = Rows(actual); - Assert.That(rows, Is.All.Matches(row => LeadingSpaces(row) == TrailingSpaces(row))); + Assert.All(rows, row => + { + Assert.Equal(LeadingSpaces(row), TrailingSpaces(row)); + }); } - [Ignore("Remove to run test")] - [TestCaseSource(nameof(Letters))] + [Theory(Skip = "Remove to run test")] + [MemberData(nameof(Letters))] public void Top_of_figure_has_letters_in_correct_order(char letter) { var actual = Diamond.Make(letter); @@ -40,11 +46,11 @@ public void Top_of_figure_has_letters_in_correct_order(char letter) var expected = GetLetterRange('A', letter); var firstNonSpaceLetters = rows.Take(expected.Length).Select(row => row.Trim()[0]); - Assert.That(expected, Is.EqualTo(firstNonSpaceLetters)); + Assert.Equal(firstNonSpaceLetters, expected); } - [Ignore("Remove to run test")] - [TestCaseSource(nameof(Letters))] + [Theory(Skip = "Remove to run test")] + [MemberData(nameof(Letters))] public void Figure_is_symmetric_around_the_horizontal_axis(char letter) { var actual = Diamond.Make(letter); @@ -53,11 +59,11 @@ public void Figure_is_symmetric_around_the_horizontal_axis(char letter) var top = rows.TakeWhile(row => !row.Contains(letter)); var bottom = rows.Reverse().TakeWhile(row => !row.Contains(letter)); - Assert.That(top, Is.EqualTo(bottom)); + Assert.Equal(bottom, top); } - [Ignore("Remove to run test")] - [TestCaseSource(nameof(Letters))] + [Theory(Skip = "Remove to run test")] + [MemberData(nameof(Letters))] public void Diamond_has_square_shape(char letter) { var actual = Diamond.Make(letter); @@ -65,27 +71,30 @@ public void Diamond_has_square_shape(char letter) var rows = Rows(actual); var expected = rows.Length; - Assert.That(rows, Is.All.Matches(row => row.Length == expected)); + Assert.All(rows, row => + { + Assert.Equal(expected, row.Length); + }); } - [Ignore("Remove to run test")] - [TestCaseSource(nameof(Letters))] + [Theory(Skip = "Remove to run test")] + [MemberData(nameof(Letters))] public void All_rows_except_top_and_bottom_have_two_identical_letters(char letter) { var actual = Diamond.Make(letter); var rows = Rows(actual).Where(row => !row.Contains('A')); - Assert.That(rows, Is.All.Matches(row => + Assert.All(rows, row => { var twoCharacters = row.Replace(" ", "").Length == 2; var identicalCharacters = row.Replace(" ", "").Distinct().Count() == 1; - return twoCharacters && identicalCharacters; - })); + Assert.True(twoCharacters && identicalCharacters, "Does not have two identical letters"); + }); } - [Ignore("Remove to run test")] - [TestCaseSource(nameof(Letters))] + [Theory(Skip = "Remove to run test")] + [MemberData(nameof(Letters))] public void Bottom_left_corner_spaces_are_triangle(char letter) { var actual = Diamond.Make(letter); @@ -96,6 +105,6 @@ public void Bottom_left_corner_spaces_are_triangle(char letter) var spaceCounts = cornerSpaces.Select(row => row.Length).ToList(); var expected = Enumerable.Range(0, spaceCounts.Count).Select(i => i).ToList(); - Assert.That(spaceCounts, Is.EqualTo(expected)); + Assert.Equal(expected, spaceCounts); } } \ No newline at end of file diff --git a/exercises/difference-of-squares/DifferenceOfSquaresTest.cs b/exercises/difference-of-squares/DifferenceOfSquaresTest.cs index 0d7e66655d..6a5e4fc0da 100644 --- a/exercises/difference-of-squares/DifferenceOfSquaresTest.cs +++ b/exercises/difference-of-squares/DifferenceOfSquaresTest.cs @@ -1,82 +1,71 @@ using System; -using NUnit.Framework; +using Xunit; -[TestFixture] public class DifferenceOfSquaresTests { - [Test] + [Fact] public void Test_square_of_sums_to_5() { - Assert.That(new Squares(5).SquareOfSums(), Is.EqualTo(225)); + Assert.Equal(225, new Squares(5).SquareOfSums()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_sum_of_squares_to_5() { - Assert.That(new Squares(5).SumOfSquares(), Is.EqualTo(55)); + Assert.Equal(55, new Squares(5).SumOfSquares()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_difference_of_sums_to_5() { - Assert.That(new Squares(5).DifferenceOfSquares(), Is.EqualTo(170)); + Assert.Equal(170, new Squares(5).DifferenceOfSquares()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_square_of_sums_to_10() { - Assert.That(new Squares(10).SquareOfSums(), Is.EqualTo(3025)); + Assert.Equal(3025, new Squares(10).SquareOfSums()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_sum_of_squares_to_10() { - Assert.That(new Squares(10).SumOfSquares(), Is.EqualTo(385)); + Assert.Equal(385, new Squares(10).SumOfSquares()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_difference_of_sums_to_10() { - Assert.That(new Squares(10).DifferenceOfSquares(), Is.EqualTo(2640)); + Assert.Equal(2640, new Squares(10).DifferenceOfSquares()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_square_of_sums_to_100() { - Assert.That(new Squares(100).SquareOfSums(), Is.EqualTo(25502500)); + Assert.Equal(25502500, new Squares(100).SquareOfSums()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_sum_of_squares_to_100() { - Assert.That(new Squares(100).SumOfSquares(), Is.EqualTo(338350)); + Assert.Equal(338350, new Squares(100).SumOfSquares()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_difference_of_sums_to_100() { - Assert.That(new Squares(100).DifferenceOfSquares(), Is.EqualTo(25164150)); + Assert.Equal(25164150, new Squares(100).DifferenceOfSquares()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_difference_of_sums_0() { - Assert.That(new Squares(0).DifferenceOfSquares(), Is.EqualTo(0)); + Assert.Equal(0, new Squares(0).DifferenceOfSquares()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_negative_numbers_throw_argument_out_of_range_exception() { - Assert.That(() => new Squares(-5), Throws.TypeOf()); + Assert.Throws(() => new Squares(-5)); } } diff --git a/exercises/diffie-hellman/DiffieHellmanTest.cs b/exercises/diffie-hellman/DiffieHellmanTest.cs index 5fbd6d5c48..dd66ac78eb 100644 --- a/exercises/diffie-hellman/DiffieHellmanTest.cs +++ b/exercises/diffie-hellman/DiffieHellmanTest.cs @@ -1,30 +1,31 @@ using System.Linq; using System.Numerics; -using NUnit.Framework; +using Xunit; public class DiffieHellmanTest { - [Test] + [Fact] public void Private_key_in_range() { var primeP = new BigInteger(23); var privateKeys = Enumerable.Range(0, 10).Select(_ => DiffieHellman.PrivateKey(primeP)).ToList(); - Assert.That(privateKeys, Is.All.InRange(new BigInteger(1), primeP - new BigInteger(1))); + Assert.All(privateKeys, privateKey => + { + Assert.InRange(privateKey, new BigInteger(1), primeP - new BigInteger(1)); + }); } // Note: due to the nature of randomness, there is always a chance that this test fails // Be sure to check the actual generated values - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Private_key_randomly_generated() { var primeP = new BigInteger(7919); var privateKeys = Enumerable.Range(0, 5).Select(_ => DiffieHellman.PrivateKey(primeP)).ToList(); - Assert.That(privateKeys.Count, Is.EqualTo(privateKeys.Distinct().Count())); + Assert.Equal(privateKeys.Distinct().Count(), privateKeys.Count); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Public_key_correctly_calculated() { var primeP = new BigInteger(23); @@ -32,11 +33,10 @@ public void Public_key_correctly_calculated() var privateKey = new BigInteger(6); var actual = DiffieHellman.PublicKey(primeP, primeG, privateKey); - Assert.That(actual, Is.EqualTo(new BigInteger(8))); + Assert.Equal(new BigInteger(8), actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Secret_key_correctly_calculated() { var primeP = new BigInteger(23); @@ -44,11 +44,10 @@ public void Secret_key_correctly_calculated() var privateKey = new BigInteger(6); var actual = DiffieHellman.Secret(primeP, publicKey, privateKey); - Assert.That(actual, Is.EqualTo(new BigInteger(2))); + Assert.Equal(new BigInteger(2), actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Secret_key_correctly_calculated_when_using_large_primes() { var primeP = BigInteger.Parse("120227323036150778550155526710966921740030662694578947298423549235265759593711587341037426347114541533006628856300552706996143592240453345642869233562886752930249953227657883929905072620233073626594386072962776144691433658814261874113232461749035425712805067202910389407991986070558964461330091797026762932543"); @@ -56,11 +55,10 @@ public void Secret_key_correctly_calculated_when_using_large_primes() var privateKey = BigInteger.Parse("2483479393625932939911081304356888505153797135447327501792696199190469015215177630758617902200417377685436170904594686456961202706692908603181062371925882"); var expected = BigInteger.Parse("70900735223964890815905879227737819348808518698920446491346508980461201746567735331455825644429877946556431095820785835497384849778344216981228226252639932672153547963980483673419756271345828771971984887453014488572245819864454136618980914729839523581263886740821363010486083940557620831348661126601106717071"); var actual = DiffieHellman.Secret(primeP, publicKey, privateKey); - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_exchange() { var primeP = new BigInteger(23); @@ -75,6 +73,6 @@ public void Test_exchange() var secretA = DiffieHellman.Secret(primeP, publicKeyB, privateKeyA); var secretB = DiffieHellman.Secret(primeP, publicKeyA, privateKeyB); - Assert.That(secretA, Is.EqualTo(secretB)); + Assert.Equal(secretB, secretA); } } diff --git a/exercises/dominoes/DominoesTest.cs b/exercises/dominoes/DominoesTest.cs index 9fe0e86592..9e6307e71a 100644 --- a/exercises/dominoes/DominoesTest.cs +++ b/exercises/dominoes/DominoesTest.cs @@ -1,100 +1,89 @@ using System; -using NUnit.Framework; +using Xunit; public class DominoesTest { - [Test] + [Fact] public void Empty_input_equals_empty_output() { var actual = new Tuple[0]; - Assert.That(Dominoes.CanChain(actual), Is.True); + Assert.True(Dominoes.CanChain(actual)); } - - [Ignore("Remove to run test")] - [Test] + + [Fact(Skip = "Remove to run test")] public void Singleton_input_equals_singleton_output() { var actual = new[] { Tuple.Create(1, 1) }; - Assert.That(Dominoes.CanChain(actual), Is.True); + Assert.True(Dominoes.CanChain(actual)); } - - [Ignore("Remove to run test")] - [Test] + + [Fact(Skip = "Remove to run test")] public void Singleton_that_cant_be_chained() { var actual = new[] { Tuple.Create(1, 2) }; - Assert.That(Dominoes.CanChain(actual), Is.False); + Assert.False(Dominoes.CanChain(actual)); } - - [Ignore("Remove to run test")] - [Test] + + [Fact(Skip = "Remove to run test")] public void Three_elements() { var actual = new[] { Tuple.Create(1, 2), Tuple.Create(3, 1), Tuple.Create(2, 3) }; - Assert.That(Dominoes.CanChain(actual), Is.True); + Assert.True(Dominoes.CanChain(actual)); } - - [Ignore("Remove to run test")] - [Test] + + [Fact(Skip = "Remove to run test")] public void Can_reverse_dominoes() { var actual = new[] { Tuple.Create(1, 2), Tuple.Create(1, 3), Tuple.Create(2, 3) }; - Assert.That(Dominoes.CanChain(actual), Is.True); + Assert.True(Dominoes.CanChain(actual)); } - - [Ignore("Remove to run test")] - [Test] + + [Fact(Skip = "Remove to run test")] public void Cant_be_chained() { var actual = new[] { Tuple.Create(1, 2), Tuple.Create(4, 1), Tuple.Create(2, 3) }; - Assert.That(Dominoes.CanChain(actual), Is.False); + Assert.False(Dominoes.CanChain(actual)); } - - [Ignore("Remove to run test")] - [Test] + + [Fact(Skip = "Remove to run test")] public void Disconnected_simple() { var actual = new[] { Tuple.Create(1, 1), Tuple.Create(2, 2) }; - Assert.That(Dominoes.CanChain(actual), Is.False); + Assert.False(Dominoes.CanChain(actual)); } - - [Ignore("Remove to run test")] - [Test] + + [Fact(Skip = "Remove to run test")] public void Disconnected_double_loop() { var actual = new[] { Tuple.Create(1, 2), Tuple.Create(2, 1), Tuple.Create(3, 4), Tuple.Create(4, 3) }; - Assert.That(Dominoes.CanChain(actual), Is.False); + Assert.False(Dominoes.CanChain(actual)); } - - [Ignore("Remove to run test")] - [Test] + + [Fact(Skip = "Remove to run test")] public void Disconnected_single_isolated() { var actual = new[] { Tuple.Create(1, 2), Tuple.Create(2, 3), Tuple.Create(3, 1), Tuple.Create(4, 4) }; - Assert.That(Dominoes.CanChain(actual), Is.False); + Assert.False(Dominoes.CanChain(actual)); } - - [Ignore("Remove to run test")] - [Test] + + [Fact(Skip = "Remove to run test")] public void Need_backtrack() { var actual = new[] { Tuple.Create(1, 2), Tuple.Create(2, 3), Tuple.Create(3, 1), Tuple.Create(2, 4), Tuple.Create(2, 4) }; - Assert.That(Dominoes.CanChain(actual), Is.True); + Assert.True(Dominoes.CanChain(actual)); } - - [Ignore("Remove to run test")] - [Test] + + [Fact(Skip = "Remove to run test")] public void Separate_loops() { var actual = new[] { Tuple.Create(1, 2), Tuple.Create(2, 3), Tuple.Create(3, 1), Tuple.Create(1, 1), Tuple.Create(2, 2), Tuple.Create(3, 3) }; - Assert.That(Dominoes.CanChain(actual), Is.True); + Assert.True(Dominoes.CanChain(actual)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Ten_elements() { var actual = new[] @@ -102,6 +91,6 @@ public void Ten_elements() Tuple.Create(1, 2), Tuple.Create(5, 3), Tuple.Create(3, 1), Tuple.Create(1, 2), Tuple.Create(2, 4), Tuple.Create(1, 6), Tuple.Create(2, 3), Tuple.Create(3, 4), Tuple.Create(5, 6) }; - Assert.That(Dominoes.CanChain(actual), Is.True); + Assert.True(Dominoes.CanChain(actual)); } } \ No newline at end of file diff --git a/exercises/dot-dsl/DotDslTest.cs b/exercises/dot-dsl/DotDslTest.cs index 615fb1f84f..9e0c45b6b7 100644 --- a/exercises/dot-dsl/DotDslTest.cs +++ b/exercises/dot-dsl/DotDslTest.cs @@ -1,19 +1,21 @@ -using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using Xunit; public class DotDslTest { - [Test] + [Fact] public void Empty_graph() { var g = new Graph(); - Assert.That(g.Nodes, Is.Empty); - Assert.That(g.Edges, Is.Empty); - Assert.That(g.Attrs, Is.Empty); + Assert.Empty(g.Nodes); + Assert.Empty(g.Edges); + Assert.Empty(g.Attrs); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Graph_with_one_node() { var g = new Graph @@ -21,13 +23,12 @@ public void Graph_with_one_node() new Node("a") }; - Assert.That(g.Nodes, Is.EquivalentTo(new[] { new Node("a") })); - Assert.That(g.Edges, Is.Empty); - Assert.That(g.Attrs, Is.Empty); + Assert.Equal(new[] { new Node("a") }, g.Nodes); + Assert.Empty(g.Edges); + Assert.Empty(g.Attrs); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Graph_with_one_node_with_keywords() { var g = new Graph @@ -35,13 +36,12 @@ public void Graph_with_one_node_with_keywords() new Node("a") { { "color", "green" } } }; - Assert.That(g.Nodes, Is.EquivalentTo(new[] { new Node("a") { { "color", "green" } } })); - Assert.That(g.Edges, Is.Empty); - Assert.That(g.Attrs, Is.Empty); + Assert.Equal(new[] { new Node("a") { { "color", "green" } } }, g.Nodes); + Assert.Empty(g.Edges); + Assert.Empty(g.Attrs); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Graph_with_one_edge() { var g = new Graph @@ -49,13 +49,12 @@ public void Graph_with_one_edge() new Edge("a", "b") }; - Assert.That(g.Nodes, Is.Empty); - Assert.That(g.Edges, Is.EquivalentTo(new[] { new Edge("a", "b") })); - Assert.That(g.Attrs, Is.Empty); + Assert.Empty(g.Nodes); + Assert.Equal(new[] { new Edge("a", "b") }, g.Edges); + Assert.Empty(g.Attrs); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Graph_with_one_attribute() { var g = new Graph @@ -63,13 +62,12 @@ public void Graph_with_one_attribute() { "foo", "1" } }; - Assert.That(g.Nodes, Is.Empty); - Assert.That(g.Edges, Is.Empty); - Assert.That(g.Attrs, Is.EquivalentTo(new[] { new Attr("foo", "1") })); + Assert.Empty(g.Nodes); + Assert.Empty(g.Edges); + Assert.Equal(new[] { new Attr("foo", "1") }, g.Attrs); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Graph_with_attributes() { var g = new Graph @@ -84,8 +82,20 @@ public void Graph_with_attributes() { "bar", "true" } }; - Assert.That(g.Nodes, Is.EquivalentTo(new[] { new Node("a") { { "color", "green" } }, new Node("b") { { "label", "Beta!" } }, new Node("c") })); - Assert.That(g.Edges, Is.EquivalentTo(new[] { new Edge("a", "b") { { "color", "blue" } }, new Edge("b", "c") })); - Assert.That(g.Attrs, Is.EquivalentTo(new[] { new Attr("bar", "true"), new Attr("foo", "1"), new Attr("title", "Testing Attrs") })); + Assert.Equal(new[] { new Node("a") { { "color", "green" } }, new Node("b") { { "label", "Beta!" } }, new Node("c") }, g.Nodes, EnumerableEqualityComparer.Instance); + Assert.Equal(new[] { new Edge("a", "b") { { "color", "blue" } }, new Edge("b", "c") }, g.Edges, EnumerableEqualityComparer.Instance); + Assert.Equal(new[] { new Attr("bar", "true"), new Attr("foo", "1"), new Attr("title", "Testing Attrs") }, g.Attrs, EnumerableEqualityComparer.Instance); + } + + private class EnumerableEqualityComparer : IEqualityComparer> + { + public static readonly EnumerableEqualityComparer Instance = new EnumerableEqualityComparer(); + + public bool Equals(IEnumerable x, IEnumerable y) => new HashSet(x).SetEquals(y); + + public int GetHashCode(IEnumerable obj) + { + throw new NotImplementedException(); + } } } \ No newline at end of file diff --git a/exercises/error-handling/ErrorHandlingTest.cs b/exercises/error-handling/ErrorHandlingTest.cs index 545560bf0c..ff8bd317d9 100644 --- a/exercises/error-handling/ErrorHandlingTest.cs +++ b/exercises/error-handling/ErrorHandlingTest.cs @@ -1,43 +1,40 @@ using System; -using NUnit.Framework; +using Xunit; -[TestFixture] public class ErrorHandlingTest { // Read more about exception handling here: // https://msdn.microsoft.com/en-us/library/ms173162.aspx?f=255&MSPPError=-2147217396 - [Test] + [Fact] public void ThrowException() { - Assert.Throws(ErrorHandling.HandleErrorByThrowingException); + Assert.Throws(() => ErrorHandling.HandleErrorByThrowingException()); } // Read more about nullable types here: // https://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx?f=255&MSPPError=-2147217396 - [Test] - [Ignore("Remove to run test")] + [Fact(Skip = "Remove to run test")] public void ReturnNullableType() { var successfulResult = ErrorHandling.HandleErrorByReturningNullableType("1"); - Assert.That(successfulResult, Is.EqualTo(1)); + Assert.Equal(1, successfulResult); var failureResult = ErrorHandling.HandleErrorByReturningNullableType("a"); - Assert.That(failureResult, Is.EqualTo(null)); + Assert.Equal(null, failureResult); } // Read more about out parameters here: // https://msdn.microsoft.com/en-us/library/t3c3bfhx.aspx?f=255&MSPPError=-2147217396 - [Test] - [Ignore("Remove to run test")] + [Fact(Skip = "Remove to run test")] public void ReturnWithOutParameter() { int result; var successfulResult = ErrorHandling.HandleErrorWithOutParam("1", out result); - Assert.That(successfulResult, Is.EqualTo(true)); - Assert.That(result, Is.EqualTo(1)); + Assert.Equal(true, successfulResult); + Assert.Equal(1, result); var failureResult = ErrorHandling.HandleErrorWithOutParam("a", out result); - Assert.That(failureResult, Is.EqualTo(false)); + Assert.Equal(false, failureResult); // The value of result is meaningless here (it could be anything) so it shouldn't be used and it's not validated } @@ -53,13 +50,12 @@ public void Dispose() // Read more about IDisposable here: // https://msdn.microsoft.com/en-us/library/system.idisposable(v=vs.110).aspx - [Test] - [Ignore("Remove to run test")] + [Fact(Skip = "Remove to run test")] public void DisposableObjectsAreDisposedWhenThrowingAnException() { var disposableResource = new DisposableResource(); Assert.Throws(() => ErrorHandling.DisposableResourcesAreDisposedWhenExceptionIsThrown(disposableResource)); - Assert.That(disposableResource.IsDisposed, Is.EqualTo(true)); + Assert.Equal(true, disposableResource.IsDisposed); } } diff --git a/exercises/etl/ETLTest.cs b/exercises/etl/ETLTest.cs index 4426fe6eff..171736878a 100644 --- a/exercises/etl/ETLTest.cs +++ b/exercises/etl/ETLTest.cs @@ -1,37 +1,33 @@ using System.Collections.Generic; -using NUnit.Framework; +using Xunit; -[TestFixture] public class ETLTest { - [Test] + [Fact] public void Transforms_one_value() { var old = new Dictionary> { { 1, new List { "A" } } }; var expected = new Dictionary { { "a", 1 } }; - Assert.That(ETL.Transform(old), Is.EqualTo(expected)); + Assert.Equal(expected, ETL.Transform(old)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Transforms_multiple_values() { var old = new Dictionary> { { 1, new List { "A", "E", "I", "O", "U" } } }; var expected = new Dictionary { { "a", 1 }, { "e", 1 }, { "i", 1 }, { "o", 1 }, { "u", 1 } }; - Assert.That(ETL.Transform(old), Is.EqualTo(expected)); + Assert.Equal(expected, ETL.Transform(old)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Transforms_multiple_keys() { var old = new Dictionary> { { 1, new List { "A", "E" } }, { 2, new List { "D", "G" } } }; var expected = new Dictionary { { "a", 1 }, { "e", 1 }, { "d", 2 }, { "g", 2 } }; - Assert.That(ETL.Transform(old), Is.EqualTo(expected)); + Assert.Equal(expected, ETL.Transform(old)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Transforms_a_full_dataset() { var old = new Dictionary> @@ -50,6 +46,6 @@ public void Transforms_a_full_dataset() { "j", 8 }, { "k", 5 }, { "l", 1 }, { "m", 3 }, { "n", 1 }, { "o", 1 }, { "p", 3 }, { "q", 10 }, { "r", 1 }, { "s", 1 }, { "t", 1 }, { "u", 1 }, { "v", 4 }, { "w", 4 }, { "x", 8 }, { "y", 4 }, { "z", 10 } }; - Assert.That(ETL.Transform(old), Is.EqualTo(expected)); + Assert.Equal(expected, ETL.Transform(old)); } } \ No newline at end of file diff --git a/exercises/exercises.csproj b/exercises/exercises.csproj index 2432130d5d..4a87d0915b 100644 --- a/exercises/exercises.csproj +++ b/exercises/exercises.csproj @@ -43,59 +43,28 @@ + + + - - - - ..\packages\NUnit\lib\net20\NUnit.System.Linq.dll - True - True - - - ..\packages\NUnit\lib\net20\nunit.framework.dll - True - True - - - - - - - ..\packages\NUnit\lib\net35\nunit.framework.dll - True - True - - - - - - - ..\packages\NUnit\lib\net40\nunit.framework.dll - True - True - - + + + <__paket__xunit_core_props>portable-net45+win8+wp8+wpa81\xunit.core + - - - - ..\packages\NUnit\lib\net45\nunit.framework.dll - True - True - - + + + <__paket__xunit_core_props>win81\xunit.core + - - - - ..\packages\NUnit\lib\portable-net45+win8+wp8+wpa81+Xamarin.Mac+MonoAndroid10+MonoTouch10+Xamarin.iOS10\nunit.framework.dll - True - True - - + + + <__paket__xunit_core_props>wpa81\xunit.core + + @@ -154,17 +123,6 @@ - - - - - ..\packages\System.Diagnostics.Debug\ref\netstandard1.3\System.Diagnostics.Debug.dll - False - True - - - - @@ -188,50 +146,46 @@ - - ..\packages\System.IO\ref\netstandard1.5\System.IO.dll - False + + ..\packages\System.Linq\lib\netstandard1.6\System.Linq.dll + True True - + - - ..\packages\System.Linq\ref\netstandard1.0\System.Linq.dll + + ..\packages\System.Runtime\ref\netstandard1.0\System.Runtime.dll False True - + - - ..\packages\System.Linq\ref\netstandard1.6\System.Linq.dll + + ..\packages\System.Runtime\ref\netstandard1.2\System.Runtime.dll False True - - - + - - ..\packages\System.Reflection\ref\netstandard1.5\System.Reflection.dll + + ..\packages\System.Runtime\ref\netstandard1.3\System.Runtime.dll False True - - - + - - ..\packages\System.Reflection.Primitives\ref\netstandard1.0\System.Reflection.Primitives.dll + + ..\packages\System.Runtime\ref\netstandard1.5\System.Runtime.dll False True @@ -239,122 +193,156 @@ - + - - ..\packages\System.Resources.ResourceManager\ref\netstandard1.0\System.Resources.ResourceManager.dll + + ..\packages\System.Text.RegularExpressions\ref\netstandard1.0\System.Text.RegularExpressions.dll False True - - - + - - ..\packages\System.Runtime\ref\netstandard1.0\System.Runtime.dll + + ..\packages\System.Text.RegularExpressions\ref\netstandard1.3\System.Text.RegularExpressions.dll False True - + - - ..\packages\System.Runtime\ref\netstandard1.2\System.Runtime.dll - False + + ..\packages\System.Text.RegularExpressions\lib\netstandard1.6\System.Text.RegularExpressions.dll + True True - + + + - - ..\packages\System.Runtime\ref\netstandard1.3\System.Runtime.dll - False + + ..\packages\System.Threading\lib\netstandard1.3\System.Threading.dll + True True - + + + - - ..\packages\System.Runtime\ref\netstandard1.5\System.Runtime.dll - False + + ..\packages\xunit.abstractions\lib\net35\xunit.abstractions.dll + True + True + + + + + + + ..\packages\xunit.abstractions\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.abstractions.dll + True True - + - - ..\packages\System.Runtime.Extensions\ref\netstandard1.5\System.Runtime.Extensions.dll - False + + ..\packages\xunit.assert\lib\portable-net45+win8+wp8+wpa81\xunit.assert.dll + True True - + - - ..\packages\System.Text.Encoding\ref\netstandard1.3\System.Text.Encoding.dll - False + + ..\packages\xunit.extensibility.core\lib\portable-net45+win8+wp8+wpa81\xunit.core.dll + True True - + - - ..\packages\System.Text.RegularExpressions\ref\netstandard1.0\System.Text.RegularExpressions.dll - False + + ..\packages\xunit.extensibility.execution\lib\monoandroid\xunit.execution.dotnet.dll + True True - + - - ..\packages\System.Text.RegularExpressions\ref\netstandard1.3\System.Text.RegularExpressions.dll - False + + ..\packages\xunit.extensibility.execution\lib\monotouch\xunit.execution.dotnet.dll + True True - + - - ..\packages\System.Text.RegularExpressions\ref\netstandard1.6\System.Text.RegularExpressions.dll - False + + ..\packages\xunit.extensibility.execution\lib\net45\xunit.execution.desktop.dll + True True - - - + - - ..\packages\System.Threading\ref\netstandard1.3\System.Threading.dll - False + + ..\packages\xunit.extensibility.execution\lib\portable-net45+win8+wp8+wpa81\xunit.execution.dotnet.dll + True True - - - + - - ..\packages\System.Threading.Tasks\ref\netstandard1.3\System.Threading.Tasks.dll - False + + ..\packages\xunit.extensibility.execution\lib\win8\xunit.execution.dotnet.dll + True + True + + + + + + + ..\packages\xunit.extensibility.execution\lib\wp8\xunit.execution.dotnet.dll + True + True + + + + + + + ..\packages\xunit.extensibility.execution\lib\wpa81\xunit.execution.dotnet.dll + True + True + + + + + + + ..\packages\xunit.extensibility.execution\lib\xamarinios\xunit.execution.dotnet.dll + True True diff --git a/exercises/exercises.sln b/exercises/exercises.sln new file mode 100644 index 0000000000..dee915d11f --- /dev/null +++ b/exercises/exercises.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "exercises", "exercises.csproj", "{FEF69435-D885-45DD-A446-04FD3BD3F593}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FEF69435-D885-45DD-A446-04FD3BD3F593}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FEF69435-D885-45DD-A446-04FD3BD3F593}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FEF69435-D885-45DD-A446-04FD3BD3F593}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FEF69435-D885-45DD-A446-04FD3BD3F593}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/exercises/flatten-array/FlattenArrayTest.cs b/exercises/flatten-array/FlattenArrayTest.cs index d609e3add5..e9d1e93e1c 100644 --- a/exercises/flatten-array/FlattenArrayTest.cs +++ b/exercises/flatten-array/FlattenArrayTest.cs @@ -1,25 +1,25 @@ -using System.Collections.Generic; -using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using Xunit; public class FlattenArrayTest { - [Test] + [Fact] public void Flattens_A_Nested_List() { var nestedList = new List { new List() }; - Assert.That(Flattener.Flatten(nestedList), Is.Empty); + Assert.Empty(Flattener.Flatten(nestedList)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Flattens_2_Level_Nested_List() { var nestedList = new List { 1, new List { 2, 3, 4 }, 5 }; - Assert.That(Flattener.Flatten(nestedList), Is.EquivalentTo(new List { 1, 2, 3, 4, 5 })); + Assert.Equal(new List { 1, 2, 3, 4, 5 }, Flattener.Flatten(nestedList).Cast()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Flattens_3_Level_Nested_List() { var nestedList = new List @@ -29,11 +29,10 @@ public void Flattens_3_Level_Nested_List() 5, new List { 6, new List { 7, 8 } } }; - Assert.That(Flattener.Flatten(nestedList), Is.EquivalentTo(new List { 1, 2, 3, 4, 5, 6, 7, 8 })); + Assert.Equal(new List { 1, 2, 3, 4, 5, 6, 7, 8 }, Flattener.Flatten(nestedList).Cast()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Flattens_5_Level_Nested_List() { var nestedList = new List @@ -50,11 +49,10 @@ public void Flattens_5_Level_Nested_List() -2 } }; - Assert.That(Flattener.Flatten(nestedList), Is.EquivalentTo(new List { 0, 2, 2, 3, 8, 100, 4, 50, -2 })); + Assert.Equal(new List { 0, 2, 2, 3, 8, 100, 4, 50, -2 }, Flattener.Flatten(nestedList).Cast()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Flattens_6_Level_Nested_List() { var nestedList = new List @@ -70,11 +68,10 @@ public void Flattens_6_Level_Nested_List() }, 8 }; - Assert.That(Flattener.Flatten(nestedList), Is.EquivalentTo(new List { 1, 2, 3, 4, 5, 6, 7, 8 })); + Assert.Equal(new List { 1, 2, 3, 4, 5, 6, 7, 8 }, Flattener.Flatten(nestedList).Cast()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Flattens_6_Level_Nested_List_With_Nulls() { var nestedList = new List @@ -93,11 +90,10 @@ public void Flattens_6_Level_Nested_List_With_Nulls() 8, null }; - Assert.That(Flattener.Flatten(nestedList), Is.EquivalentTo(new List { 1, 2, 3, 4, 5, 6, 7, 8 })); + Assert.Equal(new List { 1, 2, 3, 4, 5, 6, 7, 8 }, Flattener.Flatten(nestedList).Cast()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void All_Null_Nested_List_Returns_Empty_List() { var nestedList = new List @@ -111,6 +107,6 @@ public void All_Null_Nested_List_Returns_Empty_List() }, null }; - Assert.That(Flattener.Flatten(nestedList), Is.Empty); + Assert.Empty(Flattener.Flatten(nestedList)); } } \ No newline at end of file diff --git a/exercises/food-chain/FoodChainTest.cs b/exercises/food-chain/FoodChainTest.cs index 3493c0b079..f625e58cf8 100644 --- a/exercises/food-chain/FoodChainTest.cs +++ b/exercises/food-chain/FoodChainTest.cs @@ -1,18 +1,17 @@ -using NUnit.Framework; +using Xunit; public class FoodChainTest { - [Test] + [Fact] public void Verse_one() { const string expected = "I know an old lady who swallowed a fly.\n" + "I don't know why she swallowed the fly. Perhaps she'll die."; - Assert.That(FoodChain.Verse(1), Is.EqualTo(expected)); + Assert.Equal(expected, FoodChain.Verse(1)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Verse_two() { const string expected = "I know an old lady who swallowed a spider.\n" + @@ -20,11 +19,10 @@ public void Verse_two() "She swallowed the spider to catch the fly.\n" + "I don't know why she swallowed the fly. Perhaps she'll die."; - Assert.That(FoodChain.Verse(2), Is.EqualTo(expected)); + Assert.Equal(expected, FoodChain.Verse(2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Verse_four() { const string expected = "I know an old lady who swallowed a cat.\n" + @@ -34,21 +32,19 @@ public void Verse_four() "She swallowed the spider to catch the fly.\n" + "I don't know why she swallowed the fly. Perhaps she'll die."; - Assert.That(FoodChain.Verse(4), Is.EqualTo(expected)); + Assert.Equal(expected, FoodChain.Verse(4)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Verse_eight() { const string expected = "I know an old lady who swallowed a horse.\n" + "She's dead, of course!"; - Assert.That(FoodChain.Verse(8), Is.EqualTo(expected)); + Assert.Equal(expected, FoodChain.Verse(8)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Complete_song() { const string expected = "I know an old lady who swallowed a fly.\n" + @@ -102,6 +98,6 @@ public void Complete_song() "I know an old lady who swallowed a horse.\n" + "She's dead, of course!"; - Assert.That(FoodChain.Song(), Is.EqualTo(expected)); + Assert.Equal(expected, FoodChain.Song()); } } \ No newline at end of file diff --git a/exercises/forth/ForthTest.cs b/exercises/forth/ForthTest.cs index fb64ad1166..88ec2e67a7 100644 --- a/exercises/forth/ForthTest.cs +++ b/exercises/forth/ForthTest.cs @@ -1,134 +1,120 @@ -using NUnit.Framework; +using Xunit; public class ForthTest { - [Test] + [Fact] public void No_input() { - Assert.That(Forth.Eval(""), Is.EqualTo("")); + Assert.Equal("", Forth.Eval("")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Numbers_just_get_pushed_onto_the_stack() { - Assert.That(Forth.Eval("1 2 3 4 5"), Is.EqualTo("1 2 3 4 5")); + Assert.Equal("1 2 3 4 5", Forth.Eval("1 2 3 4 5")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Non_word_characters_are_separators() { - Assert.That(Forth.Eval("1\v2\t3\n4\r5 6\t7"), Is.EqualTo("1 2 3 4 5 6 7")); + Assert.Equal("1 2 3 4 5 6 7", Forth.Eval("1\v2\t3\n4\r5 6\t7")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Basic_arithmetic() { - Assert.That(Forth.Eval("1 2 + 4 -"), Is.EqualTo("-1")); - Assert.That(Forth.Eval("2 4 * 3 /"), Is.EqualTo("2")); + Assert.Equal("-1", Forth.Eval("1 2 + 4 -")); + Assert.Equal("2", Forth.Eval("2 4 * 3 /")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Division_by_zero() { var exception = Assert.Throws(() => Forth.Eval("4 2 2 - /")); - Assert.That(exception.Error, Is.EqualTo(ForthError.DivisionByZero)); + Assert.Equal(ForthError.DivisionByZero, exception.Error); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void dup() { - Assert.That(Forth.Eval("1 DUP"), Is.EqualTo("1 1")); - Assert.That(Forth.Eval("1 2 Dup"), Is.EqualTo("1 2 2")); + Assert.Equal("1 1", Forth.Eval("1 DUP")); + Assert.Equal("1 2 2", Forth.Eval("1 2 Dup")); var exception = Assert.Throws(() => Forth.Eval("dup")); - Assert.That(exception.Error, Is.EqualTo(ForthError.StackUnderflow)); + Assert.Equal(ForthError.StackUnderflow, exception.Error); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void drop() { - Assert.That(Forth.Eval("1 drop"), Is.EqualTo("")); - Assert.That(Forth.Eval("1 2 drop"), Is.EqualTo("1")); + Assert.Equal("", Forth.Eval("1 drop")); + Assert.Equal("1", Forth.Eval("1 2 drop")); var exception = Assert.Throws(() => Forth.Eval("drop")); - Assert.That(exception.Error, Is.EqualTo(ForthError.StackUnderflow)); + Assert.Equal(ForthError.StackUnderflow, exception.Error); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void swap() { - Assert.That(Forth.Eval("1 2 swap"), Is.EqualTo("2 1")); - Assert.That(Forth.Eval("1 2 3 swap"), Is.EqualTo("1 3 2")); + Assert.Equal("2 1", Forth.Eval("1 2 swap")); + Assert.Equal("1 3 2", Forth.Eval("1 2 3 swap")); var exception1 = Assert.Throws(() => Forth.Eval("1 swap")); - Assert.That(exception1.Error, Is.EqualTo(ForthError.StackUnderflow)); + Assert.Equal(ForthError.StackUnderflow, exception1.Error); var exception2 = Assert.Throws(() => Forth.Eval("swap")); - Assert.That(exception2.Error, Is.EqualTo(ForthError.StackUnderflow)); + Assert.Equal(ForthError.StackUnderflow, exception2.Error); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void over() { - Assert.That(Forth.Eval("1 2 over"), Is.EqualTo("1 2 1")); - Assert.That(Forth.Eval("1 2 3 over"), Is.EqualTo("1 2 3 2")); + Assert.Equal("1 2 1", Forth.Eval("1 2 over")); + Assert.Equal("1 2 3 2", Forth.Eval("1 2 3 over")); var exception1 = Assert.Throws(() => Forth.Eval("1 over")); - Assert.That(exception1.Error, Is.EqualTo(ForthError.StackUnderflow)); + Assert.Equal(ForthError.StackUnderflow, exception1.Error); var exception2 = Assert.Throws(() => Forth.Eval("over")); - Assert.That(exception2.Error, Is.EqualTo(ForthError.StackUnderflow)); + Assert.Equal(ForthError.StackUnderflow, exception2.Error); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Defining_a_new_word() { - Assert.That(Forth.Eval(": dup-twice dup dup ; 1 dup-twice"), Is.EqualTo("1 1 1")); + Assert.Equal("1 1 1", Forth.Eval(": dup-twice dup dup ; 1 dup-twice")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Redefining_an_existing_word() { - Assert.That(Forth.Eval(": foo dup ; : foo dup dup ; 1 foo"), Is.EqualTo("1 1 1")); + Assert.Equal("1 1 1", Forth.Eval(": foo dup ; : foo dup dup ; 1 foo")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Redefining_an_existing_built_in_word() { - Assert.That(Forth.Eval(": swap dup ; 1 swap"), Is.EqualTo("1 1")); + Assert.Equal("1 1", Forth.Eval(": swap dup ; 1 swap")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Defining_words_with_odd_characters() { - Assert.That(Forth.Eval(": € 220371 ; €"), Is.EqualTo("220371")); + Assert.Equal("220371", Forth.Eval(": € 220371 ; €")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Defining_a_number() { var exception = Assert.Throws(() => Forth.Eval(": 1 2 ;")); - Assert.That(exception.Error, Is.EqualTo(ForthError.InvalidWord)); + Assert.Equal(ForthError.InvalidWord, exception.Error); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Calling_a_non_existing_word() { var exception = Assert.Throws(() => Forth.Eval("1 foo")); - Assert.That(exception.Error, Is.EqualTo(ForthError.UnknownWord)); + Assert.Equal(ForthError.UnknownWord, exception.Error); } } diff --git a/exercises/gigasecond/GigasecondTest.cs b/exercises/gigasecond/GigasecondTest.cs index e8ab02053d..4f7322916d 100644 --- a/exercises/gigasecond/GigasecondTest.cs +++ b/exercises/gigasecond/GigasecondTest.cs @@ -1,29 +1,26 @@ using System; -using NUnit.Framework; +using Xunit; -[TestFixture] public class GigasecondTest { - [Test] + [Fact] public void First_date() { var date = Gigasecond.Date(new DateTime(2011, 4, 25, 0, 0, 0, DateTimeKind.Utc)); - Assert.That(date, Is.EqualTo(new DateTime(2043, 1, 1, 1, 46, 40, DateTimeKind.Utc))); + Assert.Equal(new DateTime(2043, 1, 1, 1, 46, 40, DateTimeKind.Utc), date); } - [Test] - [Ignore("Remove to run test")] + [Fact(Skip = "Remove to run test")] public void Another_date() { var date = Gigasecond.Date(new DateTime(1977, 6, 13, 0, 0, 0, DateTimeKind.Utc)); - Assert.That(date, Is.EqualTo(new DateTime(2009, 2, 19, 1, 46, 40, DateTimeKind.Utc))); + Assert.Equal(new DateTime(2009, 2, 19, 1, 46, 40, DateTimeKind.Utc), date); } - [Test] - [Ignore("Remove to run test")] + [Fact(Skip = "Remove to run test")] public void Yet_another_date() { var date = Gigasecond.Date(new DateTime(1959, 7, 19, 0, 0, 0, DateTimeKind.Utc)); - Assert.That(date, Is.EqualTo(new DateTime(1991, 3, 27, 1, 46, 40, DateTimeKind.Utc))); + Assert.Equal(new DateTime(1991, 3, 27, 1, 46, 40, DateTimeKind.Utc), date); } } \ No newline at end of file diff --git a/exercises/go-counting/GoCountingTest.cs b/exercises/go-counting/GoCountingTest.cs index b16a3b9384..1ce6ccc826 100644 --- a/exercises/go-counting/GoCountingTest.cs +++ b/exercises/go-counting/GoCountingTest.cs @@ -1,7 +1,8 @@ -using NUnit.Framework; +using Xunit; using System; using System.Collections.Generic; using System.Drawing; +using System.Linq; public class GoCountingTest { @@ -29,61 +30,58 @@ public class GoCountingTest " B B " }); - [Test] + [Fact] public void FiveByFiveTerritoryForBlack() { var board = new GoCounting(boardFiveByFive); var result = board.TerritoryFor(new Point(0, 1)); - Assert.That(result.Item1, Is.EqualTo(GoCounting.Player.Black)); - Assert.That(result.Item2, Is.EquivalentTo(new[] { new Point(0, 0), new Point(0, 1), new Point(1, 0) })); + var expected = new HashSet { new Point(0, 0), new Point(0, 1), new Point(1, 0) }; + Assert.Equal(GoCounting.Player.Black, result.Item1); + Assert.True(expected.SetEquals(result.Item2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FiveByFiveTerritoryForWhite() { var board = new GoCounting(boardFiveByFive); var result = board.TerritoryFor(new Point(2, 3)); - Assert.That(result.Item1, Is.EqualTo(GoCounting.Player.White)); - Assert.That(result.Item2, Is.EquivalentTo(new[] { new Point(2, 3) })); + var expected = new HashSet { new Point(2, 3) }; + Assert.Equal(GoCounting.Player.White, result.Item1); + Assert.True(expected.SetEquals(result.Item2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FiveByFiveOpenTerritory() { var board = new GoCounting(boardFiveByFive); var result = board.TerritoryFor(new Point(1, 4)); - Assert.That(result.Item1, Is.EqualTo(GoCounting.Player.None)); - Assert.That(result.Item2, Is.EquivalentTo(new[] { new Point(0, 3), new Point(0, 4), new Point(1, 4) })); + var expected = new HashSet { new Point(0, 3), new Point(0, 4), new Point(1, 4) }; + Assert.Equal(GoCounting.Player.None, result.Item1); + Assert.True(expected.SetEquals(result.Item2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FiveByFiveNonTerritoryStone() { var board = new GoCounting(boardFiveByFive); - Assert.That(board.TerritoryFor(new Point(1, 1)), Is.Null); + Assert.Null(board.TerritoryFor(new Point(1, 1))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FiveByFiveNonTerritoryDueToTooLowCoordinate() { var board = new GoCounting(boardFiveByFive); - Assert.That(board.TerritoryFor(new Point(-1, 1)), Is.Null); + Assert.Null(board.TerritoryFor(new Point(-1, 1))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FiveByFiveNonTerritoryDueToTooHighCoordinate() { var board = new GoCounting(boardFiveByFive); - Assert.That(board.TerritoryFor(new Point(1, 5)), Is.Null); + Assert.Null(board.TerritoryFor(new Point(1, 5))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void MinimalBoardWithNoTerritories() { var input = "B"; @@ -91,37 +89,52 @@ public void MinimalBoardWithNoTerritories() var expected = new Dictionary>(); - Assert.That(board.Territories(), Is.EquivalentTo(expected)); + Assert.Equal(expected, board.Territories()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void OneTerritoryCoveringTheWholeBoard() { var input = " "; var board = new GoCounting(input); + var actual = board.Territories(); var expected = new Dictionary> { [GoCounting.Player.None] = new[] { new Point(0, 0) } }; - - Assert.That(board.Territories(), Is.EquivalentTo(expected)); + + Assert.Equal(expected.Keys, actual.Keys); + Assert.Equal(expected[GoCounting.Player.None], actual[GoCounting.Player.None]); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void TwoTerritoriesOnRectangularBoard() { var input = string.Join("\n", new[] { " BW ", " BW " }); var board = new GoCounting(input); + var actual = board.Territories(); var expected = new Dictionary> { [GoCounting.Player.Black] = new[] { new Point(0, 0), new Point(0, 1) }, [GoCounting.Player.White] = new[] { new Point(3, 0), new Point(3, 1) } }; + + Assert.Equal(expected.Keys, actual.Keys); + Assert.Equal(expected[GoCounting.Player.Black], actual[GoCounting.Player.Black]); + Assert.Equal(expected[GoCounting.Player.White], actual[GoCounting.Player.White]); + } + + private class EnumerableEqualityComparer : IEqualityComparer> + { + public static readonly EnumerableEqualityComparer Instance = new EnumerableEqualityComparer(); + + public bool Equals(IEnumerable x, IEnumerable y) => x.SequenceEqual(y); - Assert.That(board.Territories(), Is.EquivalentTo(expected)); + public int GetHashCode(IEnumerable obj) + { + throw new NotImplementedException(); + } } } diff --git a/exercises/grade-school/Example.cs b/exercises/grade-school/Example.cs index b556d33043..165a62e452 100644 --- a/exercises/grade-school/Example.cs +++ b/exercises/grade-school/Example.cs @@ -1,28 +1,26 @@ using System.Collections.Generic; +using System.Linq; public class School { - public IDictionary> Roster { get; private set; } - - public School() - { - Roster = new Dictionary>(); - } - + private readonly Dictionary> roster = new Dictionary>(); + public void Add(string student, int grade) { - if (Roster.ContainsKey(grade)) - Roster[grade].Add(student); + if (roster.ContainsKey(grade)) + roster[grade].Add(student); else - Roster.Add(grade, new SortedList { student }); + roster.Add(grade, new SortedList { student }); } - public IList Grade(int grade) + public IEnumerable Roster(int grade) => roster[grade]; + + public IEnumerable Grade(int grade) { IList students; - if (Roster.TryGetValue(grade, out students)) - return students; - return new List(0); + if (roster.TryGetValue(grade, out students)) + return students.AsEnumerable(); + return Enumerable.Empty(); } } diff --git a/exercises/grade-school/GradeSchoolTest.cs b/exercises/grade-school/GradeSchoolTest.cs index e38e09ac48..1391d164d1 100644 --- a/exercises/grade-school/GradeSchoolTest.cs +++ b/exercises/grade-school/GradeSchoolTest.cs @@ -1,81 +1,61 @@ -using System.Collections.Generic; -using NUnit.Framework; +using Xunit; -[TestFixture] public class GradeSchoolTest { - private School school; - - [SetUp] - public void Setup() - { - school = new School(); - } - - [Test] - public void New_school_has_an_empty_roster() - { - Assert.That(school.Roster, Has.Count.EqualTo(0)); - } - - [Ignore("Remove to run test")] - [Test] + private readonly School school = new School(); + + [Fact] public void Adding_a_student_adds_them_to_the_roster_for_the_given_grade() { school.Add("Aimee", 2); - var expected = new List { "Aimee" }; - Assert.That(school.Roster[2], Is.EqualTo(expected)); + var expected = new [] { "Aimee" }; + Assert.Equal(expected, school.Roster(2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Adding_more_students_to_the_same_grade_adds_them_to_the_roster() { school.Add("Blair", 2); school.Add("James", 2); school.Add("Paul", 2); - var expected = new List { "Blair", "James", "Paul" }; - Assert.That(school.Roster[2], Is.EqualTo(expected)); + var expected = new [] { "Blair", "James", "Paul" }; + Assert.Equal(expected, school.Roster(2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Adding_students_to_different_grades_adds_them_to_the_roster() { school.Add("Chelsea", 3); school.Add("Logan", 7); - Assert.That(school.Roster[3], Is.EqualTo(new List { "Chelsea" })); - Assert.That(school.Roster[7], Is.EqualTo(new List { "Logan" })); + Assert.Equal(new [] { "Chelsea" }, school.Roster(3)); + Assert.Equal(new [] { "Logan" }, school.Roster(7)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Grade_returns_the_students_in_that_grade_in_alphabetical_order() { school.Add("Franklin", 5); school.Add("Bradley", 5); school.Add("Jeff", 1); - var expected = new List { "Bradley", "Franklin" }; - Assert.That(school.Grade(5), Is.EqualTo(expected)); + var expected = new [] { "Bradley", "Franklin" }; + Assert.Equal(expected, school.Grade(5)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Grade_returns_an_empty_list_if_there_are_no_students_in_that_grade() { - Assert.That(school.Grade(1), Is.EqualTo(new List())); + Assert.Empty(school.Grade(1)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Student_names_in_each_grade_in_roster_are_sorted() { school.Add("Jennifer", 4); school.Add("Kareem", 6); school.Add("Christopher", 4); school.Add("Kyle", 3); - Assert.That(school.Roster[3], Is.EqualTo(new List { "Kyle" })); - Assert.That(school.Roster[4], Is.EqualTo(new List { "Christopher", "Jennifer" })); - Assert.That(school.Roster[6], Is.EqualTo(new List { "Kareem" })); + Assert.Equal(new [] { "Kyle" }, school.Roster(3)); + Assert.Equal(new [] { "Christopher", "Jennifer" }, school.Roster(4)); + Assert.Equal(new [] { "Kareem" }, school.Roster(6)); } } \ No newline at end of file diff --git a/exercises/grains/GrainsTest.cs b/exercises/grains/GrainsTest.cs index b540e25576..c02f35c2b3 100644 --- a/exercises/grains/GrainsTest.cs +++ b/exercises/grains/GrainsTest.cs @@ -1,60 +1,52 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class GrainsTest { - [Test] + [Fact] public void Test_square_1() { - Assert.That(Grains.Square(1), Is.EqualTo(1)); + Assert.Equal(1ul, Grains.Square(1)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_square_2() { - Assert.That(Grains.Square(2), Is.EqualTo(2)); + Assert.Equal(2ul, Grains.Square(2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_square_3() { - Assert.That(Grains.Square(3), Is.EqualTo(4)); + Assert.Equal(4ul, Grains.Square(3)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_square_4() { - Assert.That(Grains.Square(4), Is.EqualTo(8)); + Assert.Equal(8ul, Grains.Square(4)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_square_16() { - Assert.That(Grains.Square(16), Is.EqualTo(32768)); + Assert.Equal(32768ul, Grains.Square(16)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_square_32() { - Assert.That(Grains.Square(32), Is.EqualTo(2147483648)); + Assert.Equal(2147483648ul, Grains.Square(32)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_square_64() { - Assert.That(Grains.Square(64), Is.EqualTo(9223372036854775808)); + Assert.Equal(9223372036854775808ul, Grains.Square(64)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_total_grains() { - Assert.That(Grains.Total(), Is.EqualTo(18446744073709551615)); + Assert.Equal(18446744073709551615ul, Grains.Total()); } } \ No newline at end of file diff --git a/exercises/grep/GrepTest.cs b/exercises/grep/GrepTest.cs index b3538fbd5b..7fff8ebcf0 100644 --- a/exercises/grep/GrepTest.cs +++ b/exercises/grep/GrepTest.cs @@ -1,7 +1,8 @@ -using System.IO; -using NUnit.Framework; +using System; +using System.IO; +using Xunit; -public class GrepTest +public class GrepTest : IDisposable { private const string IliadFileName = "iliad.txt"; private const string IliadContents = @@ -38,18 +39,16 @@ If I refuse to wed Demetrius. Of Oreb, or of Sinai, didst inspire That Shepherd, who first taught the chosen Seed "; - - [OneTimeSetUp] - public void SetUp() + + public GrepTest() { Directory.SetCurrentDirectory(Path.GetTempPath()); File.WriteAllText(IliadFileName, IliadContents); File.WriteAllText(MidsummerNightFileName, MidsummerNightContents); File.WriteAllText(ParadiseLostFileName, ParadiseLostContents); } - - [OneTimeTearDown] - public void TearDown() + + public void Dispose() { Directory.SetCurrentDirectory(Path.GetTempPath()); File.Delete(IliadFileName); @@ -57,7 +56,7 @@ public void TearDown() File.Delete(ParadiseLostFileName); } - [Test] + [Fact] public void One_file_one_match_no_flags() { const string pattern = "Agamemnon"; @@ -67,11 +66,10 @@ public void One_file_one_match_no_flags() const string expected = "Of Atreus, Agamemnon, King of men.\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_file_one_match_print_line_numbers_flag() { const string pattern = "Forbidden"; @@ -81,11 +79,10 @@ public void One_file_one_match_print_line_numbers_flag() const string expected = "2:Of that Forbidden Tree, whose mortal tast\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_file_one_match_case_insensitive_flag() { const string pattern = "Forbidden"; @@ -95,11 +92,10 @@ public void One_file_one_match_case_insensitive_flag() const string expected = "Of that Forbidden Tree, whose mortal tast\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_file_one_match_print_file_names_flag() { const string pattern = "Forbidden"; @@ -109,11 +105,10 @@ public void One_file_one_match_print_file_names_flag() var expected = $"{ParadiseLostFileName}\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_file_one_match_match_entire_lines_flag() { const string pattern = "With loss of Eden, till one greater Man"; @@ -123,11 +118,10 @@ public void One_file_one_match_match_entire_lines_flag() const string expected = "With loss of Eden, till one greater Man\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_file_one_match_multiple_flags() { const string pattern = "OF ATREUS, Agamemnon, KIng of MEN."; @@ -136,11 +130,10 @@ public void One_file_one_match_multiple_flags() const string expected = "9:Of Atreus, Agamemnon, King of men.\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_file_several_matches_no_flags() { const string pattern = "may"; @@ -152,11 +145,10 @@ public void One_file_several_matches_no_flags() "But I beseech your grace that I may know\n" + "The worst that may befall me in this case,\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_file_several_matches_print_line_numbers_flag() { const string pattern = "may"; @@ -168,11 +160,10 @@ public void One_file_several_matches_print_line_numbers_flag() "5:But I beseech your grace that I may know\n" + "6:The worst that may befall me in this case,\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_file_several_matches_match_entire_lines_flag() { const string pattern = "may"; @@ -181,11 +172,10 @@ public void One_file_several_matches_match_entire_lines_flag() const string expected = ""; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_file_several_matches_case_insensitive_flag() { const string pattern = "ACHILLES"; @@ -196,11 +186,10 @@ public void One_file_several_matches_case_insensitive_flag() "Achilles sing, O Goddess! Peleus' son;\n" + "The noble Chief Achilles from the son\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_file_several_matches_inverted_flag() { const string pattern = "Of"; @@ -214,26 +203,26 @@ public void One_file_several_matches_inverted_flag() "Sing Heav'nly Muse, that on the secret top\n" + "That Shepherd, who first taught the chosen Seed\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [TestCase("", Ignore = "Remove to run test case")] - [TestCase("-n", Ignore = "Remove to run test case")] - [TestCase("-l", Ignore = "Remove to run test case")] - [TestCase("-x", Ignore = "Remove to run test case")] - [TestCase("-i", Ignore = "Remove to run test case")] - [TestCase("-n -l -x -i", Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData("")] + [InlineData("-n")] + [InlineData("-l")] + [InlineData("-x")] + [InlineData("-i")] + [InlineData("-n -l -x -i")] public void One_file_no_matches_various_flags(string flags) { const string pattern = "Gandalf"; var files = new[] { IliadFileName }; const string expected = ""; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_files_one_match_no_flags() { const string pattern = "Agamemnon"; @@ -243,11 +232,10 @@ public void Multiple_files_one_match_no_flags() var expected = $"{IliadFileName}:Of Atreus, Agamemnon, King of men.\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_files_several_matches_no_flags() { const string pattern = "may"; @@ -259,11 +247,10 @@ public void Multiple_files_several_matches_no_flags() $"{MidsummerNightFileName}:But I beseech your grace that I may know\n" + $"{MidsummerNightFileName}:The worst that may befall me in this case,\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_files_several_matches_print_line_numbers_flag() { const string pattern = "that"; @@ -276,11 +263,10 @@ public void Multiple_files_several_matches_print_line_numbers_flag() $"{ParadiseLostFileName}:2:Of that Forbidden Tree, whose mortal tast\n" + $"{ParadiseLostFileName}:6:Sing Heav'nly Muse, that on the secret top\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_files_several_matches_print_file_names_flag() { const string pattern = "who"; @@ -291,11 +277,10 @@ public void Multiple_files_several_matches_print_file_names_flag() $"{IliadFileName}\n" + $"{ParadiseLostFileName}\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_files_several_matches_case_insensitive_flag() { const string pattern = "TO"; @@ -314,11 +299,10 @@ public void Multiple_files_several_matches_case_insensitive_flag() $"{ParadiseLostFileName}:Restore us, and regain the blissful Seat,\n" + $"{ParadiseLostFileName}:Sing Heav'nly Muse, that on the secret top\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_files_several_matches_inverted_flag() { const string pattern = "a"; @@ -330,11 +314,10 @@ public void Multiple_files_several_matches_inverted_flag() $"{IliadFileName}:The noble Chief Achilles from the son\n" + $"{MidsummerNightFileName}:If I refuse to wed Demetrius.\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_files_one_match_match_entire_lines_flag() { const string pattern = "But I beseech your grace that I may know"; @@ -344,11 +327,10 @@ public void Multiple_files_one_match_match_entire_lines_flag() var expected = $"{MidsummerNightFileName}:But I beseech your grace that I may know\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_files_one_match_multiple_flags() { const string pattern = "WITH LOSS OF EDEN, TILL ONE GREATER MAN"; @@ -357,15 +339,16 @@ public void Multiple_files_one_match_multiple_flags() var expected = $"{ParadiseLostFileName}:4:With loss of Eden, till one greater Man\n"; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } - [TestCase("", Ignore = "Remove to run test case")] - [TestCase("-n", Ignore = "Remove to run test case")] - [TestCase("-l", Ignore = "Remove to run test case")] - [TestCase("-x", Ignore = "Remove to run test case")] - [TestCase("-i", Ignore = "Remove to run test case")] - [TestCase("-n -l -x -i", Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData("")] + [InlineData("-n")] + [InlineData("-l")] + [InlineData("-x")] + [InlineData("-i")] + [InlineData("-n -l -x -i")] public void Multiple_files_no_matches_various_flags(string flags) { const string pattern = "Frodo"; @@ -373,6 +356,6 @@ public void Multiple_files_no_matches_various_flags(string flags) const string expected = ""; - Assert.That(Grep.Find(pattern, flags, files), Is.EqualTo(expected)); + Assert.Equal(expected, Grep.Find(pattern, flags, files)); } } \ No newline at end of file diff --git a/exercises/hamming/HammingTest.cs b/exercises/hamming/HammingTest.cs index 30551e5c69..68cce26120 100644 --- a/exercises/hamming/HammingTest.cs +++ b/exercises/hamming/HammingTest.cs @@ -1,46 +1,40 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class HammingTest { - [Test] + [Fact] public void No_difference_between_empty_strands() { - Assert.That(Hamming.Compute("",""), Is.EqualTo(0)); + Assert.Equal(0, Hamming.Compute("","")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void No_difference_between_identical_strands() { - Assert.That(Hamming.Compute("GGACTGA","GGACTGA"), Is.EqualTo(0)); + Assert.Equal(0, Hamming.Compute("GGACTGA","GGACTGA")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Complete_hamming_distance_in_small_strand() { - Assert.That(Hamming.Compute("ACT","GGA"), Is.EqualTo(3)); + Assert.Equal(3, Hamming.Compute("ACT","GGA")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Hamming_distance_is_off_by_one_strand() { - Assert.That(Hamming.Compute("GGACGGATTCTG","AGGACGGATTCT"), Is.EqualTo(9)); + Assert.Equal(9, Hamming.Compute("GGACGGATTCTG","AGGACGGATTCT")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Smalling_hamming_distance_in_middle_somewhere() { - Assert.That(Hamming.Compute("GGACG","GGTCG"), Is.EqualTo(1)); + Assert.Equal(1, Hamming.Compute("GGACG","GGTCG")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Larger_distance() { - Assert.That(Hamming.Compute("ACCAGGG","ACTATGG"), Is.EqualTo(2)); + Assert.Equal(2, Hamming.Compute("ACCAGGG","ACTATGG")); } } \ No newline at end of file diff --git a/exercises/hangman/HangmanTest.cs b/exercises/hangman/HangmanTest.cs index 1c8693f5a5..9678a26911 100644 --- a/exercises/hangman/HangmanTest.cs +++ b/exercises/hangman/HangmanTest.cs @@ -1,8 +1,8 @@ -using NUnit.Framework; +using Xunit; public class HangmanTest { - [Test] + [Fact] public void Initially_9_failures_are_allowed() { var game = new HangmanGame("foo"); @@ -12,12 +12,11 @@ public void Initially_9_failures_are_allowed() game.Start(); - Assert.That(lastState.Status, Is.EqualTo(HangmanGame.Status.Busy)); - Assert.That(lastState.RemainingGuesses, Is.EqualTo(9)); + Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(9, lastState.RemainingGuesses); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Initially_no_letters_are_guessed() { var game = new HangmanGame("foo"); @@ -27,11 +26,10 @@ public void Initially_no_letters_are_guessed() game.Start(); - Assert.That(lastState.MaskedWord, Is.EqualTo("___")); + Assert.Equal("___", lastState.MaskedWord); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void After_10_failures_the_game_is_over() { var game = new HangmanGame("foo"); @@ -46,11 +44,10 @@ public void After_10_failures_the_game_is_over() game.Guess('x'); } - Assert.That(lastState.Status, Is.EqualTo(HangmanGame.Status.Lose)); + Assert.Equal(HangmanGame.Status.Lose, lastState.Status); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Feeding_a_correct_letter_removes_underscores() { var game = new HangmanGame("foobar"); @@ -62,19 +59,18 @@ public void Feeding_a_correct_letter_removes_underscores() game.Guess('b'); - Assert.That(lastState.Status, Is.EqualTo(HangmanGame.Status.Busy)); - Assert.That(lastState.RemainingGuesses, Is.EqualTo(9)); - Assert.That(lastState.MaskedWord, Is.EqualTo("___b__")); + Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(9, lastState.RemainingGuesses); + Assert.Equal("___b__", lastState.MaskedWord); game.Guess('o'); - Assert.That(lastState.Status, Is.EqualTo(HangmanGame.Status.Busy)); - Assert.That(lastState.RemainingGuesses, Is.EqualTo(9)); - Assert.That(lastState.MaskedWord, Is.EqualTo("_oob__")); + Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(9, lastState.RemainingGuesses); + Assert.Equal("_oob__", lastState.MaskedWord); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Feeding_a_correct_letter_twice_counts_as_a_failure() { var game = new HangmanGame("foobar"); @@ -86,19 +82,18 @@ public void Feeding_a_correct_letter_twice_counts_as_a_failure() game.Guess('b'); - Assert.That(lastState.Status, Is.EqualTo(HangmanGame.Status.Busy)); - Assert.That(lastState.RemainingGuesses, Is.EqualTo(9)); - Assert.That(lastState.MaskedWord, Is.EqualTo("___b__")); + Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(9, lastState.RemainingGuesses); + Assert.Equal("___b__", lastState.MaskedWord); game.Guess('b'); - Assert.That(lastState.Status, Is.EqualTo(HangmanGame.Status.Busy)); - Assert.That(lastState.RemainingGuesses, Is.EqualTo(8)); - Assert.That(lastState.MaskedWord, Is.EqualTo("___b__")); + Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(8, lastState.RemainingGuesses); + Assert.Equal("___b__", lastState.MaskedWord); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Getting_all_the_letters_right_makes_for_a_win() { var game = new HangmanGame("hello"); @@ -110,31 +105,31 @@ public void Getting_all_the_letters_right_makes_for_a_win() game.Guess('b'); - Assert.That(lastState.Status, Is.EqualTo(HangmanGame.Status.Busy)); - Assert.That(lastState.RemainingGuesses, Is.EqualTo(8)); - Assert.That(lastState.MaskedWord, Is.EqualTo("_____")); + Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(8, lastState.RemainingGuesses); + Assert.Equal("_____", lastState.MaskedWord); game.Guess('e'); - Assert.That(lastState.Status, Is.EqualTo(HangmanGame.Status.Busy)); - Assert.That(lastState.RemainingGuesses, Is.EqualTo(8)); - Assert.That(lastState.MaskedWord, Is.EqualTo("_e___")); + Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(8, lastState.RemainingGuesses); + Assert.Equal("_e___", lastState.MaskedWord); game.Guess('l'); - Assert.That(lastState.Status, Is.EqualTo(HangmanGame.Status.Busy)); - Assert.That(lastState.RemainingGuesses, Is.EqualTo(8)); - Assert.That(lastState.MaskedWord, Is.EqualTo("_ell_")); + Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(8, lastState.RemainingGuesses); + Assert.Equal("_ell_", lastState.MaskedWord); game.Guess('o'); - Assert.That(lastState.Status, Is.EqualTo(HangmanGame.Status.Busy)); - Assert.That(lastState.RemainingGuesses, Is.EqualTo(8)); - Assert.That(lastState.MaskedWord, Is.EqualTo("_ello")); + Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(8, lastState.RemainingGuesses); + Assert.Equal("_ello", lastState.MaskedWord); game.Guess('h'); - Assert.That(lastState.Status, Is.EqualTo(HangmanGame.Status.Win)); - Assert.That(lastState.MaskedWord, Is.EqualTo("hello")); + Assert.Equal(HangmanGame.Status.Win, lastState.Status); + Assert.Equal("hello", lastState.MaskedWord); } } \ No newline at end of file diff --git a/exercises/hello-world/HelloWorldTest.cs b/exercises/hello-world/HelloWorldTest.cs index 8361b022e8..7a245f56ec 100644 --- a/exercises/hello-world/HelloWorldTest.cs +++ b/exercises/hello-world/HelloWorldTest.cs @@ -1,25 +1,22 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class HelloWorldTest { - [Test] + [Fact] public void No_name() { - Assert.That(HelloWorld.Hello(null), Is.EqualTo("Hello, World!")); + Assert.Equal("Hello, World!", HelloWorld.Hello(null)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sample_name() { - Assert.That(HelloWorld.Hello("Alice"), Is.EqualTo("Hello, Alice!")); + Assert.Equal("Hello, Alice!", HelloWorld.Hello("Alice")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Other_sample_name() { - Assert.That(HelloWorld.Hello("Bob"), Is.EqualTo("Hello, Bob!")); + Assert.Equal("Hello, Bob!", HelloWorld.Hello("Bob")); } } diff --git a/exercises/house/HouseTest.cs b/exercises/house/HouseTest.cs index 4ff6d6f2bd..69a10760ab 100644 --- a/exercises/house/HouseTest.cs +++ b/exercises/house/HouseTest.cs @@ -1,8 +1,8 @@ -using NUnit.Framework; +using Xunit; public class HouseTest { - [Test] + [Fact] public void Rhyme_is_correct() { const string expected = @@ -96,6 +96,6 @@ public void Rhyme_is_correct() "that ate the malt\n" + "that lay in the house that Jack built."; - Assert.That(House.Rhyme(), Is.EqualTo(expected)); + Assert.Equal(expected, House.Rhyme()); } } \ No newline at end of file diff --git a/exercises/isogram/IsogramTest.cs b/exercises/isogram/IsogramTest.cs index 9f51ae09f5..bb22e6afd9 100644 --- a/exercises/isogram/IsogramTest.cs +++ b/exercises/isogram/IsogramTest.cs @@ -1,20 +1,20 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class IsogramTest { - [TestCase("duplicates", ExpectedResult = true)] - [TestCase("eleven", ExpectedResult = false, Ignore = "Remove to run test case")] - [TestCase("subdermatoglyphic", ExpectedResult = true, Ignore = "Remove to run test case")] - [TestCase("Alphabet", ExpectedResult = false, Ignore = "Remove to run test case")] - [TestCase("thumbscrew-japingly", ExpectedResult = true, Ignore = "Remove to run test case")] - [TestCase("Hjelmqvist-Gryb-Zock-Pfund-Wax", ExpectedResult = true, Ignore = "Remove to run test case")] - [TestCase("Heizölrückstoßabdämpfung", ExpectedResult = true, Ignore = "Remove to run test case")] - [TestCase("the quick brown fox", ExpectedResult = false, Ignore = "Remove to run test case")] - [TestCase("Emily Jung Schwartzkopf", ExpectedResult = true, Ignore = "Remove to run test case")] - [TestCase("éléphant", ExpectedResult = false, Ignore = "Remove to run test case")] - public bool Isogram_correctly_detects_isograms(string input) + [Theory] + [InlineData("duplicates", true)] + [InlineData("eleven", false)] + [InlineData("subdermatoglyphic", true)] + [InlineData("Alphabet", false)] + [InlineData("thumbscrew-japingly", true)] + [InlineData("Hjelmqvist-Gryb-Zock-Pfund-Wax", true)] + [InlineData("Heizölrückstoßabdämpfung", true)] + [InlineData("the quick brown fox", false)] + [InlineData("Emily Jung Schwartzkopf", true)] + [InlineData("éléphant", false)] + public void Isogram_correctly_detects_isograms(string input, bool expected) { - return Isogram.IsIsogram(input); + Assert.Equal(expected, Isogram.IsIsogram(input)); } } \ No newline at end of file diff --git a/exercises/kindergarten-garden/KinderGartenGardenTest.cs b/exercises/kindergarten-garden/KinderGartenGardenTest.cs index 0c419aa364..6e16480c59 100644 --- a/exercises/kindergarten-garden/KinderGartenGardenTest.cs +++ b/exercises/kindergarten-garden/KinderGartenGardenTest.cs @@ -1,65 +1,60 @@ -using NUnit.Framework; +using Xunit; public class KinderGartenGardenTest { - [Test] + [Fact] public void Missing_child() { var actual = Garden.DefaultGarden("RC\nGG").GetPlants("Potter"); - Assert.That(actual, Is.Empty); + Assert.Empty(actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Alice() { - Assert.That(Garden.DefaultGarden("RC\nGG").GetPlants("Alice"), Is.EqualTo(new [] { Plant.Radishes, Plant.Clover, Plant.Grass, Plant.Grass })); - Assert.That(Garden.DefaultGarden("VC\nRC").GetPlants("Alice"), Is.EqualTo(new[] { Plant.Violets, Plant.Clover, Plant.Radishes, Plant.Clover })); + Assert.Equal(new [] { Plant.Radishes, Plant.Clover, Plant.Grass, Plant.Grass }, Garden.DefaultGarden("RC\nGG").GetPlants("Alice")); + Assert.Equal(new[] { Plant.Violets, Plant.Clover, Plant.Radishes, Plant.Clover }, Garden.DefaultGarden("VC\nRC").GetPlants("Alice")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Small_garden() { var actual = Garden.DefaultGarden("VVCG\nVVRC").GetPlants("Bob"); - Assert.That(actual, Is.EqualTo(new[] { Plant.Clover, Plant.Grass, Plant.Radishes, Plant.Clover })); + Assert.Equal(new[] { Plant.Clover, Plant.Grass, Plant.Radishes, Plant.Clover }, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Medium_garden() { var garden = Garden.DefaultGarden("VVCCGG\nVVCCGG"); - Assert.That(garden.GetPlants("Bob"), Is.EqualTo(new[] { Plant.Clover, Plant.Clover, Plant.Clover, Plant.Clover })); - Assert.That(garden.GetPlants("Charlie"), Is.EqualTo(new[] { Plant.Grass, Plant.Grass, Plant.Grass, Plant.Grass })); + Assert.Equal(new[] { Plant.Clover, Plant.Clover, Plant.Clover, Plant.Clover }, garden.GetPlants("Bob")); + Assert.Equal(new[] { Plant.Grass, Plant.Grass, Plant.Grass, Plant.Grass }, garden.GetPlants("Charlie")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Full_garden() { var garden = Garden.DefaultGarden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV"); - Assert.That(garden.GetPlants("Alice"), Is.EqualTo(new[] { Plant.Violets, Plant.Radishes, Plant.Violets, Plant.Radishes })); - Assert.That(garden.GetPlants("Bob"), Is.EqualTo(new[] { Plant.Clover, Plant.Grass, Plant.Clover, Plant.Clover })); - Assert.That(garden.GetPlants("David"), Is.EqualTo(new[] { Plant.Radishes, Plant.Violets, Plant.Clover, Plant.Radishes })); - Assert.That(garden.GetPlants("Eve"), Is.EqualTo(new[] { Plant.Clover, Plant.Grass, Plant.Radishes, Plant.Grass })); - Assert.That(garden.GetPlants("Fred"), Is.EqualTo(new[] { Plant.Grass, Plant.Clover, Plant.Violets, Plant.Clover })); - Assert.That(garden.GetPlants("Ginny"), Is.EqualTo(new[] { Plant.Clover, Plant.Grass, Plant.Grass, Plant.Clover })); - Assert.That(garden.GetPlants("Harriet"), Is.EqualTo(new[] { Plant.Violets, Plant.Radishes, Plant.Radishes, Plant.Violets })); - Assert.That(garden.GetPlants("Ileana"), Is.EqualTo(new[] { Plant.Grass, Plant.Clover, Plant.Violets, Plant.Clover })); - Assert.That(garden.GetPlants("Joseph"), Is.EqualTo(new[] { Plant.Violets, Plant.Clover, Plant.Violets, Plant.Grass })); - Assert.That(garden.GetPlants("Kincaid"), Is.EqualTo(new[] { Plant.Grass, Plant.Clover, Plant.Clover, Plant.Grass })); - Assert.That(garden.GetPlants("Larry"), Is.EqualTo(new[] { Plant.Grass, Plant.Violets, Plant.Clover, Plant.Violets })); + Assert.Equal(new[] { Plant.Violets, Plant.Radishes, Plant.Violets, Plant.Radishes }, garden.GetPlants("Alice")); + Assert.Equal(new[] { Plant.Clover, Plant.Grass, Plant.Clover, Plant.Clover }, garden.GetPlants("Bob")); + Assert.Equal(new[] { Plant.Radishes, Plant.Violets, Plant.Clover, Plant.Radishes }, garden.GetPlants("David")); + Assert.Equal(new[] { Plant.Clover, Plant.Grass, Plant.Radishes, Plant.Grass }, garden.GetPlants("Eve")); + Assert.Equal(new[] { Plant.Grass, Plant.Clover, Plant.Violets, Plant.Clover }, garden.GetPlants("Fred")); + Assert.Equal(new[] { Plant.Clover, Plant.Grass, Plant.Grass, Plant.Clover }, garden.GetPlants("Ginny")); + Assert.Equal(new[] { Plant.Violets, Plant.Radishes, Plant.Radishes, Plant.Violets }, garden.GetPlants("Harriet")); + Assert.Equal(new[] { Plant.Grass, Plant.Clover, Plant.Violets, Plant.Clover }, garden.GetPlants("Ileana")); + Assert.Equal(new[] { Plant.Violets, Plant.Clover, Plant.Violets, Plant.Grass }, garden.GetPlants("Joseph")); + Assert.Equal(new[] { Plant.Grass, Plant.Clover, Plant.Clover, Plant.Grass }, garden.GetPlants("Kincaid")); + Assert.Equal(new[] { Plant.Grass, Plant.Violets, Plant.Clover, Plant.Violets }, garden.GetPlants("Larry")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Surprise_garden() { var garden = new Garden(new [] { "Samantha", "Patricia", "Xander", "Roger" }, "VCRRGVRG\nRVGCCGCV"); - Assert.That(garden.GetPlants("Patricia"), Is.EqualTo(new[] { Plant.Violets, Plant.Clover, Plant.Radishes, Plant.Violets })); - Assert.That(garden.GetPlants("Roger"), Is.EqualTo(new[] { Plant.Radishes, Plant.Radishes, Plant.Grass, Plant.Clover })); - Assert.That(garden.GetPlants("Samantha"), Is.EqualTo(new[] { Plant.Grass, Plant.Violets, Plant.Clover, Plant.Grass })); - Assert.That(garden.GetPlants("Xander"), Is.EqualTo(new[] { Plant.Radishes, Plant.Grass, Plant.Clover, Plant.Violets })); + Assert.Equal(new[] { Plant.Violets, Plant.Clover, Plant.Radishes, Plant.Violets }, garden.GetPlants("Patricia")); + Assert.Equal(new[] { Plant.Radishes, Plant.Radishes, Plant.Grass, Plant.Clover }, garden.GetPlants("Roger")); + Assert.Equal(new[] { Plant.Grass, Plant.Violets, Plant.Clover, Plant.Grass }, garden.GetPlants("Samantha")); + Assert.Equal(new[] { Plant.Radishes, Plant.Grass, Plant.Clover, Plant.Violets }, garden.GetPlants("Xander")); } } \ No newline at end of file diff --git a/exercises/largest-series-product/LargestSeriesProductTest.cs b/exercises/largest-series-product/LargestSeriesProductTest.cs index 996532e66b..d891dbd050 100644 --- a/exercises/largest-series-product/LargestSeriesProductTest.cs +++ b/exercises/largest-series-product/LargestSeriesProductTest.cs @@ -1,153 +1,139 @@ using System; -using NUnit.Framework; +using Xunit; -[TestFixture] public class LargestSeriesProductTest { - [Test] + [Fact] public void Can_find_the_largest_product_of_2_with_numbers_in_order() { const string digits = "0123456789"; const int span = 2; const int expected = 72; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_find_the_largest_product_of_2() { const string digits = "576802143"; const int span = 2; const int expected = 48; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Finds_the_largest_product_if_span_equals_length() { const string digits = "29"; const int span = 2; const int expected = 18; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_find_the_largest_product_of_3_with_numbers_in_order() { const string digits = "0123456789"; const int span = 3; const int expected = 504; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_find_the_largest_product_of_3() { const string digits = "1027839564"; const int span = 3; const int expected = 270; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_find_the_largest_product_of_5_with_numbers_in_order() { const string digits = "0123456789"; const int span = 5; const int expected = 15120; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_get_the_largest_product_of_a_big_number() { const string digits = "73167176531330624919225119674426574742355349194934"; const int span = 6; const int expected = 23520; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_get_the_largest_product_of_a_big_number_II() { const string digits = "52677741234314237566414902593461595376319419139427"; const int span = 6; const int expected = 28350; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_get_the_largest_product_of_a_big_number_III() { const string digits = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"; const int span = 13; const long expected = 23514624000; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Reports_zero_if_the_only_digits_are_zero() { const string digits = "0000"; const int span = 2; const int expected = 0; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Reports_zero_if_all_spans_include_zero() { const string digits = "99099"; const int span = 3; const int expected = 0; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Reports_1_for_empty_string_and_empty_product_0_span() { const string digits = ""; const int span = 0; const int expected = 1; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Reports_1_for_nonempty_string_and_empty_product_0_span() { const string digits = "123"; const int span = 0; const int expected = 1; - Assert.That(LargestSeriesProduct.GetLargestProduct(digits, span), Is.EqualTo(expected)); + Assert.Equal(expected, LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rejects_span_longer_than_string_length() { const string digits = "123"; @@ -156,8 +142,7 @@ public void Rejects_span_longer_than_string_length() Assert.Throws(() => LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rejects_empty_string_and_nonzero_span() { const string digits = ""; @@ -166,8 +151,7 @@ public void Rejects_empty_string_and_nonzero_span() Assert.Throws(() => LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rejects_invalid_character_in_digits() { const string digits = "1234a5"; @@ -176,8 +160,7 @@ public void Rejects_invalid_character_in_digits() Assert.Throws(() => LargestSeriesProduct.GetLargestProduct(digits, span)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rejects_negative_span() { const string digits = "12345"; diff --git a/exercises/leap/LeapTest.cs b/exercises/leap/LeapTest.cs index 255f4f02e1..937717e055 100644 --- a/exercises/leap/LeapTest.cs +++ b/exercises/leap/LeapTest.cs @@ -1,32 +1,28 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class LeapTest { - [Test] + [Fact] public void Valid_leap_year() { - Assert.That(Year.IsLeap(1996), Is.True); + Assert.True(Year.IsLeap(1996)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Invalid_leap_year() { - Assert.That(Year.IsLeap(1997), Is.False); + Assert.False(Year.IsLeap(1997)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Turn_of_the_20th_century_is_not_a_leap_year() { - Assert.That(Year.IsLeap(1900), Is.False); + Assert.False(Year.IsLeap(1900)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Turn_of_the_25th_century_is_a_leap_year() { - Assert.That(Year.IsLeap(2400), Is.True); + Assert.True(Year.IsLeap(2400)); } } \ No newline at end of file diff --git a/exercises/ledger/LedgerTest.cs b/exercises/ledger/LedgerTest.cs index bf568201e3..2b6ec6bf3c 100644 --- a/exercises/ledger/LedgerTest.cs +++ b/exercises/ledger/LedgerTest.cs @@ -1,8 +1,8 @@ -using NUnit.Framework; +using Xunit; public class LedgerTest { - [Test] + [Fact] public void Empty_ledger() { var currency = "USD"; @@ -11,10 +11,10 @@ public void Empty_ledger() var expected = "Date | Description | Change "; - Assert.That(Ledger.Format(currency, locale, entries), Is.EqualTo(expected)); + Assert.Equal(expected, Ledger.Format(currency, locale, entries)); } - [Test] + [Fact(Skip = "Remove to run test")] public void One_entry() { var currency = "USD"; @@ -27,10 +27,10 @@ public void One_entry() "Date | Description | Change \n" + "01/01/2015 | Buy present | ($10.00)"; - Assert.That(Ledger.Format(currency, locale, entries), Is.EqualTo(expected)); + Assert.Equal(expected, Ledger.Format(currency, locale, entries)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Credit_and_debit() { var currency = "USD"; @@ -45,10 +45,10 @@ public void Credit_and_debit() "01/01/2015 | Buy present | ($10.00)\n" + "01/02/2015 | Get present | $10.00 "; - Assert.That(Ledger.Format(currency, locale, entries), Is.EqualTo(expected)); + Assert.Equal(expected, Ledger.Format(currency, locale, entries)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_entries_on_same_date_ordered_by_description() { var currency = "USD"; @@ -63,10 +63,10 @@ public void Multiple_entries_on_same_date_ordered_by_description() "01/01/2015 | Buy present | ($10.00)\n" + "01/01/2015 | Get present | $10.00 "; - Assert.That(Ledger.Format(currency, locale, entries), Is.EqualTo(expected)); + Assert.Equal(expected, Ledger.Format(currency, locale, entries)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Final_order_tie_breaker_is_change() { var currency = "USD"; @@ -83,10 +83,10 @@ public void Final_order_tie_breaker_is_change() "01/01/2015 | Something | $0.00 \n" + "01/01/2015 | Something | $0.01 "; - Assert.That(Ledger.Format(currency, locale, entries), Is.EqualTo(expected)); + Assert.Equal(expected, Ledger.Format(currency, locale, entries)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Overlong_descriptions() { var currency = "USD"; @@ -99,10 +99,10 @@ public void Overlong_descriptions() "Date | Description | Change \n" + "01/01/2015 | Freude schoner Gotterf... | ($1,234.56)"; - Assert.That(Ledger.Format(currency, locale, entries), Is.EqualTo(expected)); + Assert.Equal(expected, Ledger.Format(currency, locale, entries)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Euros() { var currency = "EUR"; @@ -115,10 +115,10 @@ public void Euros() "Date | Description | Change \n" + "01/01/2015 | Buy present | (€10.00)"; - Assert.That(Ledger.Format(currency, locale, entries), Is.EqualTo(expected)); + Assert.Equal(expected, Ledger.Format(currency, locale, entries)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Dutch_locale() { var currency = "USD"; @@ -131,10 +131,10 @@ public void Dutch_locale() "Datum | Omschrijving | Verandering \n" + "12-03-2015 | Buy present | $ 1.234,56 "; - Assert.That(Ledger.Format(currency, locale, entries), Is.EqualTo(expected)); + Assert.Equal(expected, Ledger.Format(currency, locale, entries)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Dutch_negative_number_with_3_digits_before_decimal_point() { var currency = "USD"; @@ -147,10 +147,10 @@ public void Dutch_negative_number_with_3_digits_before_decimal_point() "Datum | Omschrijving | Verandering \n" + "12-03-2015 | Buy present | $ -123,45"; - Assert.That(Ledger.Format(currency, locale, entries), Is.EqualTo(expected)); + Assert.Equal(expected, Ledger.Format(currency, locale, entries)); } - [Test] + [Fact(Skip = "Remove to run test")] public void American_negative_number_with_3_digits_before_decimal_point() { var currency = "USD"; @@ -163,6 +163,6 @@ public void American_negative_number_with_3_digits_before_decimal_point() "Date | Description | Change \n" + "03/12/2015 | Buy present | ($123.45)"; - Assert.That(Ledger.Format(currency, locale, entries), Is.EqualTo(expected)); + Assert.Equal(expected, Ledger.Format(currency, locale, entries)); } } \ No newline at end of file diff --git a/exercises/linked-list/LinkedListTest.cs b/exercises/linked-list/LinkedListTest.cs index 135a47de27..c625a80111 100644 --- a/exercises/linked-list/LinkedListTest.cs +++ b/exercises/linked-list/LinkedListTest.cs @@ -1,94 +1,81 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class DequeTest { - private Deque deque; + private readonly Deque deque = new Deque(); - [SetUp] - public void Setup() - { - deque = new Deque(); - } - - [Test] + [Fact] public void Push_and_pop_are_first_in_last_out_order() { deque.Push(10); deque.Push(20); - Assert.That(deque.Pop(), Is.EqualTo(20)); - Assert.That(deque.Pop(), Is.EqualTo(10)); + Assert.Equal(20, deque.Pop()); + Assert.Equal(10, deque.Pop()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Push_and_shift_are_first_in_first_out_order() { deque.Push(10); deque.Push(20); - Assert.That(deque.Shift(), Is.EqualTo(10)); - Assert.That(deque.Shift(), Is.EqualTo(20)); + Assert.Equal(10, deque.Shift()); + Assert.Equal(20, deque.Shift()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Unshift_and_shift_are_last_in_first_out_order() { deque.Unshift(10); deque.Unshift(20); - Assert.That(deque.Shift(), Is.EqualTo(20)); - Assert.That(deque.Shift(), Is.EqualTo(10)); + Assert.Equal(20, deque.Shift()); + Assert.Equal(10, deque.Shift()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Unshift_and_pop_are_last_in_last_out_order() { deque.Unshift(10); deque.Unshift(20); - Assert.That(deque.Pop(), Is.EqualTo(10)); - Assert.That(deque.Pop(), Is.EqualTo(20)); + Assert.Equal(10, deque.Pop()); + Assert.Equal(20, deque.Pop()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Push_and_pop_can_handle_multiple_values() { deque.Push(10); deque.Push(20); deque.Push(30); - Assert.That(deque.Pop(), Is.EqualTo(30)); - Assert.That(deque.Pop(), Is.EqualTo(20)); - Assert.That(deque.Pop(), Is.EqualTo(10)); + Assert.Equal(30, deque.Pop()); + Assert.Equal(20, deque.Pop()); + Assert.Equal(10, deque.Pop()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Unshift_and_shift_can_handle_multiple_values() { deque.Unshift(10); deque.Unshift(20); deque.Unshift(30); - Assert.That(deque.Shift(), Is.EqualTo(30)); - Assert.That(deque.Shift(), Is.EqualTo(20)); - Assert.That(deque.Shift(), Is.EqualTo(10)); + Assert.Equal(30, deque.Shift()); + Assert.Equal(20, deque.Shift()); + Assert.Equal(10, deque.Shift()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void All_methods_of_manipulating_the_deque_can_be_used_together() { deque.Push(10); deque.Push(20); - Assert.That(deque.Pop(), Is.EqualTo(20)); + Assert.Equal(20, deque.Pop()); deque.Push(30); - Assert.That(deque.Shift(), Is.EqualTo(10)); + Assert.Equal(10, deque.Shift()); deque.Unshift(40); deque.Push(50); - Assert.That(deque.Shift(), Is.EqualTo(40)); - Assert.That(deque.Pop(), Is.EqualTo(50)); - Assert.That(deque.Shift(), Is.EqualTo(30)); + Assert.Equal(40, deque.Shift()); + Assert.Equal(50, deque.Pop()); + Assert.Equal(30, deque.Shift()); } } \ No newline at end of file diff --git a/exercises/list-ops/ListOpsTest.cs b/exercises/list-ops/ListOpsTest.cs index 68dfbd3d53..68ce0414cb 100644 --- a/exercises/list-ops/ListOpsTest.cs +++ b/exercises/list-ops/ListOpsTest.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; using System.Linq; -using NUnit.Framework; +using Xunit; public class ListOpsTest { @@ -19,177 +19,154 @@ private static List Cons(T x, List input) return list; } - [Test] + [Fact] public void LengthOfEmptyList() { - Assert.That(ListOps.Length(EmptyList), Is.EqualTo(0)); + Assert.Equal(0, ListOps.Length(EmptyList)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void LengthOfNonEmptyList() { - Assert.That(ListOps.Length(Range(1, 4)), Is.EqualTo(4)); + Assert.Equal(4, ListOps.Length(Range(1, 4))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void LengthOfLargeList() { - Assert.That(ListOps.Length(Range(1, Big)), Is.EqualTo(Big)); + Assert.Equal(Big, ListOps.Length(Range(1, Big))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void ReverseOfEmptylist() { - Assert.That(ListOps.Reverse(EmptyList), Is.EquivalentTo(EmptyList)); + Assert.Equal(EmptyList, ListOps.Reverse(EmptyList)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void ReverseOfNonEmptyList() { - Assert.That(ListOps.Reverse(Range(1, 100)), Is.EquivalentTo(Range(1, 100).OrderByDescending(x => x).ToList())); + Assert.Equal(Range(1, 100).OrderByDescending(x => x).ToList(), ListOps.Reverse(Range(1, 100))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void MapOfEmptylist() { - Assert.That(ListOps.Map(x => x + 1, EmptyList), Is.EquivalentTo(EmptyList)); + Assert.Equal(EmptyList, ListOps.Map(x => x + 1, EmptyList)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void MapOfNonEmptyList() { - Assert.That(ListOps.Map(x => x + 1, new List {1, 3, 5, 7}), Is.EquivalentTo(new List {2, 4, 6, 8})); + Assert.Equal(new List {2, 4, 6, 8}, ListOps.Map(x => x + 1, new List {1, 3, 5, 7})); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FilterOfEmptylist() { - Assert.That(ListOps.Filter(x => true, EmptyList), Is.EquivalentTo(EmptyList)); + Assert.Equal(EmptyList, ListOps.Filter(x => true, EmptyList)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FilterOfNormalList() { - Assert.That(ListOps.Filter(Odd, Range(1, 4)), Is.EquivalentTo(new List {1, 3})); + Assert.Equal(new List {1, 3}, ListOps.Filter(Odd, Range(1, 4))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FoldlOfEmptylist() { - Assert.That(ListOps.Foldl((acc, x) => acc + x, 0, EmptyList), Is.EqualTo(0)); + Assert.Equal(0, ListOps.Foldl((acc, x) => acc + x, 0, EmptyList)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FoldlOfNonEmptyList() { - Assert.That(ListOps.Foldl((acc, x) => acc + x, -3, Range(1, 4)), Is.EqualTo(7)); + Assert.Equal(7, ListOps.Foldl((acc, x) => acc + x, -3, Range(1, 4))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FoldlOfHugeList() { - Assert.That(ListOps.Foldl((acc, x) => acc + x, 0L, Range(1, Big)), Is.EqualTo(Big * (Big + 1L) / 2L)); + Assert.Equal(Big * (Big + 1L) / 2L, ListOps.Foldl((acc, x) => acc + x, 0L, Range(1, Big))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FoldlWithNonCommutativeFunction() { - Assert.That(ListOps.Foldl((acc, x) => acc - x, 10, Range(1, 4)), Is.EqualTo(0)); + Assert.Equal(0, ListOps.Foldl((acc, x) => acc - x, 10, Range(1, 4))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FoldlIsNotJustFoldrFlip() { - Assert.That(ListOps.Foldl((acc, x) => Cons(x, acc), EmptyList, "asdf".ToList()), Is.EqualTo("fdsa".ToList())); + Assert.Equal("fdsa", new string(ListOps.Foldl((acc, x) => Cons(x, acc), new List(), "asdf".ToList()).ToArray())); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FoldrAsId() { - Assert.That(ListOps.Foldr((x, acc) => Cons(x, acc), EmptyList, Range(1, Big)), Is.EquivalentTo(BigList)); + Assert.Equal(BigList, ListOps.Foldr((x, acc) => Cons(x, acc), EmptyList, Range(1, Big))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void FoldrAsAppend() { - Assert.That(ListOps.Foldr((x, acc) => Cons(x, acc), Range(100, Big), Range(1, 99)), Is.EquivalentTo(BigList)); + Assert.Equal(BigList, ListOps.Foldr((x, acc) => Cons(x, acc), Range(100, Big), Range(1, 99))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void AppendOfEmptylists() { - Assert.That(ListOps.Append(EmptyList, EmptyList), Is.EqualTo(EmptyList)); + Assert.Equal(EmptyList, ListOps.Append(EmptyList, EmptyList)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void AppendOfEmptyAndNonEmptyLists() { - Assert.That(ListOps.Append(EmptyList, Range(1, 4)), Is.EqualTo(Range(1, 4))); + Assert.Equal(Range(1, 4), ListOps.Append(EmptyList, Range(1, 4))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void AppendOfNonEmptyAndEmptyLists() { - Assert.That(ListOps.Append(Range(1, 4), EmptyList), Is.EqualTo(Range(1, 4))); + Assert.Equal(Range(1, 4), ListOps.Append(Range(1, 4), EmptyList)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void AppendOfNonEmptylists() { - Assert.That(ListOps.Append(Range(1, 3), new List {4, 5}), Is.EqualTo(Range(1, 5))); + Assert.Equal(Range(1, 5), ListOps.Append(Range(1, 3), new List {4, 5})); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void AppendOfLargeLists() { - Assert.That(ListOps.Append(Range(1, Big / 2), Range(1 + Big / 2, Big)), Is.EquivalentTo(BigList)); + Assert.Equal(BigList, ListOps.Append(Range(1, Big / 2), Range(1 + Big / 2, Big))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void ConcatOfNoLists() { - Assert.That(ListOps.Concat(new List>()), Is.EqualTo(EmptyList)); + Assert.Equal(EmptyList, ListOps.Concat(new List>())); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void ConcatOfListOfLists() { - Assert.That( + Assert.Equal(Range(1, 6), ListOps.Concat(new List> { new List {1, 2}, new List {3}, EmptyList, new List {4, 5, 6} - }), Is.EqualTo(Range(1, 6))); + })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void ConcatOfLargeListOfSmallLists() { - Assert.That(ListOps.Concat(ListOps.Map(x => new List {x}, Range(1, Big))), Is.EquivalentTo(BigList)); + Assert.Equal(BigList, ListOps.Concat(ListOps.Map(x => new List {x}, Range(1, Big)))); } } \ No newline at end of file diff --git a/exercises/luhn/LuhnTest.cs b/exercises/luhn/LuhnTest.cs index f7b05b9208..a5568bb093 100644 --- a/exercises/luhn/LuhnTest.cs +++ b/exercises/luhn/LuhnTest.cs @@ -1,16 +1,16 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class LuhnTest { - [TestCase("1", ExpectedResult = false)] // single digit strings can not be valid - [TestCase("0", ExpectedResult = false, Ignore = "Remove to run test case")] // a single zero is invalid - [TestCase("046 454 286", ExpectedResult = true, Ignore = "Remove to run test case")] // valid Canadian SIN - [TestCase("046 454 287", ExpectedResult = false, Ignore = "Remove to run test case")] // invalid Canadian SIN - [TestCase("8273 1232 7352 0569", ExpectedResult = false, Ignore = "Remove to run test case")] // invalid credit card - [TestCase("827a 1232 7352 0569", ExpectedResult = false, Ignore = "Remove to run test case")] // strings that contain non-digits are not valid - public bool ValidateChecksum(string number) + [Theory] + [InlineData("1", false)] // single digit strings can not be valid + [InlineData("0", false)] // a single zero is invalid + [InlineData("046 454 286", true)] // valid Canadian SIN + [InlineData("046 454 287", false)] // invalid Canadian SIN + [InlineData("8273 1232 7352 0569", false)] // invalid credit card + [InlineData("827a 1232 7352 0569", false)] // strings that contain non-digits are not valid + public void ValidateChecksum(string number, bool expected) { - return Luhn.IsValid(number); + Assert.Equal(expected, Luhn.IsValid(number)); } } \ No newline at end of file diff --git a/exercises/markdown/MarkdownTest.cs b/exercises/markdown/MarkdownTest.cs index 9262bdabcf..6ffffb9c46 100644 --- a/exercises/markdown/MarkdownTest.cs +++ b/exercises/markdown/MarkdownTest.cs @@ -1,76 +1,76 @@ -using NUnit.Framework; +using Xunit; public class MarkdownTest { - [Test] + [Fact] public void Parses_normal_text_as_a_paragraph() { var input = "This will be a paragraph"; var expected = "

This will be a paragraph

"; - Assert.That(Markdown.Parse(input), Is.EqualTo(expected)); + Assert.Equal(expected, Markdown.Parse(input)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Parsing_italics() { var input = "_This will be italic_"; var expected = "

This will be italic

"; - Assert.That(Markdown.Parse(input), Is.EqualTo(expected)); + Assert.Equal(expected, Markdown.Parse(input)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Parsing_bold_text() { var input = "__This will be bold__"; var expected = "

This will be bold

"; - Assert.That(Markdown.Parse(input), Is.EqualTo(expected)); + Assert.Equal(expected, Markdown.Parse(input)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Mixed_normal_italics_and_bold_text() { var input = "This will _be_ __mixed__"; var expected = "

This will be mixed

"; - Assert.That(Markdown.Parse(input), Is.EqualTo(expected)); + Assert.Equal(expected, Markdown.Parse(input)); } - [Test] + [Fact(Skip = "Remove to run test")] public void With_h1_header_level() { var input = "# This will be an h1"; var expected = "

This will be an h1

"; - Assert.That(Markdown.Parse(input), Is.EqualTo(expected)); + Assert.Equal(expected, Markdown.Parse(input)); } - [Test] + [Fact(Skip = "Remove to run test")] public void With_h2_header_level() { var input = "## This will be an h2"; var expected = "

This will be an h2

"; - Assert.That(Markdown.Parse(input), Is.EqualTo(expected)); + Assert.Equal(expected, Markdown.Parse(input)); } - [Test] + [Fact(Skip = "Remove to run test")] public void With_h6_header_level() { var input = "###### This will be an h6"; var expected = "
This will be an h6
"; - Assert.That(Markdown.Parse(input), Is.EqualTo(expected)); + Assert.Equal(expected, Markdown.Parse(input)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Unordered_lists() { var input = "* Item 1\n* Item 2"; var expected = "
  • Item 1
  • Item 2
"; - Assert.That(Markdown.Parse(input), Is.EqualTo(expected)); + Assert.Equal(expected, Markdown.Parse(input)); } - [Test] + [Fact(Skip = "Remove to run test")] public void With_a_little_bit_of_everything() { var input = "# Header!\n* __Bold Item__\n* _Italic Item_"; var expected = "

Header!

  • Bold Item
  • Italic Item
"; - Assert.That(Markdown.Parse(input), Is.EqualTo(expected)); + Assert.Equal(expected, Markdown.Parse(input)); } } \ No newline at end of file diff --git a/exercises/matrix/MatrixTest.cs b/exercises/matrix/MatrixTest.cs index 193aa1883e..13d79af770 100644 --- a/exercises/matrix/MatrixTest.cs +++ b/exercises/matrix/MatrixTest.cs @@ -1,63 +1,69 @@ -using NUnit.Framework; +using Xunit; public class MatrixTest { - [TestCase("1", ExpectedResult = new[] { 1 })] - [TestCase("4 7", ExpectedResult = new[] { 4, 7 }, Ignore = "Remove to run test case")] - [TestCase("1 2\n10 20", ExpectedResult = new[] { 1, 2 }, Ignore = "Remove to run test case")] - [TestCase("9 7 6\n8 6 5\n5 3 2", ExpectedResult = new[] { 9, 7, 6 }, Ignore = "Remove to run test case")] - public int[] Extract_first_row(string input) + [Theory] + [InlineData("1", new[] { 1 })] + [InlineData("4 7", new[] { 4, 7 })] + [InlineData("1 2\n10 20", new[] { 1, 2 })] + [InlineData("9 7 6\n8 6 5\n5 3 2", new[] { 9, 7, 6 })] + public void Extract_first_row(string input, int[] expected) { var matrix = new Matrix(input); - return matrix.Row(0); + Assert.Equal(expected, matrix.Row(0)); } - [TestCase("5", ExpectedResult = new[] { 5 }, Ignore = "Remove to run test case")] - [TestCase("9 7", ExpectedResult = new[] { 9, 7 }, Ignore = "Remove to run test case")] - [TestCase("9 8 7\n19 18 17", ExpectedResult = new[] { 19, 18, 17 }, Ignore = "Remove to run test case")] - [TestCase("1 4 9\n16 25 36\n5 6 7", ExpectedResult = new[] { 5, 6, 7 }, Ignore = "Remove to run test case")] - public int[] Extract_last_row(string input) + [Theory(Skip = "Remove to run test")] + [InlineData("5", new[] { 5 })] + [InlineData("9 7", new[] { 9, 7 })] + [InlineData("9 8 7\n19 18 17", new[] { 19, 18, 17 })] + [InlineData("1 4 9\n16 25 36\n5 6 7", new[] { 5, 6, 7 })] + public void Extract_last_row(string input, int[] expected) { var matrix = new Matrix(input); - return matrix.Row(matrix.Rows - 1); + Assert.Equal(expected, matrix.Row(matrix.Rows - 1)); } - [TestCase("55 44", ExpectedResult = new[] { 55 }, Ignore = "Remove to run test case")] - [TestCase("89 1903\n18 3", ExpectedResult = new[] { 89, 18 }, Ignore = "Remove to run test case")] - [TestCase("1 2 3\n4 5 6\n7 8 9\n8 7 6", ExpectedResult = new[] { 1, 4, 7, 8 }, Ignore = "Remove to run test case")] - public int[] Extract_first_column(string input) + [Theory(Skip = "Remove to run test")] + [InlineData("55 44", new[] { 55 })] + [InlineData("89 1903\n18 3", new[] { 89, 18 })] + [InlineData("1 2 3\n4 5 6\n7 8 9\n8 7 6", new[] { 1, 4, 7, 8 })] + public void Extract_first_column(string input, int[] expected) { var matrix = new Matrix(input); - return matrix.Col(0); + Assert.Equal(expected, matrix.Col(0)); } - [TestCase("28", ExpectedResult = new[] { 28 }, Ignore = "Remove to run test case")] - [TestCase("13\n16\n19", ExpectedResult = new[] { 13, 16, 19 }, Ignore = "Remove to run test case")] - [TestCase("289 21903 23\n218 23 21", ExpectedResult = new[] { 23, 21 }, Ignore = "Remove to run test case")] - [TestCase("11 12 13\n14 15 16\n17 18 19\n18 17 16", ExpectedResult = new[] { 13, 16, 19, 16 }, Ignore = "Remove to run test case")] - public int[] Extract_last_column(string input) + [Theory(Skip = "Remove to run test")] + [InlineData("28", new[] { 28 })] + [InlineData("13\n16\n19", new[] { 13, 16, 19 })] + [InlineData("289 21903 23\n218 23 21", new[] { 23, 21 })] + [InlineData("11 12 13\n14 15 16\n17 18 19\n18 17 16", new[] { 13, 16, 19, 16 })] + public void Extract_last_column(string input, int[] expected) { var matrix = new Matrix(input); - return matrix.Col(matrix.Cols - 1); + Assert.Equal(expected, matrix.Col(matrix.Cols - 1)); } - [TestCase("28", ExpectedResult = 1, Ignore = "Remove to run test case")] - [TestCase("13\n16", ExpectedResult = 2, Ignore = "Remove to run test case")] - [TestCase("289 21903\n23 218\n23 21", ExpectedResult = 3, Ignore = "Remove to run test case")] - [TestCase("11 12 13\n14 15 16\n17 18 19\n18 17 16", ExpectedResult = 4, Ignore = "Remove to run test case")] - public int Number_of_rows(string input) + [Theory(Skip = "Remove to run test")] + [InlineData("28", 1)] + [InlineData("13\n16", 2)] + [InlineData("289 21903\n23 218\n23 21", 3)] + [InlineData("11 12 13\n14 15 16\n17 18 19\n18 17 16", 4)] + public void Number_of_rows(string input, int expected) { var matrix = new Matrix(input); - return matrix.Rows; + Assert.Equal(expected, matrix.Rows); } - [TestCase("28", ExpectedResult = 1, Ignore = "Remove to run test case")] - [TestCase("13 2\n16 3\n19 4", ExpectedResult = 2, Ignore = "Remove to run test case")] - [TestCase("289 21903\n23 218\n23 21", ExpectedResult = 2, Ignore = "Remove to run test case")] - [TestCase("11 12 13\n14 15 16\n17 18 19\n18 17 16", ExpectedResult = 3, Ignore = "Remove to run test case")] - public int Number_of_columns(string input) + [Theory(Skip = "Remove to run test")] + [InlineData("28", 1)] + [InlineData("13 2\n16 3\n19 4", 2)] + [InlineData("289 21903\n23 218\n23 21", 2)] + [InlineData("11 12 13\n14 15 16\n17 18 19\n18 17 16", 3)] + public void Number_of_columns(string input, int expected) { var matrix = new Matrix(input); - return matrix.Cols; + Assert.Equal(expected, matrix.Cols); } } \ No newline at end of file diff --git a/exercises/meetup/MeetupTest.cs b/exercises/meetup/MeetupTest.cs index 0bbad6055a..5b1ea909f8 100644 --- a/exercises/meetup/MeetupTest.cs +++ b/exercises/meetup/MeetupTest.cs @@ -1,89 +1,89 @@ using System; -using NUnit.Framework; +using Xunit; -[TestFixture] public class MeetupTest { - [TestCase(5, DayOfWeek.Monday, ExpectedResult = "2013-5-13")] - [TestCase(3, DayOfWeek.Tuesday, ExpectedResult = "2013-3-19")] - [TestCase(1, DayOfWeek.Wednesday, ExpectedResult = "2013-1-16")] - [TestCase(5, DayOfWeek.Thursday, ExpectedResult = "2013-5-16")] - [TestCase(4, DayOfWeek.Friday, ExpectedResult = "2013-4-19")] - [TestCase(2, DayOfWeek.Saturday, ExpectedResult = "2013-2-16")] - [TestCase(10, DayOfWeek.Sunday, ExpectedResult = "2013-10-13")] - public string Finds_first_teenth_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek) + [Theory] + [InlineData(5, DayOfWeek.Monday, "2013-5-13")] + [InlineData(3, DayOfWeek.Tuesday, "2013-3-19")] + [InlineData(1, DayOfWeek.Wednesday, "2013-1-16")] + [InlineData(5, DayOfWeek.Thursday, "2013-5-16")] + [InlineData(4, DayOfWeek.Friday, "2013-4-19")] + [InlineData(2, DayOfWeek.Saturday, "2013-2-16")] + [InlineData(10, DayOfWeek.Sunday, "2013-10-13")] + public void Finds_first_teenth_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek, string expected) { DateTime day = new Meetup(month, 2013).Day(dayOfWeek, Schedule.Teenth); - return day.ToString("yyyy-M-d"); + Assert.Equal(expected, day.ToString("yyyy-M-d")); } - [Ignore("Remove to run test")] - [TestCase(3, DayOfWeek.Monday, ExpectedResult = "2013-3-4")] - [TestCase(5, DayOfWeek.Tuesday, ExpectedResult = "2013-5-7")] - [TestCase(7, DayOfWeek.Wednesday, ExpectedResult = "2013-7-3")] - [TestCase(9, DayOfWeek.Thursday, ExpectedResult = "2013-9-5")] - [TestCase(11, DayOfWeek.Friday, ExpectedResult = "2013-11-1")] - [TestCase(1, DayOfWeek.Saturday, ExpectedResult = "2013-1-5")] - [TestCase(4, DayOfWeek.Sunday, ExpectedResult = "2013-4-7")] - public string Finds_first_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek) + [Theory(Skip = "Remove to run test")] + [InlineData(3, DayOfWeek.Monday, "2013-3-4")] + [InlineData(5, DayOfWeek.Tuesday, "2013-5-7")] + [InlineData(7, DayOfWeek.Wednesday, "2013-7-3")] + [InlineData(9, DayOfWeek.Thursday, "2013-9-5")] + [InlineData(11, DayOfWeek.Friday, "2013-11-1")] + [InlineData(1, DayOfWeek.Saturday, "2013-1-5")] + [InlineData(4, DayOfWeek.Sunday, "2013-4-7")] + public void Finds_first_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek, string expected) { DateTime day = new Meetup(month, 2013).Day(dayOfWeek, Schedule.First); - return day.ToString("yyyy-M-d"); + Assert.Equal(expected, day.ToString("yyyy-M-d")); } - [Ignore("Remove to run test")] - [TestCase(3, DayOfWeek.Monday, ExpectedResult = "2013-3-11")] - [TestCase(5, DayOfWeek.Tuesday, ExpectedResult = "2013-5-14")] - [TestCase(7, DayOfWeek.Wednesday, ExpectedResult = "2013-7-10")] - [TestCase(9, DayOfWeek.Thursday, ExpectedResult = "2013-9-12")] - [TestCase(12, DayOfWeek.Friday, ExpectedResult = "2013-12-13")] - [TestCase(2, DayOfWeek.Saturday, ExpectedResult = "2013-2-9")] - [TestCase(4, DayOfWeek.Sunday, ExpectedResult = "2013-4-14")] - public string Finds_second_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek) + [Theory(Skip = "Remove to run test")] + [InlineData(3, DayOfWeek.Monday, "2013-3-11")] + [InlineData(5, DayOfWeek.Tuesday, "2013-5-14")] + [InlineData(7, DayOfWeek.Wednesday, "2013-7-10")] + [InlineData(9, DayOfWeek.Thursday, "2013-9-12")] + [InlineData(12, DayOfWeek.Friday, "2013-12-13")] + [InlineData(2, DayOfWeek.Saturday, "2013-2-9")] + [InlineData(4, DayOfWeek.Sunday, "2013-4-14")] + public void Finds_second_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek, string expected) { DateTime day = new Meetup(month, 2013).Day(dayOfWeek, Schedule.Second); - return day.ToString("yyyy-M-d"); + Assert.Equal(expected, day.ToString("yyyy-M-d")); } - [Ignore("Remove to run test")] - [TestCase(3, DayOfWeek.Monday, ExpectedResult = "2013-3-18")] - [TestCase(5, DayOfWeek.Tuesday, ExpectedResult = "2013-5-21")] - [TestCase(7, DayOfWeek.Wednesday, ExpectedResult = "2013-7-17")] - [TestCase(9, DayOfWeek.Thursday, ExpectedResult = "2013-9-19")] - [TestCase(12, DayOfWeek.Friday, ExpectedResult = "2013-12-20")] - [TestCase(2, DayOfWeek.Saturday, ExpectedResult = "2013-2-16")] - [TestCase(4, DayOfWeek.Sunday, ExpectedResult = "2013-4-21")] - public string Finds_third_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek) + [Theory(Skip = "Remove to run test")] + [InlineData(3, DayOfWeek.Monday, "2013-3-18")] + [InlineData(5, DayOfWeek.Tuesday, "2013-5-21")] + [InlineData(7, DayOfWeek.Wednesday, "2013-7-17")] + [InlineData(9, DayOfWeek.Thursday, "2013-9-19")] + [InlineData(12, DayOfWeek.Friday, "2013-12-20")] + [InlineData(2, DayOfWeek.Saturday, "2013-2-16")] + [InlineData(4, DayOfWeek.Sunday, "2013-4-21")] + public void Finds_third_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek, string expected) { DateTime day = new Meetup(month, 2013).Day(dayOfWeek, Schedule.Third); - return day.ToString("yyyy-M-d"); + Assert.Equal(expected, day.ToString("yyyy-M-d")); } - [Ignore("Remove to run test")] - [TestCase(3, DayOfWeek.Monday, ExpectedResult = "2013-3-25")] - [TestCase(5, DayOfWeek.Tuesday, ExpectedResult = "2013-5-28")] - [TestCase(7, DayOfWeek.Wednesday, ExpectedResult = "2013-7-24")] - [TestCase(9, DayOfWeek.Thursday, ExpectedResult = "2013-9-26")] - [TestCase(12, DayOfWeek.Friday, ExpectedResult = "2013-12-27")] - [TestCase(2, DayOfWeek.Saturday, ExpectedResult = "2013-2-23")] - [TestCase(4, DayOfWeek.Sunday, ExpectedResult = "2013-4-28")] - public string Finds_fourth_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek) + [Theory(Skip = "Remove to run test")] + [InlineData(3, DayOfWeek.Monday, "2013-3-25")] + [InlineData(5, DayOfWeek.Tuesday, "2013-5-28")] + [InlineData(7, DayOfWeek.Wednesday, "2013-7-24")] + [InlineData(9, DayOfWeek.Thursday, "2013-9-26")] + [InlineData(12, DayOfWeek.Friday, "2013-12-27")] + [InlineData(2, DayOfWeek.Saturday, "2013-2-23")] + [InlineData(4, DayOfWeek.Sunday, "2013-4-28")] + public void Finds_fourth_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek, string expected) { DateTime day = new Meetup(month, 2013).Day(dayOfWeek, Schedule.Fourth); - return day.ToString("yyyy-M-d"); + Assert.Equal(expected, day.ToString("yyyy-M-d")); } - [Ignore("Remove to run test")] - [TestCase(3, DayOfWeek.Monday, ExpectedResult = "2013-3-25")] - [TestCase(5, DayOfWeek.Tuesday, ExpectedResult = "2013-5-28")] - [TestCase(7, DayOfWeek.Wednesday, ExpectedResult = "2013-7-31")] - [TestCase(9, DayOfWeek.Thursday, ExpectedResult = "2013-9-26")] - [TestCase(12, DayOfWeek.Friday, ExpectedResult = "2013-12-27")] - [TestCase(2, DayOfWeek.Saturday, ExpectedResult = "2013-2-23")] - [TestCase(3, DayOfWeek.Sunday, ExpectedResult = "2013-3-31")] - public string Finds_last_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek) + [Theory(Skip = "Remove to run test")] + [InlineData(3, DayOfWeek.Monday, "2013-3-25")] + [InlineData(5, DayOfWeek.Tuesday, "2013-5-28")] + [InlineData(7, DayOfWeek.Wednesday, "2013-7-31")] + [InlineData(9, DayOfWeek.Thursday, "2013-9-26")] + [InlineData(12, DayOfWeek.Friday, "2013-12-27")] + [InlineData(2, DayOfWeek.Saturday, "2013-2-23")] + [InlineData(3, DayOfWeek.Sunday, "2013-3-31")] + public void Finds_last_day_of_week_in_a_month(int month, DayOfWeek dayOfWeek, string expected) { DateTime day = new Meetup(month, 2013).Day(dayOfWeek, Schedule.Last); - return day.ToString("yyyy-M-d"); + Assert.Equal(expected, day.ToString("yyyy-M-d")); } } \ No newline at end of file diff --git a/exercises/minesweeper/MinesweeperTest.cs b/exercises/minesweeper/MinesweeperTest.cs index bcd95b1312..8d76497689 100644 --- a/exercises/minesweeper/MinesweeperTest.cs +++ b/exercises/minesweeper/MinesweeperTest.cs @@ -1,19 +1,17 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class MinesweeperTest { - [Test] + [Fact] public void Zero_sized_board() { var input = ""; var expected = ""; - Assert.That(Minesweeper.Annotate(input), Is.EqualTo(expected)); + Assert.Equal(expected, Minesweeper.Annotate(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_board() { var input = FormatInput(new[] @@ -30,11 +28,10 @@ public void Empty_board() " " }); - Assert.That(Minesweeper.Annotate(input), Is.EqualTo(expected)); + Assert.Equal(expected, Minesweeper.Annotate(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Board_full_of_mines() { var input = FormatInput(new[] @@ -51,11 +48,10 @@ public void Board_full_of_mines() "***" }); - Assert.That(Minesweeper.Annotate(input), Is.EqualTo(expected)); + Assert.Equal(expected, Minesweeper.Annotate(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Surrounded() { var input = FormatInput(new[] @@ -72,11 +68,10 @@ public void Surrounded() "***" }); - Assert.That(Minesweeper.Annotate(input), Is.EqualTo(expected)); + Assert.Equal(expected, Minesweeper.Annotate(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Horizontal_line() { var input = FormatInput(new[] @@ -89,11 +84,10 @@ public void Horizontal_line() "1*2*1" }); - Assert.That(Minesweeper.Annotate(input), Is.EqualTo(expected)); + Assert.Equal(expected, Minesweeper.Annotate(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Vertical_line() { var input = FormatInput(new[] @@ -114,11 +108,10 @@ public void Vertical_line() "1" }); - Assert.That(Minesweeper.Annotate(input), Is.EqualTo(expected)); + Assert.Equal(expected, Minesweeper.Annotate(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cross() { var input = FormatInput(new[] @@ -139,7 +132,7 @@ public void Cross() " 2*2 " }); - Assert.That(Minesweeper.Annotate(input), Is.EqualTo(expected)); + Assert.Equal(expected, Minesweeper.Annotate(input)); } private string FormatInput(string[] input) diff --git a/exercises/nth-prime/NthPrimeTest.cs b/exercises/nth-prime/NthPrimeTest.cs index 4e214f1a54..bbb33a6955 100644 --- a/exercises/nth-prime/NthPrimeTest.cs +++ b/exercises/nth-prime/NthPrimeTest.cs @@ -1,20 +1,21 @@ -using NUnit.Framework; +using Xunit; public class NthPrimeTest { - [TestCase(1, ExpectedResult = 2)] - [TestCase(2, ExpectedResult = 3, Ignore = "Remove to run test case")] - [TestCase(3, ExpectedResult = 5, Ignore = "Remove to run test case")] - [TestCase(4, ExpectedResult = 7, Ignore = "Remove to run test case")] - [TestCase(5, ExpectedResult = 11, Ignore = "Remove to run test case")] - [TestCase(6, ExpectedResult = 13, Ignore = "Remove to run test case")] - [TestCase(7, ExpectedResult = 17, Ignore = "Remove to run test case")] - [TestCase(8, ExpectedResult = 19, Ignore = "Remove to run test case")] - [TestCase(1000, ExpectedResult = 7919, Ignore = "Remove to run test case")] - [TestCase(10000, ExpectedResult = 104729, Ignore = "Remove to run test case")] - [TestCase(10001, ExpectedResult = 104743, Ignore = "Remove to run test case")] - public int Nth_prime_calculated(int nth) + [Theory] + [InlineData(1, 2)] + [InlineData(2, 3)] + [InlineData(3, 5)] + [InlineData(4, 7)] + [InlineData(5, 11)] + [InlineData(6, 13)] + [InlineData(7, 17)] + [InlineData(8, 19)] + [InlineData(1000, 7919)] + [InlineData(10000, 104729)] + [InlineData(10001, 104743)] + public void Nth_prime_calculated(int nth, int expected) { - return NthPrime.Nth(nth); + Assert.Equal(expected, NthPrime.Nth(nth)); } } \ No newline at end of file diff --git a/exercises/nucleotide-count/NucleotideCountTest.cs b/exercises/nucleotide-count/NucleotideCountTest.cs index b66b6b953a..71ce18f736 100644 --- a/exercises/nucleotide-count/NucleotideCountTest.cs +++ b/exercises/nucleotide-count/NucleotideCountTest.cs @@ -1,73 +1,65 @@ using System.Collections.Generic; -using NUnit.Framework; +using Xunit; -[TestFixture] public class NucleoTideCountTest { - [Test] + [Fact] public void Has_no_nucleotides() { var dna = new DNA(""); var expected = new Dictionary { { 'A', 0 }, { 'T', 0 }, { 'C', 0 }, { 'G', 0 } }; - Assert.That(dna.NucleotideCounts, Is.EqualTo(expected)); + Assert.Equal(expected, dna.NucleotideCounts); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Has_no_adenosine() { var dna = new DNA(""); - Assert.That(dna.Count('A'), Is.EqualTo(0)); + Assert.Equal(0, dna.Count('A')); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Repetitive_cytidine_gets_counts() { var dna = new DNA("CCCCC"); - Assert.That(dna.Count('C'), Is.EqualTo(5)); + Assert.Equal(5, dna.Count('C')); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Repetitive_sequence_has_only_guanosine() { var dna = new DNA("GGGGGGGG"); var expected = new Dictionary { { 'A', 0 }, { 'T', 0 }, { 'C', 0 }, { 'G', 8 } }; - Assert.That(dna.NucleotideCounts, Is.EqualTo(expected)); + Assert.Equal(expected, dna.NucleotideCounts); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Counts_only_thymidine() { var dna = new DNA("GGGGTAACCCGG"); - Assert.That(dna.Count('T'), Is.EqualTo(1)); + Assert.Equal(1, dna.Count('T')); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Counts_a_nucleotide_only_once() { var dna = new DNA("GGTTGG"); dna.Count('T'); - Assert.That(dna.Count('T'), Is.EqualTo(2)); + Assert.Equal(2, dna.Count('T')); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Validates_nucleotides() { var dna = new DNA("GGTTGG"); Assert.Throws(() => dna.Count('X')); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Counts_all_nucleotides() { var dna = new DNA("AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC"); var expected = new Dictionary { { 'A', 20 }, { 'T', 21 }, { 'C', 12 }, { 'G', 17 } }; - Assert.That(dna.NucleotideCounts, Is.EqualTo(expected)); + Assert.Equal(expected, dna.NucleotideCounts); } } diff --git a/exercises/ocr-numbers/OcrNumbersTest.cs b/exercises/ocr-numbers/OcrNumbersTest.cs index 4f0bedd4df..723ccf9d7f 100644 --- a/exercises/ocr-numbers/OcrNumbersTest.cs +++ b/exercises/ocr-numbers/OcrNumbersTest.cs @@ -1,168 +1,154 @@ -using NUnit.Framework; +using Xunit; public class OcrNumbersTest { - [Test] + [Fact] public void Recognizes_zero() { var converted = OcrNumbers.Convert(" _ " + "\n" + "| |" + "\n" + "|_|" + "\n" + " "); - Assert.That(converted, Is.EqualTo("0")); + Assert.Equal("0", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_one() { var converted = OcrNumbers.Convert(" " + "\n" + " |" + "\n" + " |" + "\n" + " "); - Assert.That(converted, Is.EqualTo("1")); + Assert.Equal("1", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_two() { var converted = OcrNumbers.Convert(" _ " + "\n" + " _|" + "\n" + "|_ " + "\n" + " "); - Assert.That(converted, Is.EqualTo("2")); + Assert.Equal("2", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_three() { var converted = OcrNumbers.Convert(" _ " + "\n" + " _|" + "\n" + " _|" + "\n" + " "); - Assert.That(converted, Is.EqualTo("3")); + Assert.Equal("3", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_four() { var converted = OcrNumbers.Convert(" " + "\n" + "|_|" + "\n" + " |" + "\n" + " "); - Assert.That(converted, Is.EqualTo("4")); + Assert.Equal("4", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_five() { var converted = OcrNumbers.Convert(" _ " + "\n" + "|_ " + "\n" + " _|" + "\n" + " "); - Assert.That(converted, Is.EqualTo("5")); + Assert.Equal("5", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_six() { var converted = OcrNumbers.Convert(" _ " + "\n" + "|_ " + "\n" + "|_|" + "\n" + " "); - Assert.That(converted, Is.EqualTo("6")); + Assert.Equal("6", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_seven() { var converted = OcrNumbers.Convert(" _ " + "\n" + " |" + "\n" + " |" + "\n" + " "); - Assert.That(converted, Is.EqualTo("7")); + Assert.Equal("7", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_eight() { var converted = OcrNumbers.Convert(" _ " + "\n" + "|_|" + "\n" + "|_|" + "\n" + " "); - Assert.That(converted, Is.EqualTo("8")); + Assert.Equal("8", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_nine() { var converted = OcrNumbers.Convert(" _ " + "\n" + "|_|" + "\n" + " _|" + "\n" + " "); - Assert.That(converted, Is.EqualTo("9")); + Assert.Equal("9", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_garble() { var converted = OcrNumbers.Convert(" " + "\n" + "| |" + "\n" + "| |" + "\n" + " "); - Assert.That(converted, Is.EqualTo("?")); + Assert.Equal("?", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_ten() { var converted = OcrNumbers.Convert(" _ " + "\n" + " || |" + "\n" + " ||_|" + "\n" + " "); - Assert.That(converted, Is.EqualTo("10")); + Assert.Equal("10", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_110101100() { var converted = OcrNumbers.Convert(" _ _ _ _ " + "\n" + " | || | || | | || || |" + "\n" + " | ||_| ||_| | ||_||_|" + "\n" + " "); - Assert.That(converted, Is.EqualTo("110101100")); + Assert.Equal("110101100", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_numbers_and_garble() { var converted = OcrNumbers.Convert(" _ _ _ " + "\n" + " | || | || | || || |" + "\n" + " | | _| ||_| | ||_||_|" + "\n" + " "); - Assert.That(converted, Is.EqualTo("11?10?1?0")); + Assert.Equal("11?10?1?0", converted); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recognizes_1234567890() { var converted = OcrNumbers.Convert(" _ _ _ _ _ _ _ _ " + "\n" + " | _| _||_||_ |_ ||_||_|| |" + "\n" + " ||_ _| | _||_| ||_| _||_|" + "\n" + " "); - Assert.That(converted, Is.EqualTo("1234567890")); + Assert.Equal("1234567890", converted); } } \ No newline at end of file diff --git a/exercises/paket.references b/exercises/paket.references index 8a39542b97..38898a345b 100644 --- a/exercises/paket.references +++ b/exercises/paket.references @@ -1,2 +1,2 @@ -NUnit -Sprache \ No newline at end of file +Sprache +xunit \ No newline at end of file diff --git a/exercises/palindrome-products/PalindromeTest.cs b/exercises/palindrome-products/PalindromeTest.cs index f7668cf3b6..8e14284fba 100644 --- a/exercises/palindrome-products/PalindromeTest.cs +++ b/exercises/palindrome-products/PalindromeTest.cs @@ -1,76 +1,69 @@ using System; -using NUnit.Framework; +using Xunit; public class PalindromeTest { - [Test] + [Fact] public void Largest_palindrome_from_single_digit_factors() { var actual = Palindrome.Largest(9); - Assert.That(actual.Value, Is.EqualTo(9)); - Assert.That(actual.Factors, Is.EqualTo(new [] { Tuple.Create(1, 9), Tuple.Create(3, 3) })); + Assert.Equal(9, actual.Value); + Assert.Equal(new [] { Tuple.Create(1, 9), Tuple.Create(3, 3) }, actual.Factors); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Smallest_palindrome_from_single_digit_factors() { var actual = Palindrome.Smallest(9); - Assert.That(actual.Value, Is.EqualTo(1)); - Assert.That(actual.Factors, Is.EqualTo(new[] { Tuple.Create(1, 1) })); + Assert.Equal(1, actual.Value); + Assert.Equal(new[] { Tuple.Create(1, 1) }, actual.Factors); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Largest_palindrome_from_double_digit_actors() { var actual = Palindrome.Largest(10, 99); - Assert.That(actual.Value, Is.EqualTo(9009)); - Assert.That(actual.Factors, Is.EqualTo(new[] { Tuple.Create(91, 99) })); + Assert.Equal(9009, actual.Value); + Assert.Equal(new[] { Tuple.Create(91, 99) }, actual.Factors); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Smallest_palindrome_from_double_digit_factors() { var actual = Palindrome.Smallest(10, 99); - Assert.That(actual.Value, Is.EqualTo(121)); - Assert.That(actual.Factors, Is.EqualTo(new[] { Tuple.Create(11, 11) })); + Assert.Equal(121, actual.Value); + Assert.Equal(new[] { Tuple.Create(11, 11) }, actual.Factors); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Largest_palindrome_from_triple_digit_factors() { var actual = Palindrome.Largest(100, 999); - Assert.That(actual.Value, Is.EqualTo(906609)); - Assert.That(actual.Factors, Is.EqualTo(new[] { Tuple.Create(913, 993) })); + Assert.Equal(906609, actual.Value); + Assert.Equal(new[] { Tuple.Create(913, 993) }, actual.Factors); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Smallest_palindrome_from_triple_digit_factors() { var actual = Palindrome.Smallest(100, 999); - Assert.That(actual.Value, Is.EqualTo(10201)); - Assert.That(actual.Factors, Is.EqualTo(new[] { Tuple.Create(101, 101) })); + Assert.Equal(10201, actual.Value); + Assert.Equal(new[] { Tuple.Create(101, 101) }, actual.Factors); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Largest_palindrome_from_four_digit_factors() { var actual = Palindrome.Largest(1000, 9999); - Assert.That(actual.Value, Is.EqualTo(99000099)); - Assert.That(actual.Factors, Is.EqualTo(new[] { Tuple.Create(9901, 9999) })); + Assert.Equal(99000099, actual.Value); + Assert.Equal(new[] { Tuple.Create(9901, 9999) }, actual.Factors); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Smallest_palindrome_from_four_digit_factors() { var actual = Palindrome.Smallest(1000, 9999); - Assert.That(actual.Value, Is.EqualTo(1002001)); - Assert.That(actual.Factors, Is.EqualTo(new[] { Tuple.Create(1001, 1001) })); + Assert.Equal(1002001, actual.Value); + Assert.Equal(new[] { Tuple.Create(1001, 1001) }, actual.Factors); } } \ No newline at end of file diff --git a/exercises/pangram/PangramTest.cs b/exercises/pangram/PangramTest.cs index 9397714651..733157b617 100644 --- a/exercises/pangram/PangramTest.cs +++ b/exercises/pangram/PangramTest.cs @@ -1,84 +1,74 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class PangramTest { - [Test] + [Fact] public void Empty_sentence() { var input = ""; - Assert.That(Pangram.IsPangram(input), Is.EqualTo(false)); + Assert.Equal(false, Pangram.IsPangram(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Pangram_with_only_lower_case() { var input = "the quick brown fox jumps over the lazy dog"; - Assert.That(Pangram.IsPangram(input), Is.EqualTo(true)); + Assert.Equal(true, Pangram.IsPangram(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Missing_character_x() { var input = "a quick movement of the enemy will jeopardize five gunboats"; - Assert.That(Pangram.IsPangram(input), Is.EqualTo(false)); + Assert.Equal(false, Pangram.IsPangram(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Another_missing_character_x() { var input = "the quick brown fish jumps over the lazy dog"; - Assert.That(Pangram.IsPangram(input), Is.EqualTo(false)); + Assert.Equal(false, Pangram.IsPangram(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Pangram_with_underscores() { var input = "the_quick_brown_fox_jumps_over_the_lazy_dog"; - Assert.That(Pangram.IsPangram(input), Is.EqualTo(true)); + Assert.Equal(true, Pangram.IsPangram(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Pangram_with_numbers() { var input = "the 1 quick brown fox jumps over the 2 lazy dogs"; - Assert.That(Pangram.IsPangram(input), Is.EqualTo(true)); + Assert.Equal(true, Pangram.IsPangram(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Missing_letters_replaced_by_numbers() { var input = "7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog"; - Assert.That(Pangram.IsPangram(input), Is.EqualTo(false)); + Assert.Equal(false, Pangram.IsPangram(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Pangram_with_mixed_case_and_punctuation() { var input = "\"Five quacking Zephyrs jolt my wax bed.\""; - Assert.That(Pangram.IsPangram(input), Is.EqualTo(true)); + Assert.Equal(true, Pangram.IsPangram(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Pangram_with_non_ascii_characters() { var input = "Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich."; - Assert.That(Pangram.IsPangram(input), Is.EqualTo(true)); + Assert.Equal(true, Pangram.IsPangram(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Pangram_in_alphabet_other_than_ascii() { var input = "Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства."; - Assert.That(Pangram.IsPangram(input), Is.EqualTo(false)); + Assert.Equal(false, Pangram.IsPangram(input)); } } \ No newline at end of file diff --git a/exercises/parallel-letter-frequency/ParallelLetterFrequencyTest.cs b/exercises/parallel-letter-frequency/ParallelLetterFrequencyTest.cs index 42237b1740..cc91d05a4d 100644 --- a/exercises/parallel-letter-frequency/ParallelLetterFrequencyTest.cs +++ b/exercises/parallel-letter-frequency/ParallelLetterFrequencyTest.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; using System.Linq; -using NUnit.Framework; +using Xunit; public class ParallelLetterParallelLetterFrequency { @@ -37,17 +37,16 @@ public class ParallelLetterParallelLetterFrequency "O say does that star-spangled banner yet wave,\n" + "O'er the land of the free and the home of the brave?\n"; - [Test] + [Fact] public void No_texts_mean_no_letters() { var input = Enumerable.Empty(); var actual = ParallelLetterFrequency.Calculate(input); var expected = new Dictionary(); - Assert.That(actual, Is.EquivalentTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_letter() { var input = new[] { "a" }; @@ -56,11 +55,10 @@ public void One_letter() { { 'a', 1 } }; - Assert.That(actual, Is.EquivalentTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Case_insensitivity() { var input = new[] { "aA" }; @@ -69,21 +67,19 @@ public void Case_insensitivity() { { 'a', 2 } }; - Assert.That(actual, Is.EquivalentTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Many_empty_texts_still_mean_no_letters() { var input = Enumerable.Repeat(" ", 10000); var actual = ParallelLetterFrequency.Calculate(input); var expected = new Dictionary(); - Assert.That(actual, Is.EquivalentTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Many_times_the_same_text_gives_a_predictable_result() { var input = Enumerable.Repeat("abc", 1000); @@ -94,11 +90,10 @@ public void Many_times_the_same_text_gives_a_predictable_result() { 'b', 1000 }, { 'c', 1000 } }; - Assert.That(actual, Is.EquivalentTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Punctuation_doesnt_count() { var input = new[] { OdeAnDieFreude }; @@ -106,8 +101,7 @@ public void Punctuation_doesnt_count() Assert.False(actual.ContainsKey(',')); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Numbers_dont_count() { var input = new[] { "Testing, 1, 2, 3" }; @@ -115,14 +109,13 @@ public void Numbers_dont_count() Assert.False(actual.ContainsKey('1')); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void All_three_anthems_together() { var input = new[] { OdeAnDieFreude, Wilhelmus, StarSpangledBanner }; var actual = ParallelLetterFrequency.Calculate(input); - Assert.That(actual['a'], Is.EqualTo(49)); - Assert.That(actual['t'], Is.EqualTo(56)); - Assert.That(actual['ü'], Is.EqualTo(2)); + Assert.Equal(49, actual['a']); + Assert.Equal(56, actual['t']); + Assert.Equal(2, actual['ü']); } } \ No newline at end of file diff --git a/exercises/pascals-triangle/PascalsTriangleTest.cs b/exercises/pascals-triangle/PascalsTriangleTest.cs index ebc1950188..216e859b92 100644 --- a/exercises/pascals-triangle/PascalsTriangleTest.cs +++ b/exercises/pascals-triangle/PascalsTriangleTest.cs @@ -1,52 +1,80 @@ -using System.Linq; -using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using Xunit; public class PascalsTriangleTest { - [Test] + [Fact] public void One_row() { var actual = PascalsTriangle.Calculate(1); - Assert.That(actual, Is.EqualTo(new[] { new[] { 1 } })); + var expected = new[] { new[] { 1 } }; + Assert.Equal(expected, actual, NestedEnumerableEqualityComparer.Instance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_rows() { - var actual = PascalsTriangle.Calculate(2); - Assert.That(actual, Is.EqualTo(new[] { new[] { 1 }, new[] { 1, 1 } })); + var actual = PascalsTriangle.Calculate(2).ToArray(); + var expected = new[] { new[] { 1 }, new[] { 1, 1 } }; + Assert.Equal(expected, actual, NestedEnumerableEqualityComparer.Instance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Three_rows() { var actual = PascalsTriangle.Calculate(3); - Assert.That(actual, Is.EqualTo(new[] { new[] { 1 }, new[] { 1, 1 }, new[] { 1, 2, 1 } })); + var expected = new[] { new[] { 1 }, new[] { 1, 1 }, new[] { 1, 2, 1 } }; + Assert.Equal(expected, actual, NestedEnumerableEqualityComparer.Instance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Four_rows() { var actual = PascalsTriangle.Calculate(4); - Assert.That(actual, Is.EqualTo(new[] { new[] { 1 }, new[] { 1, 1 }, new[] { 1, 2, 1 }, new[] { 1, 3, 3, 1 } })); + var expected = new[] { new[] { 1 }, new[] { 1, 1 }, new[] { 1, 2, 1 }, new[] { 1, 3, 3, 1 } }; + Assert.Equal(expected, actual, NestedEnumerableEqualityComparer.Instance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Five_rows() { var actual = PascalsTriangle.Calculate(5); - Assert.That(actual, Is.EqualTo(new[] { new[] { 1 }, new[] { 1, 1 }, new[] { 1, 2, 1 }, new[] { 1, 3, 3, 1 }, new [] { 1, 4, 6, 4, 1 } })); + var expected = new[] { new[] { 1 }, new[] { 1, 1 }, new[] { 1, 2, 1 }, new[] { 1, 3, 3, 1 }, new[] { 1, 4, 6, 4, 1 } }; + Assert.Equal(expected, actual, NestedEnumerableEqualityComparer.Instance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Twenty_rows() { var actual = PascalsTriangle.Calculate(20).Last(); - Assert.That(actual, Is.EqualTo(new[] { 1, 19, 171, 969, 3876, 11628, 27132, 50388, 75582, 92378, 92378, 75582, 50388, 27132, 11628, 3876, 969, 171, 19, 1 })); + var expected = new[] { 1, 19, 171, 969, 3876, 11628, 27132, 50388, 75582, 92378, 92378, 75582, 50388, 27132, 11628, 3876, 969, 171, 19, 1 }; + Assert.Equal(expected, actual); + } + + private class EnumerableEqualityComparer : IEqualityComparer> + { + public static readonly EnumerableEqualityComparer Instance = new EnumerableEqualityComparer(); + + public bool Equals(IEnumerable x, IEnumerable y) => x.SequenceEqual(y); + + public int GetHashCode(IEnumerable obj) + { + throw new NotImplementedException(); + } + } + + private class NestedEnumerableEqualityComparer : IEqualityComparer>> + { + public static readonly NestedEnumerableEqualityComparer Instance = new NestedEnumerableEqualityComparer(); + + public bool Equals(IEnumerable> x, IEnumerable> y) + => x.SequenceEqual(y, EnumerableEqualityComparer.Instance); + + public int GetHashCode(IEnumerable> obj) + { + throw new NotImplementedException(); + } } } \ No newline at end of file diff --git a/exercises/perfect-numbers/PerfectNumbersTest.cs b/exercises/perfect-numbers/PerfectNumbersTest.cs index 5aaf6a6056..3e458bec23 100644 --- a/exercises/perfect-numbers/PerfectNumbersTest.cs +++ b/exercises/perfect-numbers/PerfectNumbersTest.cs @@ -1,29 +1,31 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class PerfectNumbersTest { - [TestCase(3)] - [TestCase(7, Ignore = "Remove to run test case")] - [TestCase(13, Ignore = "Remove to run test case")] + [Theory] + [InlineData(3)] + [InlineData(7)] + [InlineData(13)] public void Can_classify_deficient_numbers(int number) { - Assert.That(PerfectNumbers.Classify(number), Is.EqualTo(NumberType.Deficient)); + Assert.Equal(NumberType.Deficient, PerfectNumbers.Classify(number)); } - [TestCase(6, Ignore = "Remove to run test case")] - [TestCase(28, Ignore = "Remove to run test case")] - [TestCase(496, Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData(6)] + [InlineData(28)] + [InlineData(496)] public void Can_classify_perfect_numbers(int number) { - Assert.That(PerfectNumbers.Classify(number), Is.EqualTo(NumberType.Perfect)); + Assert.Equal(NumberType.Perfect, PerfectNumbers.Classify(number)); } - [TestCase(12, Ignore = "Remove to run test case")] - [TestCase(18, Ignore = "Remove to run test case")] - [TestCase(20, Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData(12)] + [InlineData(18)] + [InlineData(20)] public void Can_classify_abundant_numbers(int number) { - Assert.That(PerfectNumbers.Classify(number), Is.EqualTo(NumberType.Abundant)); + Assert.Equal(NumberType.Abundant, PerfectNumbers.Classify(number)); } } \ No newline at end of file diff --git a/exercises/phone-number/PhoneNumberTest.cs b/exercises/phone-number/PhoneNumberTest.cs index 0434d8f421..258b5fe805 100644 --- a/exercises/phone-number/PhoneNumberTest.cs +++ b/exercises/phone-number/PhoneNumberTest.cs @@ -1,60 +1,53 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class PhoneNumberTest { - [Test] + [Fact] public void Cleans_parens_spaces_and_dashes() { var phone = new PhoneNumber("(123) 456-7890"); - Assert.That(phone.Number, Is.EqualTo("1234567890")); + Assert.Equal("1234567890", phone.Number); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cleans_numbers_with_dots() { var phone = new PhoneNumber("123.456.7890"); - Assert.That(phone.Number, Is.EqualTo("1234567890")); + Assert.Equal("1234567890", phone.Number); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Allows_us_country_code() { var phone = new PhoneNumber("11234567890"); - Assert.That(phone.Number, Is.EqualTo("1234567890")); + Assert.Equal("1234567890", phone.Number); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Invalid_when_11_digits() { var phone = new PhoneNumber("21234567890"); - Assert.That(phone.Number, Is.EqualTo("0000000000")); + Assert.Equal("0000000000", phone.Number); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Invalid_when_9_digits() { var phone = new PhoneNumber("123456789"); - Assert.That(phone.Number, Is.EqualTo("0000000000")); + Assert.Equal("0000000000", phone.Number); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Has_an_area_code() { var phone = new PhoneNumber("1234567890"); - Assert.That(phone.AreaCode, Is.EqualTo("123")); + Assert.Equal("123", phone.AreaCode); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Formats_a_number() { var phone = new PhoneNumber("1234567890"); - Assert.That(phone.ToString(), Is.EqualTo("(123) 456-7890")); + Assert.Equal("(123) 456-7890", phone.ToString()); } } \ No newline at end of file diff --git a/exercises/pig-latin/PigLatinTest.cs b/exercises/pig-latin/PigLatinTest.cs index 6333818199..1bc13249e8 100644 --- a/exercises/pig-latin/PigLatinTest.cs +++ b/exercises/pig-latin/PigLatinTest.cs @@ -1,88 +1,79 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class PigLatinTest { - [TestCase("apple", ExpectedResult = "appleay")] - [TestCase("ear", ExpectedResult = "earay")] - [TestCase("igloo", ExpectedResult = "iglooay")] - [TestCase("object", ExpectedResult = "objectay")] - [TestCase("under", ExpectedResult = "underay")] - public string Ay_is_added_to_words_that_start_with_vowels(string word) + [Theory] + [InlineData("apple", "appleay")] + [InlineData("ear", "earay")] + [InlineData("igloo", "iglooay")] + [InlineData("object", "objectay")] + [InlineData("under", "underay")] + public void Ay_is_added_to_words_that_start_with_vowels(string word, string expected) { - return PigLatin.Translate(word); + Assert.Equal(expected, PigLatin.Translate(word)); } - [Ignore("Remove to run test")] - [TestCase("pig", ExpectedResult = "igpay")] - [TestCase("koala", ExpectedResult = "oalakay")] - [TestCase("yellow", ExpectedResult = "ellowyay")] - [TestCase("xenon", ExpectedResult = "enonxay")] - public string First_letter_and_ay_are_moved_to_the_end_of_words_that_start_with_consonants(string word) + [Theory(Skip = "Remove to run test")] + [InlineData("pig", "igpay")] + [InlineData("koala", "oalakay")] + [InlineData("yellow", "ellowyay")] + [InlineData("xenon", "enonxay")] + public void First_letter_and_ay_are_moved_to_the_end_of_words_that_start_with_consonants(string word, string expected) { - return PigLatin.Translate(word); + Assert.Equal(expected, PigLatin.Translate(word)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Ch_is_treated_like_a_single_consonant() { - Assert.That(PigLatin.Translate("chair"), Is.EqualTo("airchay")); + Assert.Equal("airchay", PigLatin.Translate("chair")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Qu_is_treated_like_a_single_consonant() { - Assert.That(PigLatin.Translate("queen"), Is.EqualTo("eenquay")); + Assert.Equal("eenquay", PigLatin.Translate("queen")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Qu_and_a_single_preceding_consonant_are_treated_like_a_single_consonant() { - Assert.That(PigLatin.Translate("square"), Is.EqualTo("aresquay")); + Assert.Equal("aresquay", PigLatin.Translate("square")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Th_is_treated_like_a_single_consonant() { - Assert.That(PigLatin.Translate("therapy"), Is.EqualTo("erapythay")); + Assert.Equal("erapythay", PigLatin.Translate("therapy")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Thr_is_treated_like_a_single_consonant() { - Assert.That(PigLatin.Translate("thrush"), Is.EqualTo("ushthray")); + Assert.Equal("ushthray", PigLatin.Translate("thrush")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sch_is_treated_like_a_single_consonant() { - Assert.That(PigLatin.Translate("school"), Is.EqualTo("oolschay")); + Assert.Equal("oolschay", PigLatin.Translate("school")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Yt_is_treated_like_a_single_vowel() { - Assert.That(PigLatin.Translate("yttria"), Is.EqualTo("yttriaay")); + Assert.Equal("yttriaay", PigLatin.Translate("yttria")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Xr_is_treated_like_a_single_vowel() { - Assert.That(PigLatin.Translate("xray"), Is.EqualTo("xrayay")); + Assert.Equal("xrayay", PigLatin.Translate("xray")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Phrases_are_translated() { - Assert.That(PigLatin.Translate("quick fast run"), Is.EqualTo("ickquay astfay unray")); + Assert.Equal("ickquay astfay unray", PigLatin.Translate("quick fast run")); } } \ No newline at end of file diff --git a/exercises/poker/PokerTest.cs b/exercises/poker/PokerTest.cs index d39fb622d4..bb1bd2e474 100644 --- a/exercises/poker/PokerTest.cs +++ b/exercises/poker/PokerTest.cs @@ -1,181 +1,160 @@ -using NUnit.Framework; +using Xunit; public class PokerTest { - [Test] + [Fact] public void One_hand() { const string hand = "4S 5S 7H 8D JC"; - Assert.That(Poker.BestHands(new[] { hand }), Is.EqualTo(new[] { hand })); + Assert.Equal(new[] { hand }, Poker.BestHands(new[] { hand })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Nothing_vs_one_pair() { const string nothing = "4S 5H 6S 8D JH"; const string pairOf4 = "2S 4H 6S 4D JH"; - Assert.That(Poker.BestHands(new[] { nothing, pairOf4 }), Is.EqualTo(new[] { pairOf4 })); + Assert.Equal(new[] { pairOf4 }, Poker.BestHands(new[] { nothing, pairOf4 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_pairs() { const string pairOf2 = "4S 2H 6S 2D JH"; const string pairOf4 = "2S 4H 6S 4D JH"; - Assert.That(Poker.BestHands(new[] { pairOf2, pairOf4 }), Is.EqualTo(new[] { pairOf4 })); + Assert.Equal(new[] { pairOf4 }, Poker.BestHands(new[] { pairOf2, pairOf4 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_pair_vs_double_pair() { const string pairOf8 = "2S 8H 6S 8D JH"; const string doublePair = "4S 5H 4S 8D 5H"; - Assert.That(Poker.BestHands(new[] { pairOf8, doublePair }), Is.EqualTo(new[] { doublePair })); + Assert.Equal(new[] { doublePair }, Poker.BestHands(new[] { pairOf8, doublePair })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_double_pairs() { const string doublePair2And8 = "2S 8H 2S 8D JH"; const string doublePair4And5 = "4S 5H 4S 8D 5H"; - Assert.That(Poker.BestHands(new[] { doublePair2And8, doublePair4And5 }), Is.EqualTo(new[] { doublePair2And8 })); + Assert.Equal(new[] { doublePair2And8 }, Poker.BestHands(new[] { doublePair2And8, doublePair4And5 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Double_pair_vs_three() { const string doublePair2And8 = "2S 8H 2S 8D JH"; const string threeOf4 = "4S 5H 4S 8D 4H"; - Assert.That(Poker.BestHands(new[] { doublePair2And8, threeOf4 }), Is.EqualTo(new[] { threeOf4 })); + Assert.Equal(new[] { threeOf4 }, Poker.BestHands(new[] { doublePair2And8, threeOf4 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_threes() { const string threeOf2 = "2S 2H 2S 8D JH"; const string threeOf1 = "4S AH AS 8D AH"; - Assert.That(Poker.BestHands(new[] { threeOf2, threeOf1 }), Is.EqualTo(new[] { threeOf1 })); + Assert.Equal(new[] { threeOf1 }, Poker.BestHands(new[] { threeOf2, threeOf1 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Three_vs_straight() { const string threeOf4 = "4S 5H 4S 8D 4H"; const string straight = "3S 4H 2S 6D 5H"; - Assert.That(Poker.BestHands(new[] { threeOf4, straight }), Is.EqualTo(new[] { straight })); + Assert.Equal(new[] { straight }, Poker.BestHands(new[] { threeOf4, straight })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_straights() { const string straightTo8 = "4S 6H 7S 8D 5H"; const string straightTo9 = "5S 7H 8S 9D 6H"; - Assert.That(Poker.BestHands(new[] { straightTo8, straightTo9 }), Is.EqualTo(new[] { straightTo9 })); + Assert.Equal(new[] { straightTo9 }, Poker.BestHands(new[] { straightTo8, straightTo9 })); const string straightTo1 = "AS QH KS TD JH"; const string straightTo5 = "4S AH 3S 2D 5H"; - Assert.That(Poker.BestHands(new[] { straightTo1, straightTo5 }), Is.EqualTo(new[] { straightTo1 })); + Assert.Equal(new[] { straightTo1 }, Poker.BestHands(new[] { straightTo1, straightTo5 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Straight_vs_flush() { const string straightTo8 = "4S 6H 7S 8D 5H"; const string flushTo7 = "2S 4S 5S 6S 7S"; - Assert.That(Poker.BestHands(new[] { straightTo8, flushTo7 }), Is.EqualTo(new[] { flushTo7 })); + Assert.Equal(new[] { flushTo7 }, Poker.BestHands(new[] { straightTo8, flushTo7 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_flushes() { const string flushTo8 = "3H 6H 7H 8H 5H"; const string flushTo7 = "2S 4S 5S 6S 7S"; - Assert.That(Poker.BestHands(new[] { flushTo8, flushTo7 }), Is.EqualTo(new[] { flushTo8 })); + Assert.Equal(new[] { flushTo8 }, Poker.BestHands(new[] { flushTo8, flushTo7 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Flush_vs_full() { const string flushTo8 = "3H 6H 7H 8H 5H"; const string full = "4S 5H 4S 5D 4H"; - Assert.That(Poker.BestHands(new[] { full, flushTo8 }), Is.EqualTo(new[] { full })); + Assert.Equal(new[] { full }, Poker.BestHands(new[] { full, flushTo8 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_fulls() { const string fullOf4By9 = "4H 4S 4D 9S 9D"; const string fullOf5By8 = "5H 5S 5D 8S 8D"; - Assert.That(Poker.BestHands(new[] { fullOf4By9, fullOf5By8 }), Is.EqualTo(new[] { fullOf5By8 })); + Assert.Equal(new[] { fullOf5By8 }, Poker.BestHands(new[] { fullOf4By9, fullOf5By8 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Full_vs_square() { const string full = "4S 5H 4S 5D 4H"; const string squareOf3 = "3S 3H 2S 3D 3H"; - Assert.That(Poker.BestHands(new[] { full, squareOf3 }), Is.EqualTo(new[] { squareOf3 })); + Assert.Equal(new[] { squareOf3 }, Poker.BestHands(new[] { full, squareOf3 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_squares() { const string squareOf2 = "2S 2H 2S 8D 2H"; const string squareOf5 = "4S 5H 5S 5D 5H"; - Assert.That(Poker.BestHands(new[] { squareOf2, squareOf5 }), Is.EqualTo(new[] { squareOf5 })); + Assert.Equal(new[] { squareOf5 }, Poker.BestHands(new[] { squareOf2, squareOf5 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Square_vs_straight_flush() { const string squareOf5 = "4S 5H 5S 5D 5H"; const string straightFlushTo9 = "5S 7S 8S 9S 6S"; - Assert.That(Poker.BestHands(new[] { squareOf5, straightFlushTo9 }), Is.EqualTo(new[] { straightFlushTo9 })); + Assert.Equal(new[] { straightFlushTo9 }, Poker.BestHands(new[] { squareOf5, straightFlushTo9 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_straight_flushes() { const string straightFlushTo8 = "4H 6H 7H 8H 5H"; const string straightFlushTo9 = "5S 7S 8S 9S 6S"; - Assert.That(Poker.BestHands(new[] { straightFlushTo8, straightFlushTo9 }), - Is.EqualTo(new[] { straightFlushTo9 })); + Assert.Equal(new[] { straightFlushTo9 }, Poker.BestHands(new[] { straightFlushTo8, straightFlushTo9 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Three_hand_with_tie() { const string spadeStraightTo9 = "9S 8S 7S 6S 5S"; const string diamondStraightTo9 = "9D 8D 7D 6D 5D"; const string threeOf4 = "4D 4S 4H QS KS"; - Assert.That(Poker.BestHands(new[] { spadeStraightTo9, diamondStraightTo9, threeOf4 }), - Is.EqualTo(new[] { spadeStraightTo9, diamondStraightTo9 })); + Assert.Equal(new[] { spadeStraightTo9, diamondStraightTo9 }, Poker.BestHands(new[] { spadeStraightTo9, diamondStraightTo9, threeOf4 })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Straight_to_5_against_a_pair_of_jacks() { const string straightTo5 = "2S 4D 5C 3S AS"; const string twoJacks = "JD 8D 7D JC 5D"; - Assert.That(Poker.BestHands(new[] { straightTo5, twoJacks }), - Is.EqualTo(new[] { straightTo5 })); + Assert.Equal(new[] { straightTo5 }, Poker.BestHands(new[] { straightTo5, twoJacks })); } } diff --git a/exercises/pov/PovTest.cs b/exercises/pov/PovTest.cs index e0f9bf9b28..377cd8b807 100644 --- a/exercises/pov/PovTest.cs +++ b/exercises/pov/PovTest.cs @@ -1,4 +1,4 @@ -using NUnit.Framework; +using Xunit; using System.Linq; public class PovTest @@ -87,74 +87,68 @@ public class PovTest }) }); - [Test] + [Fact] public void Reparent_singleton() { - Assert.That(Pov.FromPOV(x, singleton), Is.EqualTo(singleton_)); + Assert.Equal(singleton_, Pov.FromPOV(x, singleton)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Reparent_flat() { - Assert.That(Pov.FromPOV(x, flat), Is.EqualTo(flat_)); + Assert.Equal(flat_, Pov.FromPOV(x, flat)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Reparent_nested() { - Assert.That(Pov.FromPOV(x, nested), Is.EqualTo(nested_)); + Assert.Equal(nested_, Pov.FromPOV(x, nested)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Reparent_kids() { - Assert.That(Pov.FromPOV(x, kids), Is.EqualTo(kids_)); + Assert.Equal(kids_, Pov.FromPOV(x, kids)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Reparent_cousins() { - Assert.That(Pov.FromPOV(x, cousins), Is.EqualTo(cousins_)); + Assert.Equal(cousins_, Pov.FromPOV(x, cousins)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Reparent_from_POV_of_non_existent_node() { - Assert.That(Pov.FromPOV(x, leaf("foo")), Is.Null); + Assert.Null(Pov.FromPOV(x, leaf("foo"))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_not_be_able_to_find_a_missing_node() { var nodes = new[] { singleton, flat, kids, nested, cousins }.Select(graph => Pov.FromPOV("NOT THERE", graph)); - Assert.That(nodes, Is.All.Null); + Assert.All(nodes, node => + { + Assert.Null(node); + }); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cannot_trace_between_unconnected_nodes() { - Assert.That(Pov.TracePathBetween(x, "NOT THERE", cousins), Is.Null); + Assert.Null(Pov.TracePathBetween(x, "NOT THERE", cousins)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_trace_a_path_from_x_to_cousin() { - Assert.That(Pov.TracePathBetween(x, "cousin-1", cousins), Is.EquivalentTo(new[] { "x", "parent", "grandparent", "uncle", "cousin-1" })); + Assert.Equal(new[] { "x", "parent", "grandparent", "uncle", "cousin-1" }, Pov.TracePathBetween(x, "cousin-1", cousins)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_trace_from_a_leaf_to_a_leaf() { - Assert.That(Pov.TracePathBetween("kid-a", "cousin-0", cousins), Is.EquivalentTo(new[] { "kid-a", "x", "parent", "grandparent", "uncle", "cousin-0" })); + Assert.Equal(new[] { "kid-a", "x", "parent", "grandparent", "uncle", "cousin-0" }, Pov.TracePathBetween("kid-a", "cousin-0", cousins)); } } \ No newline at end of file diff --git a/exercises/prime-factors/PrimeFactorsTest.cs b/exercises/prime-factors/PrimeFactorsTest.cs index 720f859d84..3df695b976 100644 --- a/exercises/prime-factors/PrimeFactorsTest.cs +++ b/exercises/prime-factors/PrimeFactorsTest.cs @@ -1,81 +1,70 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class PrimeFactorsTest { - [Test] + [Fact] public void Test_1() { - Assert.That(PrimeFactors.For(1), Is.EqualTo(new int[0])); + Assert.Equal(new int[0], PrimeFactors.For(1)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_2() { - Assert.That(PrimeFactors.For(2), Is.EqualTo(new[] { 2 })); + Assert.Equal(new[] { 2 }, PrimeFactors.For(2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_3() { - Assert.That(PrimeFactors.For(3), Is.EqualTo(new[] { 3 })); + Assert.Equal(new[] { 3 }, PrimeFactors.For(3)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_4() { - Assert.That(PrimeFactors.For(4), Is.EqualTo(new[] { 2, 2 })); + Assert.Equal(new[] { 2, 2 }, PrimeFactors.For(4)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_6() { - Assert.That(PrimeFactors.For(6), Is.EqualTo(new[] { 2, 3 })); + Assert.Equal(new[] { 2, 3 }, PrimeFactors.For(6)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_8() { - Assert.That(PrimeFactors.For(8), Is.EqualTo(new[] { 2, 2, 2 })); + Assert.Equal(new[] { 2, 2, 2 }, PrimeFactors.For(8)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_9() { - Assert.That(PrimeFactors.For(9), Is.EqualTo(new[] { 3, 3 })); + Assert.Equal(new[] { 3, 3 }, PrimeFactors.For(9)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_27() { - Assert.That(PrimeFactors.For(27), Is.EqualTo(new[] { 3, 3, 3 })); + Assert.Equal(new[] { 3, 3, 3 }, PrimeFactors.For(27)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_625() { - Assert.That(PrimeFactors.For(625), Is.EqualTo(new[] { 5, 5, 5, 5 })); + Assert.Equal(new[] { 5, 5, 5, 5 }, PrimeFactors.For(625)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_901255() { - Assert.That(PrimeFactors.For(901255), Is.EqualTo(new[] { 5, 17, 23, 461 })); + Assert.Equal(new[] { 5, 17, 23, 461 }, PrimeFactors.For(901255)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_93819012551() { - Assert.That(PrimeFactors.For(93819012551), Is.EqualTo(new[] { 11, 9539, 894119 })); + Assert.Equal(new[] { 11, 9539, 894119 }, PrimeFactors.For(93819012551)); } } \ No newline at end of file diff --git a/exercises/protein-translation/ProteinTranslationTest.cs b/exercises/protein-translation/ProteinTranslationTest.cs index 46976f8167..0da3246d30 100644 --- a/exercises/protein-translation/ProteinTranslationTest.cs +++ b/exercises/protein-translation/ProteinTranslationTest.cs @@ -1,83 +1,85 @@ using System; -using NUnit.Framework; +using Xunit; -[TestFixture] public class ProteinTranslationTest { - [TestCase("AUG")] + [Theory] + [InlineData("AUG")] public void Identifies_methionine_codons(string codon) { - Assert.That(ProteinTranslation.Translate(codon), Is.EquivalentTo(new[] { "Methionine" })); + Assert.Equal(new[] { "Methionine" }, ProteinTranslation.Translate(codon)); } - [TestCase("UUU", Ignore = "Remove to run test case")] - [TestCase("UUC", Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData("UUU")] + [InlineData("UUC")] public void Identifies_phenylalanine_codons(string codon) { - Assert.That(ProteinTranslation.Translate(codon), Is.EquivalentTo(new[] { "Phenylalanine" })); + Assert.Equal(new[] { "Phenylalanine" }, ProteinTranslation.Translate(codon)); } - [TestCase("UUA", Ignore = "Remove to run test case")] - [TestCase("UUG", Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData("UUA")] + [InlineData("UUG")] public void Identifies_leucine_codons(string codon) { - Assert.That(ProteinTranslation.Translate(codon), Is.EquivalentTo(new[] { "Leucine" })); + Assert.Equal(new[] { "Leucine" }, ProteinTranslation.Translate(codon)); } - [TestCase("UCU", Ignore = "Remove to run test case")] - [TestCase("UCC", Ignore = "Remove to run test case")] - [TestCase("UCA", Ignore = "Remove to run test case")] - [TestCase("UCG", Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData("UCU")] + [InlineData("UCC")] + [InlineData("UCA")] + [InlineData("UCG")] public void Identifies_serine_codons(string codon) { - Assert.That(ProteinTranslation.Translate(codon), Is.EquivalentTo(new[] { "Serine" })); + Assert.Equal(new[] { "Serine" }, ProteinTranslation.Translate(codon)); } - [TestCase("UAU", Ignore = "Remove to run test case")] - [TestCase("UAC", Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData("UAU")] + [InlineData("UAC")] public void Identifies_tyrosine_codons(string codon) { - Assert.That(ProteinTranslation.Translate(codon), Is.EquivalentTo(new[] { "Tyrosine" })); + Assert.Equal(new[] { "Tyrosine" }, ProteinTranslation.Translate(codon)); } - [TestCase("UGU", Ignore = "Remove to run test case")] - [TestCase("UGC", Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData("UGU")] + [InlineData("UGC")] public void Identifies_cysteine_codons(string codon) { - Assert.That(ProteinTranslation.Translate(codon), Is.EquivalentTo(new[] { "Cysteine" })); + Assert.Equal(new[] { "Cysteine" }, ProteinTranslation.Translate(codon)); } - [TestCase("UGG", Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData("UGG")] public void Identifies_tryptophan_codons(string codon) { - Assert.That(ProteinTranslation.Translate(codon), Is.EquivalentTo(new[] { "Tryptophan" })); + Assert.Equal(new[] { "Tryptophan" }, ProteinTranslation.Translate(codon)); } - [Test] - [Ignore("Remove to run test")] + [Fact(Skip = "Remove to run test")] public void Translates_rna_strand_into_correct_protein() { - Assert.That(ProteinTranslation.Translate("AUGUUUUGG"), Is.EquivalentTo(new[] { "Methionine", "Phenylalanine", "Tryptophan" })); + Assert.Equal(new[] { "Methionine", "Phenylalanine", "Tryptophan" }, ProteinTranslation.Translate("AUGUUUUGG")); } - [Test] - [Ignore("Remove to run test")] + [Fact(Skip = "Remove to run test")] public void Stops_translation_if_stop_codon_present() { - Assert.That(ProteinTranslation.Translate("AUGUUUUAA"), Is.EquivalentTo(new[] { "Methionine", "Phenylalanine" })); + Assert.Equal(new[] { "Methionine", "Phenylalanine" }, ProteinTranslation.Translate("AUGUUUUAA")); } - [Test] - [Ignore("Remove to run test")] + [Fact(Skip = "Remove to run test")] public void Stops_translation_of_longer_strand() { - Assert.That(ProteinTranslation.Translate("UGGUGUUAUUAAUGGUUU"), Is.EquivalentTo(new[] { "Tryptophan", "Cysteine", "Tyrosine" })); + Assert.Equal(new[] { "Tryptophan", "Cysteine", "Tyrosine" }, ProteinTranslation.Translate("UGGUGUUAUUAAUGGUUU")); } - [Test] - [Ignore("Remove to run test")] + [Fact(Skip = "Remove to run test")] public void Throws_for_invalid_codons() { - Assert.That(() => ProteinTranslation.Translate("CARROT"), Throws.Exception); + Assert.Throws(() => ProteinTranslation.Translate("CARROT")); } } diff --git a/exercises/proverb/ProverbTest.cs b/exercises/proverb/ProverbTest.cs index 0a06ea901e..327dac4004 100644 --- a/exercises/proverb/ProverbTest.cs +++ b/exercises/proverb/ProverbTest.cs @@ -1,29 +1,26 @@ -using NUnit.Framework; +using Xunit; public class ProverbTest { - [Test] + [Fact] public void Line_one() { - Assert.That(Proverb.Line(1), Is.EqualTo("For want of a nail the shoe was lost.")); + Assert.Equal("For want of a nail the shoe was lost.", Proverb.Line(1)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Line_four() { - Assert.That(Proverb.Line(4), Is.EqualTo("For want of a rider the message was lost.")); + Assert.Equal("For want of a rider the message was lost.", Proverb.Line(4)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Line_seven() { - Assert.That(Proverb.Line(7), Is.EqualTo("And all for the want of a horseshoe nail.")); + Assert.Equal("And all for the want of a horseshoe nail.", Proverb.Line(7)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void All_lines() { const string expected = "For want of a nail the shoe was lost.\n" + @@ -34,6 +31,6 @@ public void All_lines() "For want of a battle the kingdom was lost.\n" + "And all for the want of a horseshoe nail."; - Assert.That(Proverb.AllLines(), Is.EqualTo(expected)); + Assert.Equal(expected, Proverb.AllLines()); } } diff --git a/exercises/pythagorean-triplet/PythagoreanTripletTest.cs b/exercises/pythagorean-triplet/PythagoreanTripletTest.cs index 8b3b363655..b82b57bd37 100644 --- a/exercises/pythagorean-triplet/PythagoreanTripletTest.cs +++ b/exercises/pythagorean-triplet/PythagoreanTripletTest.cs @@ -1,54 +1,49 @@ using System.Linq; -using NUnit.Framework; +using Xunit; -[TestFixture] public class PythagoreanTripletTest { - [Test] + [Fact] public void Calculates_the_sum() { - Assert.That(new Triplet(3, 4, 5).Sum(), Is.EqualTo(12)); + Assert.Equal(12, new Triplet(3, 4, 5).Sum()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Calculates_the_product() { - Assert.That(new Triplet(3, 4, 5).Product(), Is.EqualTo(60)); + Assert.Equal(60, new Triplet(3, 4, 5).Product()); } - [Ignore("Remove to run test")] - [TestCase(3, 4, 5, ExpectedResult = true)] - [TestCase(5, 6, 7, ExpectedResult = false)] - public bool Can_recognize_a_valid_pythagorean(int a, int b, int c) + [Theory(Skip = "Remove to run test")] + [InlineData(3, 4, 5, true)] + [InlineData(5, 6, 7, false)] + public void Can_recognize_a_valid_pythagorean(int a, int b, int c, bool expected) { - return new Triplet(a, b, c).IsPythagorean(); + Assert.Equal(expected, new Triplet(a, b, c).IsPythagorean()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_make_triplets_up_to_10() { var triplets = Triplet.Where(maxFactor: 10); var products = triplets.Select(x => x.Product()).OrderBy(x => x); - Assert.That(products, Is.EqualTo(new[] { 60, 480 })); + Assert.Equal(new[] { 60, 480 }, products); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_make_triplets_from_11_to_20() { var triplets = Triplet.Where(minFactor: 11, maxFactor: 20); var products = triplets.Select(x => x.Product()); - Assert.That(products, Is.EqualTo(new[] { 3840 })); + Assert.Equal(new[] { 3840 }, products); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_make_triplets_filtered_on_sum() { var triplets = Triplet.Where(sum: 180, maxFactor: 100); var products = triplets.Select(x => x.Product()).OrderBy(x => x); - Assert.That(products, Is.EqualTo(new[] { 118080, 168480, 202500 })); + Assert.Equal(new[] { 118080, 168480, 202500 }, products); } } \ No newline at end of file diff --git a/exercises/queen-attack/QueenAttackTest.cs b/exercises/queen-attack/QueenAttackTest.cs index c59655f2a9..88e5316dc5 100644 --- a/exercises/queen-attack/QueenAttackTest.cs +++ b/exercises/queen-attack/QueenAttackTest.cs @@ -1,9 +1,9 @@ using System; -using NUnit.Framework; +using Xunit; public class QueenAttackTest { - [Test] + [Fact] public void Cannot_occupy_same_space() { var white = new Queen(2, 4); @@ -11,56 +11,49 @@ public void Cannot_occupy_same_space() Assert.Throws(() => new Queens(white, black)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cannot_attack() { var queens = new Queens(new Queen(2, 3), new Queen(4, 7)); Assert.False(queens.CanAttack()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_attack_on_same_row() { var queens = new Queens(new Queen(2, 4), new Queen(2, 7)); Assert.True(queens.CanAttack()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_attack_on_same_column() { var queens = new Queens(new Queen(5, 4), new Queen(2, 4)); Assert.True(queens.CanAttack()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_attack_on_diagonal() { var queens = new Queens(new Queen(1, 1), new Queen(6, 6)); Assert.True(queens.CanAttack()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_attack_on_other_diagonal() { var queens = new Queens(new Queen(0, 6), new Queen(1, 7)); Assert.True(queens.CanAttack()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_attack_on_yet_another_diagonal() { var queens = new Queens(new Queen(4, 1), new Queen(6, 3)); Assert.True(queens.CanAttack()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_attack_on_a_diagonal_slanted_the_other_way() { var queens = new Queens(new Queen(6, 1), new Queen(1, 6)); diff --git a/exercises/rail-fence-cipher/RailFenceCipherTest.cs b/exercises/rail-fence-cipher/RailFenceCipherTest.cs index f9de838c4d..f37d4852b3 100644 --- a/exercises/rail-fence-cipher/RailFenceCipherTest.cs +++ b/exercises/rail-fence-cipher/RailFenceCipherTest.cs @@ -1,63 +1,58 @@ -using NUnit.Framework; +using Xunit; public class RailFenceCipherTest { - [Test] + [Fact] public void Encode_with_two_rails() { var railFenceCipher = new RailFenceCipher(2); var actual = railFenceCipher.Encode("XOXOXOXOXOXOXOXOXO"); var expected = "XXXXXXXXXOOOOOOOOO"; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Encode_with_three_rails() { var railFenceCipher = new RailFenceCipher(3); var actual = railFenceCipher.Encode("WEAREDISCOVEREDFLEEATONCE"); var expected = "WECRLTEERDSOEEFEAOCAIVDEN"; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Encode_with_ending_in_the_middle() { var railFenceCipher = new RailFenceCipher(4); var actual = railFenceCipher.Encode("EXERCISES"); var expected = "ESXIEECSR"; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Decode_with_three_rails() { var railFenceCipher = new RailFenceCipher(3); var actual = railFenceCipher.Decode("TEITELHDVLSNHDTISEIIEA"); var expected = "THEDEVILISINTHEDETAILS"; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Decode_with_five_rails() { var railFenceCipher = new RailFenceCipher(5); var actual = railFenceCipher.Decode("EIEXMSMESAORIWSCE"); var expected = "EXERCISMISAWESOME"; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Decode_with_six_rails() { var railFenceCipher = new RailFenceCipher(6); var actual = railFenceCipher.Decode("133714114238148966225439541018335470986172518171757571896261"); var expected = "112358132134558914423337761098715972584418167651094617711286"; - Assert.That(actual, Is.EqualTo(expected)); + Assert.Equal(expected, actual); } } \ No newline at end of file diff --git a/exercises/raindrops/RaindropsTest.cs b/exercises/raindrops/RaindropsTest.cs index 0a3f14c334..af3491015c 100644 --- a/exercises/raindrops/RaindropsTest.cs +++ b/exercises/raindrops/RaindropsTest.cs @@ -1,50 +1,50 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class RaindropsTest { - [TestCase(1, ExpectedResult = "1")] - [TestCase(52, ExpectedResult = "52")] - [TestCase(12121, ExpectedResult = "12121")] - public string Non_primes_pass_through(int number) + [Theory] + [InlineData(1, "1")] + [InlineData(52, "52")] + [InlineData(12121, "12121")] + public void Non_primes_pass_through(int number, string expected) { - return Raindrops.Convert(number); + Assert.Equal(expected, Raindrops.Convert(number)); } - [Ignore("Remove to run test")] - [TestCase(3)] - [TestCase(6)] - [TestCase(9)] + [Theory(Skip = "Remove to run test")] + [InlineData(3)] + [InlineData(6)] + [InlineData(9)] public void Numbers_containing_3_as_a_prime_factor_give_pling(int number) { - Assert.That(Raindrops.Convert(number), Is.EqualTo("Pling")); + Assert.Equal("Pling", Raindrops.Convert(number)); } - [Ignore("Remove to run test")] - [TestCase(5)] - [TestCase(10)] - [TestCase(25)] + [Theory(Skip = "Remove to run test")] + [InlineData(5)] + [InlineData(10)] + [InlineData(25)] public void Numbers_containing_5_as_a_prime_factor_give_plang(int number) { - Assert.That(Raindrops.Convert(number), Is.EqualTo("Plang")); + Assert.Equal("Plang", Raindrops.Convert(number)); } - [Ignore("Remove to run test")] - [TestCase(7)] - [TestCase(14)] - [TestCase(49)] + [Theory(Skip = "Remove to run test")] + [InlineData(7)] + [InlineData(14)] + [InlineData(49)] public void Numbers_containing_7_as_a_prime_factor_give_plong(int number) { - Assert.That(Raindrops.Convert(number), Is.EqualTo("Plong")); + Assert.Equal("Plong", Raindrops.Convert(number)); } - [Ignore("Remove to run test")] - [TestCase(15, ExpectedResult = "PlingPlang")] - [TestCase(21, ExpectedResult = "PlingPlong")] - [TestCase(35, ExpectedResult = "PlangPlong")] - [TestCase(105, ExpectedResult = "PlingPlangPlong")] - public string Numbers_containing_multiple_prime_factors_give_all_results_concatenated(int number) + [Theory(Skip = "Remove to run test")] + [InlineData(15, "PlingPlang")] + [InlineData(21, "PlingPlong")] + [InlineData(35, "PlangPlong")] + [InlineData(105, "PlingPlangPlong")] + public void Numbers_containing_multiple_prime_factors_give_all_results_concatenated(int number, string expected) { - return Raindrops.Convert(number); + Assert.Equal(expected, Raindrops.Convert(number)); } } \ No newline at end of file diff --git a/exercises/react/ReactTest.cs b/exercises/react/ReactTest.cs index 0501543862..b3feaedef3 100644 --- a/exercises/react/ReactTest.cs +++ b/exercises/react/ReactTest.cs @@ -1,34 +1,32 @@ -using NUnit.Framework; +using Xunit; using System.Collections.Generic; public class ReactTest { - [Test] + [Fact] public void Setting_the_value_of_an_input_cell_changes_the_observable_value() { var reactor = new Reactor(); var inputCell1 = reactor.CreateInputCell(1); - Assert.That(inputCell1.Value, Is.EqualTo(1)); + Assert.Equal(1, inputCell1.Value); inputCell1.Value = 2; - Assert.That(inputCell1.Value, Is.EqualTo(2)); + Assert.Equal(2, inputCell1.Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void The_value_of_a_compute_is_determined_by_the_value_of_the_dependencies() { var reactor = new Reactor(); var inputCell1 = reactor.CreateInputCell(1); var computeCell1 = reactor.CreateComputeCell(new[] { inputCell1 }, (values) => values[0] + 1); - Assert.That(computeCell1.Value, Is.EqualTo(2)); + Assert.Equal(2, computeCell1.Value); inputCell1.Value = 2; - Assert.That(computeCell1.Value, Is.EqualTo(3)); + Assert.Equal(3, computeCell1.Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Compute_cells_can_depend_on_other_compute_cells() { var reactor = new Reactor(); @@ -37,13 +35,12 @@ public void Compute_cells_can_depend_on_other_compute_cells() var computeCell2 = reactor.CreateComputeCell(new[] { inputCell1 }, (values) => values[0] - 1); var computeCell3 = reactor.CreateComputeCell(new[] { computeCell1, computeCell2 }, (values) => values[0] * values[1]); - Assert.That(computeCell3.Value, Is.EqualTo(0)); + Assert.Equal(0, computeCell3.Value); inputCell1.Value = 3; - Assert.That(computeCell3.Value, Is.EqualTo(8)); + Assert.Equal(8, computeCell3.Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Compute_cells_can_have_callbacks() { var reactor = new Reactor(); @@ -52,13 +49,12 @@ public void Compute_cells_can_have_callbacks() var observed = new List(); computeCell1.Changed += (sender, value) => observed.Add(value); - Assert.That(observed, Is.Empty); + Assert.Empty(observed); inputCell1.Value = 2; - Assert.That(observed, Is.EquivalentTo(new[] { 3 })); + Assert.Equal(new[] { 3 }, observed); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Callbacks_only_trigger_on_change() { var reactor = new Reactor(); @@ -68,15 +64,14 @@ public void Callbacks_only_trigger_on_change() computecell1.Changed += (sender, value) => observerCalled++; inputCell1.Value = 1; - Assert.That(observerCalled, Is.EqualTo(0)); + Assert.Equal(0, observerCalled); inputCell1.Value = 2; - Assert.That(observerCalled, Is.EqualTo(0)); + Assert.Equal(0, observerCalled); inputCell1.Value = 3; - Assert.That(observerCalled, Is.EqualTo(1)); + Assert.Equal(1, observerCalled); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Callbacks_can_be_removed() { var reactor = new Reactor(); @@ -92,17 +87,16 @@ public void Callbacks_can_be_removed() computeCell1.Changed += changedHandler2; inputCell1.Value = 2; - Assert.That(observed1, Is.EquivalentTo(new[] { 3 })); - Assert.That(observed2, Is.EquivalentTo(new[] { 3 })); + Assert.Equal(new[] { 3 }, observed1); + Assert.Equal(new[] { 3 }, observed2); computeCell1.Changed -= changedHandler1; inputCell1.Value = 3; - Assert.That(observed1, Is.EquivalentTo(new[] { 3 })); - Assert.That(observed2, Is.EquivalentTo(new[] { 3, 4 })); + Assert.Equal(new[] { 3 }, observed1); + Assert.Equal(new[] { 3, 4 }, observed2); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Callbacks_should_only_be_called_once_even_if_multiple_dependencies_have_changed() { var reactor = new Reactor(); @@ -116,6 +110,6 @@ public void Callbacks_should_only_be_called_once_even_if_multiple_dependencies_h computeCell4.Changed += (sender, value) => changed4++; inputCell1.Value = 3; - Assert.That(changed4, Is.EqualTo(1)); + Assert.Equal(1, changed4); } } diff --git a/exercises/rectangles/RectanglesTest.cs b/exercises/rectangles/RectanglesTest.cs index bace8c3b95..041165ded8 100644 --- a/exercises/rectangles/RectanglesTest.cs +++ b/exercises/rectangles/RectanglesTest.cs @@ -1,32 +1,29 @@ -using NUnit.Framework; +using Xunit; public class RectanglesTest { - [Test] + [Fact] public void No_rows() { var input = new string[0]; - Assert.That(Rectangles.Count(input), Is.EqualTo(0)); + Assert.Equal(0, Rectangles.Count(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void No_columns() { var input = new[] { "" }; - Assert.That(Rectangles.Count(input), Is.EqualTo(0)); + Assert.Equal(0, Rectangles.Count(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void No_rectangles() { var input = new[] { " " }; - Assert.That(Rectangles.Count(input), Is.EqualTo(0)); + Assert.Equal(0, Rectangles.Count(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_rectangle() { var input = new[] @@ -35,11 +32,10 @@ public void One_rectangle() "| |", "+-+" }; - Assert.That(Rectangles.Count(input), Is.EqualTo(1)); + Assert.Equal(1, Rectangles.Count(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_rectangles_without_shared_parts() { var input = new[] @@ -50,11 +46,10 @@ public void Two_rectangles_without_shared_parts() "| | ", "+-+ " }; - Assert.That(Rectangles.Count(input), Is.EqualTo(2)); + Assert.Equal(2, Rectangles.Count(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Five_rectangles_with_shared_parts() { var input = new[] @@ -65,11 +60,10 @@ public void Five_rectangles_with_shared_parts() "| | |", "+-+-+" }; - Assert.That(Rectangles.Count(input), Is.EqualTo(5)); + Assert.Equal(5, Rectangles.Count(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Only_complete_rectangles_are_counted() { var input = new[] @@ -80,11 +74,10 @@ public void Only_complete_rectangles_are_counted() "| | -", "+-+-+" }; - Assert.That(Rectangles.Count(input), Is.EqualTo(1)); + Assert.Equal(1, Rectangles.Count(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rectangles_can_be_of_different_sizes() { var input = new[] @@ -95,11 +88,10 @@ public void Rectangles_can_be_of_different_sizes() "| | |", "+---+-------+" }; - Assert.That(Rectangles.Count(input), Is.EqualTo(3)); + Assert.Equal(3, Rectangles.Count(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Corner_is_required_for_a_rectangle_to_be_complete() { var input = new[] @@ -110,11 +102,10 @@ public void Corner_is_required_for_a_rectangle_to_be_complete() "| | |", "+---+-------+" }; - Assert.That(Rectangles.Count(input), Is.EqualTo(2)); + Assert.Equal(2, Rectangles.Count(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Large_input_with_many_rectangles() { var input = new[] @@ -128,6 +119,6 @@ public void Large_input_with_many_rectangles() "+------+ | |", " +-+" }; - Assert.That(Rectangles.Count(input), Is.EqualTo(60)); + Assert.Equal(60, Rectangles.Count(input)); } } \ No newline at end of file diff --git a/exercises/rna-transcription/ComplementTest.cs b/exercises/rna-transcription/ComplementTest.cs index 6820025a80..dc25888d63 100644 --- a/exercises/rna-transcription/ComplementTest.cs +++ b/exercises/rna-transcription/ComplementTest.cs @@ -1,39 +1,34 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class ComplementTest { - [Test] + [Fact] public void Rna_complement_of_cytosine_is_guanine() { - Assert.That(Complement.OfDna("C"), Is.EqualTo("G")); + Assert.Equal("G", Complement.OfDna("C")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rna_complement_of_guanine_is_cytosine() { - Assert.That(Complement.OfDna("G"), Is.EqualTo("C")); + Assert.Equal("C", Complement.OfDna("G")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rna_complement_of_thymine_is_adenine() { - Assert.That(Complement.OfDna("T"), Is.EqualTo("A")); + Assert.Equal("A", Complement.OfDna("T")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rna_complement_of_adenine_is_uracil() { - Assert.That(Complement.OfDna("A"), Is.EqualTo("U")); + Assert.Equal("U", Complement.OfDna("A")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Rna_complement() { - Assert.That(Complement.OfDna("ACGTGGTCTTAA"), Is.EqualTo("UGCACCAGAAUU")); + Assert.Equal("UGCACCAGAAUU", Complement.OfDna("ACGTGGTCTTAA")); } } \ No newline at end of file diff --git a/exercises/robot-name/RobotNameTest.cs b/exercises/robot-name/RobotNameTest.cs index 9477a6583d..b6f5e5ff6d 100644 --- a/exercises/robot-name/RobotNameTest.cs +++ b/exercises/robot-name/RobotNameTest.cs @@ -1,43 +1,33 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class RobotNameTest { - private Robot robot; + private readonly Robot robot = new Robot(); - [SetUp] - public void Setup() - { - robot = new Robot(); - } - - [Test] + [Fact] public void Robot_has_a_name() { - StringAssert.IsMatch(@"[A-Z]{2}\d{3}", robot.Name); + Assert.Matches(@"[A-Z]{2}\d{3}", robot.Name); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Name_is_the_same_each_time() { - Assert.That(robot.Name, Is.EqualTo(robot.Name)); + Assert.Equal(robot.Name, robot.Name); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Different_robots_have_different_names() { var robot2 = new Robot(); - Assert.That(robot.Name, Is.Not.EqualTo(robot2.Name)); + Assert.NotEqual(robot2.Name, robot.Name); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_reset_the_name() { var originalName = robot.Name; robot.Reset(); - Assert.That(robot.Name, Is.Not.EqualTo(originalName)); + Assert.NotEqual(originalName, robot.Name); } } \ No newline at end of file diff --git a/exercises/robot-simulator/RobotSimulatorTest.cs b/exercises/robot-simulator/RobotSimulatorTest.cs index ed4d9b807a..db5be514b7 100644 --- a/exercises/robot-simulator/RobotSimulatorTest.cs +++ b/exercises/robot-simulator/RobotSimulatorTest.cs @@ -1,64 +1,59 @@ -using NUnit.Framework; +using Xunit; public class RobotSimulatorTest { - [Test] + [Fact] public void Turn_right_edge_case() { var robot = new RobotSimulator(Bearing.West, new Coordinate(0, 0)); robot.TurnRight(); - Assert.That(robot.Bearing, Is.EqualTo(Bearing.North)); + Assert.Equal(Bearing.North, robot.Bearing); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Turn_left_edge_case() { var robot = new RobotSimulator(Bearing.North, new Coordinate(0, 0)); robot.TurnLeft(); - Assert.That(robot.Bearing, Is.EqualTo(Bearing.West)); + Assert.Equal(Bearing.West, robot.Bearing); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Robbie() { var robbie = new RobotSimulator(Bearing.East, new Coordinate(-2, 1)); - Assert.That(robbie.Bearing, Is.EqualTo(Bearing.East)); - Assert.That(robbie.Coordinate, Is.EqualTo(new Coordinate(-2, 1))); + Assert.Equal(Bearing.East, robbie.Bearing); + Assert.Equal(new Coordinate(-2, 1), robbie.Coordinate); robbie.Simulate("RLAALAL"); - Assert.That(robbie.Bearing, Is.EqualTo(Bearing.West)); - Assert.That(robbie.Coordinate, Is.EqualTo(new Coordinate(0, 2))); + Assert.Equal(Bearing.West, robbie.Bearing); + Assert.Equal(new Coordinate(0, 2), robbie.Coordinate); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Clutz() { var clutz = new RobotSimulator(Bearing.North, new Coordinate(0, 0)); clutz.Simulate("LAAARALA"); - Assert.That(clutz.Bearing, Is.EqualTo(Bearing.West)); - Assert.That(clutz.Coordinate, Is.EqualTo(new Coordinate(-4, 1))); + Assert.Equal(Bearing.West, clutz.Bearing); + Assert.Equal(new Coordinate(-4, 1), clutz.Coordinate); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sphero() { var sphero = new RobotSimulator(Bearing.East, new Coordinate(2, -7)); sphero.Simulate("RRAAAAALA"); - Assert.That(sphero.Bearing, Is.EqualTo(Bearing.South)); - Assert.That(sphero.Coordinate, Is.EqualTo(new Coordinate(-3, -8))); + Assert.Equal(Bearing.South, sphero.Bearing); + Assert.Equal(new Coordinate(-3, -8), sphero.Coordinate); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Roomba() { var roomba = new RobotSimulator(Bearing.South, new Coordinate(8, 4)); roomba.Simulate("LAAARRRALLLL"); - Assert.That(roomba.Bearing, Is.EqualTo(Bearing.North)); - Assert.That(roomba.Coordinate, Is.EqualTo(new Coordinate(11, 5))); + Assert.Equal(Bearing.North, roomba.Bearing); + Assert.Equal(new Coordinate(11, 5), roomba.Coordinate); } } \ No newline at end of file diff --git a/exercises/roman-numerals/RomanNumeralsTest.cs b/exercises/roman-numerals/RomanNumeralsTest.cs index 69c24238d9..c9cfafde60 100644 --- a/exercises/roman-numerals/RomanNumeralsTest.cs +++ b/exercises/roman-numerals/RomanNumeralsTest.cs @@ -1,29 +1,29 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class RomanNumeralsTest { - [TestCase(0, ExpectedResult = "")] - [TestCase(1, ExpectedResult = "I", Ignore = "Remove to run test case")] - [TestCase(2, ExpectedResult = "II", Ignore = "Remove to run test case")] - [TestCase(3, ExpectedResult = "III", Ignore = "Remove to run test case")] - [TestCase(4, ExpectedResult = "IV", Ignore = "Remove to run test case")] - [TestCase(5, ExpectedResult = "V", Ignore = "Remove to run test case")] - [TestCase(6, ExpectedResult = "VI", Ignore = "Remove to run test case")] - [TestCase(9, ExpectedResult = "IX", Ignore = "Remove to run test case")] - [TestCase(27, ExpectedResult = "XXVII", Ignore = "Remove to run test case")] - [TestCase(48, ExpectedResult = "XLVIII", Ignore = "Remove to run test case")] - [TestCase(59, ExpectedResult = "LIX", Ignore = "Remove to run test case")] - [TestCase(93, ExpectedResult = "XCIII", Ignore = "Remove to run test case")] - [TestCase(141, ExpectedResult = "CXLI", Ignore = "Remove to run test case")] - [TestCase(163, ExpectedResult = "CLXIII", Ignore = "Remove to run test case")] - [TestCase(402, ExpectedResult = "CDII", Ignore = "Remove to run test case")] - [TestCase(575, ExpectedResult = "DLXXV", Ignore = "Remove to run test case")] - [TestCase(911, ExpectedResult = "CMXI", Ignore = "Remove to run test case")] - [TestCase(1024, ExpectedResult = "MXXIV", Ignore = "Remove to run test case")] - [TestCase(3000, ExpectedResult = "MMM", Ignore = "Remove to run test case")] - public string Convert_roman_to_arabic_numerals(int arabicNumeral) + [Theory] + [InlineData(0, "")] + [InlineData(1, "I")] + [InlineData(2, "II")] + [InlineData(3, "III")] + [InlineData(4, "IV")] + [InlineData(5, "V")] + [InlineData(6, "VI")] + [InlineData(9, "IX")] + [InlineData(27, "XXVII")] + [InlineData(48, "XLVIII")] + [InlineData(59, "LIX")] + [InlineData(93, "XCIII")] + [InlineData(141, "CXLI")] + [InlineData(163, "CLXIII")] + [InlineData(402, "CDII")] + [InlineData(575, "DLXXV")] + [InlineData(911, "CMXI")] + [InlineData(1024, "MXXIV")] + [InlineData(3000, "MMM")] + public void Convert_roman_to_arabic_numerals(int arabicNumeral, string expected) { - return arabicNumeral.ToRoman(); + Assert.Equal(expected, arabicNumeral.ToRoman()); } } \ No newline at end of file diff --git a/exercises/run-length-encoding/RunLengthEncodingTest.cs b/exercises/run-length-encoding/RunLengthEncodingTest.cs index ab48b145cd..f1808d2274 100644 --- a/exercises/run-length-encoding/RunLengthEncodingTest.cs +++ b/exercises/run-length-encoding/RunLengthEncodingTest.cs @@ -1,66 +1,60 @@ -using NUnit.Framework; +using Xunit; public class RunLengthEncodingTest { - [Test] + [Fact] public void Encode_simple() { const string input = "AABBBCCCC"; const string expected = "2A3B4C"; - Assert.That(RunLengthEncoding.Encode(input), Is.EqualTo(expected)); + Assert.Equal(expected, RunLengthEncoding.Encode(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Decode_simple() { const string input = "2A3B4C"; const string expected = "AABBBCCCC"; - Assert.That(RunLengthEncoding.Decode(input), Is.EqualTo(expected)); + Assert.Equal(expected, RunLengthEncoding.Decode(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Encode_with_single_values() { const string input = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB"; const string expected = "12WB12W3B24WB"; - Assert.That(RunLengthEncoding.Encode(input), Is.EqualTo(expected)); + Assert.Equal(expected, RunLengthEncoding.Encode(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Decode_with_single_values() { const string input = "12WB12W3B24WB"; const string expected = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB"; - Assert.That(RunLengthEncoding.Decode(input), Is.EqualTo(expected)); + Assert.Equal(expected, RunLengthEncoding.Decode(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Encode_and_then_decode() { const string input = "zzz ZZ zZ"; const string expected = "zzz ZZ zZ"; - Assert.That(RunLengthEncoding.Decode(RunLengthEncoding.Encode(input)), Is.EqualTo(expected)); + Assert.Equal(expected, RunLengthEncoding.Decode(RunLengthEncoding.Encode(input))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Encode_unicode() { const string input = "⏰⚽⚽⚽⭐⭐⏰"; const string expected = "⏰3⚽2⭐⏰"; - Assert.That(RunLengthEncoding.Encode(input), Is.EqualTo(expected)); + Assert.Equal(expected, RunLengthEncoding.Encode(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Decode_unicode() { const string input = "⏰3⚽2⭐⏰"; const string expected = "⏰⚽⚽⚽⭐⭐⏰"; - Assert.That(RunLengthEncoding.Decode(input), Is.EqualTo(expected)); + Assert.Equal(expected, RunLengthEncoding.Decode(input)); } } \ No newline at end of file diff --git a/exercises/saddle-points/SaddlePointTest.cs b/exercises/saddle-points/SaddlePointTest.cs index 5458ced1cb..74b7eacfc7 100644 --- a/exercises/saddle-points/SaddlePointTest.cs +++ b/exercises/saddle-points/SaddlePointTest.cs @@ -1,9 +1,9 @@ using System; -using NUnit.Framework; +using Xunit; public class SaddlePointTests { - [Test] + [Fact] public void Readme_example() { var values = new[,] @@ -13,11 +13,10 @@ public void Readme_example() { 6, 6, 7 } }; var actual = new SaddlePoints(values).Calculate(); - Assert.That(actual, Is.EqualTo(new [] { Tuple.Create(1, 0)})); + Assert.Equal(new [] { Tuple.Create(1, 0)}, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void No_saddle_point() { var values = new[,] @@ -26,11 +25,10 @@ public void No_saddle_point() { 1, 2 } }; var actual = new SaddlePoints(values).Calculate(); - Assert.That(actual, Is.Empty); + Assert.Empty(actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Saddle_point() { var values = new[,] @@ -39,11 +37,10 @@ public void Saddle_point() { 3, 4 } }; var actual = new SaddlePoints(values).Calculate(); - Assert.That(actual, Is.EqualTo(new[] { Tuple.Create(0, 1) })); + Assert.Equal(new[] { Tuple.Create(0, 1) }, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Another_saddle_point() { var values = new[,] @@ -53,11 +50,10 @@ public void Another_saddle_point() { 3, 4, 8, 6, 7 } }; var actual = new SaddlePoints(values).Calculate(); - Assert.That(actual, Is.EqualTo(new[] { Tuple.Create(2, 2) })); + Assert.Equal(new[] { Tuple.Create(2, 2) }, actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_saddle_points() { var values = new[,] @@ -67,6 +63,6 @@ public void Multiple_saddle_points() { 1, 5, 4 } }; var actual = new SaddlePoints(values).Calculate(); - Assert.That(actual, Is.EqualTo(new[] { Tuple.Create(0, 1), Tuple.Create(1, 1), Tuple.Create(2, 1) })); + Assert.Equal(new[] { Tuple.Create(0, 1), Tuple.Create(1, 1), Tuple.Create(2, 1) }, actual); } } \ No newline at end of file diff --git a/exercises/say/Example.cs b/exercises/say/Example.cs index 2898326946..e9660addd6 100644 --- a/exercises/say/Example.cs +++ b/exercises/say/Example.cs @@ -8,7 +8,7 @@ public static string InEnglish(long number) { if (number < 0L || number >= 1000000000000L) { - throw new ArgumentException("Number out of range."); + throw new ArgumentOutOfRangeException("Number out of range."); } if (number == 0L) diff --git a/exercises/say/SayTest.cs b/exercises/say/SayTest.cs index db0d3d9652..332fe95ba5 100644 --- a/exercises/say/SayTest.cs +++ b/exercises/say/SayTest.cs @@ -1,115 +1,101 @@ -using NUnit.Framework; +using System; +using Xunit; public class SayTest { - [Test] + [Fact] public void Zero() { - Assert.That(Say.InEnglish(0L), Is.EqualTo("zero")); + Assert.Equal("zero", Say.InEnglish(0L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One() { - Assert.That(Say.InEnglish(1L), Is.EqualTo("one")); + Assert.Equal("one", Say.InEnglish(1L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Fourteen() { - Assert.That(Say.InEnglish(14L), Is.EqualTo("fourteen")); + Assert.Equal("fourteen", Say.InEnglish(14L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Twenty() { - Assert.That(Say.InEnglish(20L), Is.EqualTo("twenty")); + Assert.Equal("twenty", Say.InEnglish(20L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Twenty_two() { - Assert.That(Say.InEnglish(22L), Is.EqualTo("twenty-two")); + Assert.Equal("twenty-two", Say.InEnglish(22L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_hundred() { - Assert.That(Say.InEnglish(100L), Is.EqualTo("one hundred")); + Assert.Equal("one hundred", Say.InEnglish(100L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_hundred_twenty_three() { - Assert.That(Say.InEnglish(123L), Is.EqualTo("one hundred twenty-three")); + Assert.Equal("one hundred twenty-three", Say.InEnglish(123L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_thousand() { - Assert.That(Say.InEnglish(1000L), Is.EqualTo("one thousand")); + Assert.Equal("one thousand", Say.InEnglish(1000L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_thousand_two_hundred_thirty_four() { - Assert.That(Say.InEnglish(1234L), Is.EqualTo("one thousand two hundred thirty-four")); + Assert.Equal("one thousand two hundred thirty-four", Say.InEnglish(1234L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_million() { - Assert.That(Say.InEnglish(1000000L), Is.EqualTo("one million")); + Assert.Equal("one million", Say.InEnglish(1000000L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_million_two() { - Assert.That(Say.InEnglish(1000002L), Is.EqualTo("one million two")); + Assert.Equal("one million two", Say.InEnglish(1000002L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_million_two_thousand_three_hundred_forty_five() { - Assert.That(Say.InEnglish(1002345L), Is.EqualTo("one million two thousand three hundred forty-five")); + Assert.Equal("one million two thousand three hundred forty-five", Say.InEnglish(1002345L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_billion() { - Assert.That(Say.InEnglish(1000000000L), Is.EqualTo("one billion")); + Assert.Equal("one billion", Say.InEnglish(1000000000L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void A_big_number() { - Assert.That(Say.InEnglish(987654321123L), Is.EqualTo("nine hundred eighty-seven billion six hundred fifty-four million three hundred twenty-one thousand one hundred twenty-three")); + Assert.Equal("nine hundred eighty-seven billion six hundred fifty-four million three hundred twenty-one thousand one hundred twenty-three", Say.InEnglish(987654321123L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Lower_bound() { - Assert.That(() => Say.InEnglish(-1L), Throws.Exception); + Assert.Throws(() => Say.InEnglish(-1L)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Upper_bound() { - Assert.That(() => Say.InEnglish(1000000000000L), Throws.Exception); + Assert.Throws(() => Say.InEnglish(1000000000000L)); } } \ No newline at end of file diff --git a/exercises/scale-generator/ScaleGeneratorTest.cs b/exercises/scale-generator/ScaleGeneratorTest.cs index 30297ad1a0..42ea887f53 100644 --- a/exercises/scale-generator/ScaleGeneratorTest.cs +++ b/exercises/scale-generator/ScaleGeneratorTest.cs @@ -1,129 +1,116 @@ -using NUnit.Framework; +using Xunit; public class ScaleGeneratorTest { - [Test] + [Fact] public void Major_scale() { var major = ScaleGenerator.Pitches("C", "MMmMMMm"); var expected = new[] {"C", "D", "E", "F", "G", "A", "B"}; - Assert.That(major, Is.EqualTo(expected)); + Assert.Equal(expected, major); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Another_major_scale() { var major = ScaleGenerator.Pitches("G", "MMmMMMm"); var expected = new[] {"G", "A", "B", "C", "D", "E", "F#"}; - Assert.That(major, Is.EqualTo(expected)); + Assert.Equal(expected, major); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Minor_scale() { var minor = ScaleGenerator.Pitches("f#", "MmMMmMM"); var expected = new[] {"F#", "G#", "A", "B", "C#", "D", "E"}; - Assert.That(minor, Is.EqualTo(expected)); + Assert.Equal(expected, minor); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Another_minor_scale() { var minor = ScaleGenerator.Pitches("bb", "MmMMmMM"); var expected = new[] {"Bb", "C", "Db", "Eb", "F", "Gb", "Ab"}; - Assert.That(minor, Is.EqualTo(expected)); + Assert.Equal(expected, minor); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Dorian_mode() { var dorian = ScaleGenerator.Pitches("d", "MmMMMmM"); var expected = new[] {"D", "E", "F", "G", "A", "B", "C"}; - Assert.That(dorian, Is.EqualTo(expected)); + Assert.Equal(expected, dorian); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Mixolydian_mode() { var mixolydian = ScaleGenerator.Pitches("Eb", "MMmMMmM"); var expected = new[] {"Eb", "F", "G", "Ab", "Bb", "C", "Db"}; - Assert.That(mixolydian, Is.EqualTo(expected)); + Assert.Equal(expected, mixolydian); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Lydian_mode() { var lydian = ScaleGenerator.Pitches("a", "MMMmMMm"); var expected = new[] {"A", "B", "C#", "D#", "E", "F#", "G#"}; - Assert.That(lydian, Is.EqualTo(expected)); + Assert.Equal(expected, lydian); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Phrygian_mode() { var phrygian = ScaleGenerator.Pitches("e", "mMMMmMM"); var expected = new[] {"E", "F", "G", "A", "B", "C", "D"}; - Assert.That(phrygian, Is.EqualTo(expected)); + Assert.Equal(expected, phrygian); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Locrian_mode() { var locrian = ScaleGenerator.Pitches("g", "mMMmMMM"); var expected = new[] {"G", "Ab", "Bb", "C", "Db", "Eb", "F"}; - Assert.That(locrian, Is.EqualTo(expected)); + Assert.Equal(expected, locrian); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Harmonic_minor() { var harmonicMinor = ScaleGenerator.Pitches("d", "MmMMmAm"); var expected = new[] {"D", "E", "F", "G", "A", "Bb", "Db"}; - Assert.That(harmonicMinor, Is.EqualTo(expected)); + Assert.Equal(expected, harmonicMinor); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Octatonic() { var octatonic = ScaleGenerator.Pitches("C", "MmMmMmMm"); var expected = new[] {"C", "D", "D#", "F", "F#", "G#", "A", "B"}; - Assert.That(octatonic, Is.EqualTo(expected)); + Assert.Equal(expected, octatonic); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Hexatonic() { var hexatonic = ScaleGenerator.Pitches("Db", "MMMMMM"); var expected = new[] {"Db", "Eb", "F", "G", "A", "B"}; - Assert.That(hexatonic, Is.EqualTo(expected)); + Assert.Equal(expected, hexatonic); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Pentatonic() { var pentatonic = ScaleGenerator.Pitches("A", "MMAMA"); var expected = new[] {"A", "B", "C#", "E", "F#"}; - Assert.That(pentatonic, Is.EqualTo(expected)); + Assert.Equal(expected, pentatonic); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Enigmatic() { var enigmatic = ScaleGenerator.Pitches("G", "mAMMMmm"); var expected = new[] {"G", "G#", "B", "C#", "D#", "F", "F#"}; - Assert.That(enigmatic, Is.EqualTo(expected)); + Assert.Equal(expected, enigmatic); } } \ No newline at end of file diff --git a/exercises/scrabble-score/ScrabbleScoreTest.cs b/exercises/scrabble-score/ScrabbleScoreTest.cs index 1f353e7cb4..7c4308d526 100644 --- a/exercises/scrabble-score/ScrabbleScoreTest.cs +++ b/exercises/scrabble-score/ScrabbleScoreTest.cs @@ -1,67 +1,58 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class ScrabbleScoreTest { - [Test] + [Fact] public void Empty_word_scores_zero() { - Assert.That(Scrabble.Score(""), Is.EqualTo(0)); + Assert.Equal(0, Scrabble.Score("")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Whitespace_scores_zero() { - Assert.That(Scrabble.Score(" \t\n"), Is.EqualTo(0)); + Assert.Equal(0, Scrabble.Score(" \t\n")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Null_scores_zero() { - Assert.That(Scrabble.Score(null), Is.EqualTo(0)); + Assert.Equal(0, Scrabble.Score(null)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Scores_very_short_word() { - Assert.That(Scrabble.Score("a"), Is.EqualTo(1)); + Assert.Equal(1, Scrabble.Score("a")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Scores_other_very_short_word() { - Assert.That(Scrabble.Score("f"), Is.EqualTo(4)); + Assert.Equal(4, Scrabble.Score("f")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Simple_word_scores_the_number_of_letters() { - Assert.That(Scrabble.Score("street"), Is.EqualTo(6)); + Assert.Equal(6, Scrabble.Score("street")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Complicated_word_scores_more() { - Assert.That(Scrabble.Score("quirky"), Is.EqualTo(22)); + Assert.Equal(22, Scrabble.Score("quirky")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Scores_are_case_insensitive() { - Assert.That(Scrabble.Score("OXYPHENBUTAZONE"), Is.EqualTo(41)); + Assert.Equal(41, Scrabble.Score("OXYPHENBUTAZONE")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Entire_alphabet() { - Assert.That(Scrabble.Score("abcdefghijklmnopqrstuvwxyz"), Is.EqualTo(87)); + Assert.Equal(87, Scrabble.Score("abcdefghijklmnopqrstuvwxyz")); } } \ No newline at end of file diff --git a/exercises/secret-handshake/SecretHandshakeTest.cs b/exercises/secret-handshake/SecretHandshakeTest.cs index e05498664a..ae79211060 100644 --- a/exercises/secret-handshake/SecretHandshakeTest.cs +++ b/exercises/secret-handshake/SecretHandshakeTest.cs @@ -1,53 +1,46 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class SecretHandshakeTests { - [Test] + [Fact] public void Test_1_handshake_to_wink() { - Assert.That(SecretHandshake.Commands(1), Is.EqualTo(new[] { "wink" })); + Assert.Equal(new[] { "wink" }, SecretHandshake.Commands(1)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_10_handshake_to_double_blink() { - Assert.That(SecretHandshake.Commands(2), Is.EqualTo(new[] { "double blink" })); + Assert.Equal(new[] { "double blink" }, SecretHandshake.Commands(2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_100_handshake_to_close_your_eyes() { - Assert.That(SecretHandshake.Commands(4), Is.EqualTo(new[] { "close your eyes" })); + Assert.Equal(new[] { "close your eyes" }, SecretHandshake.Commands(4)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_1000_handshake_to_close_your_eyes() { - Assert.That(SecretHandshake.Commands(8), Is.EqualTo(new[] { "jump" })); + Assert.Equal(new[] { "jump" }, SecretHandshake.Commands(8)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_handshake_11_to_wink_and_double_blink() { - Assert.That(SecretHandshake.Commands(3), Is.EqualTo(new[] { "wink", "double blink" })); + Assert.Equal(new[] { "wink", "double blink" }, SecretHandshake.Commands(3)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_handshake_10011_to_double_blink_and_wink() { - Assert.That(SecretHandshake.Commands(19), Is.EqualTo(new[] { "double blink", "wink" })); + Assert.Equal(new[] { "double blink", "wink" }, SecretHandshake.Commands(19)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Test_handshake_11111_to_all_commands_reversed() { - Assert.That(SecretHandshake.Commands(31), Is.EqualTo(new[] { "jump", "close your eyes", "double blink", "wink" })); + Assert.Equal(new[] { "jump", "close your eyes", "double blink", "wink" }, SecretHandshake.Commands(31)); } } diff --git a/exercises/series/SeriesTest.cs b/exercises/series/SeriesTest.cs index ba06103c96..17423b5419 100644 --- a/exercises/series/SeriesTest.cs +++ b/exercises/series/SeriesTest.cs @@ -1,79 +1,80 @@ -using NUnit.Framework; +using System; +using Xunit; -[TestFixture] public class SeriesTest { - private static readonly object[] SliceOneTestData = + public static readonly object[] SliceOneTestData = { new object[] { "01234", new[] { new[] { 0 }, new[] { 1 }, new[] { 2 }, new[] { 3 }, new[] { 4 } } }, new object[] { "92834", new[] { new[] { 9 }, new[] { 2 }, new[] { 8 }, new[] { 3 }, new[] { 4 } } } }; - [TestCaseSource("SliceOneTestData")] + [Theory] + [MemberData(nameof(SliceOneTestData))] public void Series_of_one_splits_to_one_digit(string input, int[][] result) { - Assert.That(new Series(input).Slices(1), Is.EqualTo(result)); + Assert.Equal(result, new Series(input).Slices(1)); } - private static readonly object[] SliceTwoTestData = + public static readonly object[] SliceTwoTestData = { new object[] { "01234", new[] { new[] { 0, 1 }, new[] { 1, 2 }, new[] { 2, 3 }, new[] { 3, 4 } } }, new object[] { "98273463", new[] { new[] { 9, 8 }, new[] { 8, 2 }, new[] { 2, 7 }, new[] { 7, 3 }, new[] { 3, 4 }, new[] { 4, 6 }, new[] { 6, 3 } } }, new object[] { "37103", new[] { new[] { 3, 7 }, new[] { 7, 1 }, new[] { 1, 0 }, new[] { 0, 3 } } } }; - [Ignore("Remove to run test")] - [TestCaseSource("SliceTwoTestData")] + [Theory(Skip = "Remove to run test")] + [MemberData(nameof(SliceTwoTestData))] public void Series_of_two_splits_to_two_digits(string input, int[][] result) { - Assert.That(new Series(input).Slices(2), Is.EqualTo(result)); + Assert.Equal(result, new Series(input).Slices(2)); } - private static readonly object[] SliceThreeTestData = + public static readonly object[] SliceThreeTestData = { new object[] { "01234", new[] { new[] { 0, 1, 2 }, new[] { 1, 2, 3 }, new[] { 2, 3, 4 } } }, new object[] { "31001", new[] { new[] { 3, 1, 0 }, new[] { 1, 0, 0 }, new[] { 0, 0, 1 } } }, new object[] { "982347", new[] { new[] { 9, 8, 2 }, new[] { 8, 2, 3 }, new[] { 2, 3, 4 }, new[] { 3, 4, 7 } } } }; - [Ignore("Remove to run test")] - [TestCaseSource("SliceThreeTestData")] + [Theory(Skip = "Remove to run test")] + [MemberData(nameof(SliceThreeTestData))] public void Series_of_three_splits_to_three_digits(string input, int[][] result) { - Assert.That(new Series(input).Slices(3), Is.EqualTo(result)); + Assert.Equal(result, new Series(input).Slices(3)); } - private static readonly object[] SliceFourTestData = + public static readonly object[] SliceFourTestData = { new object[] { "01234", new[] { new[] { 0, 1, 2, 3 }, new[] { 1, 2, 3, 4 } } }, new object[] { "91274", new[] { new[] { 9, 1, 2, 7 }, new[] { 1, 2, 7, 4 } } } }; - [Ignore("Remove to run test")] - [TestCaseSource("SliceFourTestData")] + [Theory(Skip = "Remove to run test")] + [MemberData(nameof(SliceFourTestData))] public void Series_of_four_splits_to_four_digits(string input, int[][] result) { - Assert.That(new Series(input).Slices(4), Is.EqualTo(result)); + Assert.Equal(result, new Series(input).Slices(4)); } - private static readonly object[] SliceFiveTestData = + public static readonly object[] SliceFiveTestData = { new object[] { "01234", new[] { new[] { 0, 1, 2, 3, 4 } } }, new object[] { "81228", new[] { new[] { 8, 1, 2, 2, 8 } } } }; - [Ignore("Remove to run test")] - [TestCaseSource("SliceFiveTestData")] + [Theory(Skip = "Remove to run test")] + [MemberData(nameof(SliceFiveTestData))] public void Series_of_five_splits_to_five_digits(string input, int[][] result) { - Assert.That(new Series(input).Slices(5), Is.EqualTo(result)); + Assert.Equal(result, new Series(input).Slices(5)); } - [Ignore("Remove to run test")] - [TestCase("01234", 6)] - [TestCase("01032987583", 19)] + [Theory(Skip = "Remove to run test")] + [InlineData("01234", 6)] + [InlineData("01032987583", 19)] public void Slice_longer_than_input_is_not_allowed(string input, int slice) { - Assert.That(() => new Series(input).Slices(slice), Throws.ArgumentException); + Assert.Throws(() => new Series(input).Slices(slice)); } } \ No newline at end of file diff --git a/exercises/sgf-parsing/Example.cs b/exercises/sgf-parsing/Example.cs index 800329ac73..e7b6a0ea84 100644 --- a/exercises/sgf-parsing/Example.cs +++ b/exercises/sgf-parsing/Example.cs @@ -34,7 +34,17 @@ private static Parser GameTree() => GameTree().Many().Then(trees => Parse.Char(')') .Select(___ => NodesToTree(nodes, trees))))); - public static SgfTree ParseTree(string input) => GameTree().Parse(input); + public static SgfTree ParseTree(string input) + { + try + { + return GameTree().Parse(input); + } + catch (Exception e) + { + throw new ArgumentException(nameof(input), e); + } + } private static SgfTree NodesToTree(IEnumerable> properties, IEnumerable trees) { diff --git a/exercises/sgf-parsing/SgfParsingTest.cs b/exercises/sgf-parsing/SgfParsingTest.cs index 9b695eb17f..958ff753a6 100644 --- a/exercises/sgf-parsing/SgfParsingTest.cs +++ b/exercises/sgf-parsing/SgfParsingTest.cs @@ -1,6 +1,7 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; -using NUnit.Framework; +using Xunit; public class SgfParsingTest { @@ -20,82 +21,73 @@ public class SgfParsingTest private static IDictionary CreateData(string key, params string[] values) => new Dictionary { [key] = values }; - [Test] + [Fact] public void Empty_value() { const string input = ""; - Assert.That(() => SgfParser.ParseTree(input), Throws.Exception); + Assert.Throws(() => SgfParser.ParseTree(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Tree_without_nodes() { const string input = "()"; - Assert.That(() => SgfParser.ParseTree(input), Throws.Exception); + Assert.Throws(() => SgfParser.ParseTree(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Node_without_tree() { const string input = ";"; - Assert.That(() => SgfParser.ParseTree(input), Throws.Exception); + Assert.Throws(() => SgfParser.ParseTree(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Node_without_properties() { const string input = "(;)"; var expected = TreeWithNoChildren(new Dictionary()); - Assert.That(SgfParser.ParseTree(input), Is.EqualTo(expected).Using(SgfTreeEqualityComparer.Instance)); + Assert.Equal(expected, SgfParser.ParseTree(input), SgfTreeEqualityComparer.Instance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Single_node_tree() { const string input = "(;A[B])"; var expected = TreeWithNoChildren(CreateData("A", "B")); - Assert.That(SgfParser.ParseTree(input), Is.EqualTo(expected).Using(SgfTreeEqualityComparer.Instance)); + Assert.Equal(expected, SgfParser.ParseTree(input), SgfTreeEqualityComparer.Instance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Properties_without_delimiter() { const string input = "(;a)"; - Assert.That(() => SgfParser.ParseTree(input), Throws.Exception); + Assert.Throws(() => SgfParser.ParseTree(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void All_lowercase_property() { const string input = "(;a[b])"; - Assert.That(() => SgfParser.ParseTree(input), Throws.Exception); + Assert.Throws(() => SgfParser.ParseTree(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Upper_and_lowercase_property() { const string input = "(;Aa[b])"; - Assert.That(() => SgfParser.ParseTree(input), Throws.Exception); + Assert.Throws(() => SgfParser.ParseTree(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_nodes() { const string input = "(;A[B];B[C])"; var expected = TreeWithSingleChild(CreateData("A", "B"), TreeWithNoChildren(CreateData("B", "C"))); - Assert.That(SgfParser.ParseTree(input), Is.EqualTo(expected).Using(SgfTreeEqualityComparer.Instance)); + Assert.Equal(expected, SgfParser.ParseTree(input), SgfTreeEqualityComparer.Instance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_child_trees() { const string input = "(;A[B](;B[C])(;C[D]))"; @@ -105,25 +97,23 @@ public void Two_child_trees() TreeWithNoChildren(CreateData("B", "C")), TreeWithNoChildren(CreateData("C", "D")) }); - Assert.That(SgfParser.ParseTree(input), Is.EqualTo(expected).Using(SgfTreeEqualityComparer.Instance)); + Assert.Equal(expected, SgfParser.ParseTree(input), SgfTreeEqualityComparer.Instance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Multiple_properties() { const string input = "(;A[b][c][d])"; var expected = TreeWithNoChildren(CreateData("A", "b", "c", "d")); - Assert.That(SgfParser.ParseTree(input), Is.EqualTo(expected).Using(SgfTreeEqualityComparer.Instance)); + Assert.Equal(expected, SgfParser.ParseTree(input), SgfTreeEqualityComparer.Instance); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Escaped_property() { const string input = @"(;A[\]b\nc\nd\t\te \n\]])"; var expected = TreeWithNoChildren(CreateData("A", @"]b c d e ]")); - Assert.That(SgfParser.ParseTree(input), Is.EqualTo(expected).Using(SgfTreeEqualityComparer.Instance)); + Assert.Equal(expected, SgfParser.ParseTree(input), SgfTreeEqualityComparer.Instance); } private class SgfTreeEqualityComparer : IEqualityComparer diff --git a/exercises/sieve/SieveTest.cs b/exercises/sieve/SieveTest.cs index 8b24539c6f..363232b08a 100644 --- a/exercises/sieve/SieveTest.cs +++ b/exercises/sieve/SieveTest.cs @@ -1,27 +1,23 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class SieveTest { - [Test] + [Fact] public void Finds_first_prime() { - Assert.That(Sieve.Primes(2), Is.EqualTo(new[] { 2 })); + Assert.Equal(new[] { 2 }, Sieve.Primes(2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Finds_primes_up_to_10() { - Assert.That(Sieve.Primes(10), Is.EqualTo(new[] { 2, 3, 5, 7 })); + Assert.Equal(new[] { 2, 3, 5, 7 }, Sieve.Primes(10)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Finds_primes_up_to_1000() { - Assert.That(Sieve.Primes(1000), - Is.EqualTo(new[] + Assert.Equal(new[] { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, @@ -32,6 +28,6 @@ public void Finds_primes_up_to_1000() 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997 - })); + }, Sieve.Primes(1000)); } } \ No newline at end of file diff --git a/exercises/simple-cipher/SimpleCipherTest.cs b/exercises/simple-cipher/SimpleCipherTest.cs index 6afc801194..cc13230826 100644 --- a/exercises/simple-cipher/SimpleCipherTest.cs +++ b/exercises/simple-cipher/SimpleCipherTest.cs @@ -1,169 +1,138 @@ -using NUnit.Framework; +using System; +using Xunit; -[TestFixture] public class RandomKeyCipherTest { - private Cipher cipher; + private readonly Cipher cipher = new Cipher(); - [SetUp] - public void Setup() - { - cipher = new Cipher(); - } - - [Test] + [Fact] public void Cipher_key_is_made_of_letters() { - Assert.That(cipher.Key, Does.Match("[a-z]+")); + Assert.Matches("[a-z]+", cipher.Key); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Default_cipher_key_is_100_characters() { - Assert.That(cipher.Key, Has.Length.EqualTo(100)); + Assert.Equal(100, cipher.Key.Length); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_keys_are_randomly_generated() { - Assert.That(cipher.Key, Is.Not.EqualTo(new Cipher().Key)); + Assert.NotEqual(new Cipher().Key, cipher.Key); } // Here we take advantage of the fact that plaintext of "aaa..." doesn't output // the key. This is a critical problem with shift ciphers, some characters // will always output the key verbatim. - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_can_encode() { - Assert.That(cipher.Encode("aaaaaaaaaa"), Is.EqualTo(cipher.Key.Substring(0, 10))); + Assert.Equal(cipher.Key.Substring(0, 10), cipher.Encode("aaaaaaaaaa")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_can_decode() { - Assert.That(cipher.Decode(cipher.Key.Substring(0, 10)), Is.EqualTo("aaaaaaaaaa")); + Assert.Equal("aaaaaaaaaa", cipher.Decode(cipher.Key.Substring(0, 10))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_is_reversible() { const string PLAINTEXT = "abcdefghij"; - Assert.That(cipher.Decode(cipher.Encode(PLAINTEXT)), Is.EqualTo(PLAINTEXT)); + Assert.Equal(PLAINTEXT, cipher.Decode(cipher.Encode(PLAINTEXT))); } } -[TestFixture] + public class IncorrectKeyCipherTest { - [Ignore("Remove to run test")] - [Test] + [Fact] public void Cipher_throws_with_an_all_caps_key() { - Assert.That(() => new Cipher("ABCDEF"), Throws.ArgumentException); + Assert.Throws(() => new Cipher("ABCDEF")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_throws_with_any_caps_key() { - Assert.That(() => new Cipher("abcdEFg"), Throws.ArgumentException); + Assert.Throws(() => new Cipher("abcdEFg")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_throws_with_numeric_key() { - Assert.That(() => new Cipher("12345"), Throws.ArgumentException); + Assert.Throws(() => new Cipher("12345")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_throws_with_any_numeric_key() { - Assert.That(() => new Cipher("abcd345ef"), Throws.ArgumentException); + Assert.Throws(() => new Cipher("abcd345ef")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_throws_with_empty_key() { - Assert.That(() => new Cipher(""), Throws.ArgumentException); + Assert.Throws(() => new Cipher("")); } } -[TestFixture] + public class SubstitutionCipherTest { private const string KEY = "abcdefghij"; - private Cipher cipher; - - [Ignore("Remove to run test")] - [SetUp] - public void Setup() - { - cipher = new Cipher(KEY); - } + private readonly Cipher cipher = new Cipher(KEY); - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_keeps_the_submitted_key() { - Assert.That(cipher.Key, Is.EqualTo(KEY)); + Assert.Equal(KEY, cipher.Key); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_can_encode_with_given_key() { - Assert.That(cipher.Encode("aaaaaaaaaa"), Is.EqualTo("abcdefghij")); + Assert.Equal("abcdefghij", cipher.Encode("aaaaaaaaaa")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_can_decode_with_given_key() { - Assert.That(cipher.Decode("abcdefghij"), Is.EqualTo("aaaaaaaaaa")); + Assert.Equal("aaaaaaaaaa", cipher.Decode("abcdefghij")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_is_reversible_given_key() { const string PLAINTEXT = "abcdefghij"; - Assert.That(cipher.Decode(cipher.Encode(PLAINTEXT)), Is.EqualTo(PLAINTEXT)); + Assert.Equal(PLAINTEXT, cipher.Decode(cipher.Encode(PLAINTEXT))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_can_double_shift_encode() { const string PLAINTEXT = "iamapandabear"; - Assert.That(new Cipher(PLAINTEXT).Encode(PLAINTEXT), Is.EqualTo("qayaeaagaciai")); + Assert.Equal("qayaeaagaciai", new Cipher(PLAINTEXT).Encode(PLAINTEXT)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_can_wrap_encode() { - Assert.That(cipher.Encode("zzzzzzzzzz"), Is.EqualTo("zabcdefghi")); + Assert.Equal("zabcdefghi", cipher.Encode("zzzzzzzzzz")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_can_encode_a_message_that_is_shorter_than_the_key() { - Assert.That(cipher.Encode("aaaaa"), Is.EqualTo("abcde")); + Assert.Equal("abcde", cipher.Encode("aaaaa")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cipher_can_decode_a_message_that_is_shorter_than_the_key() { - Assert.That(cipher.Decode("abcde"), Is.EqualTo("aaaaa")); + Assert.Equal("aaaaa", cipher.Decode("abcde")); } } \ No newline at end of file diff --git a/exercises/simple-linked-list/SimpleLinkedListTest.cs b/exercises/simple-linked-list/SimpleLinkedListTest.cs index 802fd1d93c..293f11daa4 100644 --- a/exercises/simple-linked-list/SimpleLinkedListTest.cs +++ b/exercises/simple-linked-list/SimpleLinkedListTest.cs @@ -1,87 +1,83 @@ using System.Linq; -using NUnit.Framework; +using Xunit; public class SimpleLinkedListTest { - [Test] + [Fact] public void Single_item_list_value() { var list = new SimpleLinkedList(1); - Assert.That(list.Value, Is.EqualTo(1)); + Assert.Equal(1, list.Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Single_item_list_has_no_next_item() { var list = new SimpleLinkedList(1); - Assert.That(list.Next, Is.Null); + Assert.Null(list.Next); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_item_list_first_value() { var list = new SimpleLinkedList(2).Add(1); - Assert.That(list.Value, Is.EqualTo(2)); + Assert.Equal(2, list.Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_item_list_second_value() { var list = new SimpleLinkedList(2).Add(1); - Assert.That(list.Next.Value, Is.EqualTo(1)); + Assert.Equal(1, list.Next.Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_item_list_second_item_has_no_next() { var list = new SimpleLinkedList(2).Add(1); - Assert.That(list.Next.Next, Is.Null); + Assert.Null(list.Next.Next); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Implements_enumerable() { var values = new SimpleLinkedList(2).Add(1); - Assert.That(values, Is.EqualTo(new[] { 2, 1 })); + Assert.Equal(new[] { 2, 1 }, values); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void From_enumerable() { var list = new SimpleLinkedList(new[] { 11, 7, 5, 3, 2 }); - Assert.That(list.Value, Is.EqualTo(11)); - Assert.That(list.Next.Value, Is.EqualTo(7)); - Assert.That(list.Next.Next.Value, Is.EqualTo(5)); - Assert.That(list.Next.Next.Next.Value, Is.EqualTo(3)); - Assert.That(list.Next.Next.Next.Next.Value, Is.EqualTo(2)); + Assert.Equal(11, list.Value); + Assert.Equal(7, list.Next.Value); + Assert.Equal(5, list.Next.Next.Value); + Assert.Equal(3, list.Next.Next.Next.Value); + Assert.Equal(2, list.Next.Next.Next.Next.Value); } - [TestCase(1, Ignore = "Remove to run test case")] - [TestCase(2, Ignore = "Remove to run test case")] - [TestCase(10, Ignore = "Remove to run test case")] - [TestCase(100, Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData(1)] + [InlineData(2)] + [InlineData(10)] + [InlineData(100)] public void Reverse(int length) { var values = Enumerable.Range(1, length).ToArray(); var list = new SimpleLinkedList(values); var reversed = list.Reverse(); - Assert.That(reversed, Is.EqualTo(values.Reverse())); + Assert.Equal(values.Reverse(), reversed); } - [TestCase(1, Ignore = "Remove to run test case")] - [TestCase(2, Ignore = "Remove to run test case")] - [TestCase(10, Ignore = "Remove to run test case")] - [TestCase(100, Ignore = "Remove to run test case")] + [Theory(Skip = "Remove to run test")] + [InlineData(1)] + [InlineData(2)] + [InlineData(10)] + [InlineData(100)] public void Roundtrip(int length) { var values = Enumerable.Range(1, length); var listValues = new SimpleLinkedList(values); - Assert.That(listValues, Is.EqualTo(values)); + Assert.Equal(values, listValues); } } \ No newline at end of file diff --git a/exercises/space-age/Example.cs b/exercises/space-age/Example.cs index dc81fb6022..7bb1aa570c 100644 --- a/exercises/space-age/Example.cs +++ b/exercises/space-age/Example.cs @@ -10,16 +10,16 @@ private enum Planet public long Seconds { get; private set; } - private readonly Dictionary earthYearToPlanetPeriod = new Dictionary + private readonly Dictionary earthYearToPlanetPeriod = new Dictionary { { Planet.Earth, 1 }, - { Planet.Mercury, 0.2408467m }, - { Planet.Venus, 0.61519726m }, - { Planet.Mars, 1.8808158m }, - { Planet.Jupiter, 11.862615m }, - { Planet.Saturn, 29.447498m }, - { Planet.Uranus, 84.016846m }, - { Planet.Neptune, 164.79132m }, + { Planet.Mercury, 0.2408467 }, + { Planet.Venus, 0.61519726 }, + { Planet.Mars, 1.8808158 }, + { Planet.Jupiter, 11.862615 }, + { Planet.Saturn, 29.447498 }, + { Planet.Uranus, 84.016846 }, + { Planet.Neptune, 164.79132 }, }; public SpaceAge(long seconds) @@ -27,48 +27,48 @@ public SpaceAge(long seconds) Seconds = seconds; } - private decimal CalculateAge(decimal periodInEarthYears) + private double CalculateAge(double periodInEarthYears) { - const decimal EARTH_ORBIT_IN_SECONDS = 31557600; + const double EARTH_ORBIT_IN_SECONDS = 31557600; return Math.Round(Seconds / (EARTH_ORBIT_IN_SECONDS * periodInEarthYears), 2); } - public decimal OnEarth() + public double OnEarth() { return CalculateAge(earthYearToPlanetPeriod[Planet.Earth]); } - public decimal OnMercury() + public double OnMercury() { return CalculateAge(earthYearToPlanetPeriod[Planet.Mercury]); } - public decimal OnVenus() + public double OnVenus() { return CalculateAge(earthYearToPlanetPeriod[Planet.Venus]); } - public decimal OnMars() + public double OnMars() { return CalculateAge(earthYearToPlanetPeriod[Planet.Mars]); } - public decimal OnJupiter() + public double OnJupiter() { return CalculateAge(earthYearToPlanetPeriod[Planet.Jupiter]); } - public decimal OnSaturn() + public double OnSaturn() { return CalculateAge(earthYearToPlanetPeriod[Planet.Saturn]); } - public decimal OnUranus() + public double OnUranus() { return CalculateAge(earthYearToPlanetPeriod[Planet.Uranus]); } - public decimal OnNeptune() + public double OnNeptune() { return CalculateAge(earthYearToPlanetPeriod[Planet.Neptune]); } diff --git a/exercises/space-age/SpaceAgeTest.cs b/exercises/space-age/SpaceAgeTest.cs index 38b6f093b6..09cee31cc3 100644 --- a/exercises/space-age/SpaceAgeTest.cs +++ b/exercises/space-age/SpaceAgeTest.cs @@ -1,84 +1,74 @@ +using Xunit; -using NUnit.Framework; - -[TestFixture] public class SpaceAgeTest { - [Test] + [Fact] public void Age_in_seconds() { var age = new SpaceAge(1000000); - Assert.That(age.Seconds, Is.EqualTo(1000000)); + Assert.Equal(1000000, age.Seconds); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Age_on_earth() { var age = new SpaceAge(1000000000); - Assert.That(age.OnEarth(), Is.EqualTo(31.69).Within(1E-02)); + Assert.Equal(31.69, age.OnEarth()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Age_on_mercury() { var age = new SpaceAge(2134835688); - Assert.That(age.OnEarth(), Is.EqualTo(67.65).Within(1E-02)); - Assert.That(age.OnMercury(), Is.EqualTo(280.88).Within(1E-02)); + Assert.Equal(67.65, age.OnEarth()); + Assert.Equal(280.88, age.OnMercury()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Age_on_venus() { var age = new SpaceAge(189839836); - Assert.That(age.OnEarth(), Is.EqualTo(6.02).Within(1E-02)); - Assert.That(age.OnVenus(), Is.EqualTo(9.78).Within(1E-02)); + Assert.Equal(6.02, age.OnEarth()); + Assert.Equal(9.78, age.OnVenus()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Age_on_mars() { var age = new SpaceAge(2329871239); - Assert.That(age.OnEarth(), Is.EqualTo(73.83).Within(1E-02)); - Assert.That(age.OnMars(), Is.EqualTo(39.25).Within(1E-02)); + Assert.Equal(73.83, age.OnEarth()); + Assert.Equal(39.25, age.OnMars()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Age_on_jupiter() { var age = new SpaceAge(901876382); - Assert.That(age.OnEarth(), Is.EqualTo(28.58).Within(1E-02)); - Assert.That(age.OnJupiter(), Is.EqualTo(2.41).Within(1E-02)); + Assert.Equal(28.58, age.OnEarth()); + Assert.Equal(2.41, age.OnJupiter()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Age_on_saturn() { var age = new SpaceAge(3000000000); - Assert.That(age.OnEarth(), Is.EqualTo(95.06).Within(1E-02)); - Assert.That(age.OnSaturn(), Is.EqualTo(3.23).Within(1E-02)); + Assert.Equal(95.06, age.OnEarth()); + Assert.Equal(3.23, age.OnSaturn()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Age_on_uranus() { var age = new SpaceAge(3210123456); - Assert.That(age.OnEarth(), Is.EqualTo(101.72).Within(1E-02)); - Assert.That(age.OnUranus(), Is.EqualTo(1.21).Within(1E-02)); + Assert.Equal(101.72, age.OnEarth()); + Assert.Equal(1.21, age.OnUranus()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Age_on_neptune() { var age = new SpaceAge(8210123456); - Assert.That(age.OnEarth(), Is.EqualTo(260.16).Within(1E-02)); - Assert.That(age.OnNeptune(), Is.EqualTo(1.58).Within(1E-02)); + Assert.Equal(260.16, age.OnEarth()); + Assert.Equal(1.58, age.OnNeptune()); } } \ No newline at end of file diff --git a/exercises/strain/StrainTest.cs b/exercises/strain/StrainTest.cs index 621b00bd93..6a91e8b2c9 100644 --- a/exercises/strain/StrainTest.cs +++ b/exercises/strain/StrainTest.cs @@ -1,47 +1,41 @@ using System.Collections.Generic; using System.Linq; -using NUnit.Framework; +using Xunit; -[TestFixture] public class StrainTest { - [Test] + [Fact] public void Empty_keep() { - Assert.That(new LinkedList().Keep(x => x < 10), Is.EqualTo(new LinkedList())); + Assert.Equal(new LinkedList(), new LinkedList().Keep(x => x < 10)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Keep_everything() { - Assert.That(new HashSet { 1, 2, 3 }.Keep(x => x < 10), Is.EqualTo(new HashSet { 1, 2, 3 })); + Assert.Equal(new HashSet { 1, 2, 3 }, new HashSet { 1, 2, 3 }.Keep(x => x < 10)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Keep_first_and_last() { - Assert.That(new[] { 1, 2, 3 }.Keep(x => x % 2 != 0), Is.EqualTo(new[] { 1, 3 })); + Assert.Equal(new[] { 1, 3 }, new[] { 1, 2, 3 }.Keep(x => x % 2 != 0)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Keep_neither_first_nor_last() { - Assert.That(new List { 1, 2, 3, 4, 5 }.Keep(x => x % 2 == 0), Is.EqualTo(new List { 2, 4 })); + Assert.Equal(new List { 2, 4 }, new List { 1, 2, 3, 4, 5 }.Keep(x => x % 2 == 0)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Keep_strings() { var words = "apple zebra banana zombies cherimoya zelot".Split(' '); - Assert.That(words.Keep(x => x.StartsWith("z")), Is.EqualTo("zebra zombies zelot".Split(' '))); + Assert.Equal("zebra zombies zelot".Split(' '), words.Keep(x => x.StartsWith("z"))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Keep_arrays() { var actual = new[] @@ -55,47 +49,41 @@ public void Keep_arrays() new[] { 1, 2, 5 } }; var expected = new[] { new[] { 5, 5, 5 }, new[] { 5, 1, 2 }, new[] { 1, 5, 2 }, new[] { 1, 2, 5 } }; - Assert.That(actual.Keep(x => x.Contains(5)), Is.EqualTo(expected)); + Assert.Equal(expected, actual.Keep(x => x.Contains(5))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_discard() { - Assert.That(new LinkedList().Discard(x => x < 10), Is.EqualTo(new LinkedList())); + Assert.Equal(new LinkedList(), new LinkedList().Discard(x => x < 10)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Discard_nothing() { - Assert.That(new HashSet { 1, 2, 3 }.Discard(x => x > 10), Is.EqualTo(new HashSet { 1, 2, 3 })); + Assert.Equal(new HashSet { 1, 2, 3 }, new HashSet { 1, 2, 3 }.Discard(x => x > 10)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Discard_first_and_last() { - Assert.That(new[] { 1, 2, 3 }.Discard(x => x % 2 != 0), Is.EqualTo(new[] { 2 })); + Assert.Equal(new[] { 2 }, new[] { 1, 2, 3 }.Discard(x => x % 2 != 0)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Discard_neither_first_nor_last() { - Assert.That(new List { 1, 2, 3, 4, 5 }.Discard(x => x % 2 == 0), Is.EqualTo(new List { 1, 3, 5 })); + Assert.Equal(new List { 1, 3, 5 }, new List { 1, 2, 3, 4, 5 }.Discard(x => x % 2 == 0)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Discard_strings() { var words = "apple zebra banana zombies cherimoya zelot".Split(' '); - Assert.That(words.Discard(x => x.StartsWith("z")), Is.EqualTo("apple banana cherimoya".Split(' '))); + Assert.Equal("apple banana cherimoya".Split(' '), words.Discard(x => x.StartsWith("z"))); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Discard_arrays() { var actual = new[] @@ -109,6 +97,6 @@ public void Discard_arrays() new[] { 1, 2, 5 } }; var expected = new[] { new[] { 1, 2, 3 }, new[] { 2, 1, 2 }, new[] { 2, 2, 1 } }; - Assert.That(actual.Discard(x => x.Contains(5)), Is.EqualTo(expected)); + Assert.Equal(expected, actual.Discard(x => x.Contains(5))); } } \ No newline at end of file diff --git a/exercises/sublist/SublistTest.cs b/exercises/sublist/SublistTest.cs index b13e40f3bc..f777937a8c 100644 --- a/exercises/sublist/SublistTest.cs +++ b/exercises/sublist/SublistTest.cs @@ -1,167 +1,150 @@ using System.Collections.Generic; using System.Linq; -using NUnit.Framework; +using Xunit; public class SublistTest { - [Test] + [Fact] public void Empty_equals_empty() { var list1 = new List(); var list2 = new List(); - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Equal)); + Assert.Equal(SublistType.Equal, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_is_a_sublist_of_anything() { var list1 = new List(); var list2 = new List { 1, 2, 3, 4 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Sublist)); + Assert.Equal(SublistType.Sublist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Anything_is_a_superlist_of_empty() { var list1 = new List { 1, 2, 3, 4 }; var list2 = new List(); - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Superlist)); + Assert.Equal(SublistType.Superlist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void One_is_not_two() { var list1 = new List { 1 }; var list2 = new List { 2 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Unequal)); + Assert.Equal(SublistType.Unequal, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Compare_larger_equal_lists() { var list1 = new List(Enumerable.Repeat('x', 1000)); var list2 = new List(Enumerable.Repeat('x', 1000)); - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Equal)); + Assert.Equal(SublistType.Equal, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sublist_at_start() { var list1 = new List { 1, 2, 3 }; var list2 = new List { 1, 2, 3, 4, 5 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Sublist)); + Assert.Equal(SublistType.Sublist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sublist_in_middle() { var list1 = new List { 4, 3, 2 }; var list2 = new List { 5, 4, 3, 2, 1 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Sublist)); + Assert.Equal(SublistType.Sublist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sublist_at_end() { var list1 = new List { 3, 4, 5 }; var list2 = new List { 1, 2, 3, 4, 5 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Sublist)); + Assert.Equal(SublistType.Sublist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Partially_matching_sublist_at_start() { var list1 = new List { 1, 1, 2 }; var list2 = new List { 1, 1, 1, 2 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Sublist)); + Assert.Equal(SublistType.Sublist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sublist_early_in_huge_list() { var list1 = new List { 3, 4, 5 }; var list2 = new List(Enumerable.Range(1, 1000000)); - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Sublist)); + Assert.Equal(SublistType.Sublist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Huge_sublist_not_in_huge_list() { var list1 = new List(Enumerable.Range(10, 1000001)); var list2 = new List(Enumerable.Range(1, 1000000)); - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Unequal)); + Assert.Equal(SublistType.Unequal, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Superlist_at_start() { var list1 = new List { 1, 2, 3, 4, 5 }; var list2 = new List { 1, 2, 3 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Superlist)); + Assert.Equal(SublistType.Superlist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Superlist_in_middle() { var list1 = new List { 5, 4, 3, 2, 1 }; var list2 = new List { 4, 3, 2 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Superlist)); + Assert.Equal(SublistType.Superlist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Superlist_at_end() { var list1 = new List { 1, 2, 3, 4, 5 }; var list2 = new List { 3, 4, 5 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Superlist)); + Assert.Equal(SublistType.Superlist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Partially_matching_superlist_at_start() { var list1 = new List { 1, 1, 1, 2 }; var list2 = new List { 1, 1, 2 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Superlist)); + Assert.Equal(SublistType.Superlist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Superlist_early_in_huge_list() { var list1 = new List(Enumerable.Range(1, 1000000)); var list2 = new List { 3, 4, 5 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Superlist)); + Assert.Equal(SublistType.Superlist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recurring_values_sublist() { var list1 = new List { 1, 2, 1, 2, 3 }; var list2 = new List { 1, 2, 3, 1, 2, 1, 2, 3, 2, 1 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Sublist)); + Assert.Equal(SublistType.Sublist, Sublist.Classify(list1, list2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Recurring_values_unequal() { var list1 = new List { 1, 2, 1, 2, 3 }; var list2 = new List { 1, 2, 3, 1, 2, 3, 2, 3, 2, 1 }; - Assert.That(Sublist.Classify(list1, list2), Is.EqualTo(SublistType.Unequal)); + Assert.Equal(SublistType.Unequal, Sublist.Classify(list1, list2)); } } \ No newline at end of file diff --git a/exercises/sum-of-multiples/SumOfMultiplesTest.cs b/exercises/sum-of-multiples/SumOfMultiplesTest.cs index db2b6f2553..cb6c31fe64 100644 --- a/exercises/sum-of-multiples/SumOfMultiplesTest.cs +++ b/exercises/sum-of-multiples/SumOfMultiplesTest.cs @@ -1,53 +1,46 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class SumOfMultiplesTest { - [Test] + [Fact] public void Sum_to_1() { - Assert.That(SumOfMultiples.To(new[] { 3, 5 }, 1), Is.EqualTo(0)); + Assert.Equal(0, SumOfMultiples.To(new[] { 3, 5 }, 1)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sum_to_3() { - Assert.That(SumOfMultiples.To(new[] { 3, 5 }, 4), Is.EqualTo(3)); + Assert.Equal(3, SumOfMultiples.To(new[] { 3, 5 }, 4)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sum_to_10() { - Assert.That(SumOfMultiples.To(new[] { 3, 5 }, 10), Is.EqualTo(23)); + Assert.Equal(23, SumOfMultiples.To(new[] { 3, 5 }, 10)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sum_to_100() { - Assert.That(SumOfMultiples.To(new[] { 3, 5 }, 100), Is.EqualTo(2318)); + Assert.Equal(2318, SumOfMultiples.To(new[] { 3, 5 }, 100)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sum_to_1000() { - Assert.That(SumOfMultiples.To(new[] { 3, 5 }, 1000), Is.EqualTo(233168)); + Assert.Equal(233168, SumOfMultiples.To(new[] { 3, 5 }, 1000)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sum_to_20() { - Assert.That(SumOfMultiples.To(new [] { 7, 13, 17 }, 20), Is.EqualTo(51)); + Assert.Equal(51, SumOfMultiples.To(new [] { 7, 13, 17 }, 20)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Sum_to_10000() { - Assert.That(SumOfMultiples.To(new [] { 43, 47 }, 10000), Is.EqualTo(2203160)); + Assert.Equal(2203160, SumOfMultiples.To(new [] { 43, 47 }, 10000)); } } diff --git a/exercises/tournament/TournamentTest.cs b/exercises/tournament/TournamentTest.cs index 6daa4a92f6..9cde95fa87 100644 --- a/exercises/tournament/TournamentTest.cs +++ b/exercises/tournament/TournamentTest.cs @@ -1,9 +1,8 @@ using System; using System.IO; using System.Text; -using NUnit.Framework; +using Xunit; -[TestFixture] public class TournamentTest { readonly string input1 = @@ -68,23 +67,21 @@ private string RunTally(string input) } } - [Test] + [Fact] public void Test_good() { - Assert.That(RunTally(input1).Trim(), Is.EqualTo(expected1)); + Assert.Equal(expected1, RunTally(input1).Trim()); } - - [Test] - [Ignore("Remove to run test")] + + [Fact(Skip = "Remove to run test")] public void Test_ignore_bad_lines() { - Assert.That(RunTally(input2).Trim(), Is.EqualTo(expected2)); + Assert.Equal(expected2, RunTally(input2).Trim()); } - - [Test] - [Ignore("Remove to run test")] + + [Fact(Skip = "Remove to run test")] public void Test_incomplete_competition() { - Assert.That(RunTally(input3).Trim(), Is.EqualTo(expected3)); + Assert.Equal(expected3, RunTally(input3).Trim()); } } diff --git a/exercises/transpose/TransposeTest.cs b/exercises/transpose/TransposeTest.cs index c039b85581..23ff1813d9 100644 --- a/exercises/transpose/TransposeTest.cs +++ b/exercises/transpose/TransposeTest.cs @@ -1,18 +1,17 @@ -using NUnit.Framework; +using Xunit; public class TransposeTest { - [Test] + [Fact] public void Empty_string() { const string input = ""; const string expected = ""; - Assert.That(Transpose.String(input), Is.EqualTo(expected)); + Assert.Equal(expected, Transpose.String(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Two_characters() { const string input = @@ -22,11 +21,10 @@ public void Two_characters() "A\n" + "1"; - Assert.That(Transpose.String(input), Is.EqualTo(expected)); + Assert.Equal(expected, Transpose.String(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Simple() { const string input = @@ -38,11 +36,10 @@ public void Simple() "B2\n" + "C3"; - Assert.That(Transpose.String(input), Is.EqualTo(expected)); + Assert.Equal(expected, Transpose.String(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Single_line() { const string input = @@ -62,11 +59,10 @@ public void Single_line() "e\n" + "."; - Assert.That(Transpose.String(input), Is.EqualTo(expected)); + Assert.Equal(expected, Transpose.String(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void First_line_longer_than_second_line() { const string input = @@ -91,11 +87,10 @@ public void First_line_longer_than_second_line() "e.\n" + "."; - Assert.That(Transpose.String(input), Is.EqualTo(expected)); + Assert.Equal(expected, Transpose.String(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Second_line_longer_than_first_line() { const string input = @@ -120,11 +115,10 @@ public void Second_line_longer_than_first_line() ".e\n" + " ."; - Assert.That(Transpose.String(input), Is.EqualTo(expected)); + Assert.Equal(expected, Transpose.String(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Square() { const string input = @@ -141,11 +135,10 @@ public void Square() "RESIN\n" + "TREND"; - Assert.That(Transpose.String(input), Is.EqualTo(expected)); + Assert.Equal(expected, Transpose.String(input)); } - [Test] - [Ignore("Remove to run test")] + [Fact(Skip = "Remove to run test")] public void Rectangle() { const string input = @@ -164,11 +157,10 @@ public void Rectangle() "RENT\n" + "EDGE"; - Assert.That(Transpose.String(input), Is.EqualTo(expected)); + Assert.Equal(expected, Transpose.String(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Triangle() { const string input = @@ -187,11 +179,10 @@ public void Triangle() " ER\n" + " R"; - Assert.That(Transpose.String(input), Is.EqualTo(expected)); + Assert.Equal(expected, Transpose.String(input)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Many_lines() { const string input = @@ -266,6 +257,6 @@ public void Many_lines() " , "; - Assert.That(Transpose.String(input), Is.EqualTo(expected)); + Assert.Equal(expected, Transpose.String(input)); } } \ No newline at end of file diff --git a/exercises/tree-building/TreeBuildingTest.cs b/exercises/tree-building/TreeBuildingTest.cs index 254c9ba7f1..d3d7016732 100644 --- a/exercises/tree-building/TreeBuildingTest.cs +++ b/exercises/tree-building/TreeBuildingTest.cs @@ -1,8 +1,9 @@ -using NUnit.Framework; +using System; +using Xunit; public class TreeBuildingTest { - [Test] + [Fact] public void One_node() { var records = new[] @@ -15,7 +16,7 @@ public void One_node() AssertTreeIsLeaf(tree, id: 0); } - [Test] + [Fact(Skip = "Remove to run test")] public void Three_nodes_in_order() { var records = new[] @@ -32,7 +33,7 @@ public void Three_nodes_in_order() AssertTreeIsLeaf(tree.Children[1], id: 2); } - [Test] + [Fact(Skip = "Remove to run test")] public void Three_nodes_in_reverse_order() { var records = new[] @@ -49,7 +50,7 @@ public void Three_nodes_in_reverse_order() AssertTreeIsLeaf(tree.Children[1], id: 2); } - [Test] + [Fact(Skip = "Remove to run test")] public void More_than_two_children() { var records = new[] @@ -68,7 +69,7 @@ public void More_than_two_children() AssertTreeIsLeaf(tree.Children[2], id: 3); } - [Test] + [Fact(Skip = "Remove to run test")] public void Binary_tree() { var records = new[] @@ -94,7 +95,7 @@ public void Binary_tree() AssertTreeIsLeaf(tree.Children[1].Children[1], id: 6); } - [Test] + [Fact(Skip = "Remove to run test")] public void Unbalanced_tree() { var records = new[] @@ -120,15 +121,15 @@ public void Unbalanced_tree() AssertTreeIsLeaf(tree.Children[1].Children[2], id: 6); } - [Test] + [Fact(Skip = "Remove to run test")] public void Empty_input() { var records = new TreeBuildingRecord[0]; - Assert.That(() => TreeBuilder.BuildTree(records), Throws.Exception); + Assert.Throws(() => TreeBuilder.BuildTree(records)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Root_node_has_parent() { var records = new[] @@ -137,10 +138,10 @@ public void Root_node_has_parent() new TreeBuildingRecord { RecordId = 1, ParentId = 0 } }; - Assert.That(() => TreeBuilder.BuildTree(records), Throws.Exception); + Assert.Throws(() => TreeBuilder.BuildTree(records)); } - [Test] + [Fact(Skip = "Remove to run test")] public void No_root_node() { var records = new[] @@ -148,11 +149,11 @@ public void No_root_node() new TreeBuildingRecord { RecordId = 1, ParentId = 0 } }; - Assert.That(() => TreeBuilder.BuildTree(records), Throws.Exception); + Assert.Throws(() => TreeBuilder.BuildTree(records)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Non_continuous() { var records = new[] @@ -163,10 +164,10 @@ public void Non_continuous() new TreeBuildingRecord { RecordId = 0, ParentId = 0 } }; - Assert.That(() => TreeBuilder.BuildTree(records), Throws.Exception); + Assert.Throws(() => TreeBuilder.BuildTree(records)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Cycle_directly() { var records = new[] @@ -180,10 +181,10 @@ public void Cycle_directly() new TreeBuildingRecord { RecordId = 6, ParentId = 3 } }; - Assert.That(() => TreeBuilder.BuildTree(records), Throws.Exception); + Assert.Throws(() => TreeBuilder.BuildTree(records)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Cycle_indirectly() { var records = new[] @@ -197,10 +198,10 @@ public void Cycle_indirectly() new TreeBuildingRecord { RecordId = 6, ParentId = 3 } }; - Assert.That(() => TreeBuilder.BuildTree(records), Throws.Exception); + Assert.Throws(() => TreeBuilder.BuildTree(records)); } - [Test] + [Fact(Skip = "Remove to run test")] public void Higher_id_parent_of_lower_id() { var records = new[] @@ -210,19 +211,19 @@ public void Higher_id_parent_of_lower_id() new TreeBuildingRecord { RecordId = 1, ParentId = 2 } }; - Assert.That(() => TreeBuilder.BuildTree(records), Throws.Exception); + Assert.Throws(() => TreeBuilder.BuildTree(records)); } private static void AssertTreeIsBranch(Tree tree, int id, int childCount) { - Assert.That(tree.Id, Is.EqualTo(id)); - Assert.That(tree.IsLeaf, Is.False); - Assert.That(tree.Children.Count, Is.EqualTo(childCount)); + Assert.Equal(id, tree.Id); + Assert.False(tree.IsLeaf); + Assert.Equal(childCount, tree.Children.Count); } private static void AssertTreeIsLeaf(Tree tree, int id) { - Assert.That(tree.Id, Is.EqualTo(id)); - Assert.That(tree.IsLeaf, Is.True); + Assert.Equal(id, tree.Id); + Assert.True(tree.IsLeaf); } } \ No newline at end of file diff --git a/exercises/triangle/TriangleTest.cs b/exercises/triangle/TriangleTest.cs index 61a6d8be83..b8457c6379 100644 --- a/exercises/triangle/TriangleTest.cs +++ b/exercises/triangle/TriangleTest.cs @@ -1,107 +1,92 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class TriangleTest { - [Test] + [Fact] public void Equilateral_triangles_have_equal_sides() { - Assert.That(Triangle.Kind(2, 2, 2), Is.EqualTo(TriangleKind.Equilateral)); + Assert.Equal(TriangleKind.Equilateral, Triangle.Kind(2, 2, 2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Larger_equilateral_triangles_also_have_equal_sides() { - Assert.That(Triangle.Kind(10, 10, 10), Is.EqualTo(TriangleKind.Equilateral)); + Assert.Equal(TriangleKind.Equilateral, Triangle.Kind(10, 10, 10)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Isosceles_triangles_have_last_two_sides_equal() { - Assert.That(Triangle.Kind(3, 4, 4), Is.EqualTo(TriangleKind.Isosceles)); + Assert.Equal(TriangleKind.Isosceles, Triangle.Kind(3, 4, 4)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Isosceles_triangles_have_first_and_last_sides_equal() { - Assert.That(Triangle.Kind(4, 3, 4), Is.EqualTo(TriangleKind.Isosceles)); + Assert.Equal(TriangleKind.Isosceles, Triangle.Kind(4, 3, 4)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Isosceles_triangles_have_two_first_sides_equal() { - Assert.That(Triangle.Kind(4, 4, 3), Is.EqualTo(TriangleKind.Isosceles)); + Assert.Equal(TriangleKind.Isosceles, Triangle.Kind(4, 4, 3)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Isosceles_triangles_have_in_fact_exactly_two_sides_equal() { - Assert.That(Triangle.Kind(10, 10, 2), Is.EqualTo(TriangleKind.Isosceles)); + Assert.Equal(TriangleKind.Isosceles, Triangle.Kind(10, 10, 2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Scalene_triangles_have_no_equal_sides() { - Assert.That(Triangle.Kind(3, 4, 5), Is.EqualTo(TriangleKind.Scalene)); + Assert.Equal(TriangleKind.Scalene, Triangle.Kind(3, 4, 5)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Scalene_triangles_have_no_equal_sides_at_a_larger_scale_too() { - Assert.That(Triangle.Kind(10, 11, 12), Is.EqualTo(TriangleKind.Scalene)); + Assert.Equal(TriangleKind.Scalene, Triangle.Kind(10, 11, 12)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Scalene_triangles_have_no_equal_sides_in_descending_order_either() { - Assert.That(Triangle.Kind(5, 4, 2), Is.EqualTo(TriangleKind.Scalene)); + Assert.Equal(TriangleKind.Scalene, Triangle.Kind(5, 4, 2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Very_small_triangles_are_legal() { - Assert.That(Triangle.Kind(0.4m, 0.6m, 0.3m), Is.EqualTo(TriangleKind.Scalene)); + Assert.Equal(TriangleKind.Scalene, Triangle.Kind(0.4m, 0.6m, 0.3m)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Triangles_with_no_size_are_illegal() { Assert.Throws(() => Triangle.Kind(0, 0, 0)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Triangles_with_negative_sides_are_illegal() { Assert.Throws(() => Triangle.Kind(3, 4, -5)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Triangles_violating_triangle_inequality_are_illegal() { Assert.Throws(() => Triangle.Kind(1, 1, 3)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Triangles_violating_triangle_inequality_are_illegal_2() { Assert.Throws(() => Triangle.Kind(2, 4, 2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Triangles_violating_triangle_inequality_are_illegal_3() { Assert.Throws(() => Triangle.Kind(7, 3, 2)); diff --git a/exercises/twelve-days/TwelveDaysTest.cs b/exercises/twelve-days/TwelveDaysTest.cs index e8830e92c3..ebbb104a35 100644 --- a/exercises/twelve-days/TwelveDaysTest.cs +++ b/exercises/twelve-days/TwelveDaysTest.cs @@ -1,138 +1,118 @@ -using NUnit.Framework; +using Xunit; -[TestFixture] public class TwelveDaysTest { - private TwelveDaysSong twelveDaysSong; + private readonly TwelveDaysSong twelveDaysSong = new TwelveDaysSong(); - [SetUp] - public void Setup() - { - twelveDaysSong = new TwelveDaysSong(); - } - - [Test] + [Fact] public void Return_verse_1() { var expected = "On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(1), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(1)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_verse_2() { var expected = "On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(2), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(2)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_verse_3() { var expected = "On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(3), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(3)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_verse_4() { var expected = "On the fourth day of Christmas my true love gave to me, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(4), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(4)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_verse_5() { var expected = "On the fifth day of Christmas my true love gave to me, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(5), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(5)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_verse_6() { var expected = "On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(6), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(6)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_verse_7() { var expected = "On the seventh day of Christmas my true love gave to me, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(7), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(7)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_verse_8() { var expected = "On the eighth day of Christmas my true love gave to me, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(8), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(8)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_verse_9() { var expected = "On the ninth day of Christmas my true love gave to me, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(9), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(9)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_verse_10() { var expected = "On the tenth day of Christmas my true love gave to me, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(10), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(10)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_verse_11() { var expected = "On the eleventh day of Christmas my true love gave to me, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(11), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(11)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_verse_12() { var expected = "On the twelfth day of Christmas my true love gave to me, twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.That(twelveDaysSong.Verse(12), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verse(12)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_multiple_verses() { var expected = "On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.\n\n" + "On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.\n\n" + "On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\n"; - Assert.That(twelveDaysSong.Verses(1, 3), Is.EqualTo(expected)); + Assert.Equal(expected, twelveDaysSong.Verses(1, 3)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Return_entire_song() { - Assert.That(twelveDaysSong.Verses(1, 12), Is.EqualTo(twelveDaysSong.Sing())); + Assert.Equal(twelveDaysSong.Sing(), twelveDaysSong.Verses(1, 12)); } } \ No newline at end of file diff --git a/exercises/two-bucket/TwoBucketTest.cs b/exercises/two-bucket/TwoBucketTest.cs index dfe989e71c..438e4decd6 100644 --- a/exercises/two-bucket/TwoBucketTest.cs +++ b/exercises/two-bucket/TwoBucketTest.cs @@ -1,8 +1,8 @@ -using NUnit.Framework; +using Xunit; public class TwoBucketTest { - [Test] + [Fact] public void First_example() { var bucketOneSize = 3; @@ -13,13 +13,12 @@ public void First_example() var actual = twoBuckets.Solve(goal); - Assert.That(actual.Moves, Is.EqualTo(4)); - Assert.That(actual.GoalBucket, Is.EqualTo(Bucket.One)); - Assert.That(actual.OtherBucketContents, Is.EqualTo(5)); + Assert.Equal(4, actual.Moves); + Assert.Equal(Bucket.One, actual.GoalBucket); + Assert.Equal(5, actual.OtherBucketContents); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Second_example() { var bucketOneSize = 3; @@ -30,13 +29,12 @@ public void Second_example() var actual = twoBuckets.Solve(goal); - Assert.That(actual.Moves, Is.EqualTo(8)); - Assert.That(actual.GoalBucket, Is.EqualTo(Bucket.Two)); - Assert.That(actual.OtherBucketContents, Is.EqualTo(3)); + Assert.Equal(8, actual.Moves); + Assert.Equal(Bucket.Two, actual.GoalBucket); + Assert.Equal(3, actual.OtherBucketContents); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Third_example() { var bucketOneSize = 7; @@ -47,13 +45,12 @@ public void Third_example() var actual = twoBuckets.Solve(goal); - Assert.That(actual.Moves, Is.EqualTo(14)); - Assert.That(actual.GoalBucket, Is.EqualTo(Bucket.One)); - Assert.That(actual.OtherBucketContents, Is.EqualTo(11)); + Assert.Equal(14, actual.Moves); + Assert.Equal(Bucket.One, actual.GoalBucket); + Assert.Equal(11, actual.OtherBucketContents); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Fourth_example() { var bucketOneSize = 7; @@ -64,8 +61,8 @@ public void Fourth_example() var actual = twoBuckets.Solve(goal); - Assert.That(actual.Moves, Is.EqualTo(18)); - Assert.That(actual.GoalBucket, Is.EqualTo(Bucket.Two)); - Assert.That(actual.OtherBucketContents, Is.EqualTo(7)); + Assert.Equal(18, actual.Moves); + Assert.Equal(Bucket.Two, actual.GoalBucket); + Assert.Equal(7, actual.OtherBucketContents); } } \ No newline at end of file diff --git a/exercises/variable-length-quantity/VariableLengthQuantityTest.cs b/exercises/variable-length-quantity/VariableLengthQuantityTest.cs index e3e94d3e2a..61ccdf92bc 100644 --- a/exercises/variable-length-quantity/VariableLengthQuantityTest.cs +++ b/exercises/variable-length-quantity/VariableLengthQuantityTest.cs @@ -1,99 +1,88 @@ -using NUnit.Framework; +using System; +using Xunit; public class VariableLengthQuantityTest { - [Test] + [Fact] public void To_single_byte() { - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x00u }), Is.EqualTo(new[] { 0x00u })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x40u }), Is.EqualTo(new[] { 0x40u })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x7fu }), Is.EqualTo(new[] { 0x7fu })); + Assert.Equal(new[] { 0x00u }, VariableLengthQuantity.ToBytes(new[] { 0x00u })); + Assert.Equal(new[] { 0x40u }, VariableLengthQuantity.ToBytes(new[] { 0x40u })); + Assert.Equal(new[] { 0x7fu }, VariableLengthQuantity.ToBytes(new[] { 0x7fu })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void To_double_byte() { - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x80u }), Is.EqualTo(new[] { 0x81u, 0x00u })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x2000u }), Is.EqualTo(new[] { 0xc0u, 0x00u })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x3fffu }), Is.EqualTo(new[] { 0xffu, 0x7fu })); + Assert.Equal(new[] { 0x81u, 0x00u }, VariableLengthQuantity.ToBytes(new[] { 0x80u })); + Assert.Equal(new[] { 0xc0u, 0x00u }, VariableLengthQuantity.ToBytes(new[] { 0x2000u })); + Assert.Equal(new[] { 0xffu, 0x7fu }, VariableLengthQuantity.ToBytes(new[] { 0x3fffu })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void To_triple_byte() { - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x4000u }), Is.EqualTo(new[] { 0x81u, 0x80u, 0x00u })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x100000u }), Is.EqualTo(new[] { 0xc0u, 0x80u, 0x00u })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x1fffffu }), Is.EqualTo(new[] { 0xffu, 0xffu, 0x7fu })); + Assert.Equal(new[] { 0x81u, 0x80u, 0x00u }, VariableLengthQuantity.ToBytes(new[] { 0x4000u })); + Assert.Equal(new[] { 0xc0u, 0x80u, 0x00u }, VariableLengthQuantity.ToBytes(new[] { 0x100000u })); + Assert.Equal(new[] { 0xffu, 0xffu, 0x7fu }, VariableLengthQuantity.ToBytes(new[] { 0x1fffffu })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void To_quadruple_byte() { - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x200000u }), Is.EqualTo(new[] { 0x81u, 0x80u, 0x80u, 0x00u })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x08000000u }), Is.EqualTo(new[] { 0xc0u, 0x80u, 0x80u, 0x00u })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x0fffffffu }), Is.EqualTo(new[] { 0xffu, 0xffu, 0xffu, 0x7fu })); + Assert.Equal(new[] { 0x81u, 0x80u, 0x80u, 0x00u }, VariableLengthQuantity.ToBytes(new[] { 0x200000u })); + Assert.Equal(new[] { 0xc0u, 0x80u, 0x80u, 0x00u }, VariableLengthQuantity.ToBytes(new[] { 0x08000000u })); + Assert.Equal(new[] { 0xffu, 0xffu, 0xffu, 0x7fu }, VariableLengthQuantity.ToBytes(new[] { 0x0fffffffu })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void To_quintuple_byte() { - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x10000000u }), Is.EqualTo(new[] { 0x81u, 0x80u, 0x80u, 0x80u, 0x00u })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0xff000000u }), Is.EqualTo(new[] { 0x8fu, 0xf8u, 0x80u, 0x80u, 0x00u })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0xffffffffu }), Is.EqualTo(new[] { 0x8fu, 0xffu, 0xffu, 0xffu, 0x7fu })); + Assert.Equal(new[] { 0x81u, 0x80u, 0x80u, 0x80u, 0x00u }, VariableLengthQuantity.ToBytes(new[] { 0x10000000u })); + Assert.Equal(new[] { 0x8fu, 0xf8u, 0x80u, 0x80u, 0x00u }, VariableLengthQuantity.ToBytes(new[] { 0xff000000u })); + Assert.Equal(new[] { 0x8fu, 0xffu, 0xffu, 0xffu, 0x7fu }, VariableLengthQuantity.ToBytes(new[] { 0xffffffffu })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void From_bytes() { - Assert.That(VariableLengthQuantity.FromBytes(new[] { 0x7fu }), Is.EqualTo(new[] { 0x7fu })); - Assert.That(VariableLengthQuantity.FromBytes(new[] { 0xc0u, 0x00u }), Is.EqualTo(new[] { 0x2000u })); - Assert.That(VariableLengthQuantity.FromBytes(new[] { 0xffu, 0xffu, 0x7fu }), Is.EqualTo(new[] { 0x1fffffu })); - Assert.That(VariableLengthQuantity.FromBytes(new[] { 0x81u, 0x80u, 0x80u, 0x00u }), Is.EqualTo(new[] { 0x200000u })); - Assert.That(VariableLengthQuantity.FromBytes(new[] { 0x8fu, 0xffu, 0xffu, 0xffu, 0x7fu }), Is.EqualTo(new[] { 0xffffffffu })); + Assert.Equal(new[] { 0x7fu }, VariableLengthQuantity.FromBytes(new[] { 0x7fu })); + Assert.Equal(new[] { 0x2000u }, VariableLengthQuantity.FromBytes(new[] { 0xc0u, 0x00u })); + Assert.Equal(new[] { 0x1fffffu }, VariableLengthQuantity.FromBytes(new[] { 0xffu, 0xffu, 0x7fu })); + Assert.Equal(new[] { 0x200000u }, VariableLengthQuantity.FromBytes(new[] { 0x81u, 0x80u, 0x80u, 0x00u })); + Assert.Equal(new[] { 0xffffffffu }, VariableLengthQuantity.FromBytes(new[] { 0x8fu, 0xffu, 0xffu, 0xffu, 0x7fu })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void To_bytes_multiple_values() { - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x40u, 0x7fu }), Is.EqualTo(new[] { 0x40u, 0x7fu })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x4000u, 0x123456u }), Is.EqualTo(new[] { 0x81u, 0x80u, 0x00u, 0xc8u, 0xe8u, 0x56u })); - Assert.That(VariableLengthQuantity.ToBytes(new[] { 0x2000u, 0x123456u, 0x0fffffffu, 0x00u, 0x3fffu, 0x4000u }), - Is.EqualTo(new[] { 0xc0u, 0x00u, 0xc8u, 0xe8u, 0x56u, 0xffu, 0xffu, 0xffu, 0x7fu, 0x00u, 0xffu, 0x7fu, 0x81u, 0x80u, 0x00u })); + Assert.Equal(new[] { 0x40u, 0x7fu }, VariableLengthQuantity.ToBytes(new[] { 0x40u, 0x7fu })); + Assert.Equal(new[] { 0x81u, 0x80u, 0x00u, 0xc8u, 0xe8u, 0x56u }, VariableLengthQuantity.ToBytes(new[] { 0x4000u, 0x123456u })); + Assert.Equal(new[] { 0xc0u, 0x00u, 0xc8u, 0xe8u, 0x56u, 0xffu, 0xffu, 0xffu, 0x7fu, 0x00u, 0xffu, 0x7fu, 0x81u, 0x80u, 0x00u }, VariableLengthQuantity.ToBytes(new[] { 0x2000u, 0x123456u, 0x0fffffffu, 0x00u, 0x3fffu, 0x4000u })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void From_bytes_multiple_values() { - Assert.That(VariableLengthQuantity.FromBytes(new[] { 0xc0u, 0x00u, 0xc8u, 0xe8u, 0x56u, 0xffu, 0xffu, 0xffu, 0x7fu, 0x00u, 0xffu, 0x7fu, 0x81u, 0x80u, 0x00u }), - Is.EqualTo(new[] { 0x2000u, 0x123456u, 0x0fffffffu, 0x00u, 0x3fffu, 0x4000u })); + Assert.Equal(new[] { 0x2000u, 0x123456u, 0x0fffffffu, 0x00u, 0x3fffu, 0x4000u }, VariableLengthQuantity.FromBytes(new[] { 0xc0u, 0x00u, 0xc8u, 0xe8u, 0x56u, 0xffu, 0xffu, 0xffu, 0x7fu, 0x00u, 0xffu, 0x7fu, 0x81u, 0x80u, 0x00u })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Incomplete_byte_sequence() { - Assert.That(() => VariableLengthQuantity.FromBytes(new[] { 0xffu }), Throws.Exception); + Assert.Throws(() => VariableLengthQuantity.FromBytes(new[] { 0xffu })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Overflow() { - Assert.That(() => VariableLengthQuantity.FromBytes(new[] { 0xffu, 0xffu, 0xffu, 0xffu, 0x7fu }), Throws.Exception); + Assert.Throws(() => VariableLengthQuantity.FromBytes(new[] { 0xffu, 0xffu, 0xffu, 0xffu, 0x7fu })); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Chained_execution_is_identity() { var test = new[] { 0xf2u, 0xf6u, 0x96u, 0x9cu, 0x3bu, 0x39u, 0x2eu, 0x30u, 0xb3u, 0x24u }; - Assert.That(VariableLengthQuantity.FromBytes(VariableLengthQuantity.ToBytes(test)), Is.EquivalentTo(test)); + Assert.Equal(test, VariableLengthQuantity.FromBytes(VariableLengthQuantity.ToBytes(test))); } } \ No newline at end of file diff --git a/exercises/word-count/WordCountTest.cs b/exercises/word-count/WordCountTest.cs index 06cb02490c..5295ccd724 100644 --- a/exercises/word-count/WordCountTest.cs +++ b/exercises/word-count/WordCountTest.cs @@ -1,21 +1,19 @@ using System.Collections.Generic; -using NUnit.Framework; +using Xunit; -[TestFixture] public class WordCountTest { - [Test] + [Fact] public void Count_one_word() { var counts = new Dictionary { { "word", 1 } }; - Assert.That(Phrase.WordCount("word"), Is.EqualTo(counts)); + Assert.Equal(counts, Phrase.WordCount("word")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Count_one_of_each() { var counts = new Dictionary { @@ -24,11 +22,10 @@ public void Count_one_of_each() { "each", 1 } }; - Assert.That(Phrase.WordCount("one of each"), Is.EqualTo(counts)); + Assert.Equal(counts, Phrase.WordCount("one of each")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Count_multiple_occurrences() { var counts = new Dictionary { @@ -39,11 +36,10 @@ public void Count_multiple_occurrences() { "blue", 1 }, }; - Assert.That(Phrase.WordCount("one fish two fish red fish blue fish"), Is.EqualTo(counts)); + Assert.Equal(counts, Phrase.WordCount("one fish two fish red fish blue fish")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Count_everything_just_once() { var counts = new Dictionary { @@ -55,11 +51,10 @@ public void Count_everything_just_once() { "men", 1 }, }; - Assert.That(Phrase.WordCount("all the kings horses and all the kings men"), Is.EqualTo(counts)); + Assert.Equal(counts, Phrase.WordCount("all the kings horses and all the kings men")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Ignore_punctuation() { var counts = new Dictionary { @@ -70,11 +65,10 @@ public void Ignore_punctuation() { "javascript", 1 }, }; - Assert.That(Phrase.WordCount("car : carpet as java : javascript!!&@$%^&"), Is.EqualTo(counts)); + Assert.Equal(counts, Phrase.WordCount("car : carpet as java : javascript!!&@$%^&")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Handles_cramped_list() { var counts = new Dictionary { @@ -83,11 +77,10 @@ public void Handles_cramped_list() { "three", 1 }, }; - Assert.That(Phrase.WordCount("one,two,three"), Is.EqualTo(counts)); + Assert.Equal(counts, Phrase.WordCount("one,two,three")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Include_numbers() { var counts = new Dictionary { @@ -96,22 +89,20 @@ public void Include_numbers() { "2", 1 }, }; - Assert.That(Phrase.WordCount("testing, 1, 2 testing"), Is.EqualTo(counts)); + Assert.Equal(counts, Phrase.WordCount("testing, 1, 2 testing")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Normalize_case() { var counts = new Dictionary { { "go", 3 }, }; - Assert.That(Phrase.WordCount("go Go GO"), Is.EqualTo(counts)); + Assert.Equal(counts, Phrase.WordCount("go Go GO")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void With_apostrophes() { var counts = new Dictionary { @@ -122,22 +113,20 @@ public void With_apostrophes() { "cry", 1 }, }; - Assert.That(Phrase.WordCount("First: don't laugh. Then: don't cry."), Is.EqualTo(counts)); + Assert.Equal(counts, Phrase.WordCount("First: don't laugh. Then: don't cry.")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void With_free_standing_apostrophes() { var counts = new Dictionary { { "go", 3 }, }; - Assert.That(Phrase.WordCount("go ' Go '' GO"), Is.EqualTo(counts)); + Assert.Equal(counts, Phrase.WordCount("go ' Go '' GO")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void With_apostrophes_as_quotes() { var counts = new Dictionary { @@ -150,7 +139,7 @@ public void With_apostrophes_as_quotes() { "o'clock", 1 }, }; - Assert.That(Phrase.WordCount("She said, 'let's meet at twelve o'clock'"), Is.EqualTo(counts)); + Assert.Equal(counts, Phrase.WordCount("She said, 'let's meet at twelve o'clock'")); } } \ No newline at end of file diff --git a/exercises/word-search/WordSearchTest.cs b/exercises/word-search/WordSearchTest.cs index 6a82c8bc16..87ad1206c2 100644 --- a/exercises/word-search/WordSearchTest.cs +++ b/exercises/word-search/WordSearchTest.cs @@ -1,6 +1,6 @@ using System; using System.Drawing; -using NUnit.Framework; +using Xunit; public class WordSearchTest { @@ -16,88 +16,87 @@ public class WordSearchTest "jalaycalmp\n" + "clojurermt"; - [Test] + [Fact] public void Should_find_horizontal_words_written_left_to_right() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("clojure"); - Assert.That(actual, Is.EqualTo(Tuple.Create(new Point(1, 10), new Point(7, 10)))); + Assert.Equal(new Point(1, 10), actual.Item1); + Assert.Equal(new Point(7, 10), actual.Item2); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_find_horizontal_words_written_right_to_left() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("elixir"); - Assert.That(actual, Is.EqualTo(Tuple.Create(new Point(6, 5), new Point(1, 5)))); + Assert.Equal(new Point(6, 5), actual.Item1); + Assert.Equal(new Point(1, 5), actual.Item2); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_find_vertical_words_written_top_to_bottom() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("ecmascript"); - Assert.That(actual, Is.EqualTo(Tuple.Create(new Point(10, 1), new Point(10, 10)))); + Assert.Equal(new Point(10, 1), actual.Item1); + Assert.Equal(new Point(10, 10), actual.Item2); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_find_vertical_words_written_bottom_to_top() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("rust"); - Assert.That(actual, Is.EqualTo(Tuple.Create(new Point(9, 5), new Point(9, 2)))); + Assert.Equal(new Point(9, 5), actual.Item1); + Assert.Equal(new Point(9, 2), actual.Item2); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_find_diagonal_words_written_top_left_to_bottom_right() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("java"); - Assert.That(actual, Is.EqualTo(Tuple.Create(new Point(1, 1), new Point(4, 4)))); + Assert.Equal(new Point(1, 1), actual.Item1); + Assert.Equal(new Point(4, 4), actual.Item2); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_find_diagonal_upper_written_bottom_right_to_top_left() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("lua"); - Assert.That(actual, Is.EqualTo(Tuple.Create(new Point(8, 9), new Point(6, 7)))); + Assert.Equal(new Point(8, 9), actual.Item1); + Assert.Equal(new Point(6, 7), actual.Item2); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_find_diagonal_upper_written_bottom_left_to_top_right() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("lisp"); - Assert.That(actual, Is.EqualTo(Tuple.Create(new Point(3, 6), new Point(6, 3)))); + Assert.Equal(new Point(3, 6), actual.Item1); + Assert.Equal(new Point(6, 3), actual.Item2); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_find_diagonal_upper_written_top_right_to_bottom_left() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("ruby"); - Assert.That(actual, Is.EqualTo(Tuple.Create(new Point(8, 6), new Point(5, 9)))); + Assert.Equal(new Point(8, 6), actual.Item1); + Assert.Equal(new Point(5, 9), actual.Item2); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_not_find_words_that_are_not_in_the_puzzle() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("haskell"); - Assert.That(actual, Is.Null); + Assert.Null(actual); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Should_be_able_to_search_differently_sized_puzzles() { const string differentSizePuzzle = @@ -107,6 +106,7 @@ public void Should_be_able_to_search_differently_sized_puzzles() var wordSearch = new WordSearch(differentSizePuzzle); var actual = wordSearch.Find("exercism"); - Assert.That(actual, Is.EqualTo(Tuple.Create(new Point(11, 2), new Point(4, 2)))); + Assert.Equal(new Point(11, 2), actual.Item1); + Assert.Equal(new Point(4, 2), actual.Item2); } } \ No newline at end of file diff --git a/exercises/wordy/WordyTest.cs b/exercises/wordy/WordyTest.cs index 559cfc7258..7ea2281cac 100644 --- a/exercises/wordy/WordyTest.cs +++ b/exercises/wordy/WordyTest.cs @@ -1,116 +1,101 @@ -using NUnit.Framework; +using System; +using Xunit; -[TestFixture] public class WordProblemTest { - [Test] + [Fact] public void Can_parse_and_solve_addition_problems() { - Assert.That(WordProblem.Solve("What is 1 plus 1?"), Is.EqualTo(2)); + Assert.Equal(2, WordProblem.Solve("What is 1 plus 1?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_add_double_digit_numbers() { - Assert.That(WordProblem.Solve("What is 53 plus 2?"), Is.EqualTo(55)); + Assert.Equal(55, WordProblem.Solve("What is 53 plus 2?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_add_negative_numbers() { - Assert.That(WordProblem.Solve("What is -1 plus -10?"), Is.EqualTo(-11)); + Assert.Equal(-11, WordProblem.Solve("What is -1 plus -10?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_add_large_numbers() { - Assert.That(WordProblem.Solve("What is 123 plus 45678?"), Is.EqualTo(45801)); + Assert.Equal(45801, WordProblem.Solve("What is 123 plus 45678?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_parse_and_solve_subtraction_problems() { - Assert.That(WordProblem.Solve("What is 4 minus -12"), Is.EqualTo(16)); + Assert.Equal(16, WordProblem.Solve("What is 4 minus -12")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_parse_and_solve_multiplication_problems() { - Assert.That(WordProblem.Solve("What is -3 multiplied by 25?"), Is.EqualTo(-75)); + Assert.Equal(-75, WordProblem.Solve("What is -3 multiplied by 25?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_parse_and_solve_division_problems() { - Assert.That(WordProblem.Solve("What is 33 divided by -3?"), Is.EqualTo(-11)); + Assert.Equal(-11, WordProblem.Solve("What is 33 divided by -3?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_add_twice() { - Assert.That(WordProblem.Solve("What is 1 plus 1 plus 1?"), Is.EqualTo(3)); + Assert.Equal(3, WordProblem.Solve("What is 1 plus 1 plus 1?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_add_then_subtract() { - Assert.That(WordProblem.Solve("What is 1 plus 5 minus -2?"), Is.EqualTo(8)); + Assert.Equal(8, WordProblem.Solve("What is 1 plus 5 minus -2?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_subtract_twice() { - Assert.That(WordProblem.Solve("What is 20 minus 4 minus 13?"), Is.EqualTo(3)); + Assert.Equal(3, WordProblem.Solve("What is 20 minus 4 minus 13?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_subtract_then_add() { - Assert.That(WordProblem.Solve("What is 17 minus 6 plus 3?"), Is.EqualTo(14)); + Assert.Equal(14, WordProblem.Solve("What is 17 minus 6 plus 3?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_multiply_twice() { - Assert.That(WordProblem.Solve("What is 2 multiplied by -2 multiplied by 3?"), Is.EqualTo(-12)); + Assert.Equal(-12, WordProblem.Solve("What is 2 multiplied by -2 multiplied by 3?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_add_then_multiply() { - Assert.That(WordProblem.Solve("What is -3 plus 7 multiplied by -2?"), Is.EqualTo(-8)); + Assert.Equal(-8, WordProblem.Solve("What is -3 plus 7 multiplied by -2?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Can_divide_twice() { - Assert.That(WordProblem.Solve("What is -12 divided by 2 divided by -3?"), Is.EqualTo(2)); + Assert.Equal(2, WordProblem.Solve("What is -12 divided by 2 divided by -3?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Cubed_is_too_advanced() { - Assert.That(() => WordProblem.Solve("What is 53 cubed?"), Throws.ArgumentException); + Assert.Throws(() => WordProblem.Solve("What is 53 cubed?")); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Irrelevant_problems_are_not_valid() { - Assert.That(() => WordProblem.Solve("Who is the president of the United States?"), Throws.ArgumentException); + Assert.Throws(() => WordProblem.Solve("Who is the president of the United States?")); } } diff --git a/exercises/zebra-puzzle/ZebraPuzzleTest.cs b/exercises/zebra-puzzle/ZebraPuzzleTest.cs index 10f45d9a86..6cde1b2c2f 100644 --- a/exercises/zebra-puzzle/ZebraPuzzleTest.cs +++ b/exercises/zebra-puzzle/ZebraPuzzleTest.cs @@ -1,17 +1,16 @@ -using NUnit.Framework; +using Xunit; public class ZebraPuzzleTest { - [Test] + [Fact] public void Who_drinks_water() { - Assert.That(ZebraPuzzle.WhoDrinks(Drink.Water), Is.EqualTo(Nationality.Norwegian)); + Assert.Equal(Nationality.Norwegian, ZebraPuzzle.WhoDrinks(Drink.Water)); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Who_owns_the_zebra() { - Assert.That(ZebraPuzzle.WhoOwns(Pet.Zebra), Is.EqualTo(Nationality.Japanese)); + Assert.Equal(Nationality.Japanese, ZebraPuzzle.WhoOwns(Pet.Zebra)); } } \ No newline at end of file diff --git a/exercises/zipper/ZipperTest.cs b/exercises/zipper/ZipperTest.cs index feeed02c84..f1605ae407 100644 --- a/exercises/zipper/ZipperTest.cs +++ b/exercises/zipper/ZipperTest.cs @@ -1,4 +1,4 @@ -using NUnit.Framework; +using Xunit; public class ZipperTest { @@ -11,73 +11,66 @@ public class ZipperTest private static readonly BinTree t3 = new BinTree(1, bt(2, leaf(5), leaf(3)), leaf(4)); private static readonly BinTree t4 = new BinTree(1, leaf(2), leaf(4)); - [Test] + [Fact] public void Data_is_retained() { var zipper = Zipper.FromTree(t1); var tree = zipper.ToTree(); - Assert.That(tree, Is.EqualTo(t1)); + Assert.Equal(t1, tree); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Left_right_and_value() { var zipper = Zipper.FromTree(t1); - Assert.That(zipper.Left().Right().Value, Is.EqualTo(3)); + Assert.Equal(3, zipper.Left().Right().Value); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Dead_end() { var zipper = Zipper.FromTree(t1); - Assert.That(zipper.Left().Left(), Is.Null); + Assert.Null(zipper.Left().Left()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Tree_from_deep_focus() { var zipper = Zipper.FromTree(t1); - Assert.That(zipper.Left().Right().ToTree(), Is.EqualTo(t1)); + Assert.Equal(t1, zipper.Left().Right().ToTree()); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Set_value() { var zipper = Zipper.FromTree(t1); var updatedZipper = zipper.Left().SetValue(5); var tree = updatedZipper.ToTree(); - Assert.That(tree, Is.EqualTo(t2)); + Assert.Equal(t2, tree); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Set_left_with_value() { var zipper = Zipper.FromTree(t1); var updatedZipper = zipper.Left().SetLeft(new BinTree(5, null, null)); var tree = updatedZipper.ToTree(); - Assert.That(tree, Is.EqualTo(t3)); + Assert.Equal(t3, tree); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Set_right_to_null() { var zipper = Zipper.FromTree(t1); var updatedZipper = zipper.Left().SetRight(null); var tree = updatedZipper.ToTree(); - Assert.That(tree, Is.EqualTo(t4)); + Assert.Equal(t4, tree); } - [Ignore("Remove to run test")] - [Test] + [Fact(Skip = "Remove to run test")] public void Different_paths_to_same_zipper() { var zipper = Zipper.FromTree(t1); - Assert.That(zipper.Left().Up().Right().ToTree(), Is.EqualTo(zipper.Right().ToTree())); + Assert.Equal(zipper.Right().ToTree(), zipper.Left().Up().Right().ToTree()); } } diff --git a/paket.dependencies b/paket.dependencies index f0d9b2cfbd..65f7891752 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -1,6 +1,5 @@ source https://www.nuget.org/api/v2/ nuget FAKE -nuget NUnit -nuget NUnit.ConsoleRunner nuget Sprache -github nunit/nunit-transforms nunit3-junit/nunit3-junit.xslt \ No newline at end of file +nuget xunit +nuget xunit.runner.console \ No newline at end of file diff --git a/paket.lock b/paket.lock index a5c07c45eb..cf5c9d5d24 100644 --- a/paket.lock +++ b/paket.lock @@ -1,80 +1,163 @@ NUGET remote: https://www.nuget.org/api/v2 - FAKE (4.37.2) - Microsoft.NETCore.Platforms (1.0.1) - framework: netstandard10, >= netstandard12 - Microsoft.NETCore.Targets (1.0.1) - framework: netstandard10, >= netstandard12 - NUnit (3.4.1) - NUnit.ConsoleRunner (3.4.1) + FAKE (4.50) + Microsoft.NETCore.Platforms (1.1) - framework: dnxcore50, netstandard10, >= netstandard12 + Microsoft.NETCore.Targets (1.1) - framework: dnxcore50, netstandard10, >= netstandard12 Sprache (2.1) System.Globalization (>= 4.0.11) - framework: >= netstandard10 System.Linq (>= 4.1) - framework: >= netstandard10 System.Runtime (>= 4.1) - framework: >= netstandard10 System.Text.RegularExpressions (>= 4.1) - framework: >= netstandard10 - System.Collections (4.0.11) - framework: netstandard10, >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.0.1) - framework: dnxcore50, netstandard10, >= netstandard13 - Microsoft.NETCore.Targets (>= 1.0.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Runtime (>= 4.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Diagnostics.Debug (4.0.11) - framework: >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.0.1) - framework: dnxcore50, netstandard10, >= netstandard13 - Microsoft.NETCore.Targets (>= 1.0.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Runtime (>= 4.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Globalization (4.0.11) - framework: >= netstandard10 - Microsoft.NETCore.Platforms (>= 1.0.1) - framework: dnxcore50, netstandard10, >= netstandard13 - Microsoft.NETCore.Targets (>= 1.0.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Runtime (>= 4.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.IO (4.1) - framework: >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.0.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - Microsoft.NETCore.Targets (>= 1.0.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Runtime (>= 4.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Text.Encoding (>= 4.0.11) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Threading.Tasks (>= 4.0.11) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Linq (4.1) - framework: >= netstandard10 - System.Collections (>= 4.0.11) - framework: dnxcore50, netstandard10, >= netstandard16 - System.Diagnostics.Debug (>= 4.0.11) - framework: dnxcore50, >= netstandard16 - System.Resources.ResourceManager (>= 4.0.1) - framework: dnxcore50, >= netstandard16 - System.Runtime (>= 4.1) - framework: dnxcore50, netstandard10, >= netstandard16 - System.Runtime.Extensions (>= 4.1) - framework: dnxcore50, >= netstandard16 - System.Reflection (4.1) - framework: >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.0.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - Microsoft.NETCore.Targets (>= 1.0.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.IO (>= 4.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Reflection.Primitives (>= 4.0.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Runtime (>= 4.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Reflection.Primitives (4.0.1) - framework: >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.0.1) - framework: dnxcore50, >= netstandard10 - Microsoft.NETCore.Targets (>= 1.0.1) - framework: dnxcore50, >= netstandard10 - System.Runtime (>= 4.1) - framework: dnxcore50, >= netstandard10 - System.Resources.ResourceManager (4.0.1) - framework: >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.0.1) - framework: dnxcore50, >= netstandard10 - Microsoft.NETCore.Targets (>= 1.0.1) - framework: dnxcore50, >= netstandard10 - System.Globalization (>= 4.0.11) - framework: dnxcore50, >= netstandard10 - System.Reflection (>= 4.1) - framework: dnxcore50, >= netstandard10 - System.Runtime (>= 4.1) - framework: dnxcore50, >= netstandard10 - System.Runtime (4.1) - framework: >= netstandard10 - Microsoft.NETCore.Platforms (>= 1.0.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15 - Microsoft.NETCore.Targets (>= 1.0.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15 - System.Runtime.Extensions (4.1) - framework: >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.0.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - Microsoft.NETCore.Targets (>= 1.0.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Runtime (>= 4.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Text.Encoding (4.0.11) - framework: >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.0.1) - framework: dnxcore50, netstandard10, >= netstandard13 - Microsoft.NETCore.Targets (>= 1.0.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Runtime (>= 4.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Text.RegularExpressions (4.1) - framework: >= netstandard10 - System.Collections (>= 4.0.11) - framework: dnxcore50, >= netstandard16 - System.Globalization (>= 4.0.11) - framework: dnxcore50, >= netstandard16 - System.Resources.ResourceManager (>= 4.0.1) - framework: dnxcore50, >= netstandard16 - System.Runtime (>= 4.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16 - System.Runtime.Extensions (>= 4.1) - framework: dnxcore50, >= netstandard16 - System.Threading (>= 4.0.11) - framework: dnxcore50, >= netstandard16 - System.Threading (4.0.11) - framework: >= netstandard16 - System.Runtime (>= 4.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Threading.Tasks (>= 4.0.11) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Threading.Tasks (4.0.11) - framework: >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.0.1) - framework: dnxcore50, netstandard10, >= netstandard13 - Microsoft.NETCore.Targets (>= 1.0.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Runtime (>= 4.1) - framework: dnxcore50, netstandard10, >= netstandard13 -GITHUB - remote: nunit/nunit-transforms - nunit3-junit/nunit3-junit.xslt (2a7c74198375b4b280ff3e79033c3d44e3083850) \ No newline at end of file + System.Collections (4.3) - framework: dnxcore50, netstandard10, >= netstandard16 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 + System.Diagnostics.Contracts (4.3) - framework: dnxcore50 + System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10 + System.Diagnostics.Debug (4.3) - framework: dnxcore50, >= netstandard16 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 + System.Globalization (4.3) - framework: dnxcore50, >= netstandard10 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 + System.IO (4.3) - framework: dnxcore50, >= netstandard16 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + System.Linq (4.3) - framework: dnxcore50, >= netstandard10 + System.Collections (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard16 + System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard16 + System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Linq.Expressions (4.3) - framework: dnxcore50 + System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.IO (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Linq (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Reflection (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16 + System.Reflection.Emit.ILGeneration (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Reflection.Emit.Lightweight (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Reflection.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Reflection.TypeExtensions (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16 + System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.ObjectModel (4.3) - framework: dnxcore50 + System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13 + System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13 + System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 + System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13 + System.Reflection (4.3) - framework: dnxcore50, >= netstandard16 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + System.IO (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + System.Reflection.Emit.ILGeneration (4.3) - framework: dnxcore50 + System.Reflection.Emit.Lightweight (4.3) - framework: dnxcore50 + System.Reflection.Extensions (4.3) - framework: dnxcore50 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10 + System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard10 + System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10 + System.Reflection.Primitives (4.3) - framework: dnxcore50, >= netstandard16 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10 + System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10 + System.Reflection.TypeExtensions (4.3) - framework: dnxcore50 + System.Diagnostics.Contracts (>= 4.3) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50 + System.Linq (>= 4.3) - framework: dnxcore50 + System.Reflection (>= 4.3) - framework: >= net462, dnxcore50, netstandard13, >= netstandard15 + System.Reflection.Primitives (>= 4.3) - framework: dnxcore50 + System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard15 + System.Runtime.Extensions (>= 4.3) - framework: dnxcore50 + System.Resources.ResourceManager (4.3) - framework: dnxcore50, >= netstandard16 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10 + System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard10 + System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard10 + System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10 + System.Runtime (4.3) - framework: dnxcore50, >= netstandard10 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15 + System.Runtime.Extensions (4.3) - framework: dnxcore50, >= netstandard16 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 + System.Text.Encoding (4.3) - framework: dnxcore50, >= netstandard16 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 + System.Text.RegularExpressions (4.3) - framework: dnxcore50, >= netstandard10 + System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16, netcore11 + System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16 + System.Threading (4.3) - framework: dnxcore50, >= netstandard16 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 + System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 + System.Threading.Tasks (4.3) - framework: dnxcore50, >= netstandard16 + Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 + Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 + System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 + xunit (2.1) + xunit.assert (2.1) + xunit.core (2.1) + xunit.abstractions (2.0) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 + xunit.assert (2.1) + System.Collections (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.ObjectModel (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Text.RegularExpressions (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + xunit.core (2.1) + System.Collections (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + xunit.abstractions (>= 2.0) - framework: dnxcore50 + xunit.extensibility.core (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 + xunit.extensibility.execution (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 + xunit.extensibility.core (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 + xunit.abstractions (2.0) + xunit.extensibility.execution (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 + System.Collections (>= 4.0) - framework: dnxcore50 + System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 + System.Globalization (>= 4.0) - framework: dnxcore50 + System.IO (>= 4.0) - framework: dnxcore50 + System.Linq (>= 4.0) - framework: dnxcore50 + System.Linq.Expressions (>= 4.0) - framework: dnxcore50 + System.Reflection (>= 4.0) - framework: dnxcore50 + System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 + System.Runtime (>= 4.0) - framework: dnxcore50 + System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 + System.Text.Encoding (>= 4.0) - framework: dnxcore50 + System.Threading (>= 4.0) - framework: dnxcore50 + System.Threading.Tasks (>= 4.0) - framework: dnxcore50 + xunit.abstractions (>= 2.0) - framework: dnxcore50 + xunit.extensibility.core (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, xamarinios, winv4.5, wpv8.0, wpav8.1 + xunit.runner.console (2.1) From 10c9164a7cae272333dfdcf49a0e9ed146da3ec3 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Mon, 13 Feb 2017 09:23:45 +0100 Subject: [PATCH 02/19] Add .NET CLI support --- .gitignore | 5 +- build.fsx | 62 +- exercises/accumulate/accumulate.csproj | 14 + exercises/acronym/acronym.csproj | 14 + exercises/all-your-base/all-your-base.csproj | 14 + exercises/allergies/allergies.csproj | 14 + exercises/alphametics/alphametics.csproj | 15 + exercises/anagram/anagram.csproj | 14 + exercises/atbash-cipher/atbash-cipher.csproj | 14 + exercises/bank-account/bank-account.csproj | 14 + exercises/beer-song/beer-song.csproj | 14 + .../binary-search-tree.csproj | 14 + exercises/binary-search/binary-search.csproj | 14 + exercises/bob/bob.csproj | 14 + exercises/book-store/book-store.csproj | 14 + exercises/bowling/bowling.csproj | 14 + exercises/bracket-push/bracket-push.csproj | 14 + exercises/change/change.csproj | 14 + .../circular-buffer/circular-buffer.csproj | 14 + exercises/clock/clock.csproj | 14 + exercises/connect/Example.cs | 49 +- exercises/connect/connect.csproj | 14 + exercises/crypto-square/crypto-square.csproj | 14 + exercises/custom-set/custom-set.csproj | 14 + exercises/diamond/diamond.csproj | 14 + .../difference-of-squares.csproj | 14 + .../diffie-hellman/diffie-hellman.csproj | 14 + exercises/dominoes/dominoes.csproj | 14 + exercises/dot-dsl/dot-dsl.csproj | 14 + .../error-handling/error-handling.csproj | 14 + exercises/etl/etl.csproj | 14 + exercises/exercises.csproj | 351 ---------- exercises/exercises.sln | 654 +++++++++++++++++- exercises/flatten-array/flatten-array.csproj | 14 + exercises/food-chain/food-chain.csproj | 14 + exercises/forth/forth.csproj | 15 + exercises/gigasecond/gigasecond.csproj | 14 + exercises/go-counting/Example.cs | 60 +- exercises/go-counting/GoCountingTest.cs | 31 +- exercises/go-counting/go-counting.csproj | 14 + exercises/grade-school/grade-school.csproj | 14 + exercises/grains/grains.csproj | 14 + exercises/grep/grep.csproj | 14 + exercises/hamming/hamming.csproj | 14 + exercises/hangman/hangman.csproj | 14 + exercises/hello-world/hello-world.csproj | 14 + exercises/house/house.csproj | 14 + exercises/isogram/isogram.csproj | 14 + .../kindergarten-garden.csproj | 14 + .../largest-series-product.csproj | 14 + exercises/leap/leap.csproj | 14 + exercises/ledger/ledger.csproj | 18 + exercises/linked-list/linked-list.csproj | 14 + exercises/list-ops/list-ops.csproj | 14 + exercises/luhn/luhn.csproj | 14 + exercises/markdown/markdown.csproj | 18 + exercises/matrix/matrix.csproj | 14 + exercises/meetup/meetup.csproj | 14 + exercises/minesweeper/minesweeper.csproj | 14 + exercises/nth-prime/nth-prime.csproj | 14 + .../nucleotide-count/nucleotide-count.csproj | 14 + exercises/ocr-numbers/ocr-numbers.csproj | 14 + exercises/paket.references | 2 - .../palindrome-products.csproj | 14 + exercises/pangram/pangram.csproj | 14 + .../parallel-letter-frequency.csproj | 14 + .../pascals-triangle/pascals-triangle.csproj | 14 + .../perfect-numbers/perfect-numbers.csproj | 14 + exercises/phone-number/phone-number.csproj | 14 + exercises/pig-latin/pig-latin.csproj | 14 + exercises/poker/poker.csproj | 14 + exercises/pov/pov.csproj | 14 + exercises/prime-factors/prime-factors.csproj | 14 + .../protein-translation.csproj | 14 + exercises/proverb/proverb.csproj | 14 + .../pythagorean-triplet.csproj | 14 + exercises/queen-attack/queen-attack.csproj | 14 + .../rail-fence-cipher.csproj | 14 + exercises/raindrops/raindrops.csproj | 14 + exercises/react/react.csproj | 14 + exercises/rectangles/Example.cs | 37 +- exercises/rectangles/rectangles.csproj | 14 + .../rna-transcription.csproj | 14 + exercises/robot-name/robot-name.csproj | 14 + .../robot-simulator/robot-simulator.csproj | 14 + .../roman-numerals/roman-numerals.csproj | 14 + .../run-length-encoding.csproj | 14 + exercises/saddle-points/saddle-points.csproj | 14 + exercises/say/say.csproj | 14 + exercises/scale-generator/Example.cs | 2 +- .../scale-generator/scale-generator.csproj | 14 + .../scrabble-score/scrabble-score.csproj | 14 + .../secret-handshake/secret-handshake.csproj | 14 + exercises/series/series.csproj | 14 + exercises/sgf-parsing/SgfParsing.cs | 9 + exercises/sgf-parsing/sgf-parsing.csproj | 19 + exercises/sieve/sieve.csproj | 14 + exercises/simple-cipher/simple-cipher.csproj | 14 + .../simple-linked-list.csproj | 14 + exercises/space-age/space-age.csproj | 14 + exercises/strain/strain.csproj | 14 + exercises/sublist/sublist.csproj | 14 + .../sum-of-multiples/sum-of-multiples.csproj | 14 + exercises/tournament/TournamentTest.cs | 2 +- exercises/tournament/tournament.csproj | 14 + exercises/transpose/transpose.csproj | 14 + exercises/tree-building/tree-building.csproj | 18 + exercises/triangle/triangle.csproj | 14 + exercises/twelve-days/twelve-days.csproj | 14 + exercises/two-bucket/two-bucket.csproj | 14 + .../variable-length-quantity.csproj | 14 + exercises/word-count/word-count.csproj | 14 + exercises/word-search/Example.cs | 38 +- exercises/word-search/WordSearchTest.cs | 37 +- exercises/word-search/word-search.csproj | 14 + exercises/wordy/wordy.csproj | 14 + exercises/zebra-puzzle/zebra-puzzle.csproj | 14 + exercises/zipper/zipper.csproj | 14 + paket.dependencies | 5 +- paket.lock | 160 ----- 120 files changed, 2284 insertions(+), 695 deletions(-) create mode 100644 exercises/accumulate/accumulate.csproj create mode 100644 exercises/acronym/acronym.csproj create mode 100644 exercises/all-your-base/all-your-base.csproj create mode 100644 exercises/allergies/allergies.csproj create mode 100644 exercises/alphametics/alphametics.csproj create mode 100644 exercises/anagram/anagram.csproj create mode 100644 exercises/atbash-cipher/atbash-cipher.csproj create mode 100644 exercises/bank-account/bank-account.csproj create mode 100644 exercises/beer-song/beer-song.csproj create mode 100644 exercises/binary-search-tree/binary-search-tree.csproj create mode 100644 exercises/binary-search/binary-search.csproj create mode 100644 exercises/bob/bob.csproj create mode 100644 exercises/book-store/book-store.csproj create mode 100644 exercises/bowling/bowling.csproj create mode 100644 exercises/bracket-push/bracket-push.csproj create mode 100644 exercises/change/change.csproj create mode 100644 exercises/circular-buffer/circular-buffer.csproj create mode 100644 exercises/clock/clock.csproj create mode 100644 exercises/connect/connect.csproj create mode 100644 exercises/crypto-square/crypto-square.csproj create mode 100644 exercises/custom-set/custom-set.csproj create mode 100644 exercises/diamond/diamond.csproj create mode 100644 exercises/difference-of-squares/difference-of-squares.csproj create mode 100644 exercises/diffie-hellman/diffie-hellman.csproj create mode 100644 exercises/dominoes/dominoes.csproj create mode 100644 exercises/dot-dsl/dot-dsl.csproj create mode 100644 exercises/error-handling/error-handling.csproj create mode 100644 exercises/etl/etl.csproj delete mode 100644 exercises/exercises.csproj create mode 100644 exercises/flatten-array/flatten-array.csproj create mode 100644 exercises/food-chain/food-chain.csproj create mode 100644 exercises/forth/forth.csproj create mode 100644 exercises/gigasecond/gigasecond.csproj create mode 100644 exercises/go-counting/go-counting.csproj create mode 100644 exercises/grade-school/grade-school.csproj create mode 100644 exercises/grains/grains.csproj create mode 100644 exercises/grep/grep.csproj create mode 100644 exercises/hamming/hamming.csproj create mode 100644 exercises/hangman/hangman.csproj create mode 100644 exercises/hello-world/hello-world.csproj create mode 100644 exercises/house/house.csproj create mode 100644 exercises/isogram/isogram.csproj create mode 100644 exercises/kindergarten-garden/kindergarten-garden.csproj create mode 100644 exercises/largest-series-product/largest-series-product.csproj create mode 100644 exercises/leap/leap.csproj create mode 100644 exercises/ledger/ledger.csproj create mode 100644 exercises/linked-list/linked-list.csproj create mode 100644 exercises/list-ops/list-ops.csproj create mode 100644 exercises/luhn/luhn.csproj create mode 100644 exercises/markdown/markdown.csproj create mode 100644 exercises/matrix/matrix.csproj create mode 100644 exercises/meetup/meetup.csproj create mode 100644 exercises/minesweeper/minesweeper.csproj create mode 100644 exercises/nth-prime/nth-prime.csproj create mode 100644 exercises/nucleotide-count/nucleotide-count.csproj create mode 100644 exercises/ocr-numbers/ocr-numbers.csproj delete mode 100644 exercises/paket.references create mode 100644 exercises/palindrome-products/palindrome-products.csproj create mode 100644 exercises/pangram/pangram.csproj create mode 100644 exercises/parallel-letter-frequency/parallel-letter-frequency.csproj create mode 100644 exercises/pascals-triangle/pascals-triangle.csproj create mode 100644 exercises/perfect-numbers/perfect-numbers.csproj create mode 100644 exercises/phone-number/phone-number.csproj create mode 100644 exercises/pig-latin/pig-latin.csproj create mode 100644 exercises/poker/poker.csproj create mode 100644 exercises/pov/pov.csproj create mode 100644 exercises/prime-factors/prime-factors.csproj create mode 100644 exercises/protein-translation/protein-translation.csproj create mode 100644 exercises/proverb/proverb.csproj create mode 100644 exercises/pythagorean-triplet/pythagorean-triplet.csproj create mode 100644 exercises/queen-attack/queen-attack.csproj create mode 100644 exercises/rail-fence-cipher/rail-fence-cipher.csproj create mode 100644 exercises/raindrops/raindrops.csproj create mode 100644 exercises/react/react.csproj create mode 100644 exercises/rectangles/rectangles.csproj create mode 100644 exercises/rna-transcription/rna-transcription.csproj create mode 100644 exercises/robot-name/robot-name.csproj create mode 100644 exercises/robot-simulator/robot-simulator.csproj create mode 100644 exercises/roman-numerals/roman-numerals.csproj create mode 100644 exercises/run-length-encoding/run-length-encoding.csproj create mode 100644 exercises/saddle-points/saddle-points.csproj create mode 100644 exercises/say/say.csproj create mode 100644 exercises/scale-generator/scale-generator.csproj create mode 100644 exercises/scrabble-score/scrabble-score.csproj create mode 100644 exercises/secret-handshake/secret-handshake.csproj create mode 100644 exercises/series/series.csproj create mode 100644 exercises/sgf-parsing/sgf-parsing.csproj create mode 100644 exercises/sieve/sieve.csproj create mode 100644 exercises/simple-cipher/simple-cipher.csproj create mode 100644 exercises/simple-linked-list/simple-linked-list.csproj create mode 100644 exercises/space-age/space-age.csproj create mode 100644 exercises/strain/strain.csproj create mode 100644 exercises/sublist/sublist.csproj create mode 100644 exercises/sum-of-multiples/sum-of-multiples.csproj create mode 100644 exercises/tournament/tournament.csproj create mode 100644 exercises/transpose/transpose.csproj create mode 100644 exercises/tree-building/tree-building.csproj create mode 100644 exercises/triangle/triangle.csproj create mode 100644 exercises/twelve-days/twelve-days.csproj create mode 100644 exercises/two-bucket/two-bucket.csproj create mode 100644 exercises/variable-length-quantity/variable-length-quantity.csproj create mode 100644 exercises/word-count/word-count.csproj create mode 100644 exercises/word-search/word-search.csproj create mode 100644 exercises/wordy/wordy.csproj create mode 100644 exercises/zebra-puzzle/zebra-puzzle.csproj create mode 100644 exercises/zipper/zipper.csproj diff --git a/.gitignore b/.gitignore index 2edac62927..cb95cd5456 100644 --- a/.gitignore +++ b/.gitignore @@ -6,11 +6,12 @@ bin/configlet.exe .fake/ .paket/paket.exe .vs/ +.vscode/ tools/ build/ packages/ paket-files TestResult.xml junit-results.xml -exercises/obj/ -exercises/bin/ \ No newline at end of file +obj/ +bin/ \ No newline at end of file diff --git a/build.fsx b/build.fsx index ff8ac8f94d..6ba75f536b 100644 --- a/build.fsx +++ b/build.fsx @@ -1,54 +1,48 @@ -// Include Fake library #r "./packages/FAKE/tools/FakeLib.dll" open Fake -open Fake.Testing.XUnit2 +open Fake.DotNetCli -// Directories -let buildDir = "./build/" -let sourceDir = "./exercises/" +let buildDir = "./build/" +let sourceDir = "./exercises/" +let projects = !! (buildDir @@ "*/*.csproj") +let tests = !! (buildDir @@ "**/*Test.cs") -// Files -let solutionFile = buildDir @@ "/exercises.csproj" -let compiledOutput = buildDir @@ "xcsharp.dll" +let restore project = DotNetCli.Restore (fun p -> + { p with NoCache = true + Project = project }) -// Targets -Target "PrepareUnchanged" (fun _ -> - CleanDirs [buildDir] - CopyDir buildDir sourceDir allFiles -) +let build project = DotNetCli.Build (fun p -> + { p with Project = project }) -Target "BuildUnchanged" (fun _ -> - MSBuildRelease buildDir "Build" [solutionFile] - |> Log "Build unchanged output: " -) +let test project = DotNetCli.Test (fun p -> + { p with Project = project }) -Target "PrepareTests" (fun _ -> - CleanDirs [buildDir] - CopyDir buildDir sourceDir allFiles +let restoreAndBuild project = + restore project + build project - let ignorePattern = "Skip\s*=\s*\"Remove to run test\"" +let restoreAndTest project = + restore project + test project - !! (buildDir @@ "**/*Test.cs") - |> RegexReplaceInFilesWithEncoding ignorePattern "" System.Text.Encoding.UTF8 +Target "Clean" (fun _ -> + CleanDirs [buildDir] ) -Target "BuildTests" (fun _ -> - MSBuildRelease buildDir "Build" [solutionFile] - |> Log "Build tests output: " +Target "Copy" (fun _ -> + CopyDir buildDir sourceDir allFiles ) Target "Test" (fun _ -> - [compiledOutput] - |> xUnit2 (fun p -> { p with ShadowCopy = false }) + let ignorePattern = "Skip\s*=\s*\"Remove to run test\"" + RegexReplaceInFilesWithEncoding ignorePattern "" System.Text.Encoding.UTF8 tests + + Seq.iter restoreAndTest projects ) -// Build order -"PrepareUnchanged" - ==> "BuildUnchanged" - ==> "PrepareTests" - ==> "BuildTests" +"Clean" + ==> "Copy" ==> "Test" -// start build RunTargetOrDefault "Test" \ No newline at end of file diff --git a/exercises/accumulate/accumulate.csproj b/exercises/accumulate/accumulate.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/accumulate/accumulate.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/acronym/acronym.csproj b/exercises/acronym/acronym.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/acronym/acronym.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/all-your-base/all-your-base.csproj b/exercises/all-your-base/all-your-base.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/all-your-base/all-your-base.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/allergies/allergies.csproj b/exercises/allergies/allergies.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/allergies/allergies.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/alphametics/alphametics.csproj b/exercises/alphametics/alphametics.csproj new file mode 100644 index 0000000000..4a7fd04f22 --- /dev/null +++ b/exercises/alphametics/alphametics.csproj @@ -0,0 +1,15 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + + diff --git a/exercises/anagram/anagram.csproj b/exercises/anagram/anagram.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/anagram/anagram.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/atbash-cipher/atbash-cipher.csproj b/exercises/atbash-cipher/atbash-cipher.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/atbash-cipher/atbash-cipher.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/bank-account/bank-account.csproj b/exercises/bank-account/bank-account.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/bank-account/bank-account.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/beer-song/beer-song.csproj b/exercises/beer-song/beer-song.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/beer-song/beer-song.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/binary-search-tree/binary-search-tree.csproj b/exercises/binary-search-tree/binary-search-tree.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/binary-search-tree/binary-search-tree.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/binary-search/binary-search.csproj b/exercises/binary-search/binary-search.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/binary-search/binary-search.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/bob/bob.csproj b/exercises/bob/bob.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/bob/bob.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/book-store/book-store.csproj b/exercises/book-store/book-store.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/book-store/book-store.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/bowling/bowling.csproj b/exercises/bowling/bowling.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/bowling/bowling.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/bracket-push/bracket-push.csproj b/exercises/bracket-push/bracket-push.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/bracket-push/bracket-push.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/change/change.csproj b/exercises/change/change.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/change/change.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/circular-buffer/circular-buffer.csproj b/exercises/circular-buffer/circular-buffer.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/circular-buffer/circular-buffer.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/clock/clock.csproj b/exercises/clock/clock.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/clock/clock.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/connect/Example.cs b/exercises/connect/Example.cs index deeb71c350..94225be659 100644 --- a/exercises/connect/Example.cs +++ b/exercises/connect/Example.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Drawing; using System.Linq; public class Connect @@ -48,31 +47,31 @@ private static Cell[][] ParseBoard(string input) private int Cols => board[0].Length; private int Rows => board.Length; - private bool IsValidCoordinate(Point coordinate) => - coordinate.Y >= 0 && coordinate.Y < Rows && - coordinate.X >= 0 && coordinate.X < Cols; + private bool IsValidCoordinate(Tuple coordinate) => + coordinate.Item2 >= 0 && coordinate.Item2 < Rows && + coordinate.Item1 >= 0 && coordinate.Item1 < Cols; - private bool CellAtCoordinateEquals(Cell cell, Point coordinate) => board[coordinate.Y][coordinate.X] == cell; + private bool CellAtCoordinateEquals(Cell cell, Tuple coordinate) => board[coordinate.Item2][coordinate.Item1] == cell; - private HashSet Adjacent(Cell cell, Point coordinate) + private HashSet> Adjacent(Cell cell, Tuple coordinate) { - var row = coordinate.Y; - var col = coordinate.X; + var row = coordinate.Item2; + var col = coordinate.Item1; var coords = new[] { - new Point(col + 1, row - 1), - new Point(col, row - 1), - new Point(col - 1, row ), - new Point(col + 1, row ), - new Point(col - 1, row + 1), - new Point(col, row + 1) + new Tuple(col + 1, row - 1), + new Tuple(col, row - 1), + new Tuple(col - 1, row ), + new Tuple(col + 1, row ), + new Tuple(col - 1, row + 1), + new Tuple(col, row + 1) }; - return new HashSet(coords.Where(coord => IsValidCoordinate(coord) && CellAtCoordinateEquals(cell, coord))); + return new HashSet>(coords.Where(coord => IsValidCoordinate(coord) && CellAtCoordinateEquals(cell, coord))); } - private bool ValidPath(Cell cell, Func stop, HashSet processed, Point coordinate) + private bool ValidPath(Cell cell, Func, bool> stop, HashSet> processed, Tuple coordinate) { if (stop(board, coordinate)) return true; @@ -84,25 +83,25 @@ private bool ValidPath(Cell cell, Func stop, HashSet { - var updatedProcessed = new HashSet(processed); + var updatedProcessed = new HashSet>(processed); updatedProcessed.Add(nextCoord); return ValidPath(cell, stop, updatedProcessed, nextCoord); }); } - private bool IsWhiteStop(Cell[][] board, Point coordinate) => coordinate.Y == Rows - 1; - private bool IsBlackStop(Cell[][] board, Point coordinate) => coordinate.X == Cols - 1; + private bool IsWhiteStop(Cell[][] board, Tuple coordinate) => coordinate.Item2 == Rows - 1; + private bool IsBlackStop(Cell[][] board, Tuple coordinate) => coordinate.Item1 == Cols - 1; - private HashSet WhiteStart() => - new HashSet(Enumerable.Range(0, Cols).Select(col => new Point(col, 0)).Where(coord => CellAtCoordinateEquals(Cell.White, coord))); + private HashSet> WhiteStart() => + new HashSet>(Enumerable.Range(0, Cols).Select(col => new Tuple(col, 0)).Where(coord => CellAtCoordinateEquals(Cell.White, coord))); - private HashSet BlackStart() => - new HashSet(Enumerable.Range(0, Rows).Select(row => new Point(0, row)).Where(coord => CellAtCoordinateEquals(Cell.Black, coord))); + private HashSet> BlackStart() => + new HashSet>(Enumerable.Range(0, Rows).Select(row => new Tuple(0, row)).Where(coord => CellAtCoordinateEquals(Cell.Black, coord))); - private bool ColorWins(Cell cell, Func stop, Func> start) + private bool ColorWins(Cell cell, Func, bool> stop, Func>> start) { - return start().Any(coordinate => ValidPath(cell, stop, new HashSet(), coordinate)); + return start().Any(coordinate => ValidPath(cell, stop, new HashSet>(), coordinate)); } private bool WhiteWins() => ColorWins(Cell.White, IsWhiteStop, WhiteStart); diff --git a/exercises/connect/connect.csproj b/exercises/connect/connect.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/connect/connect.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/crypto-square/crypto-square.csproj b/exercises/crypto-square/crypto-square.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/crypto-square/crypto-square.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/custom-set/custom-set.csproj b/exercises/custom-set/custom-set.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/custom-set/custom-set.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/diamond/diamond.csproj b/exercises/diamond/diamond.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/diamond/diamond.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/difference-of-squares/difference-of-squares.csproj b/exercises/difference-of-squares/difference-of-squares.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/difference-of-squares/difference-of-squares.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/diffie-hellman/diffie-hellman.csproj b/exercises/diffie-hellman/diffie-hellman.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/diffie-hellman/diffie-hellman.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/dominoes/dominoes.csproj b/exercises/dominoes/dominoes.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/dominoes/dominoes.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/dot-dsl/dot-dsl.csproj b/exercises/dot-dsl/dot-dsl.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/dot-dsl/dot-dsl.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/error-handling/error-handling.csproj b/exercises/error-handling/error-handling.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/error-handling/error-handling.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/etl/etl.csproj b/exercises/etl/etl.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/etl/etl.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/exercises.csproj b/exercises/exercises.csproj deleted file mode 100644 index 4a87d0915b..0000000000 --- a/exercises/exercises.csproj +++ /dev/null @@ -1,351 +0,0 @@ - - - - - Debug - AnyCPU - {FEF69435-D885-45DD-A446-04FD3BD3F593} - Library - Properties - xcsharp - xcsharp - v4.5 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - - - - - - - <__paket__xunit_core_props>portable-net45+win8+wp8+wpa81\xunit.core - - - - - <__paket__xunit_core_props>win81\xunit.core - - - - - <__paket__xunit_core_props>wpa81\xunit.core - - - - - - - - - ..\packages\Sprache\lib\net35\Sprache.dll - True - True - - - - - - - ..\packages\Sprache\lib\net40\Sprache.dll - True - True - - - - - - - ..\packages\Sprache\lib\netstandard1.0\Sprache.dll - True - True - - - - - - - ..\packages\Sprache\lib\sl50\Sprache.dll - True - True - - - - - - - - - ..\packages\System.Collections\ref\netstandard1.0\System.Collections.dll - False - True - - - - - - - ..\packages\System.Collections\ref\netstandard1.3\System.Collections.dll - False - True - - - - - - - - - ..\packages\System.Globalization\ref\netstandard1.0\System.Globalization.dll - False - True - - - - - - - ..\packages\System.Globalization\ref\netstandard1.3\System.Globalization.dll - False - True - - - - - - - - - ..\packages\System.Linq\lib\netstandard1.6\System.Linq.dll - True - True - - - - - - - - - ..\packages\System.Runtime\ref\netstandard1.0\System.Runtime.dll - False - True - - - - - - - ..\packages\System.Runtime\ref\netstandard1.2\System.Runtime.dll - False - True - - - - - - - ..\packages\System.Runtime\ref\netstandard1.3\System.Runtime.dll - False - True - - - - - - - ..\packages\System.Runtime\ref\netstandard1.5\System.Runtime.dll - False - True - - - - - - - - - ..\packages\System.Text.RegularExpressions\ref\netstandard1.0\System.Text.RegularExpressions.dll - False - True - - - - - - - ..\packages\System.Text.RegularExpressions\ref\netstandard1.3\System.Text.RegularExpressions.dll - False - True - - - - - - - ..\packages\System.Text.RegularExpressions\lib\netstandard1.6\System.Text.RegularExpressions.dll - True - True - - - - - - - - - ..\packages\System.Threading\lib\netstandard1.3\System.Threading.dll - True - True - - - - - - - - - ..\packages\xunit.abstractions\lib\net35\xunit.abstractions.dll - True - True - - - - - - - ..\packages\xunit.abstractions\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.abstractions.dll - True - True - - - - - - - - - ..\packages\xunit.assert\lib\portable-net45+win8+wp8+wpa81\xunit.assert.dll - True - True - - - - - - - - - ..\packages\xunit.extensibility.core\lib\portable-net45+win8+wp8+wpa81\xunit.core.dll - True - True - - - - - - - - - ..\packages\xunit.extensibility.execution\lib\monoandroid\xunit.execution.dotnet.dll - True - True - - - - - - - ..\packages\xunit.extensibility.execution\lib\monotouch\xunit.execution.dotnet.dll - True - True - - - - - - - ..\packages\xunit.extensibility.execution\lib\net45\xunit.execution.desktop.dll - True - True - - - - - - - ..\packages\xunit.extensibility.execution\lib\portable-net45+win8+wp8+wpa81\xunit.execution.dotnet.dll - True - True - - - - - - - ..\packages\xunit.extensibility.execution\lib\win8\xunit.execution.dotnet.dll - True - True - - - - - - - ..\packages\xunit.extensibility.execution\lib\wp8\xunit.execution.dotnet.dll - True - True - - - - - - - ..\packages\xunit.extensibility.execution\lib\wpa81\xunit.execution.dotnet.dll - True - True - - - - - - - ..\packages\xunit.extensibility.execution\lib\xamarinios\xunit.execution.dotnet.dll - True - True - - - - - \ No newline at end of file diff --git a/exercises/exercises.sln b/exercises/exercises.sln index dee915d11f..39159a62f9 100644 --- a/exercises/exercises.sln +++ b/exercises/exercises.sln @@ -1,22 +1,654 @@ - + Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "exercises", "exercises.csproj", "{FEF69435-D885-45DD-A446-04FD3BD3F593}" +# Visual Studio 15 +VisualStudioVersion = 15.0.26124.0 +MinimumVisualStudioVersion = 15.0.26124.0 +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "accumulate", "accumulate\accumulate.csproj", "{D063D598-EF0B-4EC7-9524-1CF222700A29}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "acronym", "acronym\acronym.csproj", "{F3F868D6-685C-45C2-B02E-8B9A2F9E7A83}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "all-your-base", "all-your-base\all-your-base.csproj", "{3B9B9B58-4761-437E-B98D-F94B142412F6}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "allergies", "allergies\allergies.csproj", "{7DF688C8-9CD6-45FE-B696-965B12DA1C63}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "alphametics", "alphametics\alphametics.csproj", "{B7B980BA-1138-42CB-9527-1AA7BB66C1F0}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "anagram", "anagram\anagram.csproj", "{4D9695D7-B8F8-43E2-BF32-2885168579BC}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "atbash-cipher", "atbash-cipher\atbash-cipher.csproj", "{2DF2F8DD-D63E-43FC-B6E9-94215E2ECD5F}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "bank-account", "bank-account\bank-account.csproj", "{A6A9102E-2C10-4216-A67E-D5B3AF6D748A}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "beer-song", "beer-song\beer-song.csproj", "{9BCE5F2A-8D24-48A3-B064-E52933EFDA82}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "binary-search", "binary-search\binary-search.csproj", "{8018A132-1A85-49F3-954D-EBDC8A2A6CB6}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "binary-search-tree", "binary-search-tree\binary-search-tree.csproj", "{1CD5C9E3-1FA5-4B50-8FC4-98CEAC06AF2D}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "bob", "bob\bob.csproj", "{9BC41F0F-BB6A-4639-98A0-B04C11AF29D9}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "book-store", "book-store\book-store.csproj", "{794CDC10-A8B0-4D95-B183-89E85035DACB}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "bowling", "bowling\bowling.csproj", "{5B17F837-BA6F-4673-83AF-D6AC370A4911}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "bracket-push", "bracket-push\bracket-push.csproj", "{1E0AFCE4-7B81-4886-ACF9-7F182EDDA68D}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "change", "change\change.csproj", "{3F9927FC-E00B-4489-80A0-8A2228345671}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "circular-buffer", "circular-buffer\circular-buffer.csproj", "{F1832F90-E545-4162-9ECD-253A320EAD3D}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "clock", "clock\clock.csproj", "{897D63F4-9739-4BAA-A8B1-E2A28B86AF5D}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "connect", "connect\connect.csproj", "{059B4355-EA9F-40CC-B7E4-8ECDB57CAABD}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "crypto-square", "crypto-square\crypto-square.csproj", "{7C7DD54D-9E2F-4A06-A139-C874FE8FA6A0}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "custom-set", "custom-set\custom-set.csproj", "{3A833915-014C-4763-8B7C-F72115C34865}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "diamond", "diamond\diamond.csproj", "{61356A52-5145-466B-8290-7914A548A83E}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "difference-of-squares", "difference-of-squares\difference-of-squares.csproj", "{CC5ACDA0-D567-4C27-A1FD-C2A06C68E458}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "diffie-hellman", "diffie-hellman\diffie-hellman.csproj", "{40237254-9B27-4C58-B0D7-77D664557E91}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "dominoes", "dominoes\dominoes.csproj", "{D2F79385-4B12-41F9-B1D0-E9DA5C4C2733}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "dot-dsl", "dot-dsl\dot-dsl.csproj", "{68A33556-4669-4961-B700-6D508518BCA7}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "error-handling", "error-handling\error-handling.csproj", "{546A1A24-4939-4F21-8F39-DBD75B603B53}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "etl", "etl\etl.csproj", "{E1D3570B-918A-4953-B41F-100AE9B2504D}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "flatten-array", "flatten-array\flatten-array.csproj", "{C8144EE9-EBC2-44D4-9CAE-5E8EA7BA7068}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "food-chain", "food-chain\food-chain.csproj", "{9EBE7704-56EB-44A5-82EF-8F45C98AD53A}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "forth", "forth\forth.csproj", "{92FF324F-14DF-431B-9E04-2758B0662CFA}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "gigasecond", "gigasecond\gigasecond.csproj", "{7EA802D9-B45E-473C-A09A-D27A13CFD1C6}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "go-counting", "go-counting\go-counting.csproj", "{665D4251-D44E-4EF2-B93D-2CCAD7FF1701}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "grade-school", "grade-school\grade-school.csproj", "{5E547307-71A1-41BC-A08A-24E3F787CC63}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "grains", "grains\grains.csproj", "{8384B7A0-2BC1-44E3-BF03-694319045C49}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "grep", "grep\grep.csproj", "{44AD4D28-EB10-4854-A91B-14CE3784DFA5}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "hamming", "hamming\hamming.csproj", "{75F2F415-98B0-449B-98BC-B324DC983FAD}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "hangman", "hangman\hangman.csproj", "{D8766F5F-B484-490B-8940-438ECFD221AF}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "hello-world", "hello-world\hello-world.csproj", "{05154CE6-C9DD-4D5C-ABA5-52731F05274A}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "house", "house\house.csproj", "{2E6C4EB3-6307-493C-9258-359F7C3FF38E}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "isogram", "isogram\isogram.csproj", "{903D5674-6527-4C4D-89B4-D6A435EF8091}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "kindergarten-garden", "kindergarten-garden\kindergarten-garden.csproj", "{B05F63CD-2E95-45DC-8760-42B2FDB8CA07}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "largest-series-product", "largest-series-product\largest-series-product.csproj", "{579C646B-9261-4CCE-B639-8C25C2F6FC85}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "leap", "leap\leap.csproj", "{CC0F2F90-FB74-495E-87D1-5025FE6D0FD2}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ledger", "ledger\ledger.csproj", "{60E9423E-0513-4E43-9AB5-24AA3ED608E9}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "linked-list", "linked-list\linked-list.csproj", "{36A78BD2-DFFC-4551-BAE1-70C8DDEAC23E}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "list-ops", "list-ops\list-ops.csproj", "{79ADD139-E6DE-46E0-A183-3E126EDDBC4B}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "luhn", "luhn\luhn.csproj", "{668842AF-86CD-4397-8C00-D40B4163806C}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "markdown", "markdown\markdown.csproj", "{86D5BB24-8A64-4DB0-B878-E0946B9A1EF8}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "matrix", "matrix\matrix.csproj", "{81693A36-6034-4B6E-8EE1-DDB9BAD0997B}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "meetup", "meetup\meetup.csproj", "{38C26EFC-4134-4A6A-AC3C-DCD06588EC01}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "minesweeper", "minesweeper\minesweeper.csproj", "{F5E865C0-9E3A-424F-89A0-A83B89A3954E}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "nth-prime", "nth-prime\nth-prime.csproj", "{2936F95B-DB62-44A9-8988-8BAC809D477A}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "nucleotide-count", "nucleotide-count\nucleotide-count.csproj", "{20D30203-F647-4B3E-B0DF-37C0CE51EB28}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ocr-numbers", "ocr-numbers\ocr-numbers.csproj", "{3F0704F2-4B42-4799-B96C-FEA52B66E0AA}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "packages", "packages\packages.csproj", "{81354A14-A306-412E-9763-4E4F45B5BF9B}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "palindrome-products", "palindrome-products\palindrome-products.csproj", "{7BB236CB-A44C-4360-B14E-6E1F90CDC646}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "pangram", "pangram\pangram.csproj", "{7AF4B76F-ADD1-4579-9ED0-0A1D68870AB2}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "parallel-letter-frequency", "parallel-letter-frequency\parallel-letter-frequency.csproj", "{B3B282BD-F0E5-4095-A354-82FA02EFA037}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "pascals-triangle", "pascals-triangle\pascals-triangle.csproj", "{A8128E38-6760-42FE-9DB9-2EA3A7F54CDA}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "perfect-numbers", "perfect-numbers\perfect-numbers.csproj", "{B67E68F4-4256-448E-8F7A-BF7E69B22D69}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "phone-number", "phone-number\phone-number.csproj", "{23E6A4E8-4A4B-46C7-984A-4EDF2EBE383B}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "pig-latin", "pig-latin\pig-latin.csproj", "{193780BF-A7BE-41ED-A2D1-582C5A956E60}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "poker", "poker\poker.csproj", "{30F201A3-0F44-45B9-A6D8-84DFFBE62050}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "pov", "pov\pov.csproj", "{A2AE7A88-09EA-4867-A282-915E3BDBA33F}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "prime-factors", "prime-factors\prime-factors.csproj", "{6748F003-FEAB-4124-9B0B-C72F59401E1F}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "protein-translation", "protein-translation\protein-translation.csproj", "{5A70513A-2090-409D-B54D-35C85582BBEF}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "proverb", "proverb\proverb.csproj", "{4FBBF373-D315-4CD7-937B-AA168652ABAA}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "pythagorean-triplet", "pythagorean-triplet\pythagorean-triplet.csproj", "{17DF526B-2E81-4694-9F65-44905800134B}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "queen-attack", "queen-attack\queen-attack.csproj", "{A32A60C5-09F3-4C1A-9FB2-783A51A41885}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "rail-fence-cipher", "rail-fence-cipher\rail-fence-cipher.csproj", "{4A98A66A-03E4-4958-8856-763561C2BDD8}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "raindrops", "raindrops\raindrops.csproj", "{DE1D6036-786D-45B9-B6E6-1C47DBC56AD0}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "react", "react\react.csproj", "{938247C6-DF24-4C04-A064-F480942138CB}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "rectangles", "rectangles\rectangles.csproj", "{9F483C40-467F-4A37-B610-CEDA12C64394}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "rna-transcription", "rna-transcription\rna-transcription.csproj", "{64F92163-4AA8-4C73-BD53-1EACC26E6DF2}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "robot-name", "robot-name\robot-name.csproj", "{4CE0EC4F-C062-4CB7-81FF-A76AF879A99B}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "robot-simulator", "robot-simulator\robot-simulator.csproj", "{A00E48C5-43A1-4199-9884-F507FCE7D86D}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "roman-numerals", "roman-numerals\roman-numerals.csproj", "{EC1A5746-4444-4658-9690-47EAA943B9FC}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "run-length-encoding", "run-length-encoding\run-length-encoding.csproj", "{98318985-17D7-4543-8F0F-C17732BC6297}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "saddle-points", "saddle-points\saddle-points.csproj", "{908DCE45-7F26-401E-903F-AD640679E0A7}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "say", "say\say.csproj", "{19E97F97-32FC-499F-BD76-DF62C36DF492}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "scale-generator", "scale-generator\scale-generator.csproj", "{CEDC1F1D-E20E-4B13-A7B7-43A1728193CB}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "scrabble-score", "scrabble-score\scrabble-score.csproj", "{324941D7-FA9C-4021-B0BB-D1E55E4179A8}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "secret-handshake", "secret-handshake\secret-handshake.csproj", "{DE92DD5C-87F9-4B6F-BC8E-B56FEE7E3C06}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "series", "series\series.csproj", "{78D5DF1B-7E42-4BFB-AF90-20608C2898FA}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "sgf-parsing", "sgf-parsing\sgf-parsing.csproj", "{894F3F35-7C20-4F83-A6E9-FA5DBBCD89CC}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "sieve", "sieve\sieve.csproj", "{F36F8F8B-54B9-4309-9E47-6B8D1B27C34E}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "simple-cipher", "simple-cipher\simple-cipher.csproj", "{9FE55261-595F-463C-A0E1-907F7B40F9E1}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "simple-linked-list", "simple-linked-list\simple-linked-list.csproj", "{120FE8CB-377C-41E0-BB0A-7A682550FA92}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "space-age", "space-age\space-age.csproj", "{D88E3E58-5B30-472C-8CE7-2306F3B3E8AB}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "strain", "strain\strain.csproj", "{5160A0A5-36BD-4A33-8318-7C6D4582A0C3}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "sublist", "sublist\sublist.csproj", "{AB6AE6A9-B1EE-4FB4-A14A-67FB4132F090}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "sum-of-multiples", "sum-of-multiples\sum-of-multiples.csproj", "{9709A07C-1EF0-445E-BD20-8DCF33656353}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "tournament", "tournament\tournament.csproj", "{BA36F7AD-BA4D-40CE-89CA-130C15DE0FCD}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "transpose", "transpose\transpose.csproj", "{A5E9168E-2EE7-4390-9A04-12388DAA7AE0}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "tree-building", "tree-building\tree-building.csproj", "{C7DD3601-FA66-41B3-8655-C6ACC765EBDF}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "triangle", "triangle\triangle.csproj", "{5ACA3E89-2A99-4D3D-96D1-3BA2E4C233F2}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "twelve-days", "twelve-days\twelve-days.csproj", "{B1B0CCAA-FFDD-4FD2-BBAE-16546E623AD8}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "two-bucket", "two-bucket\two-bucket.csproj", "{1130169C-03BA-4EF2-BF24-67615E39084E}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "variable-length-quantity", "variable-length-quantity\variable-length-quantity.csproj", "{7D05F065-EB26-4AF3-99D3-8B05190DA09E}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "word-count", "word-count\word-count.csproj", "{F7DF4759-887F-44A6-9716-0ABA20DB0610}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "word-search", "word-search\word-search.csproj", "{553F61F1-C66F-4F58-8011-D292CD605933}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "wordy", "wordy\wordy.csproj", "{9F068F41-C68F-4E35-B615-01EB361898F0}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "zebra-puzzle", "zebra-puzzle\zebra-puzzle.csproj", "{78C39A81-141E-4D3D-86CC-F3B221C1B6AB}" +EndProject +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "zipper", "zipper\zipper.csproj", "{B40B37DE-CB8E-49F5-93B9-AC1E81696CA2}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {FEF69435-D885-45DD-A446-04FD3BD3F593}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FEF69435-D885-45DD-A446-04FD3BD3F593}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FEF69435-D885-45DD-A446-04FD3BD3F593}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FEF69435-D885-45DD-A446-04FD3BD3F593}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D063D598-EF0B-4EC7-9524-1CF222700A29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D063D598-EF0B-4EC7-9524-1CF222700A29}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D063D598-EF0B-4EC7-9524-1CF222700A29}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D063D598-EF0B-4EC7-9524-1CF222700A29}.Release|Any CPU.Build.0 = Release|Any CPU + {F3F868D6-685C-45C2-B02E-8B9A2F9E7A83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F3F868D6-685C-45C2-B02E-8B9A2F9E7A83}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F3F868D6-685C-45C2-B02E-8B9A2F9E7A83}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F3F868D6-685C-45C2-B02E-8B9A2F9E7A83}.Release|Any CPU.Build.0 = Release|Any CPU + {3B9B9B58-4761-437E-B98D-F94B142412F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B9B9B58-4761-437E-B98D-F94B142412F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B9B9B58-4761-437E-B98D-F94B142412F6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B9B9B58-4761-437E-B98D-F94B142412F6}.Release|Any CPU.Build.0 = Release|Any CPU + {7DF688C8-9CD6-45FE-B696-965B12DA1C63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7DF688C8-9CD6-45FE-B696-965B12DA1C63}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7DF688C8-9CD6-45FE-B696-965B12DA1C63}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7DF688C8-9CD6-45FE-B696-965B12DA1C63}.Release|Any CPU.Build.0 = Release|Any CPU + {B7B980BA-1138-42CB-9527-1AA7BB66C1F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7B980BA-1138-42CB-9527-1AA7BB66C1F0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B7B980BA-1138-42CB-9527-1AA7BB66C1F0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B7B980BA-1138-42CB-9527-1AA7BB66C1F0}.Release|Any CPU.Build.0 = Release|Any CPU + {4D9695D7-B8F8-43E2-BF32-2885168579BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4D9695D7-B8F8-43E2-BF32-2885168579BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D9695D7-B8F8-43E2-BF32-2885168579BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4D9695D7-B8F8-43E2-BF32-2885168579BC}.Release|Any CPU.Build.0 = Release|Any CPU + {2DF2F8DD-D63E-43FC-B6E9-94215E2ECD5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2DF2F8DD-D63E-43FC-B6E9-94215E2ECD5F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2DF2F8DD-D63E-43FC-B6E9-94215E2ECD5F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2DF2F8DD-D63E-43FC-B6E9-94215E2ECD5F}.Release|Any CPU.Build.0 = Release|Any CPU + {A6A9102E-2C10-4216-A67E-D5B3AF6D748A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6A9102E-2C10-4216-A67E-D5B3AF6D748A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6A9102E-2C10-4216-A67E-D5B3AF6D748A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6A9102E-2C10-4216-A67E-D5B3AF6D748A}.Release|Any CPU.Build.0 = Release|Any CPU + {9BCE5F2A-8D24-48A3-B064-E52933EFDA82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9BCE5F2A-8D24-48A3-B064-E52933EFDA82}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9BCE5F2A-8D24-48A3-B064-E52933EFDA82}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9BCE5F2A-8D24-48A3-B064-E52933EFDA82}.Release|Any CPU.Build.0 = Release|Any CPU + {DC8AA97C-2208-4C8F-8819-CFEF8EA5C6B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DC8AA97C-2208-4C8F-8819-CFEF8EA5C6B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DC8AA97C-2208-4C8F-8819-CFEF8EA5C6B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DC8AA97C-2208-4C8F-8819-CFEF8EA5C6B8}.Release|Any CPU.Build.0 = Release|Any CPU + {8018A132-1A85-49F3-954D-EBDC8A2A6CB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8018A132-1A85-49F3-954D-EBDC8A2A6CB6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8018A132-1A85-49F3-954D-EBDC8A2A6CB6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8018A132-1A85-49F3-954D-EBDC8A2A6CB6}.Release|Any CPU.Build.0 = Release|Any CPU + {1CD5C9E3-1FA5-4B50-8FC4-98CEAC06AF2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1CD5C9E3-1FA5-4B50-8FC4-98CEAC06AF2D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1CD5C9E3-1FA5-4B50-8FC4-98CEAC06AF2D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1CD5C9E3-1FA5-4B50-8FC4-98CEAC06AF2D}.Release|Any CPU.Build.0 = Release|Any CPU + {9BC41F0F-BB6A-4639-98A0-B04C11AF29D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9BC41F0F-BB6A-4639-98A0-B04C11AF29D9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9BC41F0F-BB6A-4639-98A0-B04C11AF29D9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9BC41F0F-BB6A-4639-98A0-B04C11AF29D9}.Release|Any CPU.Build.0 = Release|Any CPU + {794CDC10-A8B0-4D95-B183-89E85035DACB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {794CDC10-A8B0-4D95-B183-89E85035DACB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {794CDC10-A8B0-4D95-B183-89E85035DACB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {794CDC10-A8B0-4D95-B183-89E85035DACB}.Release|Any CPU.Build.0 = Release|Any CPU + {5B17F837-BA6F-4673-83AF-D6AC370A4911}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5B17F837-BA6F-4673-83AF-D6AC370A4911}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5B17F837-BA6F-4673-83AF-D6AC370A4911}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B17F837-BA6F-4673-83AF-D6AC370A4911}.Release|Any CPU.Build.0 = Release|Any CPU + {1E0AFCE4-7B81-4886-ACF9-7F182EDDA68D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1E0AFCE4-7B81-4886-ACF9-7F182EDDA68D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1E0AFCE4-7B81-4886-ACF9-7F182EDDA68D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1E0AFCE4-7B81-4886-ACF9-7F182EDDA68D}.Release|Any CPU.Build.0 = Release|Any CPU + {3F9927FC-E00B-4489-80A0-8A2228345671}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F9927FC-E00B-4489-80A0-8A2228345671}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F9927FC-E00B-4489-80A0-8A2228345671}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F9927FC-E00B-4489-80A0-8A2228345671}.Release|Any CPU.Build.0 = Release|Any CPU + {F1832F90-E545-4162-9ECD-253A320EAD3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1832F90-E545-4162-9ECD-253A320EAD3D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1832F90-E545-4162-9ECD-253A320EAD3D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1832F90-E545-4162-9ECD-253A320EAD3D}.Release|Any CPU.Build.0 = Release|Any CPU + {897D63F4-9739-4BAA-A8B1-E2A28B86AF5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {897D63F4-9739-4BAA-A8B1-E2A28B86AF5D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {897D63F4-9739-4BAA-A8B1-E2A28B86AF5D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {897D63F4-9739-4BAA-A8B1-E2A28B86AF5D}.Release|Any CPU.Build.0 = Release|Any CPU + {059B4355-EA9F-40CC-B7E4-8ECDB57CAABD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {059B4355-EA9F-40CC-B7E4-8ECDB57CAABD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {059B4355-EA9F-40CC-B7E4-8ECDB57CAABD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {059B4355-EA9F-40CC-B7E4-8ECDB57CAABD}.Release|Any CPU.Build.0 = Release|Any CPU + {7C7DD54D-9E2F-4A06-A139-C874FE8FA6A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7C7DD54D-9E2F-4A06-A139-C874FE8FA6A0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C7DD54D-9E2F-4A06-A139-C874FE8FA6A0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7C7DD54D-9E2F-4A06-A139-C874FE8FA6A0}.Release|Any CPU.Build.0 = Release|Any CPU + {3A833915-014C-4763-8B7C-F72115C34865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3A833915-014C-4763-8B7C-F72115C34865}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3A833915-014C-4763-8B7C-F72115C34865}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3A833915-014C-4763-8B7C-F72115C34865}.Release|Any CPU.Build.0 = Release|Any CPU + {61356A52-5145-466B-8290-7914A548A83E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61356A52-5145-466B-8290-7914A548A83E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61356A52-5145-466B-8290-7914A548A83E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {61356A52-5145-466B-8290-7914A548A83E}.Release|Any CPU.Build.0 = Release|Any CPU + {CC5ACDA0-D567-4C27-A1FD-C2A06C68E458}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CC5ACDA0-D567-4C27-A1FD-C2A06C68E458}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC5ACDA0-D567-4C27-A1FD-C2A06C68E458}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CC5ACDA0-D567-4C27-A1FD-C2A06C68E458}.Release|Any CPU.Build.0 = Release|Any CPU + {40237254-9B27-4C58-B0D7-77D664557E91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {40237254-9B27-4C58-B0D7-77D664557E91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {40237254-9B27-4C58-B0D7-77D664557E91}.Release|Any CPU.ActiveCfg = Release|Any CPU + {40237254-9B27-4C58-B0D7-77D664557E91}.Release|Any CPU.Build.0 = Release|Any CPU + {D2F79385-4B12-41F9-B1D0-E9DA5C4C2733}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D2F79385-4B12-41F9-B1D0-E9DA5C4C2733}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D2F79385-4B12-41F9-B1D0-E9DA5C4C2733}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D2F79385-4B12-41F9-B1D0-E9DA5C4C2733}.Release|Any CPU.Build.0 = Release|Any CPU + {68A33556-4669-4961-B700-6D508518BCA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {68A33556-4669-4961-B700-6D508518BCA7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {68A33556-4669-4961-B700-6D508518BCA7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {68A33556-4669-4961-B700-6D508518BCA7}.Release|Any CPU.Build.0 = Release|Any CPU + {546A1A24-4939-4F21-8F39-DBD75B603B53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {546A1A24-4939-4F21-8F39-DBD75B603B53}.Debug|Any CPU.Build.0 = Debug|Any CPU + {546A1A24-4939-4F21-8F39-DBD75B603B53}.Release|Any CPU.ActiveCfg = Release|Any CPU + {546A1A24-4939-4F21-8F39-DBD75B603B53}.Release|Any CPU.Build.0 = Release|Any CPU + {E1D3570B-918A-4953-B41F-100AE9B2504D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E1D3570B-918A-4953-B41F-100AE9B2504D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E1D3570B-918A-4953-B41F-100AE9B2504D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E1D3570B-918A-4953-B41F-100AE9B2504D}.Release|Any CPU.Build.0 = Release|Any CPU + {C8144EE9-EBC2-44D4-9CAE-5E8EA7BA7068}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C8144EE9-EBC2-44D4-9CAE-5E8EA7BA7068}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C8144EE9-EBC2-44D4-9CAE-5E8EA7BA7068}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C8144EE9-EBC2-44D4-9CAE-5E8EA7BA7068}.Release|Any CPU.Build.0 = Release|Any CPU + {9EBE7704-56EB-44A5-82EF-8F45C98AD53A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9EBE7704-56EB-44A5-82EF-8F45C98AD53A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9EBE7704-56EB-44A5-82EF-8F45C98AD53A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9EBE7704-56EB-44A5-82EF-8F45C98AD53A}.Release|Any CPU.Build.0 = Release|Any CPU + {92FF324F-14DF-431B-9E04-2758B0662CFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {92FF324F-14DF-431B-9E04-2758B0662CFA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {92FF324F-14DF-431B-9E04-2758B0662CFA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {92FF324F-14DF-431B-9E04-2758B0662CFA}.Release|Any CPU.Build.0 = Release|Any CPU + {7EA802D9-B45E-473C-A09A-D27A13CFD1C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7EA802D9-B45E-473C-A09A-D27A13CFD1C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7EA802D9-B45E-473C-A09A-D27A13CFD1C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7EA802D9-B45E-473C-A09A-D27A13CFD1C6}.Release|Any CPU.Build.0 = Release|Any CPU + {665D4251-D44E-4EF2-B93D-2CCAD7FF1701}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {665D4251-D44E-4EF2-B93D-2CCAD7FF1701}.Debug|Any CPU.Build.0 = Debug|Any CPU + {665D4251-D44E-4EF2-B93D-2CCAD7FF1701}.Release|Any CPU.ActiveCfg = Release|Any CPU + {665D4251-D44E-4EF2-B93D-2CCAD7FF1701}.Release|Any CPU.Build.0 = Release|Any CPU + {5E547307-71A1-41BC-A08A-24E3F787CC63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5E547307-71A1-41BC-A08A-24E3F787CC63}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5E547307-71A1-41BC-A08A-24E3F787CC63}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5E547307-71A1-41BC-A08A-24E3F787CC63}.Release|Any CPU.Build.0 = Release|Any CPU + {8384B7A0-2BC1-44E3-BF03-694319045C49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8384B7A0-2BC1-44E3-BF03-694319045C49}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8384B7A0-2BC1-44E3-BF03-694319045C49}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8384B7A0-2BC1-44E3-BF03-694319045C49}.Release|Any CPU.Build.0 = Release|Any CPU + {44AD4D28-EB10-4854-A91B-14CE3784DFA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {44AD4D28-EB10-4854-A91B-14CE3784DFA5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {44AD4D28-EB10-4854-A91B-14CE3784DFA5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {44AD4D28-EB10-4854-A91B-14CE3784DFA5}.Release|Any CPU.Build.0 = Release|Any CPU + {75F2F415-98B0-449B-98BC-B324DC983FAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75F2F415-98B0-449B-98BC-B324DC983FAD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75F2F415-98B0-449B-98BC-B324DC983FAD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75F2F415-98B0-449B-98BC-B324DC983FAD}.Release|Any CPU.Build.0 = Release|Any CPU + {D8766F5F-B484-490B-8940-438ECFD221AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D8766F5F-B484-490B-8940-438ECFD221AF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D8766F5F-B484-490B-8940-438ECFD221AF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D8766F5F-B484-490B-8940-438ECFD221AF}.Release|Any CPU.Build.0 = Release|Any CPU + {05154CE6-C9DD-4D5C-ABA5-52731F05274A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {05154CE6-C9DD-4D5C-ABA5-52731F05274A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {05154CE6-C9DD-4D5C-ABA5-52731F05274A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {05154CE6-C9DD-4D5C-ABA5-52731F05274A}.Release|Any CPU.Build.0 = Release|Any CPU + {2E6C4EB3-6307-493C-9258-359F7C3FF38E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2E6C4EB3-6307-493C-9258-359F7C3FF38E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2E6C4EB3-6307-493C-9258-359F7C3FF38E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E6C4EB3-6307-493C-9258-359F7C3FF38E}.Release|Any CPU.Build.0 = Release|Any CPU + {903D5674-6527-4C4D-89B4-D6A435EF8091}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {903D5674-6527-4C4D-89B4-D6A435EF8091}.Debug|Any CPU.Build.0 = Debug|Any CPU + {903D5674-6527-4C4D-89B4-D6A435EF8091}.Release|Any CPU.ActiveCfg = Release|Any CPU + {903D5674-6527-4C4D-89B4-D6A435EF8091}.Release|Any CPU.Build.0 = Release|Any CPU + {B05F63CD-2E95-45DC-8760-42B2FDB8CA07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B05F63CD-2E95-45DC-8760-42B2FDB8CA07}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B05F63CD-2E95-45DC-8760-42B2FDB8CA07}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B05F63CD-2E95-45DC-8760-42B2FDB8CA07}.Release|Any CPU.Build.0 = Release|Any CPU + {579C646B-9261-4CCE-B639-8C25C2F6FC85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {579C646B-9261-4CCE-B639-8C25C2F6FC85}.Debug|Any CPU.Build.0 = Debug|Any CPU + {579C646B-9261-4CCE-B639-8C25C2F6FC85}.Release|Any CPU.ActiveCfg = Release|Any CPU + {579C646B-9261-4CCE-B639-8C25C2F6FC85}.Release|Any CPU.Build.0 = Release|Any CPU + {CC0F2F90-FB74-495E-87D1-5025FE6D0FD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CC0F2F90-FB74-495E-87D1-5025FE6D0FD2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC0F2F90-FB74-495E-87D1-5025FE6D0FD2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CC0F2F90-FB74-495E-87D1-5025FE6D0FD2}.Release|Any CPU.Build.0 = Release|Any CPU + {60E9423E-0513-4E43-9AB5-24AA3ED608E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {60E9423E-0513-4E43-9AB5-24AA3ED608E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {60E9423E-0513-4E43-9AB5-24AA3ED608E9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {60E9423E-0513-4E43-9AB5-24AA3ED608E9}.Release|Any CPU.Build.0 = Release|Any CPU + {36A78BD2-DFFC-4551-BAE1-70C8DDEAC23E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {36A78BD2-DFFC-4551-BAE1-70C8DDEAC23E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {36A78BD2-DFFC-4551-BAE1-70C8DDEAC23E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {36A78BD2-DFFC-4551-BAE1-70C8DDEAC23E}.Release|Any CPU.Build.0 = Release|Any CPU + {79ADD139-E6DE-46E0-A183-3E126EDDBC4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {79ADD139-E6DE-46E0-A183-3E126EDDBC4B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {79ADD139-E6DE-46E0-A183-3E126EDDBC4B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {79ADD139-E6DE-46E0-A183-3E126EDDBC4B}.Release|Any CPU.Build.0 = Release|Any CPU + {668842AF-86CD-4397-8C00-D40B4163806C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {668842AF-86CD-4397-8C00-D40B4163806C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {668842AF-86CD-4397-8C00-D40B4163806C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {668842AF-86CD-4397-8C00-D40B4163806C}.Release|Any CPU.Build.0 = Release|Any CPU + {86D5BB24-8A64-4DB0-B878-E0946B9A1EF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {86D5BB24-8A64-4DB0-B878-E0946B9A1EF8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {86D5BB24-8A64-4DB0-B878-E0946B9A1EF8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {86D5BB24-8A64-4DB0-B878-E0946B9A1EF8}.Release|Any CPU.Build.0 = Release|Any CPU + {81693A36-6034-4B6E-8EE1-DDB9BAD0997B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {81693A36-6034-4B6E-8EE1-DDB9BAD0997B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {81693A36-6034-4B6E-8EE1-DDB9BAD0997B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {81693A36-6034-4B6E-8EE1-DDB9BAD0997B}.Release|Any CPU.Build.0 = Release|Any CPU + {38C26EFC-4134-4A6A-AC3C-DCD06588EC01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {38C26EFC-4134-4A6A-AC3C-DCD06588EC01}.Debug|Any CPU.Build.0 = Debug|Any CPU + {38C26EFC-4134-4A6A-AC3C-DCD06588EC01}.Release|Any CPU.ActiveCfg = Release|Any CPU + {38C26EFC-4134-4A6A-AC3C-DCD06588EC01}.Release|Any CPU.Build.0 = Release|Any CPU + {F5E865C0-9E3A-424F-89A0-A83B89A3954E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5E865C0-9E3A-424F-89A0-A83B89A3954E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F5E865C0-9E3A-424F-89A0-A83B89A3954E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5E865C0-9E3A-424F-89A0-A83B89A3954E}.Release|Any CPU.Build.0 = Release|Any CPU + {2936F95B-DB62-44A9-8988-8BAC809D477A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2936F95B-DB62-44A9-8988-8BAC809D477A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2936F95B-DB62-44A9-8988-8BAC809D477A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2936F95B-DB62-44A9-8988-8BAC809D477A}.Release|Any CPU.Build.0 = Release|Any CPU + {20D30203-F647-4B3E-B0DF-37C0CE51EB28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {20D30203-F647-4B3E-B0DF-37C0CE51EB28}.Debug|Any CPU.Build.0 = Debug|Any CPU + {20D30203-F647-4B3E-B0DF-37C0CE51EB28}.Release|Any CPU.ActiveCfg = Release|Any CPU + {20D30203-F647-4B3E-B0DF-37C0CE51EB28}.Release|Any CPU.Build.0 = Release|Any CPU + {75776E3D-257D-403F-AC43-C7442534BB49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75776E3D-257D-403F-AC43-C7442534BB49}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75776E3D-257D-403F-AC43-C7442534BB49}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75776E3D-257D-403F-AC43-C7442534BB49}.Release|Any CPU.Build.0 = Release|Any CPU + {3F0704F2-4B42-4799-B96C-FEA52B66E0AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F0704F2-4B42-4799-B96C-FEA52B66E0AA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F0704F2-4B42-4799-B96C-FEA52B66E0AA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F0704F2-4B42-4799-B96C-FEA52B66E0AA}.Release|Any CPU.Build.0 = Release|Any CPU + {81354A14-A306-412E-9763-4E4F45B5BF9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {81354A14-A306-412E-9763-4E4F45B5BF9B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {81354A14-A306-412E-9763-4E4F45B5BF9B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {81354A14-A306-412E-9763-4E4F45B5BF9B}.Release|Any CPU.Build.0 = Release|Any CPU + {7BB236CB-A44C-4360-B14E-6E1F90CDC646}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7BB236CB-A44C-4360-B14E-6E1F90CDC646}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7BB236CB-A44C-4360-B14E-6E1F90CDC646}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7BB236CB-A44C-4360-B14E-6E1F90CDC646}.Release|Any CPU.Build.0 = Release|Any CPU + {7AF4B76F-ADD1-4579-9ED0-0A1D68870AB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7AF4B76F-ADD1-4579-9ED0-0A1D68870AB2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7AF4B76F-ADD1-4579-9ED0-0A1D68870AB2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7AF4B76F-ADD1-4579-9ED0-0A1D68870AB2}.Release|Any CPU.Build.0 = Release|Any CPU + {B3B282BD-F0E5-4095-A354-82FA02EFA037}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B3B282BD-F0E5-4095-A354-82FA02EFA037}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B3B282BD-F0E5-4095-A354-82FA02EFA037}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B3B282BD-F0E5-4095-A354-82FA02EFA037}.Release|Any CPU.Build.0 = Release|Any CPU + {A8128E38-6760-42FE-9DB9-2EA3A7F54CDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A8128E38-6760-42FE-9DB9-2EA3A7F54CDA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A8128E38-6760-42FE-9DB9-2EA3A7F54CDA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A8128E38-6760-42FE-9DB9-2EA3A7F54CDA}.Release|Any CPU.Build.0 = Release|Any CPU + {B67E68F4-4256-448E-8F7A-BF7E69B22D69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B67E68F4-4256-448E-8F7A-BF7E69B22D69}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B67E68F4-4256-448E-8F7A-BF7E69B22D69}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B67E68F4-4256-448E-8F7A-BF7E69B22D69}.Release|Any CPU.Build.0 = Release|Any CPU + {23E6A4E8-4A4B-46C7-984A-4EDF2EBE383B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {23E6A4E8-4A4B-46C7-984A-4EDF2EBE383B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {23E6A4E8-4A4B-46C7-984A-4EDF2EBE383B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {23E6A4E8-4A4B-46C7-984A-4EDF2EBE383B}.Release|Any CPU.Build.0 = Release|Any CPU + {193780BF-A7BE-41ED-A2D1-582C5A956E60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {193780BF-A7BE-41ED-A2D1-582C5A956E60}.Debug|Any CPU.Build.0 = Debug|Any CPU + {193780BF-A7BE-41ED-A2D1-582C5A956E60}.Release|Any CPU.ActiveCfg = Release|Any CPU + {193780BF-A7BE-41ED-A2D1-582C5A956E60}.Release|Any CPU.Build.0 = Release|Any CPU + {30F201A3-0F44-45B9-A6D8-84DFFBE62050}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {30F201A3-0F44-45B9-A6D8-84DFFBE62050}.Debug|Any CPU.Build.0 = Debug|Any CPU + {30F201A3-0F44-45B9-A6D8-84DFFBE62050}.Release|Any CPU.ActiveCfg = Release|Any CPU + {30F201A3-0F44-45B9-A6D8-84DFFBE62050}.Release|Any CPU.Build.0 = Release|Any CPU + {A2AE7A88-09EA-4867-A282-915E3BDBA33F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A2AE7A88-09EA-4867-A282-915E3BDBA33F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A2AE7A88-09EA-4867-A282-915E3BDBA33F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2AE7A88-09EA-4867-A282-915E3BDBA33F}.Release|Any CPU.Build.0 = Release|Any CPU + {6748F003-FEAB-4124-9B0B-C72F59401E1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6748F003-FEAB-4124-9B0B-C72F59401E1F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6748F003-FEAB-4124-9B0B-C72F59401E1F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6748F003-FEAB-4124-9B0B-C72F59401E1F}.Release|Any CPU.Build.0 = Release|Any CPU + {5A70513A-2090-409D-B54D-35C85582BBEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5A70513A-2090-409D-B54D-35C85582BBEF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A70513A-2090-409D-B54D-35C85582BBEF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5A70513A-2090-409D-B54D-35C85582BBEF}.Release|Any CPU.Build.0 = Release|Any CPU + {4FBBF373-D315-4CD7-937B-AA168652ABAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4FBBF373-D315-4CD7-937B-AA168652ABAA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4FBBF373-D315-4CD7-937B-AA168652ABAA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4FBBF373-D315-4CD7-937B-AA168652ABAA}.Release|Any CPU.Build.0 = Release|Any CPU + {17DF526B-2E81-4694-9F65-44905800134B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {17DF526B-2E81-4694-9F65-44905800134B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {17DF526B-2E81-4694-9F65-44905800134B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {17DF526B-2E81-4694-9F65-44905800134B}.Release|Any CPU.Build.0 = Release|Any CPU + {A32A60C5-09F3-4C1A-9FB2-783A51A41885}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A32A60C5-09F3-4C1A-9FB2-783A51A41885}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A32A60C5-09F3-4C1A-9FB2-783A51A41885}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A32A60C5-09F3-4C1A-9FB2-783A51A41885}.Release|Any CPU.Build.0 = Release|Any CPU + {4A98A66A-03E4-4958-8856-763561C2BDD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4A98A66A-03E4-4958-8856-763561C2BDD8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4A98A66A-03E4-4958-8856-763561C2BDD8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4A98A66A-03E4-4958-8856-763561C2BDD8}.Release|Any CPU.Build.0 = Release|Any CPU + {DE1D6036-786D-45B9-B6E6-1C47DBC56AD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DE1D6036-786D-45B9-B6E6-1C47DBC56AD0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DE1D6036-786D-45B9-B6E6-1C47DBC56AD0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DE1D6036-786D-45B9-B6E6-1C47DBC56AD0}.Release|Any CPU.Build.0 = Release|Any CPU + {938247C6-DF24-4C04-A064-F480942138CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {938247C6-DF24-4C04-A064-F480942138CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {938247C6-DF24-4C04-A064-F480942138CB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {938247C6-DF24-4C04-A064-F480942138CB}.Release|Any CPU.Build.0 = Release|Any CPU + {9F483C40-467F-4A37-B610-CEDA12C64394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F483C40-467F-4A37-B610-CEDA12C64394}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F483C40-467F-4A37-B610-CEDA12C64394}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F483C40-467F-4A37-B610-CEDA12C64394}.Release|Any CPU.Build.0 = Release|Any CPU + {64F92163-4AA8-4C73-BD53-1EACC26E6DF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {64F92163-4AA8-4C73-BD53-1EACC26E6DF2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {64F92163-4AA8-4C73-BD53-1EACC26E6DF2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {64F92163-4AA8-4C73-BD53-1EACC26E6DF2}.Release|Any CPU.Build.0 = Release|Any CPU + {4CE0EC4F-C062-4CB7-81FF-A76AF879A99B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4CE0EC4F-C062-4CB7-81FF-A76AF879A99B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4CE0EC4F-C062-4CB7-81FF-A76AF879A99B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4CE0EC4F-C062-4CB7-81FF-A76AF879A99B}.Release|Any CPU.Build.0 = Release|Any CPU + {A00E48C5-43A1-4199-9884-F507FCE7D86D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A00E48C5-43A1-4199-9884-F507FCE7D86D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A00E48C5-43A1-4199-9884-F507FCE7D86D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A00E48C5-43A1-4199-9884-F507FCE7D86D}.Release|Any CPU.Build.0 = Release|Any CPU + {EC1A5746-4444-4658-9690-47EAA943B9FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EC1A5746-4444-4658-9690-47EAA943B9FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EC1A5746-4444-4658-9690-47EAA943B9FC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EC1A5746-4444-4658-9690-47EAA943B9FC}.Release|Any CPU.Build.0 = Release|Any CPU + {98318985-17D7-4543-8F0F-C17732BC6297}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {98318985-17D7-4543-8F0F-C17732BC6297}.Debug|Any CPU.Build.0 = Debug|Any CPU + {98318985-17D7-4543-8F0F-C17732BC6297}.Release|Any CPU.ActiveCfg = Release|Any CPU + {98318985-17D7-4543-8F0F-C17732BC6297}.Release|Any CPU.Build.0 = Release|Any CPU + {908DCE45-7F26-401E-903F-AD640679E0A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {908DCE45-7F26-401E-903F-AD640679E0A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {908DCE45-7F26-401E-903F-AD640679E0A7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {908DCE45-7F26-401E-903F-AD640679E0A7}.Release|Any CPU.Build.0 = Release|Any CPU + {19E97F97-32FC-499F-BD76-DF62C36DF492}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {19E97F97-32FC-499F-BD76-DF62C36DF492}.Debug|Any CPU.Build.0 = Debug|Any CPU + {19E97F97-32FC-499F-BD76-DF62C36DF492}.Release|Any CPU.ActiveCfg = Release|Any CPU + {19E97F97-32FC-499F-BD76-DF62C36DF492}.Release|Any CPU.Build.0 = Release|Any CPU + {CEDC1F1D-E20E-4B13-A7B7-43A1728193CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CEDC1F1D-E20E-4B13-A7B7-43A1728193CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CEDC1F1D-E20E-4B13-A7B7-43A1728193CB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CEDC1F1D-E20E-4B13-A7B7-43A1728193CB}.Release|Any CPU.Build.0 = Release|Any CPU + {324941D7-FA9C-4021-B0BB-D1E55E4179A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {324941D7-FA9C-4021-B0BB-D1E55E4179A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {324941D7-FA9C-4021-B0BB-D1E55E4179A8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {324941D7-FA9C-4021-B0BB-D1E55E4179A8}.Release|Any CPU.Build.0 = Release|Any CPU + {DE92DD5C-87F9-4B6F-BC8E-B56FEE7E3C06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DE92DD5C-87F9-4B6F-BC8E-B56FEE7E3C06}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DE92DD5C-87F9-4B6F-BC8E-B56FEE7E3C06}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DE92DD5C-87F9-4B6F-BC8E-B56FEE7E3C06}.Release|Any CPU.Build.0 = Release|Any CPU + {78D5DF1B-7E42-4BFB-AF90-20608C2898FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78D5DF1B-7E42-4BFB-AF90-20608C2898FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78D5DF1B-7E42-4BFB-AF90-20608C2898FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78D5DF1B-7E42-4BFB-AF90-20608C2898FA}.Release|Any CPU.Build.0 = Release|Any CPU + {894F3F35-7C20-4F83-A6E9-FA5DBBCD89CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {894F3F35-7C20-4F83-A6E9-FA5DBBCD89CC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {894F3F35-7C20-4F83-A6E9-FA5DBBCD89CC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {894F3F35-7C20-4F83-A6E9-FA5DBBCD89CC}.Release|Any CPU.Build.0 = Release|Any CPU + {F36F8F8B-54B9-4309-9E47-6B8D1B27C34E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F36F8F8B-54B9-4309-9E47-6B8D1B27C34E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F36F8F8B-54B9-4309-9E47-6B8D1B27C34E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F36F8F8B-54B9-4309-9E47-6B8D1B27C34E}.Release|Any CPU.Build.0 = Release|Any CPU + {9FE55261-595F-463C-A0E1-907F7B40F9E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9FE55261-595F-463C-A0E1-907F7B40F9E1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9FE55261-595F-463C-A0E1-907F7B40F9E1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9FE55261-595F-463C-A0E1-907F7B40F9E1}.Release|Any CPU.Build.0 = Release|Any CPU + {120FE8CB-377C-41E0-BB0A-7A682550FA92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {120FE8CB-377C-41E0-BB0A-7A682550FA92}.Debug|Any CPU.Build.0 = Debug|Any CPU + {120FE8CB-377C-41E0-BB0A-7A682550FA92}.Release|Any CPU.ActiveCfg = Release|Any CPU + {120FE8CB-377C-41E0-BB0A-7A682550FA92}.Release|Any CPU.Build.0 = Release|Any CPU + {D88E3E58-5B30-472C-8CE7-2306F3B3E8AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D88E3E58-5B30-472C-8CE7-2306F3B3E8AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D88E3E58-5B30-472C-8CE7-2306F3B3E8AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D88E3E58-5B30-472C-8CE7-2306F3B3E8AB}.Release|Any CPU.Build.0 = Release|Any CPU + {5160A0A5-36BD-4A33-8318-7C6D4582A0C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5160A0A5-36BD-4A33-8318-7C6D4582A0C3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5160A0A5-36BD-4A33-8318-7C6D4582A0C3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5160A0A5-36BD-4A33-8318-7C6D4582A0C3}.Release|Any CPU.Build.0 = Release|Any CPU + {AB6AE6A9-B1EE-4FB4-A14A-67FB4132F090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AB6AE6A9-B1EE-4FB4-A14A-67FB4132F090}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AB6AE6A9-B1EE-4FB4-A14A-67FB4132F090}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AB6AE6A9-B1EE-4FB4-A14A-67FB4132F090}.Release|Any CPU.Build.0 = Release|Any CPU + {9709A07C-1EF0-445E-BD20-8DCF33656353}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9709A07C-1EF0-445E-BD20-8DCF33656353}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9709A07C-1EF0-445E-BD20-8DCF33656353}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9709A07C-1EF0-445E-BD20-8DCF33656353}.Release|Any CPU.Build.0 = Release|Any CPU + {BA36F7AD-BA4D-40CE-89CA-130C15DE0FCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BA36F7AD-BA4D-40CE-89CA-130C15DE0FCD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BA36F7AD-BA4D-40CE-89CA-130C15DE0FCD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BA36F7AD-BA4D-40CE-89CA-130C15DE0FCD}.Release|Any CPU.Build.0 = Release|Any CPU + {A5E9168E-2EE7-4390-9A04-12388DAA7AE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A5E9168E-2EE7-4390-9A04-12388DAA7AE0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A5E9168E-2EE7-4390-9A04-12388DAA7AE0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A5E9168E-2EE7-4390-9A04-12388DAA7AE0}.Release|Any CPU.Build.0 = Release|Any CPU + {C7DD3601-FA66-41B3-8655-C6ACC765EBDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C7DD3601-FA66-41B3-8655-C6ACC765EBDF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C7DD3601-FA66-41B3-8655-C6ACC765EBDF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C7DD3601-FA66-41B3-8655-C6ACC765EBDF}.Release|Any CPU.Build.0 = Release|Any CPU + {5ACA3E89-2A99-4D3D-96D1-3BA2E4C233F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5ACA3E89-2A99-4D3D-96D1-3BA2E4C233F2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5ACA3E89-2A99-4D3D-96D1-3BA2E4C233F2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5ACA3E89-2A99-4D3D-96D1-3BA2E4C233F2}.Release|Any CPU.Build.0 = Release|Any CPU + {B1B0CCAA-FFDD-4FD2-BBAE-16546E623AD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1B0CCAA-FFDD-4FD2-BBAE-16546E623AD8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1B0CCAA-FFDD-4FD2-BBAE-16546E623AD8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1B0CCAA-FFDD-4FD2-BBAE-16546E623AD8}.Release|Any CPU.Build.0 = Release|Any CPU + {1130169C-03BA-4EF2-BF24-67615E39084E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1130169C-03BA-4EF2-BF24-67615E39084E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1130169C-03BA-4EF2-BF24-67615E39084E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1130169C-03BA-4EF2-BF24-67615E39084E}.Release|Any CPU.Build.0 = Release|Any CPU + {7D05F065-EB26-4AF3-99D3-8B05190DA09E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7D05F065-EB26-4AF3-99D3-8B05190DA09E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7D05F065-EB26-4AF3-99D3-8B05190DA09E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7D05F065-EB26-4AF3-99D3-8B05190DA09E}.Release|Any CPU.Build.0 = Release|Any CPU + {F7DF4759-887F-44A6-9716-0ABA20DB0610}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7DF4759-887F-44A6-9716-0ABA20DB0610}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7DF4759-887F-44A6-9716-0ABA20DB0610}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7DF4759-887F-44A6-9716-0ABA20DB0610}.Release|Any CPU.Build.0 = Release|Any CPU + {553F61F1-C66F-4F58-8011-D292CD605933}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {553F61F1-C66F-4F58-8011-D292CD605933}.Debug|Any CPU.Build.0 = Debug|Any CPU + {553F61F1-C66F-4F58-8011-D292CD605933}.Release|Any CPU.ActiveCfg = Release|Any CPU + {553F61F1-C66F-4F58-8011-D292CD605933}.Release|Any CPU.Build.0 = Release|Any CPU + {9F068F41-C68F-4E35-B615-01EB361898F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F068F41-C68F-4E35-B615-01EB361898F0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F068F41-C68F-4E35-B615-01EB361898F0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F068F41-C68F-4E35-B615-01EB361898F0}.Release|Any CPU.Build.0 = Release|Any CPU + {78C39A81-141E-4D3D-86CC-F3B221C1B6AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78C39A81-141E-4D3D-86CC-F3B221C1B6AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78C39A81-141E-4D3D-86CC-F3B221C1B6AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78C39A81-141E-4D3D-86CC-F3B221C1B6AB}.Release|Any CPU.Build.0 = Release|Any CPU + {B40B37DE-CB8E-49F5-93B9-AC1E81696CA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B40B37DE-CB8E-49F5-93B9-AC1E81696CA2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B40B37DE-CB8E-49F5-93B9-AC1E81696CA2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B40B37DE-CB8E-49F5-93B9-AC1E81696CA2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection EndGlobal diff --git a/exercises/flatten-array/flatten-array.csproj b/exercises/flatten-array/flatten-array.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/flatten-array/flatten-array.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/food-chain/food-chain.csproj b/exercises/food-chain/food-chain.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/food-chain/food-chain.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/forth/forth.csproj b/exercises/forth/forth.csproj new file mode 100644 index 0000000000..4a7fd04f22 --- /dev/null +++ b/exercises/forth/forth.csproj @@ -0,0 +1,15 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + + diff --git a/exercises/gigasecond/gigasecond.csproj b/exercises/gigasecond/gigasecond.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/gigasecond/gigasecond.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/go-counting/Example.cs b/exercises/go-counting/Example.cs index 235b8f5430..434310fc26 100644 --- a/exercises/go-counting/Example.cs +++ b/exercises/go-counting/Example.cs @@ -1,5 +1,4 @@ using System; -using System.Drawing; using System.Collections.Generic; using System.Linq; @@ -41,45 +40,45 @@ private static Player[][] ParseBoard(string input) private int Cols => board[0].Length; private int Rows => board.Length; - private bool IsValidCoordinate(Point coordinate) => - coordinate.Y >= 0 && coordinate.Y < Rows && - coordinate.X >= 0 && coordinate.X < Cols; + private bool IsValidCoordinate(Tuple coordinate) => + coordinate.Item2 >= 0 && coordinate.Item2 < Rows && + coordinate.Item1 >= 0 && coordinate.Item1 < Cols; - private Player GetPlayer(Point coordinate) => board[coordinate.Y][coordinate.X]; + private Player GetPlayer(Tuple coordinate) => board[coordinate.Item2][coordinate.Item1]; - private bool IsEmpty(Point coordinate) => GetPlayer(coordinate) == Player.None; - private bool IsTaken(Point coordinate) => !IsEmpty(coordinate); + private bool IsEmpty(Tuple coordinate) => GetPlayer(coordinate) == Player.None; + private bool IsTaken(Tuple coordinate) => !IsEmpty(coordinate); - private IEnumerable EmptyCoordinates() + private IEnumerable> EmptyCoordinates() { return Enumerable.Range(0, Cols).SelectMany(col => - Enumerable.Range(0, Rows).Select(row => new Point(col, row))) + Enumerable.Range(0, Rows).Select(row => new Tuple(col, row))) .Where(IsEmpty); } - private IEnumerable NeighborCoordinates(Point coordinate) + private IEnumerable> NeighborCoordinates(Tuple coordinate) { - var row = coordinate.Y; - var col = coordinate.X; + var row = coordinate.Item2; + var col = coordinate.Item1; var coords = new[] { - new Point(col, row - 1), - new Point(col-1, row), - new Point(col+1, row), - new Point(col, row+1) + new Tuple(col, row - 1), + new Tuple(col-1, row), + new Tuple(col+1, row), + new Tuple(col, row+1) }; return coords.Where(IsValidCoordinate); } - private IEnumerable TakenNeighborCoordinates(Point coordinate) => + private IEnumerable> TakenNeighborCoordinates(Tuple coordinate) => NeighborCoordinates(coordinate).Where(IsTaken); - private IEnumerable EmptyNeighborCoordinates(Point coordinate) => + private IEnumerable> EmptyNeighborCoordinates(Tuple coordinate) => NeighborCoordinates(coordinate).Where(IsEmpty); - private Player TerritoryOwner(HashSet coords) + private Player TerritoryOwner(HashSet> coords) { var neighborColors = coords.SelectMany(TakenNeighborCoordinates).Select(GetPlayer); var uniqueNeighborColors = ToSet(neighborColors); @@ -90,12 +89,12 @@ private Player TerritoryOwner(HashSet coords) return Player.None; } - private HashSet TerritoryHelper(HashSet remainder, HashSet acc) + private HashSet> TerritoryHelper(HashSet> remainder, HashSet> acc) { if (!remainder.Any()) return acc; - var emptyNeighbors = new HashSet(remainder.SelectMany(EmptyNeighborCoordinates)); + var emptyNeighbors = new HashSet>(remainder.SelectMany(EmptyNeighborCoordinates)); emptyNeighbors.ExceptWith(acc); var newAcc = ToSet(acc); @@ -103,12 +102,12 @@ private HashSet TerritoryHelper(HashSet remainder, HashSet return TerritoryHelper(emptyNeighbors, newAcc); } - private HashSet Territory(Point coordinate) => + private HashSet> Territory(Tuple coordinate) => IsValidCoordinate(coordinate) && IsEmpty(coordinate) ? TerritoryHelper(ToSingletonSet(coordinate), ToSingletonSet(coordinate)) - : new HashSet(); + : new HashSet>(); - public Tuple> TerritoryFor(Point coord) + public Tuple>> TerritoryFor(Tuple coord) { var coords = Territory(coord); if (!coords.Any()) @@ -118,7 +117,7 @@ public Tuple> TerritoryFor(Point coord) return Tuple.Create(owner, coords.AsEnumerable()); } - private Dictionary> TerritoriesHelper(HashSet remainder, Dictionary> acc) + private Dictionary>> TerritoriesHelper(HashSet> remainder, Dictionary>> acc) { if (!remainder.Any()) return acc; @@ -130,16 +129,17 @@ private Dictionary> TerritoriesHelper(HashSet var newRemainder = ToSet(remainder); newRemainder.ExceptWith(coords); - var newAcc = new Dictionary>(acc); - newAcc[owner] = coords; - + var newAcc = new Dictionary>>(acc) + { + [owner] = coords + }; return TerritoriesHelper(newRemainder, newAcc); } - public Dictionary> Territories() + public Dictionary>> Territories() { var emptyCoords = EmptyCoordinates(); - return TerritoriesHelper(ToSet(emptyCoords), new Dictionary>()); + return TerritoriesHelper(ToSet(emptyCoords), new Dictionary>>()); } private static HashSet ToSet(IEnumerable value) => new HashSet(value); diff --git a/exercises/go-counting/GoCountingTest.cs b/exercises/go-counting/GoCountingTest.cs index 1ce6ccc826..e60e234ffd 100644 --- a/exercises/go-counting/GoCountingTest.cs +++ b/exercises/go-counting/GoCountingTest.cs @@ -1,7 +1,6 @@ using Xunit; using System; using System.Collections.Generic; -using System.Drawing; using System.Linq; public class GoCountingTest @@ -34,8 +33,8 @@ public class GoCountingTest public void FiveByFiveTerritoryForBlack() { var board = new GoCounting(boardFiveByFive); - var result = board.TerritoryFor(new Point(0, 1)); - var expected = new HashSet { new Point(0, 0), new Point(0, 1), new Point(1, 0) }; + var result = board.TerritoryFor(new Tuple(0, 1)); + var expected = new HashSet> { new Tuple(0, 0), new Tuple(0, 1), new Tuple(1, 0) }; Assert.Equal(GoCounting.Player.Black, result.Item1); Assert.True(expected.SetEquals(result.Item2)); } @@ -44,8 +43,8 @@ public void FiveByFiveTerritoryForBlack() public void FiveByFiveTerritoryForWhite() { var board = new GoCounting(boardFiveByFive); - var result = board.TerritoryFor(new Point(2, 3)); - var expected = new HashSet { new Point(2, 3) }; + var result = board.TerritoryFor(new Tuple(2, 3)); + var expected = new HashSet> { new Tuple(2, 3) }; Assert.Equal(GoCounting.Player.White, result.Item1); Assert.True(expected.SetEquals(result.Item2)); } @@ -54,8 +53,8 @@ public void FiveByFiveTerritoryForWhite() public void FiveByFiveOpenTerritory() { var board = new GoCounting(boardFiveByFive); - var result = board.TerritoryFor(new Point(1, 4)); - var expected = new HashSet { new Point(0, 3), new Point(0, 4), new Point(1, 4) }; + var result = board.TerritoryFor(new Tuple(1, 4)); + var expected = new HashSet> { new Tuple(0, 3), new Tuple(0, 4), new Tuple(1, 4) }; Assert.Equal(GoCounting.Player.None, result.Item1); Assert.True(expected.SetEquals(result.Item2)); } @@ -64,21 +63,21 @@ public void FiveByFiveOpenTerritory() public void FiveByFiveNonTerritoryStone() { var board = new GoCounting(boardFiveByFive); - Assert.Null(board.TerritoryFor(new Point(1, 1))); + Assert.Null(board.TerritoryFor(new Tuple(1, 1))); } [Fact(Skip = "Remove to run test")] public void FiveByFiveNonTerritoryDueToTooLowCoordinate() { var board = new GoCounting(boardFiveByFive); - Assert.Null(board.TerritoryFor(new Point(-1, 1))); + Assert.Null(board.TerritoryFor(new Tuple(-1, 1))); } [Fact(Skip = "Remove to run test")] public void FiveByFiveNonTerritoryDueToTooHighCoordinate() { var board = new GoCounting(boardFiveByFive); - Assert.Null(board.TerritoryFor(new Point(1, 5))); + Assert.Null(board.TerritoryFor(new Tuple(1, 5))); } [Fact(Skip = "Remove to run test")] @@ -87,7 +86,7 @@ public void MinimalBoardWithNoTerritories() var input = "B"; var board = new GoCounting(input); - var expected = new Dictionary>(); + var expected = new Dictionary>>(); Assert.Equal(expected, board.Territories()); } @@ -99,9 +98,9 @@ public void OneTerritoryCoveringTheWholeBoard() var board = new GoCounting(input); var actual = board.Territories(); - var expected = new Dictionary> + var expected = new Dictionary>> { - [GoCounting.Player.None] = new[] { new Point(0, 0) } + [GoCounting.Player.None] = new[] { new Tuple(0, 0) } }; Assert.Equal(expected.Keys, actual.Keys); @@ -115,10 +114,10 @@ public void TwoTerritoriesOnRectangularBoard() var board = new GoCounting(input); var actual = board.Territories(); - var expected = new Dictionary> + var expected = new Dictionary>> { - [GoCounting.Player.Black] = new[] { new Point(0, 0), new Point(0, 1) }, - [GoCounting.Player.White] = new[] { new Point(3, 0), new Point(3, 1) } + [GoCounting.Player.Black] = new[] { new Tuple(0, 0), new Tuple(0, 1) }, + [GoCounting.Player.White] = new[] { new Tuple(3, 0), new Tuple(3, 1) } }; Assert.Equal(expected.Keys, actual.Keys); diff --git a/exercises/go-counting/go-counting.csproj b/exercises/go-counting/go-counting.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/go-counting/go-counting.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/grade-school/grade-school.csproj b/exercises/grade-school/grade-school.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/grade-school/grade-school.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/grains/grains.csproj b/exercises/grains/grains.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/grains/grains.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/grep/grep.csproj b/exercises/grep/grep.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/grep/grep.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/hamming/hamming.csproj b/exercises/hamming/hamming.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/hamming/hamming.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/hangman/hangman.csproj b/exercises/hangman/hangman.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/hangman/hangman.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/hello-world/hello-world.csproj b/exercises/hello-world/hello-world.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/hello-world/hello-world.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/house/house.csproj b/exercises/house/house.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/house/house.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/isogram/isogram.csproj b/exercises/isogram/isogram.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/isogram/isogram.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/kindergarten-garden/kindergarten-garden.csproj b/exercises/kindergarten-garden/kindergarten-garden.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/kindergarten-garden/kindergarten-garden.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/largest-series-product/largest-series-product.csproj b/exercises/largest-series-product/largest-series-product.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/largest-series-product/largest-series-product.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/leap/leap.csproj b/exercises/leap/leap.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/leap/leap.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/ledger/ledger.csproj b/exercises/ledger/ledger.csproj new file mode 100644 index 0000000000..627c87ee43 --- /dev/null +++ b/exercises/ledger/ledger.csproj @@ -0,0 +1,18 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + + + + + diff --git a/exercises/linked-list/linked-list.csproj b/exercises/linked-list/linked-list.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/linked-list/linked-list.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/list-ops/list-ops.csproj b/exercises/list-ops/list-ops.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/list-ops/list-ops.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/luhn/luhn.csproj b/exercises/luhn/luhn.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/luhn/luhn.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/markdown/markdown.csproj b/exercises/markdown/markdown.csproj new file mode 100644 index 0000000000..0422444b06 --- /dev/null +++ b/exercises/markdown/markdown.csproj @@ -0,0 +1,18 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + + + + + diff --git a/exercises/matrix/matrix.csproj b/exercises/matrix/matrix.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/matrix/matrix.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/meetup/meetup.csproj b/exercises/meetup/meetup.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/meetup/meetup.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/minesweeper/minesweeper.csproj b/exercises/minesweeper/minesweeper.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/minesweeper/minesweeper.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/nth-prime/nth-prime.csproj b/exercises/nth-prime/nth-prime.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/nth-prime/nth-prime.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/nucleotide-count/nucleotide-count.csproj b/exercises/nucleotide-count/nucleotide-count.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/nucleotide-count/nucleotide-count.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/ocr-numbers/ocr-numbers.csproj b/exercises/ocr-numbers/ocr-numbers.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/ocr-numbers/ocr-numbers.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/paket.references b/exercises/paket.references deleted file mode 100644 index 38898a345b..0000000000 --- a/exercises/paket.references +++ /dev/null @@ -1,2 +0,0 @@ -Sprache -xunit \ No newline at end of file diff --git a/exercises/palindrome-products/palindrome-products.csproj b/exercises/palindrome-products/palindrome-products.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/palindrome-products/palindrome-products.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/pangram/pangram.csproj b/exercises/pangram/pangram.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/pangram/pangram.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/parallel-letter-frequency/parallel-letter-frequency.csproj b/exercises/parallel-letter-frequency/parallel-letter-frequency.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/parallel-letter-frequency/parallel-letter-frequency.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/pascals-triangle/pascals-triangle.csproj b/exercises/pascals-triangle/pascals-triangle.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/pascals-triangle/pascals-triangle.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/perfect-numbers/perfect-numbers.csproj b/exercises/perfect-numbers/perfect-numbers.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/perfect-numbers/perfect-numbers.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/phone-number/phone-number.csproj b/exercises/phone-number/phone-number.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/phone-number/phone-number.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/pig-latin/pig-latin.csproj b/exercises/pig-latin/pig-latin.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/pig-latin/pig-latin.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/poker/poker.csproj b/exercises/poker/poker.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/poker/poker.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/pov/pov.csproj b/exercises/pov/pov.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/pov/pov.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/prime-factors/prime-factors.csproj b/exercises/prime-factors/prime-factors.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/prime-factors/prime-factors.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/protein-translation/protein-translation.csproj b/exercises/protein-translation/protein-translation.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/protein-translation/protein-translation.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/proverb/proverb.csproj b/exercises/proverb/proverb.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/proverb/proverb.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/pythagorean-triplet/pythagorean-triplet.csproj b/exercises/pythagorean-triplet/pythagorean-triplet.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/pythagorean-triplet/pythagorean-triplet.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/queen-attack/queen-attack.csproj b/exercises/queen-attack/queen-attack.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/queen-attack/queen-attack.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/rail-fence-cipher/rail-fence-cipher.csproj b/exercises/rail-fence-cipher/rail-fence-cipher.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/rail-fence-cipher/rail-fence-cipher.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/raindrops/raindrops.csproj b/exercises/raindrops/raindrops.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/raindrops/raindrops.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/react/react.csproj b/exercises/react/react.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/react/react.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/rectangles/Example.cs b/exercises/rectangles/Example.cs index a3cd285d61..e1c4523c36 100644 --- a/exercises/rectangles/Example.cs +++ b/exercises/rectangles/Example.cs @@ -1,5 +1,4 @@ using System; -using System.Drawing; using System.Linq; public static class Rectangles @@ -35,43 +34,43 @@ private static CellType ParseCell(char cell) private static int Cols(CellType[][] grid) => grid[0].Length; - private static CellType Cell(Point point, CellType[][] grid) => grid[point.Y][point.X]; + private static CellType Cell(Tuple point, CellType[][] grid) => grid[point.Item2][point.Item1]; - private static Point[] FindCorners(CellType[][] grid) => + private static Tuple[] FindCorners(CellType[][] grid) => Enumerable.Range(0, Rows(grid)).SelectMany(y => - Enumerable.Range(0, Cols(grid)).Select(x => new Point(x, y))) + Enumerable.Range(0, Cols(grid)).Select(x => new Tuple(x, y))) .Where(point => Cell(point, grid) == CellType.Corner) .ToArray(); - private static bool ConnectsVertically(Point point, CellType[][] grid) => + private static bool ConnectsVertically(Tuple point, CellType[][] grid) => (Cell(point, grid) == CellType.VerticalLine) || (Cell(point, grid) == CellType.Corner); - private static bool ConnectedVertically(Point top, Point bottom, CellType[][] grid) => - Enumerable.Range(top.Y + 1, bottom.Y - top.Y - 1).All(y => ConnectsVertically(new Point(top.X, y), grid)); + private static bool ConnectedVertically(Tuple top, Tuple bottom, CellType[][] grid) => + Enumerable.Range(top.Item2 + 1, bottom.Item2 - top.Item2 - 1).All(y => ConnectsVertically(new Tuple(top.Item1, y), grid)); - private static bool ConnectsHorizontally(Point point, CellType[][] grid) => + private static bool ConnectsHorizontally(Tuple point, CellType[][] grid) => (Cell(point, grid) == CellType.HorizontalLine) || (Cell(point, grid) == CellType.Corner); - private static bool ConnectedHorizontally(Point left, Point right, CellType[][] grid) => - Enumerable.Range(left.X + 1, right.X - left.X - 1).All(x => ConnectsHorizontally(new Point(x, left.Y), grid)); + private static bool ConnectedHorizontally(Tuple left, Tuple right, CellType[][] grid) => + Enumerable.Range(left.Item1 + 1, right.Item1 - left.Item1 - 1).All(x => ConnectsHorizontally(new Tuple(x, left.Item2), grid)); - private static bool IsTopLineOfRectangle(Point topLeft, Point topRight, CellType[][] grid) => - (topRight.X > topLeft.X) && (topRight.Y == topLeft.Y) && ConnectedHorizontally(topLeft, topRight, grid); + private static bool IsTopLineOfRectangle(Tuple topLeft, Tuple topRight, CellType[][] grid) => + (topRight.Item1 > topLeft.Item1) && (topRight.Item2 == topLeft.Item2) && ConnectedHorizontally(topLeft, topRight, grid); - private static bool IsRightLineOfRectangle(Point topRight, Point bottomRight, CellType[][] grid) => - (bottomRight.X == topRight.X) && (bottomRight.Y > topRight.Y) && + private static bool IsRightLineOfRectangle(Tuple topRight, Tuple bottomRight, CellType[][] grid) => + (bottomRight.Item1 == topRight.Item1) && (bottomRight.Item2 > topRight.Item2) && ConnectedVertically(topRight, bottomRight, grid); - private static bool IsBottomLineOfRectangle(Point bottomLeft, Point bottomRight, CellType[][] grid) => - (bottomRight.X > bottomLeft.X) && (bottomRight.Y == bottomLeft.Y) && + private static bool IsBottomLineOfRectangle(Tuple bottomLeft, Tuple bottomRight, CellType[][] grid) => + (bottomRight.Item1 > bottomLeft.Item1) && (bottomRight.Item2 == bottomLeft.Item2) && ConnectedHorizontally(bottomLeft, bottomRight, grid); - private static bool IsLeftLineOfRectangle(Point topLeft, Point bottomLeft, CellType[][] grid) => - (bottomLeft.X == topLeft.X) && (bottomLeft.Y > topLeft.Y) && ConnectedVertically(topLeft, bottomLeft, grid); + private static bool IsLeftLineOfRectangle(Tuple topLeft, Tuple bottomLeft, CellType[][] grid) => + (bottomLeft.Item1 == topLeft.Item1) && (bottomLeft.Item2 > topLeft.Item2) && ConnectedVertically(topLeft, bottomLeft, grid); - private static int RectangleForCorner(Point topLeft, Point[] corners, CellType[][] grid) + private static int RectangleForCorner(Tuple topLeft, Tuple[] corners, CellType[][] grid) { return (from topRight in corners.Where(corner => IsTopLineOfRectangle(topLeft, corner, grid)) from bottomLeft in corners.Where(corner => IsLeftLineOfRectangle(topLeft, corner, grid)) diff --git a/exercises/rectangles/rectangles.csproj b/exercises/rectangles/rectangles.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/rectangles/rectangles.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/rna-transcription/rna-transcription.csproj b/exercises/rna-transcription/rna-transcription.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/rna-transcription/rna-transcription.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/robot-name/robot-name.csproj b/exercises/robot-name/robot-name.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/robot-name/robot-name.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/robot-simulator/robot-simulator.csproj b/exercises/robot-simulator/robot-simulator.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/robot-simulator/robot-simulator.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/roman-numerals/roman-numerals.csproj b/exercises/roman-numerals/roman-numerals.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/roman-numerals/roman-numerals.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/run-length-encoding/run-length-encoding.csproj b/exercises/run-length-encoding/run-length-encoding.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/run-length-encoding/run-length-encoding.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/saddle-points/saddle-points.csproj b/exercises/saddle-points/saddle-points.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/saddle-points/saddle-points.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/say/say.csproj b/exercises/say/say.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/say/say.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/scale-generator/Example.cs b/exercises/scale-generator/Example.cs index c773db6a17..b355c388c9 100644 --- a/exercises/scale-generator/Example.cs +++ b/exercises/scale-generator/Example.cs @@ -17,7 +17,7 @@ public static class ScaleGenerator public static string[] Pitches(string tonic, string pattern) { var scale = Scale(tonic); - var index = Array.FindIndex(scale, pitch => string.Equals(pitch, tonic, StringComparison.InvariantCultureIgnoreCase)); + var index = Array.FindIndex(scale, pitch => string.Equals(pitch, tonic, StringComparison.OrdinalIgnoreCase)); var shiftedScale = Shift(index, scale); var pitches = new List(); diff --git a/exercises/scale-generator/scale-generator.csproj b/exercises/scale-generator/scale-generator.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/scale-generator/scale-generator.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/scrabble-score/scrabble-score.csproj b/exercises/scrabble-score/scrabble-score.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/scrabble-score/scrabble-score.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/secret-handshake/secret-handshake.csproj b/exercises/secret-handshake/secret-handshake.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/secret-handshake/secret-handshake.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/series/series.csproj b/exercises/series/series.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/series/series.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/sgf-parsing/SgfParsing.cs b/exercises/sgf-parsing/SgfParsing.cs index a63ef8f8ee..ff72a6174c 100644 --- a/exercises/sgf-parsing/SgfParsing.cs +++ b/exercises/sgf-parsing/SgfParsing.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; public class SgfTree @@ -10,4 +11,12 @@ public SgfTree(IDictionary data, params SgfTree[] children) Data = data; Children = children; } +} + +public class SgfParser +{ + public static SgfTree ParseTree(string input) + { + throw new NotImplementedException(); + } } \ No newline at end of file diff --git a/exercises/sgf-parsing/sgf-parsing.csproj b/exercises/sgf-parsing/sgf-parsing.csproj new file mode 100644 index 0000000000..56e523868f --- /dev/null +++ b/exercises/sgf-parsing/sgf-parsing.csproj @@ -0,0 +1,19 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + + + + + + diff --git a/exercises/sieve/sieve.csproj b/exercises/sieve/sieve.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/sieve/sieve.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/simple-cipher/simple-cipher.csproj b/exercises/simple-cipher/simple-cipher.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/simple-cipher/simple-cipher.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/simple-linked-list/simple-linked-list.csproj b/exercises/simple-linked-list/simple-linked-list.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/simple-linked-list/simple-linked-list.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/space-age/space-age.csproj b/exercises/space-age/space-age.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/space-age/space-age.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/strain/strain.csproj b/exercises/strain/strain.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/strain/strain.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/sublist/sublist.csproj b/exercises/sublist/sublist.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/sublist/sublist.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/sum-of-multiples/sum-of-multiples.csproj b/exercises/sum-of-multiples/sum-of-multiples.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/sum-of-multiples/sum-of-multiples.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/tournament/TournamentTest.cs b/exercises/tournament/TournamentTest.cs index 9cde95fa87..6f7f5443a7 100644 --- a/exercises/tournament/TournamentTest.cs +++ b/exercises/tournament/TournamentTest.cs @@ -62,7 +62,7 @@ private string RunTally(string input) using (var outStream = new MemoryStream()) { Tournament.Tally(inStream, outStream); - return encoding.GetString(outStream.GetBuffer()); + return encoding.GetString(outStream.ToArray()); } } } diff --git a/exercises/tournament/tournament.csproj b/exercises/tournament/tournament.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/tournament/tournament.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/transpose/transpose.csproj b/exercises/transpose/transpose.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/transpose/transpose.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/tree-building/tree-building.csproj b/exercises/tree-building/tree-building.csproj new file mode 100644 index 0000000000..41e5e9409a --- /dev/null +++ b/exercises/tree-building/tree-building.csproj @@ -0,0 +1,18 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + + + + + diff --git a/exercises/triangle/triangle.csproj b/exercises/triangle/triangle.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/triangle/triangle.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/twelve-days/twelve-days.csproj b/exercises/twelve-days/twelve-days.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/twelve-days/twelve-days.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/two-bucket/two-bucket.csproj b/exercises/two-bucket/two-bucket.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/two-bucket/two-bucket.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/variable-length-quantity/variable-length-quantity.csproj b/exercises/variable-length-quantity/variable-length-quantity.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/variable-length-quantity/variable-length-quantity.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/word-count/word-count.csproj b/exercises/word-count/word-count.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/word-count/word-count.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/word-search/Example.cs b/exercises/word-search/Example.cs index b3a5b4113d..a084b702b3 100644 --- a/exercises/word-search/Example.cs +++ b/exercises/word-search/Example.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Drawing; using System.Linq; public class WordSearch @@ -9,16 +8,16 @@ public class WordSearch private readonly int width; private readonly int height; - private static readonly Point[] Directions = + private static readonly Tuple[] Directions = { - new Point( 1, 0), - new Point( 0, 1), - new Point(-1, 0), - new Point( 0, -1), - new Point( 1, 1), - new Point( 1, -1), - new Point(-1, 1), - new Point(-1, -1) + new Tuple( 1, 0), + new Tuple( 0, 1), + new Tuple(-1, 0), + new Tuple( 0, -1), + new Tuple( 1, 1), + new Tuple( 1, -1), + new Tuple(-1, 1), + new Tuple(-1, -1) }; public WordSearch(string puzzle) @@ -28,7 +27,7 @@ public WordSearch(string puzzle) height = rows.Length; } - public Tuple Find(string word) + public Tuple, Tuple> Find(string word) { return Positions() @@ -36,7 +35,7 @@ public Tuple Find(string word) .FirstOrDefault(); } - private IEnumerable> Find(string word, Point position, Point direction) + private IEnumerable, Tuple>> Find(string word, Tuple position, Tuple direction) { var current = position; @@ -47,26 +46,25 @@ private IEnumerable> Find(string word, Point position, Point yield break; } - current.X += direction.X; - current.Y += direction.Y; + current = new Tuple(current.Item1 + direction.Item1, current.Item2 + direction.Item2); } - yield return Tuple.Create(position, new Point(current.X - direction.X, current.Y - direction.Y)); + yield return Tuple.Create(position, new Tuple(current.Item1 - direction.Item1, current.Item2 - direction.Item2)); } - private char? FindChar(Point coordinate) + private char? FindChar(Tuple coordinate) { - if (coordinate.X > 0 && coordinate.X <= width && coordinate.Y > 0 && coordinate.Y <= height) + if (coordinate.Item1 > 0 && coordinate.Item1 <= width && coordinate.Item2 > 0 && coordinate.Item2 <= height) { - return rows[coordinate.Y - 1][coordinate.X - 1]; + return rows[coordinate.Item2 - 1][coordinate.Item1 - 1]; } return null; } - private IEnumerable Positions() + private IEnumerable> Positions() { return Enumerable.Range(1, width).SelectMany(x => - Enumerable.Range(1, height).Select(y =>new Point(x, y))); + Enumerable.Range(1, height).Select(y => new Tuple(x, y))); } } \ No newline at end of file diff --git a/exercises/word-search/WordSearchTest.cs b/exercises/word-search/WordSearchTest.cs index 87ad1206c2..18a57e1f41 100644 --- a/exercises/word-search/WordSearchTest.cs +++ b/exercises/word-search/WordSearchTest.cs @@ -1,5 +1,4 @@ using System; -using System.Drawing; using Xunit; public class WordSearchTest @@ -21,8 +20,8 @@ public void Should_find_horizontal_words_written_left_to_right() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("clojure"); - Assert.Equal(new Point(1, 10), actual.Item1); - Assert.Equal(new Point(7, 10), actual.Item2); + Assert.Equal(new Tuple(1, 10), actual.Item1); + Assert.Equal(new Tuple(7, 10), actual.Item2); } [Fact(Skip = "Remove to run test")] @@ -30,8 +29,8 @@ public void Should_find_horizontal_words_written_right_to_left() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("elixir"); - Assert.Equal(new Point(6, 5), actual.Item1); - Assert.Equal(new Point(1, 5), actual.Item2); + Assert.Equal(new Tuple(6, 5), actual.Item1); + Assert.Equal(new Tuple(1, 5), actual.Item2); } [Fact(Skip = "Remove to run test")] @@ -39,8 +38,8 @@ public void Should_find_vertical_words_written_top_to_bottom() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("ecmascript"); - Assert.Equal(new Point(10, 1), actual.Item1); - Assert.Equal(new Point(10, 10), actual.Item2); + Assert.Equal(new Tuple(10, 1), actual.Item1); + Assert.Equal(new Tuple(10, 10), actual.Item2); } [Fact(Skip = "Remove to run test")] @@ -48,8 +47,8 @@ public void Should_find_vertical_words_written_bottom_to_top() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("rust"); - Assert.Equal(new Point(9, 5), actual.Item1); - Assert.Equal(new Point(9, 2), actual.Item2); + Assert.Equal(new Tuple(9, 5), actual.Item1); + Assert.Equal(new Tuple(9, 2), actual.Item2); } [Fact(Skip = "Remove to run test")] @@ -57,8 +56,8 @@ public void Should_find_diagonal_words_written_top_left_to_bottom_right() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("java"); - Assert.Equal(new Point(1, 1), actual.Item1); - Assert.Equal(new Point(4, 4), actual.Item2); + Assert.Equal(new Tuple(1, 1), actual.Item1); + Assert.Equal(new Tuple(4, 4), actual.Item2); } [Fact(Skip = "Remove to run test")] @@ -66,8 +65,8 @@ public void Should_find_diagonal_upper_written_bottom_right_to_top_left() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("lua"); - Assert.Equal(new Point(8, 9), actual.Item1); - Assert.Equal(new Point(6, 7), actual.Item2); + Assert.Equal(new Tuple(8, 9), actual.Item1); + Assert.Equal(new Tuple(6, 7), actual.Item2); } [Fact(Skip = "Remove to run test")] @@ -75,8 +74,8 @@ public void Should_find_diagonal_upper_written_bottom_left_to_top_right() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("lisp"); - Assert.Equal(new Point(3, 6), actual.Item1); - Assert.Equal(new Point(6, 3), actual.Item2); + Assert.Equal(new Tuple(3, 6), actual.Item1); + Assert.Equal(new Tuple(6, 3), actual.Item2); } [Fact(Skip = "Remove to run test")] @@ -84,8 +83,8 @@ public void Should_find_diagonal_upper_written_top_right_to_bottom_left() { var wordSearch = new WordSearch(Puzzle); var actual = wordSearch.Find("ruby"); - Assert.Equal(new Point(8, 6), actual.Item1); - Assert.Equal(new Point(5, 9), actual.Item2); + Assert.Equal(new Tuple(8, 6), actual.Item1); + Assert.Equal(new Tuple(5, 9), actual.Item2); } [Fact(Skip = "Remove to run test")] @@ -106,7 +105,7 @@ public void Should_be_able_to_search_differently_sized_puzzles() var wordSearch = new WordSearch(differentSizePuzzle); var actual = wordSearch.Find("exercism"); - Assert.Equal(new Point(11, 2), actual.Item1); - Assert.Equal(new Point(4, 2), actual.Item2); + Assert.Equal(new Tuple(11, 2), actual.Item1); + Assert.Equal(new Tuple(4, 2), actual.Item2); } } \ No newline at end of file diff --git a/exercises/word-search/word-search.csproj b/exercises/word-search/word-search.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/word-search/word-search.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/wordy/wordy.csproj b/exercises/wordy/wordy.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/wordy/wordy.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/zebra-puzzle/zebra-puzzle.csproj b/exercises/zebra-puzzle/zebra-puzzle.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/zebra-puzzle/zebra-puzzle.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/zipper/zipper.csproj b/exercises/zipper/zipper.csproj new file mode 100644 index 0000000000..4a5a44b594 --- /dev/null +++ b/exercises/zipper/zipper.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/paket.dependencies b/paket.dependencies index 65f7891752..4a6f5f8052 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -1,5 +1,2 @@ source https://www.nuget.org/api/v2/ -nuget FAKE -nuget Sprache -nuget xunit -nuget xunit.runner.console \ No newline at end of file +nuget FAKE \ No newline at end of file diff --git a/paket.lock b/paket.lock index cf5c9d5d24..63936acc9f 100644 --- a/paket.lock +++ b/paket.lock @@ -1,163 +1,3 @@ NUGET remote: https://www.nuget.org/api/v2 FAKE (4.50) - Microsoft.NETCore.Platforms (1.1) - framework: dnxcore50, netstandard10, >= netstandard12 - Microsoft.NETCore.Targets (1.1) - framework: dnxcore50, netstandard10, >= netstandard12 - Sprache (2.1) - System.Globalization (>= 4.0.11) - framework: >= netstandard10 - System.Linq (>= 4.1) - framework: >= netstandard10 - System.Runtime (>= 4.1) - framework: >= netstandard10 - System.Text.RegularExpressions (>= 4.1) - framework: >= netstandard10 - System.Collections (4.3) - framework: dnxcore50, netstandard10, >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Diagnostics.Contracts (4.3) - framework: dnxcore50 - System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10 - System.Diagnostics.Debug (4.3) - framework: dnxcore50, >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Globalization (4.3) - framework: dnxcore50, >= netstandard10 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 - System.IO (4.3) - framework: dnxcore50, >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Linq (4.3) - framework: dnxcore50, >= netstandard10 - System.Collections (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard16 - System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard16 - System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Linq.Expressions (4.3) - framework: dnxcore50 - System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.IO (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Linq (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Reflection (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16 - System.Reflection.Emit.ILGeneration (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Reflection.Emit.Lightweight (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Reflection.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Reflection.TypeExtensions (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16 - System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.ObjectModel (4.3) - framework: dnxcore50 - System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13 - System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13 - System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13 - System.Reflection (4.3) - framework: dnxcore50, >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.IO (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Reflection.Emit.ILGeneration (4.3) - framework: dnxcore50 - System.Reflection.Emit.Lightweight (4.3) - framework: dnxcore50 - System.Reflection.Extensions (4.3) - framework: dnxcore50 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10 - System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard10 - System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10 - System.Reflection.Primitives (4.3) - framework: dnxcore50, >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10 - System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10 - System.Reflection.TypeExtensions (4.3) - framework: dnxcore50 - System.Diagnostics.Contracts (>= 4.3) - framework: dnxcore50 - System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50 - System.Linq (>= 4.3) - framework: dnxcore50 - System.Reflection (>= 4.3) - framework: >= net462, dnxcore50, netstandard13, >= netstandard15 - System.Reflection.Primitives (>= 4.3) - framework: dnxcore50 - System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard15 - System.Runtime.Extensions (>= 4.3) - framework: dnxcore50 - System.Resources.ResourceManager (4.3) - framework: dnxcore50, >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10 - System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard10 - System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard10 - System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10 - System.Runtime (4.3) - framework: dnxcore50, >= netstandard10 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15 - System.Runtime.Extensions (4.3) - framework: dnxcore50, >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15 - System.Text.Encoding (4.3) - framework: dnxcore50, >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Text.RegularExpressions (4.3) - framework: dnxcore50, >= netstandard10 - System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16, netcore11 - System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16 - System.Threading (4.3) - framework: dnxcore50, >= netstandard16 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Threading.Tasks (4.3) - framework: dnxcore50, >= netstandard16 - Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 - Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13 - System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13 - xunit (2.1) - xunit.assert (2.1) - xunit.core (2.1) - xunit.abstractions (2.0) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 - xunit.assert (2.1) - System.Collections (>= 4.0) - framework: dnxcore50 - System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 - System.Globalization (>= 4.0) - framework: dnxcore50 - System.Linq (>= 4.0) - framework: dnxcore50 - System.ObjectModel (>= 4.0) - framework: dnxcore50 - System.Reflection (>= 4.0) - framework: dnxcore50 - System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 - System.Runtime (>= 4.0) - framework: dnxcore50 - System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 - System.Text.RegularExpressions (>= 4.0) - framework: dnxcore50 - System.Threading.Tasks (>= 4.0) - framework: dnxcore50 - xunit.core (2.1) - System.Collections (>= 4.0) - framework: dnxcore50 - System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 - System.Globalization (>= 4.0) - framework: dnxcore50 - System.Linq (>= 4.0) - framework: dnxcore50 - System.Reflection (>= 4.0) - framework: dnxcore50 - System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 - System.Runtime (>= 4.0) - framework: dnxcore50 - System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 - System.Threading.Tasks (>= 4.0) - framework: dnxcore50 - xunit.abstractions (>= 2.0) - framework: dnxcore50 - xunit.extensibility.core (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 - xunit.extensibility.execution (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 - xunit.extensibility.core (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 - xunit.abstractions (2.0) - xunit.extensibility.execution (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, portable-net45+win80+wp80+wpa81, xamarinios, winv4.5, wpv8.0, wpav8.1 - System.Collections (>= 4.0) - framework: dnxcore50 - System.Diagnostics.Debug (>= 4.0) - framework: dnxcore50 - System.Globalization (>= 4.0) - framework: dnxcore50 - System.IO (>= 4.0) - framework: dnxcore50 - System.Linq (>= 4.0) - framework: dnxcore50 - System.Linq.Expressions (>= 4.0) - framework: dnxcore50 - System.Reflection (>= 4.0) - framework: dnxcore50 - System.Reflection.Extensions (>= 4.0) - framework: dnxcore50 - System.Runtime (>= 4.0) - framework: dnxcore50 - System.Runtime.Extensions (>= 4.0) - framework: dnxcore50 - System.Text.Encoding (>= 4.0) - framework: dnxcore50 - System.Threading (>= 4.0) - framework: dnxcore50 - System.Threading.Tasks (>= 4.0) - framework: dnxcore50 - xunit.abstractions (>= 2.0) - framework: dnxcore50 - xunit.extensibility.core (2.1) - framework: >= net45, dnx451, dnxcore50, monoandroid, monotouch, xamarinios, winv4.5, wpv8.0, wpav8.1 - xunit.runner.console (2.1) From f0cc2f5905bf0d5fdea929ba21f31bb2bb05aa16 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Mon, 13 Feb 2017 16:41:56 +0100 Subject: [PATCH 03/19] Enable CI support for .NET Core --- .travis.yml | 29 +++++- appveyor.yml | 7 +- build.fsx | 73 ++++++++++----- circle.yml | 14 +++ exercises/accumulate/Accumulate.cs | 10 +++ .../{accumulate.csproj => Accumulate.csproj} | 6 +- exercises/acronym/Acronym.cs | 9 ++ .../{acronym.csproj => Acronym.csproj} | 6 +- exercises/all-your-base/AllYourBase.cs | 9 ++ ...ll-your-base.csproj => AllYourBase.csproj} | 6 +- exercises/allergies/Allergies.cs | 19 ++++ .../{allergies.csproj => Allergies.csproj} | 6 +- exercises/alphametics/Alphametics.cs | 10 +++ ...{alphametics.csproj => Alphametics.csproj} | 6 +- exercises/anagram/Anagram.cs | 14 +++ exercises/anagram/Anagram.csproj | 14 +++ exercises/anagram/anagram.csproj | 14 --- exercises/atbash-cipher/AtbashCipher.cs | 9 ++ exercises/atbash-cipher/AtbashCipher.csproj | 14 +++ exercises/atbash-cipher/atbash-cipher.csproj | 14 --- exercises/bank-account/BankAccount.cs | 27 ++++++ exercises/bank-account/BankAccount.csproj | 14 +++ exercises/bank-account/bank-account.csproj | 14 --- exercises/beer-song/BeerSong.cs | 14 +++ exercises/beer-song/BeerSong.csproj | 14 +++ exercises/beer-song/beer-song.csproj | 14 --- .../binary-search-tree/BinarySearchTree.cs | 53 +++++++++++ .../BinarySearchTree.csproj | 14 +++ .../binary-search-tree.csproj | 14 --- exercises/binary-search/BinarySearch.cs | 9 ++ exercises/binary-search/BinarySearch.csproj | 14 +++ exercises/binary-search/binary-search.csproj | 14 --- exercises/bob/Bob.cs | 9 ++ exercises/bob/Bob.csproj | 14 +++ exercises/bob/Example.cs | 5 +- exercises/bob/bob.csproj | 14 --- exercises/book-store/BookStore.cs | 10 +++ exercises/book-store/BookStore.csproj | 14 +++ exercises/book-store/Example.cs | 2 +- exercises/book-store/book-store.csproj | 14 --- exercises/bowling/Bowling.cs | 14 +++ exercises/bowling/Bowling.csproj | 14 +++ exercises/bowling/bowling.csproj | 14 --- exercises/bracket-push/BracketPush.cs | 9 ++ exercises/bracket-push/BracketPush.csproj | 14 +++ exercises/bracket-push/bracket-push.csproj | 14 --- exercises/change/Change.cs | 9 ++ exercises/change/Change.csproj | 14 +++ exercises/change/change.csproj | 14 --- exercises/circular-buffer/CircularBuffer.cs | 29 ++++++ .../circular-buffer/CircularBuffer.csproj | 14 +++ .../circular-buffer/circular-buffer.csproj | 14 --- exercises/clock/Clock.cs | 24 +++++ exercises/clock/Clock.csproj | 14 +++ exercises/clock/clock.csproj | 14 --- exercises/connect/Connect.cs | 21 +++++ exercises/connect/Connect.csproj | 14 +++ exercises/connect/connect.csproj | 14 --- exercises/crypto-square/CryptoSquare.cs | 41 +++++++++ exercises/crypto-square/CryptoSquare.csproj | 14 +++ exercises/crypto-square/crypto-square.csproj | 14 --- exercises/custom-set/CustomSet.cs | 88 +++++++++++++++++++ exercises/custom-set/CustomSet.csproj | 14 +++ exercises/custom-set/Example.cs | 5 ++ exercises/custom-set/custom-set.csproj | 14 --- exercises/diamond/Diamond.cs | 9 ++ exercises/diamond/Diamond.csproj | 14 +++ exercises/diamond/diamond.csproj | 14 --- .../DifferenceOfSquares.cs | 19 ++++ .../DifferenceOfSquares.csproj | 14 +++ .../DifferenceOfSquaresTest.cs | 26 +++--- exercises/difference-of-squares/Example.cs | 22 ++--- .../difference-of-squares.csproj | 14 --- exercises/diffie-hellman/DiffieHellman.cs | 20 +++++ exercises/diffie-hellman/DiffieHellman.csproj | 14 +++ .../diffie-hellman/diffie-hellman.csproj | 14 --- exercises/dominoes/Dominoes.cs | 10 +++ exercises/dominoes/Dominoes.csproj | 14 +++ exercises/dominoes/dominoes.csproj | 14 --- exercises/dot-dsl/DotDsl.cs | 15 ++++ exercises/dot-dsl/DotDsl.csproj | 14 +++ exercises/dot-dsl/dot-dsl.csproj | 14 --- exercises/error-handling/ErrorHandling.cs | 24 +++++ exercises/error-handling/ErrorHandling.csproj | 14 +++ .../error-handling/error-handling.csproj | 14 --- exercises/etl/Etl.cs | 10 +++ exercises/etl/Etl.csproj | 14 +++ exercises/etl/Example.cs | 2 +- exercises/etl/etl.csproj | 14 --- exercises/flatten-array/FlattenArray.cs | 10 +++ exercises/flatten-array/FlattenArray.csproj | 14 +++ exercises/flatten-array/flatten-array.csproj | 14 --- exercises/food-chain/FoodChain.cs | 14 +++ exercises/food-chain/FoodChain.csproj | 14 +++ exercises/food-chain/food-chain.csproj | 14 --- exercises/forth/Forth.cs | 27 ++++++ .../forth/{forth.csproj => Forth.csproj} | 6 +- exercises/gigasecond/Example.cs | 2 +- exercises/gigasecond/Gigasecond.cs | 9 ++ exercises/gigasecond/Gigasecond.csproj | 14 +++ exercises/gigasecond/gigasecond.csproj | 14 --- exercises/go-counting/GoCounting.cs | 27 ++++++ exercises/go-counting/GoCounting.csproj | 14 +++ exercises/go-counting/go-counting.csproj | 14 --- exercises/grade-school/GradeSchool.cs | 20 +++++ exercises/grade-school/GradeSchool.csproj | 14 +++ exercises/grade-school/grade-school.csproj | 14 --- exercises/grains/Grains.cs | 14 +++ exercises/grains/Grains.csproj | 14 +++ exercises/grains/grains.csproj | 14 --- exercises/grep/Grep.cs | 9 ++ exercises/grep/Grep.csproj | 14 +++ exercises/grep/grep.csproj | 14 --- exercises/hamming/Example.cs | 17 +--- exercises/hamming/Hamming.cs | 9 ++ exercises/hamming/Hamming.csproj | 14 +++ exercises/hamming/hamming.csproj | 14 --- exercises/hangman/Hangman.cs | 38 ++++++++ exercises/hangman/Hangman.csproj | 14 +++ exercises/hangman/hangman.csproj | 14 --- exercises/hello-world/HelloWorld.cs | 9 ++ exercises/hello-world/HelloWorld.csproj | 14 +++ exercises/hello-world/hello-world.csproj | 14 --- exercises/house/House.cs | 9 ++ exercises/house/House.csproj | 14 +++ exercises/house/house.csproj | 14 --- exercises/isogram/Isogram.cs | 9 ++ exercises/isogram/Isogram.csproj | 14 +++ exercises/isogram/isogram.csproj | 14 --- .../kindergarten-garden/KindergartenGarden.cs | 27 ++++++ .../KindergartenGarden.csproj | 14 +++ .../kindergarten-garden.csproj | 14 --- .../LargestSeriesProduct.cs | 9 ++ .../LargestSeriesProduct.csproj | 14 +++ .../largest-series-product.csproj | 14 --- exercises/leap/Leap.cs | 9 ++ exercises/leap/Leap.csproj | 14 +++ exercises/leap/leap.csproj | 14 --- exercises/ledger/Example.cs | 21 +++-- exercises/ledger/Ledger.cs | 5 +- exercises/ledger/Ledger.csproj | 14 +++ exercises/ledger/ledger.csproj | 18 ---- exercises/linked-list/LinkedList.cs | 24 +++++ exercises/linked-list/LinkedList.csproj | 14 +++ exercises/linked-list/LinkedListTest.cs | 9 +- exercises/linked-list/linked-list.csproj | 14 --- exercises/list-ops/ListOps.cs | 46 ++++++++++ exercises/list-ops/ListOps.csproj | 14 +++ exercises/list-ops/list-ops.csproj | 14 --- exercises/luhn/Luhn.cs | 9 ++ exercises/luhn/Luhn.csproj | 14 +++ exercises/luhn/luhn.csproj | 14 --- exercises/markdown/Markdown.csproj | 14 +++ exercises/markdown/markdown.csproj | 18 ---- exercises/matrix/Matrix.cs | 34 +++++++ exercises/matrix/Matrix.csproj | 14 +++ exercises/matrix/matrix.csproj | 14 --- exercises/meetup/Meetup.cs | 23 +++++ exercises/meetup/Meetup.csproj | 14 +++ exercises/meetup/meetup.csproj | 14 --- exercises/minesweeper/Minesweeper.cs | 9 ++ exercises/minesweeper/Minesweeper.csproj | 14 +++ exercises/minesweeper/minesweeper.csproj | 14 --- exercises/nth-prime/NthPrime.cs | 11 +++ exercises/nth-prime/NthPrime.csproj | 14 +++ exercises/nth-prime/nth-prime.csproj | 14 --- exercises/nucleotide-count/NucleotideCount.cs | 24 +++++ .../nucleotide-count/NucleotideCount.csproj | 14 +++ .../nucleotide-count/nucleotide-count.csproj | 14 --- exercises/ocr-numbers/OcrNumbers.cs | 9 ++ exercises/ocr-numbers/OcrNumbers.csproj | 14 +++ exercises/ocr-numbers/ocr-numbers.csproj | 14 --- .../palindrome-products/PalindromeProducts.cs | 42 +++++++++ .../PalindromeProducts.csproj | 14 +++ .../palindrome-products.csproj | 14 --- exercises/pangram/Pangram.cs | 9 ++ exercises/pangram/Pangram.csproj | 14 +++ exercises/pangram/pangram.csproj | 14 --- .../ParallelLetterFrequency.cs | 10 +++ .../ParallelLetterFrequency.csproj | 14 +++ .../parallel-letter-frequency.csproj | 14 --- exercises/pascals-triangle/PascalsTriangle.cs | 10 +++ .../pascals-triangle/PascalsTriangle.csproj | 14 +++ .../pascals-triangle/pascals-triangle.csproj | 14 --- exercises/perfect-numbers/PerfectNumbers.cs | 16 ++++ .../perfect-numbers/PerfectNumbers.csproj | 14 +++ .../perfect-numbers/perfect-numbers.csproj | 14 --- exercises/phone-number/PhoneNumber.cs | 24 +++++ exercises/phone-number/PhoneNumber.csproj | 14 +++ exercises/phone-number/phone-number.csproj | 14 --- exercises/pig-latin/PigLatin.cs | 9 ++ exercises/pig-latin/PigLatin.csproj | 14 +++ exercises/pig-latin/pig-latin.csproj | 14 --- exercises/poker/Poker.cs | 10 +++ exercises/poker/Poker.csproj | 14 +++ exercises/poker/poker.csproj | 14 --- exercises/pov/Pov.cs | 43 +++++++++ exercises/pov/Pov.csproj | 14 +++ exercises/pov/pov.csproj | 14 --- exercises/prime-factors/PrimeFactors.cs | 9 ++ exercises/prime-factors/PrimeFactors.csproj | 14 +++ exercises/prime-factors/prime-factors.csproj | 14 --- .../protein-translation/ProteinTranslation.cs | 9 ++ .../ProteinTranslation.csproj | 14 +++ .../protein-translation.csproj | 14 --- exercises/proverb/Proverb.cs | 14 +++ exercises/proverb/Proverb.csproj | 14 +++ exercises/proverb/proverb.csproj | 14 --- .../pythagorean-triplet/PythagoreanTriplet.cs | 29 ++++++ .../PythagoreanTriplet.csproj | 14 +++ .../pythagorean-triplet.csproj | 14 --- exercises/queen-attack/Example.cs | 19 ++-- exercises/queen-attack/QueenAttack.cs | 21 +++++ exercises/queen-attack/QueenAttack.csproj | 14 +++ exercises/queen-attack/QueenAttackTest.cs | 23 ++--- exercises/queen-attack/queen-attack.csproj | 14 --- .../rail-fence-cipher/RailFenceCipher.cs | 18 ++++ .../rail-fence-cipher/RailFenceCipher.csproj | 14 +++ .../rail-fence-cipher.csproj | 14 --- exercises/raindrops/Raindrops.cs | 9 ++ exercises/raindrops/Raindrops.csproj | 14 +++ exercises/raindrops/raindrops.csproj | 14 --- exercises/react/React.cs | 28 ++++++ exercises/react/React.csproj | 14 +++ exercises/react/react.csproj | 14 --- exercises/rectangles/Rectangles.cs | 9 ++ exercises/rectangles/Rectangles.csproj | 14 +++ exercises/rectangles/rectangles.csproj | 14 --- .../rna-transcription/RnaTranscription.cs | 9 ++ .../rna-transcription/RnaTranscription.csproj | 14 +++ ...plementTest.cs => RnaTranscriptionTest.cs} | 0 .../rna-transcription.csproj | 14 --- exercises/robot-name/RobotName.cs | 17 ++++ exercises/robot-name/RobotName.csproj | 14 +++ exercises/robot-name/robot-name.csproj | 14 --- exercises/robot-simulator/RobotSimulator.cs | 64 ++++++++++++++ .../robot-simulator/RobotSimulator.csproj | 14 +++ .../robot-simulator/robot-simulator.csproj | 14 --- exercises/roman-numerals/RomanNumerals.cs | 9 ++ exercises/roman-numerals/RomanNumerals.csproj | 14 +++ .../roman-numerals/roman-numerals.csproj | 14 --- .../run-length-encoding/RunLengthEncoding.cs | 14 +++ .../RunLengthEncoding.csproj | 14 +++ .../run-length-encoding.csproj | 14 --- exercises/saddle-points/SaddlePoints.cs | 15 ++++ exercises/saddle-points/SaddlePoints.csproj | 14 +++ exercises/saddle-points/saddle-points.csproj | 14 --- exercises/say/Say.cs | 9 ++ exercises/say/Say.csproj | 14 +++ exercises/say/say.csproj | 14 --- exercises/scale-generator/ScaleGenerator.cs | 9 ++ .../scale-generator/ScaleGenerator.csproj | 14 +++ .../scale-generator/scale-generator.csproj | 14 --- exercises/scrabble-score/ScrabbleScore.cs | 9 ++ exercises/scrabble-score/ScrabbleScore.csproj | 14 +++ .../scrabble-score/scrabble-score.csproj | 14 --- exercises/secret-handshake/SecretHandshake.cs | 10 +++ .../secret-handshake/SecretHandshake.csproj | 14 +++ .../secret-handshake/secret-handshake.csproj | 14 --- exercises/series/Series.cs | 13 +++ exercises/series/Series.csproj | 14 +++ exercises/series/series.csproj | 14 --- exercises/sgf-parsing/SgfParsing.cs | 6 +- .../{sgf-parsing.csproj => SgfParsing.csproj} | 10 +-- exercises/sieve/Sieve.cs | 9 ++ exercises/sieve/Sieve.csproj | 14 +++ exercises/sieve/sieve.csproj | 14 --- exercises/simple-cipher/SimpleCipher.cs | 32 +++++++ exercises/simple-cipher/SimpleCipher.csproj | 14 +++ exercises/simple-cipher/simple-cipher.csproj | 14 --- .../simple-linked-list/SimpleLinkedList.cs | 48 ++++++++++ .../SimpleLinkedList.csproj | 14 +++ .../simple-linked-list.csproj | 14 --- exercises/space-age/Example.cs | 6 +- exercises/space-age/SpaceAge.cs | 48 ++++++++++ exercises/space-age/SpaceAge.csproj | 14 +++ exercises/space-age/SpaceAgeTest.cs | 7 -- exercises/space-age/space-age.csproj | 14 --- exercises/strain/Strain.cs | 15 ++++ exercises/strain/Strain.csproj | 14 +++ exercises/strain/strain.csproj | 14 --- exercises/sublist/Sublist.cs | 19 ++++ exercises/sublist/Sublist.csproj | 14 +++ exercises/sublist/sublist.csproj | 14 --- exercises/sum-of-multiples/SumOfMultiples.cs | 10 +++ .../sum-of-multiples/SumOfMultiples.csproj | 14 +++ .../sum-of-multiples/sum-of-multiples.csproj | 14 --- exercises/tournament/Tournament.cs | 10 +++ exercises/tournament/Tournament.csproj | 14 +++ exercises/tournament/tournament.csproj | 14 --- exercises/transpose/Transpose.cs | 9 ++ exercises/transpose/Transpose.csproj | 14 +++ exercises/transpose/transpose.csproj | 14 --- exercises/tree-building/TreeBuilding.csproj | 14 +++ exercises/tree-building/tree-building.csproj | 18 ---- exercises/triangle/Triangle.cs | 18 ++++ exercises/triangle/Triangle.csproj | 14 +++ exercises/triangle/triangle.csproj | 14 --- exercises/twelve-days/Example.cs | 8 +- exercises/twelve-days/TwelveDays.cs | 19 ++++ exercises/twelve-days/TwelveDays.csproj | 14 +++ exercises/twelve-days/TwelveDaysTest.cs | 30 +++---- exercises/twelve-days/twelve-days.csproj | 14 --- exercises/two-bucket/TwoBucket.cs | 27 ++++++ exercises/two-bucket/TwoBucket.csproj | 14 +++ exercises/two-bucket/two-bucket.csproj | 14 --- .../VariableLengthQuantity.cs | 14 +++ .../VariableLengthQuantity.csproj | 14 +++ .../variable-length-quantity.csproj | 14 --- exercises/word-count/WordCount.cs | 10 +++ exercises/word-count/WordCount.csproj | 14 +++ exercises/word-count/word-count.csproj | 14 --- exercises/word-search/WordSearch.cs | 16 ++++ exercises/word-search/WordSearch.csproj | 14 +++ exercises/word-search/word-search.csproj | 14 --- exercises/wordy/Wordy.cs | 9 ++ exercises/wordy/Wordy.csproj | 14 +++ exercises/wordy/wordy.csproj | 14 --- exercises/zebra-puzzle/ZebraPuzzle.cs | 22 +++++ exercises/zebra-puzzle/ZebraPuzzle.csproj | 14 +++ exercises/zebra-puzzle/zebra-puzzle.csproj | 14 --- exercises/zipper/Zipper.cs | 64 ++++++++++++++ exercises/zipper/Zipper.csproj | 14 +++ exercises/zipper/zipper.csproj | 14 --- 324 files changed, 3447 insertions(+), 1543 deletions(-) create mode 100644 exercises/accumulate/Accumulate.cs rename exercises/accumulate/{accumulate.csproj => Accumulate.csproj} (71%) create mode 100644 exercises/acronym/Acronym.cs rename exercises/acronym/{acronym.csproj => Acronym.csproj} (71%) create mode 100644 exercises/all-your-base/AllYourBase.cs rename exercises/all-your-base/{all-your-base.csproj => AllYourBase.csproj} (71%) create mode 100644 exercises/allergies/Allergies.cs rename exercises/allergies/{allergies.csproj => Allergies.csproj} (71%) create mode 100644 exercises/alphametics/Alphametics.cs rename exercises/alphametics/{alphametics.csproj => Alphametics.csproj} (75%) create mode 100644 exercises/anagram/Anagram.cs create mode 100644 exercises/anagram/Anagram.csproj delete mode 100644 exercises/anagram/anagram.csproj create mode 100644 exercises/atbash-cipher/AtbashCipher.cs create mode 100644 exercises/atbash-cipher/AtbashCipher.csproj delete mode 100644 exercises/atbash-cipher/atbash-cipher.csproj create mode 100644 exercises/bank-account/BankAccount.cs create mode 100644 exercises/bank-account/BankAccount.csproj delete mode 100644 exercises/bank-account/bank-account.csproj create mode 100644 exercises/beer-song/BeerSong.cs create mode 100644 exercises/beer-song/BeerSong.csproj delete mode 100644 exercises/beer-song/beer-song.csproj create mode 100644 exercises/binary-search-tree/BinarySearchTree.cs create mode 100644 exercises/binary-search-tree/BinarySearchTree.csproj delete mode 100644 exercises/binary-search-tree/binary-search-tree.csproj create mode 100644 exercises/binary-search/BinarySearch.cs create mode 100644 exercises/binary-search/BinarySearch.csproj delete mode 100644 exercises/binary-search/binary-search.csproj create mode 100644 exercises/bob/Bob.cs create mode 100644 exercises/bob/Bob.csproj delete mode 100644 exercises/bob/bob.csproj create mode 100644 exercises/book-store/BookStore.cs create mode 100644 exercises/book-store/BookStore.csproj delete mode 100644 exercises/book-store/book-store.csproj create mode 100644 exercises/bowling/Bowling.cs create mode 100644 exercises/bowling/Bowling.csproj delete mode 100644 exercises/bowling/bowling.csproj create mode 100644 exercises/bracket-push/BracketPush.cs create mode 100644 exercises/bracket-push/BracketPush.csproj delete mode 100644 exercises/bracket-push/bracket-push.csproj create mode 100644 exercises/change/Change.cs create mode 100644 exercises/change/Change.csproj delete mode 100644 exercises/change/change.csproj create mode 100644 exercises/circular-buffer/CircularBuffer.cs create mode 100644 exercises/circular-buffer/CircularBuffer.csproj delete mode 100644 exercises/circular-buffer/circular-buffer.csproj create mode 100644 exercises/clock/Clock.cs create mode 100644 exercises/clock/Clock.csproj delete mode 100644 exercises/clock/clock.csproj create mode 100644 exercises/connect/Connect.cs create mode 100644 exercises/connect/Connect.csproj delete mode 100644 exercises/connect/connect.csproj create mode 100644 exercises/crypto-square/CryptoSquare.cs create mode 100644 exercises/crypto-square/CryptoSquare.csproj delete mode 100644 exercises/crypto-square/crypto-square.csproj create mode 100644 exercises/custom-set/CustomSet.cs create mode 100644 exercises/custom-set/CustomSet.csproj delete mode 100644 exercises/custom-set/custom-set.csproj create mode 100644 exercises/diamond/Diamond.cs create mode 100644 exercises/diamond/Diamond.csproj delete mode 100644 exercises/diamond/diamond.csproj create mode 100644 exercises/difference-of-squares/DifferenceOfSquares.cs create mode 100644 exercises/difference-of-squares/DifferenceOfSquares.csproj delete mode 100644 exercises/difference-of-squares/difference-of-squares.csproj create mode 100644 exercises/diffie-hellman/DiffieHellman.cs create mode 100644 exercises/diffie-hellman/DiffieHellman.csproj delete mode 100644 exercises/diffie-hellman/diffie-hellman.csproj create mode 100644 exercises/dominoes/Dominoes.cs create mode 100644 exercises/dominoes/Dominoes.csproj delete mode 100644 exercises/dominoes/dominoes.csproj create mode 100644 exercises/dot-dsl/DotDsl.cs create mode 100644 exercises/dot-dsl/DotDsl.csproj delete mode 100644 exercises/dot-dsl/dot-dsl.csproj create mode 100644 exercises/error-handling/ErrorHandling.cs create mode 100644 exercises/error-handling/ErrorHandling.csproj delete mode 100644 exercises/error-handling/error-handling.csproj create mode 100644 exercises/etl/Etl.cs create mode 100644 exercises/etl/Etl.csproj delete mode 100644 exercises/etl/etl.csproj create mode 100644 exercises/flatten-array/FlattenArray.cs create mode 100644 exercises/flatten-array/FlattenArray.csproj delete mode 100644 exercises/flatten-array/flatten-array.csproj create mode 100644 exercises/food-chain/FoodChain.cs create mode 100644 exercises/food-chain/FoodChain.csproj delete mode 100644 exercises/food-chain/food-chain.csproj create mode 100644 exercises/forth/Forth.cs rename exercises/forth/{forth.csproj => Forth.csproj} (75%) create mode 100644 exercises/gigasecond/Gigasecond.cs create mode 100644 exercises/gigasecond/Gigasecond.csproj delete mode 100644 exercises/gigasecond/gigasecond.csproj create mode 100644 exercises/go-counting/GoCounting.cs create mode 100644 exercises/go-counting/GoCounting.csproj delete mode 100644 exercises/go-counting/go-counting.csproj create mode 100644 exercises/grade-school/GradeSchool.cs create mode 100644 exercises/grade-school/GradeSchool.csproj delete mode 100644 exercises/grade-school/grade-school.csproj create mode 100644 exercises/grains/Grains.cs create mode 100644 exercises/grains/Grains.csproj delete mode 100644 exercises/grains/grains.csproj create mode 100644 exercises/grep/Grep.cs create mode 100644 exercises/grep/Grep.csproj delete mode 100644 exercises/grep/grep.csproj create mode 100644 exercises/hamming/Hamming.cs create mode 100644 exercises/hamming/Hamming.csproj delete mode 100644 exercises/hamming/hamming.csproj create mode 100644 exercises/hangman/Hangman.cs create mode 100644 exercises/hangman/Hangman.csproj delete mode 100644 exercises/hangman/hangman.csproj create mode 100644 exercises/hello-world/HelloWorld.cs create mode 100644 exercises/hello-world/HelloWorld.csproj delete mode 100644 exercises/hello-world/hello-world.csproj create mode 100644 exercises/house/House.cs create mode 100644 exercises/house/House.csproj delete mode 100644 exercises/house/house.csproj create mode 100644 exercises/isogram/Isogram.cs create mode 100644 exercises/isogram/Isogram.csproj delete mode 100644 exercises/isogram/isogram.csproj create mode 100644 exercises/kindergarten-garden/KindergartenGarden.cs create mode 100644 exercises/kindergarten-garden/KindergartenGarden.csproj delete mode 100644 exercises/kindergarten-garden/kindergarten-garden.csproj create mode 100644 exercises/largest-series-product/LargestSeriesProduct.cs create mode 100644 exercises/largest-series-product/LargestSeriesProduct.csproj delete mode 100644 exercises/largest-series-product/largest-series-product.csproj create mode 100644 exercises/leap/Leap.cs create mode 100644 exercises/leap/Leap.csproj delete mode 100644 exercises/leap/leap.csproj create mode 100644 exercises/ledger/Ledger.csproj delete mode 100644 exercises/ledger/ledger.csproj create mode 100644 exercises/linked-list/LinkedList.cs create mode 100644 exercises/linked-list/LinkedList.csproj delete mode 100644 exercises/linked-list/linked-list.csproj create mode 100644 exercises/list-ops/ListOps.cs create mode 100644 exercises/list-ops/ListOps.csproj delete mode 100644 exercises/list-ops/list-ops.csproj create mode 100644 exercises/luhn/Luhn.cs create mode 100644 exercises/luhn/Luhn.csproj delete mode 100644 exercises/luhn/luhn.csproj create mode 100644 exercises/markdown/Markdown.csproj delete mode 100644 exercises/markdown/markdown.csproj create mode 100644 exercises/matrix/Matrix.cs create mode 100644 exercises/matrix/Matrix.csproj delete mode 100644 exercises/matrix/matrix.csproj create mode 100644 exercises/meetup/Meetup.cs create mode 100644 exercises/meetup/Meetup.csproj delete mode 100644 exercises/meetup/meetup.csproj create mode 100644 exercises/minesweeper/Minesweeper.cs create mode 100644 exercises/minesweeper/Minesweeper.csproj delete mode 100644 exercises/minesweeper/minesweeper.csproj create mode 100644 exercises/nth-prime/NthPrime.cs create mode 100644 exercises/nth-prime/NthPrime.csproj delete mode 100644 exercises/nth-prime/nth-prime.csproj create mode 100644 exercises/nucleotide-count/NucleotideCount.cs create mode 100644 exercises/nucleotide-count/NucleotideCount.csproj delete mode 100644 exercises/nucleotide-count/nucleotide-count.csproj create mode 100644 exercises/ocr-numbers/OcrNumbers.cs create mode 100644 exercises/ocr-numbers/OcrNumbers.csproj delete mode 100644 exercises/ocr-numbers/ocr-numbers.csproj create mode 100644 exercises/palindrome-products/PalindromeProducts.cs create mode 100644 exercises/palindrome-products/PalindromeProducts.csproj delete mode 100644 exercises/palindrome-products/palindrome-products.csproj create mode 100644 exercises/pangram/Pangram.cs create mode 100644 exercises/pangram/Pangram.csproj delete mode 100644 exercises/pangram/pangram.csproj create mode 100644 exercises/parallel-letter-frequency/ParallelLetterFrequency.cs create mode 100644 exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj delete mode 100644 exercises/parallel-letter-frequency/parallel-letter-frequency.csproj create mode 100644 exercises/pascals-triangle/PascalsTriangle.cs create mode 100644 exercises/pascals-triangle/PascalsTriangle.csproj delete mode 100644 exercises/pascals-triangle/pascals-triangle.csproj create mode 100644 exercises/perfect-numbers/PerfectNumbers.cs create mode 100644 exercises/perfect-numbers/PerfectNumbers.csproj delete mode 100644 exercises/perfect-numbers/perfect-numbers.csproj create mode 100644 exercises/phone-number/PhoneNumber.cs create mode 100644 exercises/phone-number/PhoneNumber.csproj delete mode 100644 exercises/phone-number/phone-number.csproj create mode 100644 exercises/pig-latin/PigLatin.cs create mode 100644 exercises/pig-latin/PigLatin.csproj delete mode 100644 exercises/pig-latin/pig-latin.csproj create mode 100644 exercises/poker/Poker.cs create mode 100644 exercises/poker/Poker.csproj delete mode 100644 exercises/poker/poker.csproj create mode 100644 exercises/pov/Pov.cs create mode 100644 exercises/pov/Pov.csproj delete mode 100644 exercises/pov/pov.csproj create mode 100644 exercises/prime-factors/PrimeFactors.cs create mode 100644 exercises/prime-factors/PrimeFactors.csproj delete mode 100644 exercises/prime-factors/prime-factors.csproj create mode 100644 exercises/protein-translation/ProteinTranslation.cs create mode 100644 exercises/protein-translation/ProteinTranslation.csproj delete mode 100644 exercises/protein-translation/protein-translation.csproj create mode 100644 exercises/proverb/Proverb.cs create mode 100644 exercises/proverb/Proverb.csproj delete mode 100644 exercises/proverb/proverb.csproj create mode 100644 exercises/pythagorean-triplet/PythagoreanTriplet.cs create mode 100644 exercises/pythagorean-triplet/PythagoreanTriplet.csproj delete mode 100644 exercises/pythagorean-triplet/pythagorean-triplet.csproj create mode 100644 exercises/queen-attack/QueenAttack.cs create mode 100644 exercises/queen-attack/QueenAttack.csproj delete mode 100644 exercises/queen-attack/queen-attack.csproj create mode 100644 exercises/rail-fence-cipher/RailFenceCipher.cs create mode 100644 exercises/rail-fence-cipher/RailFenceCipher.csproj delete mode 100644 exercises/rail-fence-cipher/rail-fence-cipher.csproj create mode 100644 exercises/raindrops/Raindrops.cs create mode 100644 exercises/raindrops/Raindrops.csproj delete mode 100644 exercises/raindrops/raindrops.csproj create mode 100644 exercises/react/React.cs create mode 100644 exercises/react/React.csproj delete mode 100644 exercises/react/react.csproj create mode 100644 exercises/rectangles/Rectangles.cs create mode 100644 exercises/rectangles/Rectangles.csproj delete mode 100644 exercises/rectangles/rectangles.csproj create mode 100644 exercises/rna-transcription/RnaTranscription.cs create mode 100644 exercises/rna-transcription/RnaTranscription.csproj rename exercises/rna-transcription/{ComplementTest.cs => RnaTranscriptionTest.cs} (100%) delete mode 100644 exercises/rna-transcription/rna-transcription.csproj create mode 100644 exercises/robot-name/RobotName.cs create mode 100644 exercises/robot-name/RobotName.csproj delete mode 100644 exercises/robot-name/robot-name.csproj create mode 100644 exercises/robot-simulator/RobotSimulator.cs create mode 100644 exercises/robot-simulator/RobotSimulator.csproj delete mode 100644 exercises/robot-simulator/robot-simulator.csproj create mode 100644 exercises/roman-numerals/RomanNumerals.cs create mode 100644 exercises/roman-numerals/RomanNumerals.csproj delete mode 100644 exercises/roman-numerals/roman-numerals.csproj create mode 100644 exercises/run-length-encoding/RunLengthEncoding.cs create mode 100644 exercises/run-length-encoding/RunLengthEncoding.csproj delete mode 100644 exercises/run-length-encoding/run-length-encoding.csproj create mode 100644 exercises/saddle-points/SaddlePoints.cs create mode 100644 exercises/saddle-points/SaddlePoints.csproj delete mode 100644 exercises/saddle-points/saddle-points.csproj create mode 100644 exercises/say/Say.cs create mode 100644 exercises/say/Say.csproj delete mode 100644 exercises/say/say.csproj create mode 100644 exercises/scale-generator/ScaleGenerator.cs create mode 100644 exercises/scale-generator/ScaleGenerator.csproj delete mode 100644 exercises/scale-generator/scale-generator.csproj create mode 100644 exercises/scrabble-score/ScrabbleScore.cs create mode 100644 exercises/scrabble-score/ScrabbleScore.csproj delete mode 100644 exercises/scrabble-score/scrabble-score.csproj create mode 100644 exercises/secret-handshake/SecretHandshake.cs create mode 100644 exercises/secret-handshake/SecretHandshake.csproj delete mode 100644 exercises/secret-handshake/secret-handshake.csproj create mode 100644 exercises/series/Series.cs create mode 100644 exercises/series/Series.csproj delete mode 100644 exercises/series/series.csproj rename exercises/sgf-parsing/{sgf-parsing.csproj => SgfParsing.csproj} (66%) create mode 100644 exercises/sieve/Sieve.cs create mode 100644 exercises/sieve/Sieve.csproj delete mode 100644 exercises/sieve/sieve.csproj create mode 100644 exercises/simple-cipher/SimpleCipher.cs create mode 100644 exercises/simple-cipher/SimpleCipher.csproj delete mode 100644 exercises/simple-cipher/simple-cipher.csproj create mode 100644 exercises/simple-linked-list/SimpleLinkedList.cs create mode 100644 exercises/simple-linked-list/SimpleLinkedList.csproj delete mode 100644 exercises/simple-linked-list/simple-linked-list.csproj create mode 100644 exercises/space-age/SpaceAge.cs create mode 100644 exercises/space-age/SpaceAge.csproj delete mode 100644 exercises/space-age/space-age.csproj create mode 100644 exercises/strain/Strain.cs create mode 100644 exercises/strain/Strain.csproj delete mode 100644 exercises/strain/strain.csproj create mode 100644 exercises/sublist/Sublist.cs create mode 100644 exercises/sublist/Sublist.csproj delete mode 100644 exercises/sublist/sublist.csproj create mode 100644 exercises/sum-of-multiples/SumOfMultiples.cs create mode 100644 exercises/sum-of-multiples/SumOfMultiples.csproj delete mode 100644 exercises/sum-of-multiples/sum-of-multiples.csproj create mode 100644 exercises/tournament/Tournament.cs create mode 100644 exercises/tournament/Tournament.csproj delete mode 100644 exercises/tournament/tournament.csproj create mode 100644 exercises/transpose/Transpose.cs create mode 100644 exercises/transpose/Transpose.csproj delete mode 100644 exercises/transpose/transpose.csproj create mode 100644 exercises/tree-building/TreeBuilding.csproj delete mode 100644 exercises/tree-building/tree-building.csproj create mode 100644 exercises/triangle/Triangle.cs create mode 100644 exercises/triangle/Triangle.csproj delete mode 100644 exercises/triangle/triangle.csproj create mode 100644 exercises/twelve-days/TwelveDays.cs create mode 100644 exercises/twelve-days/TwelveDays.csproj delete mode 100644 exercises/twelve-days/twelve-days.csproj create mode 100644 exercises/two-bucket/TwoBucket.cs create mode 100644 exercises/two-bucket/TwoBucket.csproj delete mode 100644 exercises/two-bucket/two-bucket.csproj create mode 100644 exercises/variable-length-quantity/VariableLengthQuantity.cs create mode 100644 exercises/variable-length-quantity/VariableLengthQuantity.csproj delete mode 100644 exercises/variable-length-quantity/variable-length-quantity.csproj create mode 100644 exercises/word-count/WordCount.cs create mode 100644 exercises/word-count/WordCount.csproj delete mode 100644 exercises/word-count/word-count.csproj create mode 100644 exercises/word-search/WordSearch.cs create mode 100644 exercises/word-search/WordSearch.csproj delete mode 100644 exercises/word-search/word-search.csproj create mode 100644 exercises/wordy/Wordy.cs create mode 100644 exercises/wordy/Wordy.csproj delete mode 100644 exercises/wordy/wordy.csproj create mode 100644 exercises/zebra-puzzle/ZebraPuzzle.cs create mode 100644 exercises/zebra-puzzle/ZebraPuzzle.csproj delete mode 100644 exercises/zebra-puzzle/zebra-puzzle.csproj create mode 100644 exercises/zipper/Zipper.cs create mode 100644 exercises/zipper/Zipper.csproj delete mode 100644 exercises/zipper/zipper.csproj diff --git a/.travis.yml b/.travis.yml index 21ab622e32..131ddc6550 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,33 @@ language: csharp - +sudo: required +dist: trusty +addons: + apt: + sources: ['ubuntu-toolchain-r-test'] + packages: + - gettext + - libcurl4-openssl-dev + - libicu-dev + - libssl-dev + - libunwind8 + - zlib1g + - libstdc++6 +env: + global: + - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 + - DOTNET_CLI_TELEMETRY_OPTOUT: 1 +mono: + - 4.0.5 os: - linux - - osx + +before_install: + - curl https://download.microsoft.com/download/B/4/6/B4678511-01F4-4F97-902B-0E58A985932A/dotnet-dev-debian-x64.1.0.0-rc4-004771.tar.gz -o /tmp/dotnet.tar.gz + - sudo mkdir -p /opt/dotnet + - sudo tar zxf /tmp/dotnet.tar.gz -C /opt/dotnet + - sudo ln -s /opt/dotnet/dotnet /usr/local/bin script: - ./bin/fetch-configlet - ./bin/configlet . - - ./build.sh \ No newline at end of file + - ./build.sh diff --git a/appveyor.yml b/appveyor.yml index 2fe5df9633..4527eb3a9f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,9 @@ +init: +- ps: (New-Object Net.WebClient).DownloadFile('https://download.microsoft.com/download/5/F/E/5FEB7E95-C643-48D5-8329-9D2C63676CE8/dotnet-dev-win-x64.1.0.0-rc4-004771.exe', "c:/dotnet-install.exe") +- cmd: c:\dotnet-install.exe /install /quiet build_script: - ps: .\build.cmd - +environment: + DOTNET_CLI_TELEMETRY_OPTOUT: true + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true test: off \ No newline at end of file diff --git a/build.fsx b/build.fsx index 6ba75f536b..f9cb758c2c 100644 --- a/build.fsx +++ b/build.fsx @@ -5,18 +5,21 @@ open Fake.DotNetCli let buildDir = "./build/" let sourceDir = "./exercises/" -let projects = !! (buildDir @@ "*/*.csproj") -let tests = !! (buildDir @@ "**/*Test.cs") -let restore project = DotNetCli.Restore (fun p -> - { p with NoCache = true - Project = project }) +let testFiles = !! (buildDir @@ "*/*Test.cs") +let allProjects = !! (buildDir @@ "*/*.csproj") +let defaultProjects = + !! (buildDir @@ "*/*.csproj") -- + (buildDir @@ "*/DotDsl.csproj") -- + (buildDir @@ "*/React.csproj") +let refactoringProjects = + !! (buildDir @@ "*/TreeBuilding.csproj") ++ + (buildDir @@ "*/Ledger.csproj") ++ + (buildDir @@ "*/Markdown.csproj") -let build project = DotNetCli.Build (fun p -> - { p with Project = project }) - -let test project = DotNetCli.Test (fun p -> - { p with Project = project }) +let restore project = DotNetCli.Restore (fun p -> { p with Project = project }) +let build project = DotNetCli.Build (fun p -> { p with Project = project }) +let test project = DotNetCli.Test (fun p -> { p with Project = project }) let restoreAndBuild project = restore project @@ -27,22 +30,52 @@ let restoreAndTest project = test project Target "Clean" (fun _ -> - CleanDirs [buildDir] + DeleteDir buildDir ) -Target "Copy" (fun _ -> +Target "CopyExercises" (fun _ -> CopyDir buildDir sourceDir allFiles ) -Target "Test" (fun _ -> - let ignorePattern = "Skip\s*=\s*\"Remove to run test\"" - RegexReplaceInFilesWithEncoding ignorePattern "" System.Text.Encoding.UTF8 tests - - Seq.iter restoreAndTest projects +Target "IgnoreExampleImplementation" (fun _ -> + RegexReplaceInFilesWithEncoding + "" + "" + System.Text.Encoding.UTF8 allProjects +) + +Target "BuildUsingDefaultImplementation" (fun _ -> + Seq.iter restoreAndBuild defaultProjects +) + +Target "EnableAllTests" (fun _ -> + RegexReplaceInFilesWithEncoding + "Skip\s*=\s*\"Remove to run test\"" + "" + System.Text.Encoding.UTF8 testFiles +) + +Target "TestRefactoringProjects" (fun _ -> + Seq.iter restoreAndTest refactoringProjects +) + +Target "TestUsingExampleImplementation" (fun _ -> + let useExampleInsteadOfDefaultImplementation project = + let projectDir = directory project + let exampleFile = projectDir @@ "Example.cs" + let defaultFile = projectDir @@ filename project + "" |> changeExt ".cs" + CopyFile defaultFile exampleFile + + Seq.iter useExampleInsteadOfDefaultImplementation allProjects + Seq.iter restoreAndTest allProjects ) "Clean" - ==> "Copy" - ==> "Test" + ==> "CopyExercises" + ==> "IgnoreExampleImplementation" + ==> "BuildUsingDefaultImplementation" + ==> "EnableAllTests" + ==> "TestRefactoringProjects" + ==> "TestUsingExampleImplementation" -RunTargetOrDefault "Test" \ No newline at end of file +RunTargetOrDefault "TestUsingExampleImplementation" \ No newline at end of file diff --git a/circle.yml b/circle.yml index 44d5882948..37e9a84e1c 100644 --- a/circle.yml +++ b/circle.yml @@ -1,12 +1,26 @@ machine: environment: TERM: xterm-256color + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 + DOTNET_CLI_TELEMETRY_OPTOUT: 1 dependencies: pre: + - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test - sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF - echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list - sudo apt-get update - sudo apt-get install mono-complete + - sudo apt-get install gettext + - sudo apt-get install libcurl4-openssl-dev + - sudo apt-get install libicu-dev + - sudo apt-get install libssl-dev + - sudo apt-get install libunwind8 + - sudo apt-get install zlib1g + - sudo apt-get install libstdc++6 + - curl https://download.microsoft.com/download/B/4/6/B4678511-01F4-4F97-902B-0E58A985932A/dotnet-dev-debian-x64.1.0.0-rc4-004771.tar.gz -o /tmp/dotnet.tar.gz + - sudo mkdir -p /opt/dotnet + - sudo tar zxf /tmp/dotnet.tar.gz -C /opt/dotnet + - sudo ln -s /opt/dotnet/dotnet /usr/local/bin test: override: - ./build.sh \ No newline at end of file diff --git a/exercises/accumulate/Accumulate.cs b/exercises/accumulate/Accumulate.cs new file mode 100644 index 0000000000..d5a0aaac1a --- /dev/null +++ b/exercises/accumulate/Accumulate.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +public static class AccumulateExtensions +{ + public static IEnumerable Accumulate(this IEnumerable collection, Func func) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/accumulate/accumulate.csproj b/exercises/accumulate/Accumulate.csproj similarity index 71% rename from exercises/accumulate/accumulate.csproj rename to exercises/accumulate/Accumulate.csproj index 4a5a44b594..abaf321fc2 100644 --- a/exercises/accumulate/accumulate.csproj +++ b/exercises/accumulate/Accumulate.csproj @@ -6,9 +6,9 @@ - - - + + + diff --git a/exercises/acronym/Acronym.cs b/exercises/acronym/Acronym.cs new file mode 100644 index 0000000000..3251a98aaa --- /dev/null +++ b/exercises/acronym/Acronym.cs @@ -0,0 +1,9 @@ +using System; + +public static class Acronym +{ + public static string Abbreviate(string phrase) + { + throw new NotImplementedException("Please implement this function"); + } +} \ No newline at end of file diff --git a/exercises/acronym/acronym.csproj b/exercises/acronym/Acronym.csproj similarity index 71% rename from exercises/acronym/acronym.csproj rename to exercises/acronym/Acronym.csproj index 4a5a44b594..abaf321fc2 100644 --- a/exercises/acronym/acronym.csproj +++ b/exercises/acronym/Acronym.csproj @@ -6,9 +6,9 @@ - - - + + + diff --git a/exercises/all-your-base/AllYourBase.cs b/exercises/all-your-base/AllYourBase.cs new file mode 100644 index 0000000000..503669cd1a --- /dev/null +++ b/exercises/all-your-base/AllYourBase.cs @@ -0,0 +1,9 @@ +using System; + +public static class Base +{ + public static int[] Rebase(int inputBase, int[] inputDigits, int outputBase) + { + throw new NotImplementedException("Please implement this function"); + } +} \ No newline at end of file diff --git a/exercises/all-your-base/all-your-base.csproj b/exercises/all-your-base/AllYourBase.csproj similarity index 71% rename from exercises/all-your-base/all-your-base.csproj rename to exercises/all-your-base/AllYourBase.csproj index 4a5a44b594..abaf321fc2 100644 --- a/exercises/all-your-base/all-your-base.csproj +++ b/exercises/all-your-base/AllYourBase.csproj @@ -6,9 +6,9 @@ - - - + + + diff --git a/exercises/allergies/Allergies.cs b/exercises/allergies/Allergies.cs new file mode 100644 index 0000000000..a659885c88 --- /dev/null +++ b/exercises/allergies/Allergies.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; + +public class Allergies +{ + public Allergies(int mask) + { + } + + public bool AllergicTo(string allergy) + { + throw new NotImplementedException("You need to implement this function."); + } + + public IList List() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/allergies/allergies.csproj b/exercises/allergies/Allergies.csproj similarity index 71% rename from exercises/allergies/allergies.csproj rename to exercises/allergies/Allergies.csproj index 4a5a44b594..abaf321fc2 100644 --- a/exercises/allergies/allergies.csproj +++ b/exercises/allergies/Allergies.csproj @@ -6,9 +6,9 @@ - - - + + + diff --git a/exercises/alphametics/Alphametics.cs b/exercises/alphametics/Alphametics.cs new file mode 100644 index 0000000000..a135482b40 --- /dev/null +++ b/exercises/alphametics/Alphametics.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +public static class Alphametics +{ + public static IDictionary Solve(string equation) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/alphametics/alphametics.csproj b/exercises/alphametics/Alphametics.csproj similarity index 75% rename from exercises/alphametics/alphametics.csproj rename to exercises/alphametics/Alphametics.csproj index 4a7fd04f22..f41b76d58a 100644 --- a/exercises/alphametics/alphametics.csproj +++ b/exercises/alphametics/Alphametics.csproj @@ -6,9 +6,9 @@ - - - + + + diff --git a/exercises/anagram/Anagram.cs b/exercises/anagram/Anagram.cs new file mode 100644 index 0000000000..9f79929499 --- /dev/null +++ b/exercises/anagram/Anagram.cs @@ -0,0 +1,14 @@ +using System; + +public class Anagram +{ + public Anagram (string baseWord) + { + throw new NotImplementedException("You need to implement this function."); + } + + public string[] Match (string[] potentialMatches) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/anagram/Anagram.csproj b/exercises/anagram/Anagram.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/anagram/Anagram.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/anagram/anagram.csproj b/exercises/anagram/anagram.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/anagram/anagram.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/atbash-cipher/AtbashCipher.cs b/exercises/atbash-cipher/AtbashCipher.cs new file mode 100644 index 0000000000..db96e2df12 --- /dev/null +++ b/exercises/atbash-cipher/AtbashCipher.cs @@ -0,0 +1,9 @@ +using System; + +public class Atbash +{ + public static string Encode(string value) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/atbash-cipher/AtbashCipher.csproj b/exercises/atbash-cipher/AtbashCipher.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/atbash-cipher/AtbashCipher.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/atbash-cipher/atbash-cipher.csproj b/exercises/atbash-cipher/atbash-cipher.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/atbash-cipher/atbash-cipher.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/bank-account/BankAccount.cs b/exercises/bank-account/BankAccount.cs new file mode 100644 index 0000000000..d8009e44d2 --- /dev/null +++ b/exercises/bank-account/BankAccount.cs @@ -0,0 +1,27 @@ +using System; + +public class BankAccount +{ + public void Open() + { + throw new NotImplementedException("You need to implement this function."); + } + + public void Close() + { + throw new NotImplementedException("You need to implement this function."); + } + + public float Balance + { + get + { + throw new NotImplementedException("You need to implement this property."); + } + } + + public void UpdateBalance(float change) + { + throw new NotImplementedException("You need to implement this function."); + } +} diff --git a/exercises/bank-account/BankAccount.csproj b/exercises/bank-account/BankAccount.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/bank-account/BankAccount.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/bank-account/bank-account.csproj b/exercises/bank-account/bank-account.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/bank-account/bank-account.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/beer-song/BeerSong.cs b/exercises/beer-song/BeerSong.cs new file mode 100644 index 0000000000..60636cbcdb --- /dev/null +++ b/exercises/beer-song/BeerSong.cs @@ -0,0 +1,14 @@ +using System; + +public static class Beer +{ + public static string Verse(int number) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static string Sing(int start, int stop) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/beer-song/BeerSong.csproj b/exercises/beer-song/BeerSong.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/beer-song/BeerSong.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/beer-song/beer-song.csproj b/exercises/beer-song/beer-song.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/beer-song/beer-song.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/binary-search-tree/BinarySearchTree.cs b/exercises/binary-search-tree/BinarySearchTree.cs new file mode 100644 index 0000000000..cd6a9edca5 --- /dev/null +++ b/exercises/binary-search-tree/BinarySearchTree.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +public class BinarySearchTree : IEnumerable +{ + public BinarySearchTree(int value) + { + } + + public BinarySearchTree(IEnumerable values) + { + } + + public int Value + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public BinarySearchTree Left + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public BinarySearchTree Right + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public BinarySearchTree Add(int value) + { + throw new NotImplementedException("You need to implement this function."); + } + + public IEnumerator GetEnumerator() + { + throw new NotImplementedException("You need to implement this function."); + } + + IEnumerator IEnumerable.GetEnumerator() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/binary-search-tree/BinarySearchTree.csproj b/exercises/binary-search-tree/BinarySearchTree.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/binary-search-tree/BinarySearchTree.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/binary-search-tree/binary-search-tree.csproj b/exercises/binary-search-tree/binary-search-tree.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/binary-search-tree/binary-search-tree.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/binary-search/BinarySearch.cs b/exercises/binary-search/BinarySearch.cs new file mode 100644 index 0000000000..54a1717d08 --- /dev/null +++ b/exercises/binary-search/BinarySearch.cs @@ -0,0 +1,9 @@ +using System; + +public static class BinarySearch +{ + public static int Search(int[] input, int target) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/binary-search/BinarySearch.csproj b/exercises/binary-search/BinarySearch.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/binary-search/BinarySearch.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/binary-search/binary-search.csproj b/exercises/binary-search/binary-search.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/binary-search/binary-search.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/bob/Bob.cs b/exercises/bob/Bob.cs new file mode 100644 index 0000000000..d4b9f98611 --- /dev/null +++ b/exercises/bob/Bob.cs @@ -0,0 +1,9 @@ +using System; + +public static class Bob +{ + public static string Hey(string statement) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/bob/Bob.csproj b/exercises/bob/Bob.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/bob/Bob.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/bob/Example.cs b/exercises/bob/Example.cs index fc1b716f1a..0e96ec3608 100644 --- a/exercises/bob/Example.cs +++ b/exercises/bob/Example.cs @@ -1,4 +1,4 @@ -public class Bob +public static class Bob { public static string Hey(string statement) { @@ -25,5 +25,4 @@ private static bool IsQuestion (string statement) { return statement.Trim().EndsWith("?"); } - -} +} \ No newline at end of file diff --git a/exercises/bob/bob.csproj b/exercises/bob/bob.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/bob/bob.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/book-store/BookStore.cs b/exercises/book-store/BookStore.cs new file mode 100644 index 0000000000..aad6c61a67 --- /dev/null +++ b/exercises/book-store/BookStore.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +public static class BookStore +{ + public static double CalculateTotalCost(List books) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/book-store/BookStore.csproj b/exercises/book-store/BookStore.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/book-store/BookStore.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/book-store/Example.cs b/exercises/book-store/Example.cs index 5d32be193b..4428c459d5 100644 --- a/exercises/book-store/Example.cs +++ b/exercises/book-store/Example.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; -public class BookStore +public static class BookStore { public static double CalculateTotalCost(List books) { diff --git a/exercises/book-store/book-store.csproj b/exercises/book-store/book-store.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/book-store/book-store.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/bowling/Bowling.cs b/exercises/bowling/Bowling.cs new file mode 100644 index 0000000000..f990e56e48 --- /dev/null +++ b/exercises/bowling/Bowling.cs @@ -0,0 +1,14 @@ +using System; + +public class BowlingGame +{ + public void Roll(int pins) + { + throw new NotImplementedException("You need to implement this function."); + } + + public int? Score() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/bowling/Bowling.csproj b/exercises/bowling/Bowling.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/bowling/Bowling.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/bowling/bowling.csproj b/exercises/bowling/bowling.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/bowling/bowling.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/bracket-push/BracketPush.cs b/exercises/bracket-push/BracketPush.cs new file mode 100644 index 0000000000..68bf2a9061 --- /dev/null +++ b/exercises/bracket-push/BracketPush.cs @@ -0,0 +1,9 @@ +using System; + +public static class BracketPush +{ + public static bool Matched(string input) + { + throw new NotImplementedException("You need to implement this function."); + } +} diff --git a/exercises/bracket-push/BracketPush.csproj b/exercises/bracket-push/BracketPush.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/bracket-push/BracketPush.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/bracket-push/bracket-push.csproj b/exercises/bracket-push/bracket-push.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/bracket-push/bracket-push.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/change/Change.cs b/exercises/change/Change.cs new file mode 100644 index 0000000000..561ccde428 --- /dev/null +++ b/exercises/change/Change.cs @@ -0,0 +1,9 @@ +using System; + +public static class Change +{ + public static int[] Calculate(int target, int[] coins) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/change/Change.csproj b/exercises/change/Change.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/change/Change.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/change/change.csproj b/exercises/change/change.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/change/change.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/circular-buffer/CircularBuffer.cs b/exercises/circular-buffer/CircularBuffer.cs new file mode 100644 index 0000000000..0dec0a8442 --- /dev/null +++ b/exercises/circular-buffer/CircularBuffer.cs @@ -0,0 +1,29 @@ +using System; + +public class CircularBuffer +{ + public CircularBuffer(int size) + { + throw new NotImplementedException("You need to implement this function."); + } + + public T Read() + { + throw new NotImplementedException("You need to implement this function."); + } + + public void Write(T value) + { + throw new NotImplementedException("You need to implement this function."); + } + + public void ForceWrite(T value) + { + throw new NotImplementedException("You need to implement this function."); + } + + public void Clear() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/circular-buffer/CircularBuffer.csproj b/exercises/circular-buffer/CircularBuffer.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/circular-buffer/CircularBuffer.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/circular-buffer/circular-buffer.csproj b/exercises/circular-buffer/circular-buffer.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/circular-buffer/circular-buffer.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/clock/Clock.cs b/exercises/clock/Clock.cs new file mode 100644 index 0000000000..f285c1b5f0 --- /dev/null +++ b/exercises/clock/Clock.cs @@ -0,0 +1,24 @@ +using System; + +public class Clock +{ + public Clock(int hours) + { + throw new NotImplementedException("You need to implement this function."); + } + + public Clock(int hours, int minutes) + { + throw new NotImplementedException("You need to implement this function."); + } + + public Clock Add(int minutesToAdd) + { + throw new NotImplementedException("You need to implement this function."); + } + + public Clock Subtract(int minutesToSubtract) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/clock/Clock.csproj b/exercises/clock/Clock.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/clock/Clock.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/clock/clock.csproj b/exercises/clock/clock.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/clock/clock.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/connect/Connect.cs b/exercises/connect/Connect.cs new file mode 100644 index 0000000000..d5fdae730f --- /dev/null +++ b/exercises/connect/Connect.cs @@ -0,0 +1,21 @@ +using System; + +public class Connect +{ + public enum Winner + { + White, + Black, + None + } + + public Connect(string input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public Winner Result() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/connect/Connect.csproj b/exercises/connect/Connect.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/connect/Connect.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/connect/connect.csproj b/exercises/connect/connect.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/connect/connect.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/crypto-square/CryptoSquare.cs b/exercises/crypto-square/CryptoSquare.cs new file mode 100644 index 0000000000..704605e37e --- /dev/null +++ b/exercises/crypto-square/CryptoSquare.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; + +public class Crypto +{ + public Crypto(string input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public int Size + { + get + { + throw new NotImplementedException("Please implement this function"); + } + } + + public string NormalizePlaintext + { + get + { + throw new NotImplementedException("Please implement this function"); + } + } + + public string NormalizeCiphertext() + { + throw new NotImplementedException("Please implement this function"); + } + + public string Ciphertext() + { + throw new NotImplementedException("Please implement this function"); + } + + public IEnumerable PlaintextSegments() + { + throw new NotImplementedException("Please implement this function"); + } +} \ No newline at end of file diff --git a/exercises/crypto-square/CryptoSquare.csproj b/exercises/crypto-square/CryptoSquare.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/crypto-square/CryptoSquare.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/crypto-square/crypto-square.csproj b/exercises/crypto-square/crypto-square.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/crypto-square/crypto-square.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/custom-set/CustomSet.cs b/exercises/custom-set/CustomSet.cs new file mode 100644 index 0000000000..0b507e0227 --- /dev/null +++ b/exercises/custom-set/CustomSet.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +public class CustomSet : IEnumerable, IEquatable> +{ + public CustomSet() + { + } + + public CustomSet(T value) + { + } + + public CustomSet(IEnumerable values) + { + } + + public CustomSet Insert(T value) + { + throw new NotImplementedException("You need to implement this function."); + } + + public bool IsEmpty() + { + throw new NotImplementedException("You need to implement this function."); + } + + public bool Contains(T value) + { + throw new NotImplementedException("You need to implement this function."); + } + + public bool IsSubsetOf(CustomSet right) + { + throw new NotImplementedException("You need to implement this function."); + } + + public bool IsDisjointFrom(CustomSet right) + { + throw new NotImplementedException("You need to implement this function."); + } + + public CustomSet Intersection(CustomSet right) + { + throw new NotImplementedException("You need to implement this function."); + } + + public CustomSet Difference(CustomSet right) + { + throw new NotImplementedException("You need to implement this function."); + } + + public CustomSet Union(CustomSet right) + { + throw new NotImplementedException("You need to implement this function."); + } + + public IEnumerator GetEnumerator() + { + throw new NotImplementedException("You need to implement this function."); + } + + IEnumerator IEnumerable.GetEnumerator() + { + throw new NotImplementedException("You need to implement this function."); + } + + public override bool Equals(object obj) + { + throw new NotImplementedException("You need to implement this function."); + } + + public override int GetHashCode() + { + throw new NotImplementedException(); + } + + public bool Equals(IEnumerable other) + { + throw new NotImplementedException("You need to implement this function."); + } + + public int GetHashCode(IEnumerable obj) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/exercises/custom-set/CustomSet.csproj b/exercises/custom-set/CustomSet.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/custom-set/CustomSet.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/custom-set/Example.cs b/exercises/custom-set/Example.cs index 2d06875d26..76770e01d7 100644 --- a/exercises/custom-set/Example.cs +++ b/exercises/custom-set/Example.cs @@ -73,6 +73,11 @@ IEnumerator IEnumerable.GetEnumerator() public override bool Equals(object obj) => Equals(obj as IEnumerable); + public override int GetHashCode() + { + throw new NotImplementedException(); + } + public bool Equals(IEnumerable other) { return items.Keys.OrderBy(x => x).SequenceEqual(other.Select(o => o.GetHashCode()).OrderBy(x => x)); diff --git a/exercises/custom-set/custom-set.csproj b/exercises/custom-set/custom-set.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/custom-set/custom-set.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/diamond/Diamond.cs b/exercises/diamond/Diamond.cs new file mode 100644 index 0000000000..5de795154c --- /dev/null +++ b/exercises/diamond/Diamond.cs @@ -0,0 +1,9 @@ +using System; + +public static class Diamond +{ + public static string Make(char target) + { + throw new NotImplementedException("Please implement this function"); + } +} diff --git a/exercises/diamond/Diamond.csproj b/exercises/diamond/Diamond.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/diamond/Diamond.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/diamond/diamond.csproj b/exercises/diamond/diamond.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/diamond/diamond.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/difference-of-squares/DifferenceOfSquares.cs b/exercises/difference-of-squares/DifferenceOfSquares.cs new file mode 100644 index 0000000000..2b6167cda1 --- /dev/null +++ b/exercises/difference-of-squares/DifferenceOfSquares.cs @@ -0,0 +1,19 @@ +using System; + +public static class Squares +{ + public static int SquareOfSums(int max) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static int SumOfSquares(int max) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static int DifferenceOfSquares(int max) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/difference-of-squares/DifferenceOfSquares.csproj b/exercises/difference-of-squares/DifferenceOfSquares.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/difference-of-squares/DifferenceOfSquares.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/difference-of-squares/DifferenceOfSquaresTest.cs b/exercises/difference-of-squares/DifferenceOfSquaresTest.cs index 6a5e4fc0da..7f887c6516 100644 --- a/exercises/difference-of-squares/DifferenceOfSquaresTest.cs +++ b/exercises/difference-of-squares/DifferenceOfSquaresTest.cs @@ -6,66 +6,60 @@ public class DifferenceOfSquaresTests [Fact] public void Test_square_of_sums_to_5() { - Assert.Equal(225, new Squares(5).SquareOfSums()); + Assert.Equal(225, Squares.SquareOfSums(5)); } [Fact(Skip = "Remove to run test")] public void Test_sum_of_squares_to_5() { - Assert.Equal(55, new Squares(5).SumOfSquares()); + Assert.Equal(55, Squares.SumOfSquares(5)); } [Fact(Skip = "Remove to run test")] public void Test_difference_of_sums_to_5() { - Assert.Equal(170, new Squares(5).DifferenceOfSquares()); + Assert.Equal(170, Squares.DifferenceOfSquares(5)); } [Fact(Skip = "Remove to run test")] public void Test_square_of_sums_to_10() { - Assert.Equal(3025, new Squares(10).SquareOfSums()); + Assert.Equal(3025, Squares.SquareOfSums(10)); } [Fact(Skip = "Remove to run test")] public void Test_sum_of_squares_to_10() { - Assert.Equal(385, new Squares(10).SumOfSquares()); + Assert.Equal(385, Squares.SumOfSquares(10)); } [Fact(Skip = "Remove to run test")] public void Test_difference_of_sums_to_10() { - Assert.Equal(2640, new Squares(10).DifferenceOfSquares()); + Assert.Equal(2640, Squares.DifferenceOfSquares(10)); } [Fact(Skip = "Remove to run test")] public void Test_square_of_sums_to_100() { - Assert.Equal(25502500, new Squares(100).SquareOfSums()); + Assert.Equal(25502500, Squares.SquareOfSums(100)); } [Fact(Skip = "Remove to run test")] public void Test_sum_of_squares_to_100() { - Assert.Equal(338350, new Squares(100).SumOfSquares()); + Assert.Equal(338350, Squares.SumOfSquares(100)); } [Fact(Skip = "Remove to run test")] public void Test_difference_of_sums_to_100() { - Assert.Equal(25164150, new Squares(100).DifferenceOfSquares()); + Assert.Equal(25164150, Squares.DifferenceOfSquares(100)); } [Fact(Skip = "Remove to run test")] public void Test_difference_of_sums_0() { - Assert.Equal(0, new Squares(0).DifferenceOfSquares()); - } - - [Fact(Skip = "Remove to run test")] - public void Test_negative_numbers_throw_argument_out_of_range_exception() - { - Assert.Throws(() => new Squares(-5)); + Assert.Equal(0, Squares.DifferenceOfSquares(0)); } } diff --git a/exercises/difference-of-squares/Example.cs b/exercises/difference-of-squares/Example.cs index b92a76b452..a7d83e8baa 100644 --- a/exercises/difference-of-squares/Example.cs +++ b/exercises/difference-of-squares/Example.cs @@ -1,35 +1,23 @@ using System; using System.Linq; -public class Squares +public static class Squares { - private readonly int max; - - public Squares(int max) - { - if (max < 0) - { - throw new ArgumentOutOfRangeException("Max must be positive", "max"); - } - - this.max = max; - } - - public int SquareOfSums() + public static int SquareOfSums(int max) { var numbers = Enumerable.Range(1, max); int sum = numbers.Sum(); return sum * sum; } - public int SumOfSquares() + public static int SumOfSquares(int max) { var numbers = Enumerable.Range(1, max); return numbers.Select(x => x * x).Sum(); } - public int DifferenceOfSquares() + public static int DifferenceOfSquares(int max) { - return SquareOfSums() - SumOfSquares(); + return SquareOfSums(max) - SumOfSquares(max); } } \ No newline at end of file diff --git a/exercises/difference-of-squares/difference-of-squares.csproj b/exercises/difference-of-squares/difference-of-squares.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/difference-of-squares/difference-of-squares.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/diffie-hellman/DiffieHellman.cs b/exercises/diffie-hellman/DiffieHellman.cs new file mode 100644 index 0000000000..047d8c4eb6 --- /dev/null +++ b/exercises/diffie-hellman/DiffieHellman.cs @@ -0,0 +1,20 @@ +using System; +using System.Numerics; + +public static class DiffieHellman +{ + public static BigInteger PrivateKey(BigInteger primeP) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static BigInteger PublicKey(BigInteger primeP, BigInteger primeG, BigInteger privateKey) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static BigInteger Secret(BigInteger primeP, BigInteger publicKey, BigInteger privateKey) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/diffie-hellman/DiffieHellman.csproj b/exercises/diffie-hellman/DiffieHellman.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/diffie-hellman/DiffieHellman.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/diffie-hellman/diffie-hellman.csproj b/exercises/diffie-hellman/diffie-hellman.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/diffie-hellman/diffie-hellman.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/dominoes/Dominoes.cs b/exercises/dominoes/Dominoes.cs new file mode 100644 index 0000000000..134f76eea3 --- /dev/null +++ b/exercises/dominoes/Dominoes.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +public static class Dominoes +{ + public static bool CanChain(IEnumerable> dominoes) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/dominoes/Dominoes.csproj b/exercises/dominoes/Dominoes.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/dominoes/Dominoes.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/dominoes/dominoes.csproj b/exercises/dominoes/dominoes.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/dominoes/dominoes.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/dot-dsl/DotDsl.cs b/exercises/dot-dsl/DotDsl.cs new file mode 100644 index 0000000000..4ac7fd97db --- /dev/null +++ b/exercises/dot-dsl/DotDsl.cs @@ -0,0 +1,15 @@ +public class Node +{ +} + +public class Edge +{ +} + +public class Attr +{ +} + +public class Graph +{ +} \ No newline at end of file diff --git a/exercises/dot-dsl/DotDsl.csproj b/exercises/dot-dsl/DotDsl.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/dot-dsl/DotDsl.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/dot-dsl/dot-dsl.csproj b/exercises/dot-dsl/dot-dsl.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/dot-dsl/dot-dsl.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/error-handling/ErrorHandling.cs b/exercises/error-handling/ErrorHandling.cs new file mode 100644 index 0000000000..df277b2d84 --- /dev/null +++ b/exercises/error-handling/ErrorHandling.cs @@ -0,0 +1,24 @@ +using System; + +public static class ErrorHandling +{ + public static void HandleErrorByThrowingException() + { + throw new NotImplementedException("You need to implement this function."); + } + + public static int? HandleErrorByReturningNullableType(string input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static bool HandleErrorWithOutParam(string input, out int result) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static void DisposableResourcesAreDisposedWhenExceptionIsThrown(IDisposable disposableObject) + { + throw new NotImplementedException("You need to implement this function."); + } +} diff --git a/exercises/error-handling/ErrorHandling.csproj b/exercises/error-handling/ErrorHandling.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/error-handling/ErrorHandling.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/error-handling/error-handling.csproj b/exercises/error-handling/error-handling.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/error-handling/error-handling.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/etl/Etl.cs b/exercises/etl/Etl.cs new file mode 100644 index 0000000000..656204d959 --- /dev/null +++ b/exercises/etl/Etl.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +public static class ETL +{ + public static IDictionary Transform(IDictionary> old) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/etl/Etl.csproj b/exercises/etl/Etl.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/etl/Etl.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/etl/Example.cs b/exercises/etl/Example.cs index 891725eaa7..2a7c702fd3 100644 --- a/exercises/etl/Example.cs +++ b/exercises/etl/Example.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -public class ETL +public static class ETL { public static IDictionary Transform(IDictionary> old) { diff --git a/exercises/etl/etl.csproj b/exercises/etl/etl.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/etl/etl.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/flatten-array/FlattenArray.cs b/exercises/flatten-array/FlattenArray.cs new file mode 100644 index 0000000000..e3ff8b1b1c --- /dev/null +++ b/exercises/flatten-array/FlattenArray.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections; + +public static class Flattener +{ + public static IEnumerable Flatten(IEnumerable input) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/flatten-array/FlattenArray.csproj b/exercises/flatten-array/FlattenArray.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/flatten-array/FlattenArray.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/flatten-array/flatten-array.csproj b/exercises/flatten-array/flatten-array.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/flatten-array/flatten-array.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/food-chain/FoodChain.cs b/exercises/food-chain/FoodChain.cs new file mode 100644 index 0000000000..5023fb38af --- /dev/null +++ b/exercises/food-chain/FoodChain.cs @@ -0,0 +1,14 @@ +using System; + +public static class FoodChain +{ + public static string Song() + { + throw new NotImplementedException("You need to implement this function."); + } + + public static string Verse(int number) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/food-chain/FoodChain.csproj b/exercises/food-chain/FoodChain.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/food-chain/FoodChain.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/food-chain/food-chain.csproj b/exercises/food-chain/food-chain.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/food-chain/food-chain.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/forth/Forth.cs b/exercises/forth/Forth.cs new file mode 100644 index 0000000000..8fc0e91cd7 --- /dev/null +++ b/exercises/forth/Forth.cs @@ -0,0 +1,27 @@ +using System; + +public enum ForthError +{ + DivisionByZero, + StackUnderflow, + InvalidWord, + UnknownWord +} + +public class ForthException : Exception +{ + public ForthException(ForthError error) + { + Error = error; + } + + public ForthError Error { get; } +} + +public static class Forth +{ + public static string Eval(string input) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/forth/forth.csproj b/exercises/forth/Forth.csproj similarity index 75% rename from exercises/forth/forth.csproj rename to exercises/forth/Forth.csproj index 4a7fd04f22..f41b76d58a 100644 --- a/exercises/forth/forth.csproj +++ b/exercises/forth/Forth.csproj @@ -6,9 +6,9 @@ - - - + + + diff --git a/exercises/gigasecond/Example.cs b/exercises/gigasecond/Example.cs index c30eb8bc72..451cdfb4fc 100644 --- a/exercises/gigasecond/Example.cs +++ b/exercises/gigasecond/Example.cs @@ -1,6 +1,6 @@ using System; -public class Gigasecond +public static class Gigasecond { public static DateTime Date(DateTime birthDate) { diff --git a/exercises/gigasecond/Gigasecond.cs b/exercises/gigasecond/Gigasecond.cs new file mode 100644 index 0000000000..6cd6c55854 --- /dev/null +++ b/exercises/gigasecond/Gigasecond.cs @@ -0,0 +1,9 @@ +using System; + +public static class Gigasecond +{ + public static DateTime Date(DateTime birthDate) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/gigasecond/Gigasecond.csproj b/exercises/gigasecond/Gigasecond.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/gigasecond/Gigasecond.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/gigasecond/gigasecond.csproj b/exercises/gigasecond/gigasecond.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/gigasecond/gigasecond.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/go-counting/GoCounting.cs b/exercises/go-counting/GoCounting.cs new file mode 100644 index 0000000000..be63789f07 --- /dev/null +++ b/exercises/go-counting/GoCounting.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; + +public class GoCounting +{ + public enum Player + { + None, + Black, + White + } + + public GoCounting(string input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public Tuple>> TerritoryFor(Tuple coord) + { + throw new NotImplementedException("You need to implement this function."); + } + + public Dictionary>> Territories() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/go-counting/GoCounting.csproj b/exercises/go-counting/GoCounting.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/go-counting/GoCounting.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/go-counting/go-counting.csproj b/exercises/go-counting/go-counting.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/go-counting/go-counting.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/grade-school/GradeSchool.cs b/exercises/grade-school/GradeSchool.cs new file mode 100644 index 0000000000..7d359a4bfb --- /dev/null +++ b/exercises/grade-school/GradeSchool.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; + +public class School +{ + public void Add(string student, int grade) + { + throw new NotImplementedException("You need to implement this function."); + } + + public IEnumerable Roster(int grade) + { + throw new NotImplementedException("You need to implement this function."); + } + + public IEnumerable Grade(int grade) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/grade-school/GradeSchool.csproj b/exercises/grade-school/GradeSchool.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/grade-school/GradeSchool.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/grade-school/grade-school.csproj b/exercises/grade-school/grade-school.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/grade-school/grade-school.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/grains/Grains.cs b/exercises/grains/Grains.cs new file mode 100644 index 0000000000..b75b9a5057 --- /dev/null +++ b/exercises/grains/Grains.cs @@ -0,0 +1,14 @@ +using System; + +public class Grains +{ + public static ulong Square(int n) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static ulong Total() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/grains/Grains.csproj b/exercises/grains/Grains.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/grains/Grains.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/grains/grains.csproj b/exercises/grains/grains.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/grains/grains.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/grep/Grep.cs b/exercises/grep/Grep.cs new file mode 100644 index 0000000000..119049f93d --- /dev/null +++ b/exercises/grep/Grep.cs @@ -0,0 +1,9 @@ +using System; + +public static class Grep +{ + public static string Find(string pattern, string flags, string[] files) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/grep/Grep.csproj b/exercises/grep/Grep.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/grep/Grep.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/grep/grep.csproj b/exercises/grep/grep.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/grep/grep.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/hamming/Example.cs b/exercises/hamming/Example.cs index b5b09d30af..58abd7876e 100644 --- a/exercises/hamming/Example.cs +++ b/exercises/hamming/Example.cs @@ -1,22 +1,9 @@ +using System; using System.Linq; -public class Hamming +public static class Hamming { public static int Compute(string firstStrand, string secondStrand) - { - return new Hamming(firstStrand,secondStrand).Distance(); - } - - private readonly string firstStrand; - private readonly string secondStrand; - - public Hamming(string firstStrand, string secondStrand) - { - this.firstStrand = firstStrand; - this.secondStrand = secondStrand; - } - - public int Distance() { return firstStrand.Where((x, i) => x != secondStrand[i]).Count(); } diff --git a/exercises/hamming/Hamming.cs b/exercises/hamming/Hamming.cs new file mode 100644 index 0000000000..aef290b570 --- /dev/null +++ b/exercises/hamming/Hamming.cs @@ -0,0 +1,9 @@ +using System; + +public static class Hamming +{ + public static int Compute(string firstStrand, string secondStrand) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/hamming/Hamming.csproj b/exercises/hamming/Hamming.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/hamming/Hamming.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/hamming/hamming.csproj b/exercises/hamming/hamming.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/hamming/hamming.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/hangman/Hangman.cs b/exercises/hangman/Hangman.cs new file mode 100644 index 0000000000..722cbd5c65 --- /dev/null +++ b/exercises/hangman/Hangman.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; + +public delegate void HangmanChangedEventHandler(object sender, HangmanState state); + +public class HangmanState +{ + public HangmanGame.Status Status { get; set; } + public int RemainingGuesses { get; set; } + public string MaskedWord { get; set; } + public HashSet Guesses { get; set; } +} + +public class HangmanGame +{ + public enum Status + { + Busy, + Win, + Lose + } + + public HangmanGame(string word) + { + } + + public event HangmanChangedEventHandler StateChanged; + + public void Start() + { + throw new NotImplementedException("You need to implement this function."); + } + + public void Guess(char c) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/hangman/Hangman.csproj b/exercises/hangman/Hangman.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/hangman/Hangman.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/hangman/hangman.csproj b/exercises/hangman/hangman.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/hangman/hangman.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/hello-world/HelloWorld.cs b/exercises/hello-world/HelloWorld.cs new file mode 100644 index 0000000000..d3558cd8db --- /dev/null +++ b/exercises/hello-world/HelloWorld.cs @@ -0,0 +1,9 @@ +using System; + +public static class HelloWorld +{ + public static string Hello(string name) + { + throw new NotImplementedException("You need to implement this function."); + } +} diff --git a/exercises/hello-world/HelloWorld.csproj b/exercises/hello-world/HelloWorld.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/hello-world/HelloWorld.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/hello-world/hello-world.csproj b/exercises/hello-world/hello-world.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/hello-world/hello-world.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/house/House.cs b/exercises/house/House.cs new file mode 100644 index 0000000000..b1e008a06c --- /dev/null +++ b/exercises/house/House.cs @@ -0,0 +1,9 @@ +using System; + +public static class House +{ + public static string Rhyme() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/house/House.csproj b/exercises/house/House.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/house/House.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/house/house.csproj b/exercises/house/house.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/house/house.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/isogram/Isogram.cs b/exercises/isogram/Isogram.cs new file mode 100644 index 0000000000..00996d3028 --- /dev/null +++ b/exercises/isogram/Isogram.cs @@ -0,0 +1,9 @@ +using System; + +public static class Isogram +{ + public static bool IsIsogram(string word) + { + throw new NotImplementedException("You need to implement this function."); + } +} diff --git a/exercises/isogram/Isogram.csproj b/exercises/isogram/Isogram.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/isogram/Isogram.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/isogram/isogram.csproj b/exercises/isogram/isogram.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/isogram/isogram.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/kindergarten-garden/KindergartenGarden.cs b/exercises/kindergarten-garden/KindergartenGarden.cs new file mode 100644 index 0000000000..f81a3d0e92 --- /dev/null +++ b/exercises/kindergarten-garden/KindergartenGarden.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; + +public enum Plant +{ + Violets, + Radishes, + Clover, + Grass +} + +public class Garden +{ + public Garden(IEnumerable children, string windowSills) + { + } + + public IEnumerable GetPlants(string child) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static Garden DefaultGarden(string windowSills) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/kindergarten-garden/KindergartenGarden.csproj b/exercises/kindergarten-garden/KindergartenGarden.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/kindergarten-garden/KindergartenGarden.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/kindergarten-garden/kindergarten-garden.csproj b/exercises/kindergarten-garden/kindergarten-garden.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/kindergarten-garden/kindergarten-garden.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/largest-series-product/LargestSeriesProduct.cs b/exercises/largest-series-product/LargestSeriesProduct.cs new file mode 100644 index 0000000000..6f28decb0c --- /dev/null +++ b/exercises/largest-series-product/LargestSeriesProduct.cs @@ -0,0 +1,9 @@ +using System; + +public static class LargestSeriesProduct +{ + public static long GetLargestProduct(string digits, int span) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/largest-series-product/LargestSeriesProduct.csproj b/exercises/largest-series-product/LargestSeriesProduct.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/largest-series-product/LargestSeriesProduct.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/largest-series-product/largest-series-product.csproj b/exercises/largest-series-product/largest-series-product.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/largest-series-product/largest-series-product.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/leap/Leap.cs b/exercises/leap/Leap.cs new file mode 100644 index 0000000000..b19a6d7fe1 --- /dev/null +++ b/exercises/leap/Leap.cs @@ -0,0 +1,9 @@ +using System; + +public static class Year +{ + public static bool IsLeap(int year) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/leap/Leap.csproj b/exercises/leap/Leap.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/leap/Leap.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/leap/leap.csproj b/exercises/leap/leap.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/leap/leap.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/ledger/Example.cs b/exercises/ledger/Example.cs index 3a1a0a7347..df9a0a2104 100644 --- a/exercises/ledger/Example.cs +++ b/exercises/ledger/Example.cs @@ -29,6 +29,16 @@ public static LedgerEntry CreateEntry(string date, string description, int chang private static float ParseChange(int change) => change / 100.0f; + private static CultureInfo CultureInfo(string locale) + { + switch (locale) + { + case "en-US": return new CultureInfo("en-US"); + case "nl-NL": return new CultureInfo("nl-NL"); + default: throw new ArgumentException("Invalid locale"); + } + } + private static string CurrencySymbol(string currency) { switch (currency) @@ -39,12 +49,12 @@ private static string CurrencySymbol(string currency) } } - private static CultureInfo CultureInfo(string locale) + private static int CurrencyNegativePattern(string locale) { switch (locale) { - case "en-US": return new CultureInfo(locale); - case "nl-NL": return new CultureInfo(locale); + case "en-US": return 0; + case "nl-NL": return 12; default: throw new ArgumentException("Invalid locale"); } } @@ -63,6 +73,7 @@ private static CultureInfo getCulture(string currency, string locale) { var culture = CultureInfo(locale); culture.NumberFormat.CurrencySymbol = CurrencySymbol(currency); + culture.NumberFormat.CurrencyNegativePattern = CurrencyNegativePattern(locale); culture.DateTimeFormat.ShortDatePattern = ShortDateFormat(locale); return culture; } @@ -79,14 +90,14 @@ private static string FormatHeader(CultureInfo culture) private static string FormatDate(IFormatProvider culture, DateTime date) => date.ToString("d", culture); - private static string FoormatDescription(string description) => + private static string FormatDescription(string description) => description.Length <= TruncateLength ? description : description.Substring(0, TruncateLength - TruncateSuffix.Length) + TruncateSuffix; private static string FormatChange(IFormatProvider culture, float change) => change < 0.0 ? change.ToString("C", culture) : change.ToString("C", culture) + " "; private static string FormatEntry(IFormatProvider culture, LedgerEntry entry) => - string.Format("{0} | {1,-25} | {2,13}", FormatDate(culture, entry.Date), FoormatDescription(entry.Description), FormatChange(culture, entry.Change)); + string.Format("{0} | {1,-25} | {2,13}", FormatDate(culture, entry.Date), FormatDescription(entry.Description), FormatChange(culture, entry.Change)); private static IEnumerable OrderEntries(LedgerEntry[] entries) => entries diff --git a/exercises/ledger/Ledger.cs b/exercises/ledger/Ledger.cs index 4f094d3121..c8de490661 100644 --- a/exercises/ledger/Ledger.cs +++ b/exercises/ledger/Ledger.cs @@ -27,6 +27,7 @@ public static LedgerEntry CreateEntry(string date, string desc, int chng) private static CultureInfo CreateCulture(string cur, string loc) { string curSymb = null; + int curNeg = 0; string datPat = null; if (cur != "USD" && cur != "EUR") @@ -50,11 +51,11 @@ private static CultureInfo CreateCulture(string cur, string loc) else if (loc == "nl-NL") { curSymb = "$"; + curNeg = 12; datPat = "dd/MM/yyyy"; } } - if (cur == "EUR") { if (loc == "en-US") @@ -65,6 +66,7 @@ private static CultureInfo CreateCulture(string cur, string loc) else if (loc == "nl-NL") { curSymb = "€"; + curNeg = 12; datPat = "dd/MM/yyyy"; } } @@ -72,6 +74,7 @@ private static CultureInfo CreateCulture(string cur, string loc) var culture = new CultureInfo(loc); culture.NumberFormat.CurrencySymbol = curSymb; + culture.NumberFormat.CurrencyNegativePattern = curNeg; culture.DateTimeFormat.ShortDatePattern = datPat; return culture; } diff --git a/exercises/ledger/Ledger.csproj b/exercises/ledger/Ledger.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/ledger/Ledger.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/ledger/ledger.csproj b/exercises/ledger/ledger.csproj deleted file mode 100644 index 627c87ee43..0000000000 --- a/exercises/ledger/ledger.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - - - - - diff --git a/exercises/linked-list/LinkedList.cs b/exercises/linked-list/LinkedList.cs new file mode 100644 index 0000000000..a9038e5bce --- /dev/null +++ b/exercises/linked-list/LinkedList.cs @@ -0,0 +1,24 @@ +using System; + +public class Deque +{ + public void Push(T value) + { + throw new NotImplementedException("You need to implement this function."); + } + + public T Pop() + { + throw new NotImplementedException("You need to implement this function."); + } + + public void Unshift(T value) + { + throw new NotImplementedException("You need to implement this function."); + } + + public T Shift() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/linked-list/LinkedList.csproj b/exercises/linked-list/LinkedList.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/linked-list/LinkedList.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/linked-list/LinkedListTest.cs b/exercises/linked-list/LinkedListTest.cs index c625a80111..d6516e45d5 100644 --- a/exercises/linked-list/LinkedListTest.cs +++ b/exercises/linked-list/LinkedListTest.cs @@ -2,11 +2,10 @@ public class DequeTest { - private readonly Deque deque = new Deque(); - [Fact] public void Push_and_pop_are_first_in_last_out_order() { + var deque = new Deque(); deque.Push(10); deque.Push(20); Assert.Equal(20, deque.Pop()); @@ -16,6 +15,7 @@ public void Push_and_pop_are_first_in_last_out_order() [Fact(Skip = "Remove to run test")] public void Push_and_shift_are_first_in_first_out_order() { + var deque = new Deque(); deque.Push(10); deque.Push(20); Assert.Equal(10, deque.Shift()); @@ -25,6 +25,7 @@ public void Push_and_shift_are_first_in_first_out_order() [Fact(Skip = "Remove to run test")] public void Unshift_and_shift_are_last_in_first_out_order() { + var deque = new Deque(); deque.Unshift(10); deque.Unshift(20); Assert.Equal(20, deque.Shift()); @@ -34,6 +35,7 @@ public void Unshift_and_shift_are_last_in_first_out_order() [Fact(Skip = "Remove to run test")] public void Unshift_and_pop_are_last_in_last_out_order() { + var deque = new Deque(); deque.Unshift(10); deque.Unshift(20); Assert.Equal(10, deque.Pop()); @@ -43,6 +45,7 @@ public void Unshift_and_pop_are_last_in_last_out_order() [Fact(Skip = "Remove to run test")] public void Push_and_pop_can_handle_multiple_values() { + var deque = new Deque(); deque.Push(10); deque.Push(20); deque.Push(30); @@ -54,6 +57,7 @@ public void Push_and_pop_can_handle_multiple_values() [Fact(Skip = "Remove to run test")] public void Unshift_and_shift_can_handle_multiple_values() { + var deque = new Deque(); deque.Unshift(10); deque.Unshift(20); deque.Unshift(30); @@ -65,6 +69,7 @@ public void Unshift_and_shift_can_handle_multiple_values() [Fact(Skip = "Remove to run test")] public void All_methods_of_manipulating_the_deque_can_be_used_together() { + var deque = new Deque(); deque.Push(10); deque.Push(20); Assert.Equal(20, deque.Pop()); diff --git a/exercises/linked-list/linked-list.csproj b/exercises/linked-list/linked-list.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/linked-list/linked-list.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/list-ops/ListOps.cs b/exercises/list-ops/ListOps.cs new file mode 100644 index 0000000000..c7b613c306 --- /dev/null +++ b/exercises/list-ops/ListOps.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +public static class ListOps +{ + public static int Length(List input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static List Reverse(List input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static List Map(Func map, List input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static List Filter(Func predicate, List input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static TOut Foldl(Func func, TOut start, List input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static TOut Foldr(Func func, TOut start, List input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static List Concat(List> input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static List Append(List left, List right) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/list-ops/ListOps.csproj b/exercises/list-ops/ListOps.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/list-ops/ListOps.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/list-ops/list-ops.csproj b/exercises/list-ops/list-ops.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/list-ops/list-ops.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/luhn/Luhn.cs b/exercises/luhn/Luhn.cs new file mode 100644 index 0000000000..69502bc91f --- /dev/null +++ b/exercises/luhn/Luhn.cs @@ -0,0 +1,9 @@ +using System; + +public static class Luhn +{ + public static bool IsValid(string number) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/luhn/Luhn.csproj b/exercises/luhn/Luhn.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/luhn/Luhn.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/luhn/luhn.csproj b/exercises/luhn/luhn.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/luhn/luhn.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/markdown/Markdown.csproj b/exercises/markdown/Markdown.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/markdown/Markdown.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/markdown/markdown.csproj b/exercises/markdown/markdown.csproj deleted file mode 100644 index 0422444b06..0000000000 --- a/exercises/markdown/markdown.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - - - - - diff --git a/exercises/matrix/Matrix.cs b/exercises/matrix/Matrix.cs new file mode 100644 index 0000000000..6bd6f4f125 --- /dev/null +++ b/exercises/matrix/Matrix.cs @@ -0,0 +1,34 @@ +using System; + +public class Matrix +{ + public Matrix(string input) + { + } + + public int Rows + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public int Cols + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public int[] Row(int row) + { + throw new NotImplementedException("You need to implement this function."); + } + + public int[] Col(int col) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/matrix/Matrix.csproj b/exercises/matrix/Matrix.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/matrix/Matrix.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/matrix/matrix.csproj b/exercises/matrix/matrix.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/matrix/matrix.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/meetup/Meetup.cs b/exercises/meetup/Meetup.cs new file mode 100644 index 0000000000..23043bb48c --- /dev/null +++ b/exercises/meetup/Meetup.cs @@ -0,0 +1,23 @@ +using System; + +public enum Schedule +{ + Teenth, + First, + Second, + Third, + Fourth, + Last +} + +public class Meetup +{ + public Meetup(int month, int year) + { + } + + public DateTime Day(DayOfWeek dayOfWeek, Schedule schedule) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/meetup/Meetup.csproj b/exercises/meetup/Meetup.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/meetup/Meetup.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/meetup/meetup.csproj b/exercises/meetup/meetup.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/meetup/meetup.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/minesweeper/Minesweeper.cs b/exercises/minesweeper/Minesweeper.cs new file mode 100644 index 0000000000..dfb0212384 --- /dev/null +++ b/exercises/minesweeper/Minesweeper.cs @@ -0,0 +1,9 @@ +using System; + +public static class Minesweeper +{ + public static string Annotate(string input) + { + throw new NotImplementedException("You need to implement this function."); + } +} diff --git a/exercises/minesweeper/Minesweeper.csproj b/exercises/minesweeper/Minesweeper.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/minesweeper/Minesweeper.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/minesweeper/minesweeper.csproj b/exercises/minesweeper/minesweeper.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/minesweeper/minesweeper.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/nth-prime/NthPrime.cs b/exercises/nth-prime/NthPrime.cs new file mode 100644 index 0000000000..66af194b1e --- /dev/null +++ b/exercises/nth-prime/NthPrime.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +public static class NthPrime +{ + public static int Nth(int nth) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/nth-prime/NthPrime.csproj b/exercises/nth-prime/NthPrime.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/nth-prime/NthPrime.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/nth-prime/nth-prime.csproj b/exercises/nth-prime/nth-prime.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/nth-prime/nth-prime.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/nucleotide-count/NucleotideCount.cs b/exercises/nucleotide-count/NucleotideCount.cs new file mode 100644 index 0000000000..1c5782f612 --- /dev/null +++ b/exercises/nucleotide-count/NucleotideCount.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; + +public class DNA +{ + public DNA(string sequence) + { + } + + public IDictionary NucleotideCounts + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public int Count(char nucleotide) + { + throw new NotImplementedException("You need to implement this function."); + } +} + +public class InvalidNucleotideException : Exception { } diff --git a/exercises/nucleotide-count/NucleotideCount.csproj b/exercises/nucleotide-count/NucleotideCount.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/nucleotide-count/NucleotideCount.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/nucleotide-count/nucleotide-count.csproj b/exercises/nucleotide-count/nucleotide-count.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/nucleotide-count/nucleotide-count.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/ocr-numbers/OcrNumbers.cs b/exercises/ocr-numbers/OcrNumbers.cs new file mode 100644 index 0000000000..2f69d61b01 --- /dev/null +++ b/exercises/ocr-numbers/OcrNumbers.cs @@ -0,0 +1,9 @@ +using System; + +public static class OcrNumbers +{ + public static string Convert(string input) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/exercises/ocr-numbers/OcrNumbers.csproj b/exercises/ocr-numbers/OcrNumbers.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/ocr-numbers/OcrNumbers.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/ocr-numbers/ocr-numbers.csproj b/exercises/ocr-numbers/ocr-numbers.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/ocr-numbers/ocr-numbers.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/palindrome-products/PalindromeProducts.cs b/exercises/palindrome-products/PalindromeProducts.cs new file mode 100644 index 0000000000..2fbb540830 --- /dev/null +++ b/exercises/palindrome-products/PalindromeProducts.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +public class Palindrome +{ + public int Value + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public ISet> Factors + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public static Palindrome Largest(int maxFactor) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static Palindrome Largest(int minFactor, int maxFactor) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static Palindrome Smallest(int maxFactor) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static Palindrome Smallest(int minFactor, int maxFactor) + { + throw new NotImplementedException("You need to implement this function."); + } +} diff --git a/exercises/palindrome-products/PalindromeProducts.csproj b/exercises/palindrome-products/PalindromeProducts.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/palindrome-products/PalindromeProducts.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/palindrome-products/palindrome-products.csproj b/exercises/palindrome-products/palindrome-products.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/palindrome-products/palindrome-products.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/pangram/Pangram.cs b/exercises/pangram/Pangram.cs new file mode 100644 index 0000000000..17c84d4156 --- /dev/null +++ b/exercises/pangram/Pangram.cs @@ -0,0 +1,9 @@ +using System; + +public static class Pangram +{ + public static bool IsPangram(string input) + { + throw new NotImplementedException(); + } +} diff --git a/exercises/pangram/Pangram.csproj b/exercises/pangram/Pangram.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/pangram/Pangram.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/pangram/pangram.csproj b/exercises/pangram/pangram.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/pangram/pangram.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/parallel-letter-frequency/ParallelLetterFrequency.cs b/exercises/parallel-letter-frequency/ParallelLetterFrequency.cs new file mode 100644 index 0000000000..ee6116c290 --- /dev/null +++ b/exercises/parallel-letter-frequency/ParallelLetterFrequency.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +public static class ParallelLetterFrequency +{ + public static Dictionary Calculate(IEnumerable texts) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj b/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/parallel-letter-frequency/parallel-letter-frequency.csproj b/exercises/parallel-letter-frequency/parallel-letter-frequency.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/parallel-letter-frequency/parallel-letter-frequency.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/pascals-triangle/PascalsTriangle.cs b/exercises/pascals-triangle/PascalsTriangle.cs new file mode 100644 index 0000000000..2539674122 --- /dev/null +++ b/exercises/pascals-triangle/PascalsTriangle.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +public static class PascalsTriangle +{ + public static IEnumerable> Calculate(int rows) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/exercises/pascals-triangle/PascalsTriangle.csproj b/exercises/pascals-triangle/PascalsTriangle.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/pascals-triangle/PascalsTriangle.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/pascals-triangle/pascals-triangle.csproj b/exercises/pascals-triangle/pascals-triangle.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/pascals-triangle/pascals-triangle.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/perfect-numbers/PerfectNumbers.cs b/exercises/perfect-numbers/PerfectNumbers.cs new file mode 100644 index 0000000000..479af7d024 --- /dev/null +++ b/exercises/perfect-numbers/PerfectNumbers.cs @@ -0,0 +1,16 @@ +using System; + +public enum NumberType +{ + Perfect, + Abundant, + Deficient +} + +public static class PerfectNumbers +{ + public static NumberType Classify(int number) + { + throw new NotImplementedException(); + } +} diff --git a/exercises/perfect-numbers/PerfectNumbers.csproj b/exercises/perfect-numbers/PerfectNumbers.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/perfect-numbers/PerfectNumbers.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/perfect-numbers/perfect-numbers.csproj b/exercises/perfect-numbers/perfect-numbers.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/perfect-numbers/perfect-numbers.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/phone-number/PhoneNumber.cs b/exercises/phone-number/PhoneNumber.cs new file mode 100644 index 0000000000..dc794cb2a3 --- /dev/null +++ b/exercises/phone-number/PhoneNumber.cs @@ -0,0 +1,24 @@ +using System; + +public class PhoneNumber +{ + public PhoneNumber(string phoneNumber) + { + } + + public string Number + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public string AreaCode + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } +} \ No newline at end of file diff --git a/exercises/phone-number/PhoneNumber.csproj b/exercises/phone-number/PhoneNumber.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/phone-number/PhoneNumber.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/phone-number/phone-number.csproj b/exercises/phone-number/phone-number.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/phone-number/phone-number.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/pig-latin/PigLatin.cs b/exercises/pig-latin/PigLatin.cs new file mode 100644 index 0000000000..b966721004 --- /dev/null +++ b/exercises/pig-latin/PigLatin.cs @@ -0,0 +1,9 @@ +using System; + +public static class PigLatin +{ + public static string Translate(string word) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/exercises/pig-latin/PigLatin.csproj b/exercises/pig-latin/PigLatin.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/pig-latin/PigLatin.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/pig-latin/pig-latin.csproj b/exercises/pig-latin/pig-latin.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/pig-latin/pig-latin.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/poker/Poker.cs b/exercises/poker/Poker.cs new file mode 100644 index 0000000000..202ff6a2da --- /dev/null +++ b/exercises/poker/Poker.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +public static class Poker +{ + public static IEnumerable BestHands(IEnumerable hands) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/exercises/poker/Poker.csproj b/exercises/poker/Poker.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/poker/Poker.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/poker/poker.csproj b/exercises/poker/poker.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/poker/poker.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/pov/Pov.cs b/exercises/pov/Pov.cs new file mode 100644 index 0000000000..b4bd11da8f --- /dev/null +++ b/exercises/pov/Pov.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; + +public class Graph +{ + public Graph(T value, IEnumerable> children) + { + } + + public T Value + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public IEnumerable> Children + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } +} + +public static class Pov +{ + public static Graph CreateGraph(T value, IEnumerable> children) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static Graph FromPOV(T value, Graph graph) where T : IComparable + { + throw new NotImplementedException("You need to implement this function."); + } + + public static IEnumerable TracePathBetween(T value1, T value2, Graph graph) where T : IComparable + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/pov/Pov.csproj b/exercises/pov/Pov.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/pov/Pov.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/pov/pov.csproj b/exercises/pov/pov.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/pov/pov.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/prime-factors/PrimeFactors.cs b/exercises/prime-factors/PrimeFactors.cs new file mode 100644 index 0000000000..fbc88e9434 --- /dev/null +++ b/exercises/prime-factors/PrimeFactors.cs @@ -0,0 +1,9 @@ +using System; + +public static class PrimeFactors +{ + public static int[] For(long number) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/exercises/prime-factors/PrimeFactors.csproj b/exercises/prime-factors/PrimeFactors.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/prime-factors/PrimeFactors.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/prime-factors/prime-factors.csproj b/exercises/prime-factors/prime-factors.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/prime-factors/prime-factors.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/protein-translation/ProteinTranslation.cs b/exercises/protein-translation/ProteinTranslation.cs new file mode 100644 index 0000000000..44b2d2d4ed --- /dev/null +++ b/exercises/protein-translation/ProteinTranslation.cs @@ -0,0 +1,9 @@ +using System; + +public static class ProteinTranslation +{ + public static string[] Translate(string codon) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/exercises/protein-translation/ProteinTranslation.csproj b/exercises/protein-translation/ProteinTranslation.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/protein-translation/ProteinTranslation.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/protein-translation/protein-translation.csproj b/exercises/protein-translation/protein-translation.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/protein-translation/protein-translation.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/proverb/Proverb.cs b/exercises/proverb/Proverb.cs new file mode 100644 index 0000000000..dd087355a5 --- /dev/null +++ b/exercises/proverb/Proverb.cs @@ -0,0 +1,14 @@ +using System; + +public static class Proverb +{ + public static string Line(int line) + { + throw new NotImplementedException(); + } + + public static string AllLines() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/exercises/proverb/Proverb.csproj b/exercises/proverb/Proverb.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/proverb/Proverb.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/proverb/proverb.csproj b/exercises/proverb/proverb.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/proverb/proverb.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/pythagorean-triplet/PythagoreanTriplet.cs b/exercises/pythagorean-triplet/PythagoreanTriplet.cs new file mode 100644 index 0000000000..d4ce502207 --- /dev/null +++ b/exercises/pythagorean-triplet/PythagoreanTriplet.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; + +public class Triplet +{ + public Triplet(int a, int b, int c) + { + } + + public int Sum() + { + throw new NotImplementedException("You need to implement this function."); + } + + public int Product() + { + throw new NotImplementedException("You need to implement this function."); + } + + public bool IsPythagorean() + { + throw new NotImplementedException("You need to implement this function."); + } + + public static IEnumerable Where(int maxFactor, int minFactor = 1, int sum = 0) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/pythagorean-triplet/PythagoreanTriplet.csproj b/exercises/pythagorean-triplet/PythagoreanTriplet.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/pythagorean-triplet/PythagoreanTriplet.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/pythagorean-triplet/pythagorean-triplet.csproj b/exercises/pythagorean-triplet/pythagorean-triplet.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/pythagorean-triplet/pythagorean-triplet.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/queen-attack/Example.cs b/exercises/queen-attack/Example.cs index 0c1d49edfb..9fa78f3fc9 100644 --- a/exercises/queen-attack/Example.cs +++ b/exercises/queen-attack/Example.cs @@ -12,26 +12,17 @@ public Queen(int row, int column) public int Column { get; } } -public class Queens +public static class Queens { - private readonly Queen _white; - private readonly Queen _black; - - public Queens(Queen white, Queen black) + public static bool CanAttack(Queen white, Queen black) { if (white.Row == black.Row && white.Column == black.Column) { throw new ArgumentException("The queens cannot be positioned at the same place."); } - _black = black; - _white = white; - } - - public bool CanAttack() - { - return _black.Row == _white.Row || - _black.Column == _white.Column || - Math.Abs(_black.Row - _white.Row) == Math.Abs(_black.Column - _white.Column); + return black.Row == white.Row || + black.Column == white.Column || + Math.Abs(black.Row - white.Row) == Math.Abs(black.Column - white.Column); } } \ No newline at end of file diff --git a/exercises/queen-attack/QueenAttack.cs b/exercises/queen-attack/QueenAttack.cs new file mode 100644 index 0000000000..f652b36e94 --- /dev/null +++ b/exercises/queen-attack/QueenAttack.cs @@ -0,0 +1,21 @@ +using System; + +public class Queen +{ + public Queen(int row, int column) + { + Row = row; + Column = column; + } + + public int Row { get; } + public int Column { get; } +} + +public static class Queens +{ + public static bool CanAttack(Queen white, Queen black) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/queen-attack/QueenAttack.csproj b/exercises/queen-attack/QueenAttack.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/queen-attack/QueenAttack.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/queen-attack/QueenAttackTest.cs b/exercises/queen-attack/QueenAttackTest.cs index 88e5316dc5..fcac0e7015 100644 --- a/exercises/queen-attack/QueenAttackTest.cs +++ b/exercises/queen-attack/QueenAttackTest.cs @@ -8,55 +8,48 @@ public void Cannot_occupy_same_space() { var white = new Queen(2, 4); var black = new Queen(2, 4); - Assert.Throws(() => new Queens(white, black)); + Assert.Throws(() => Queens.CanAttack(white, black)); } [Fact(Skip = "Remove to run test")] public void Cannot_attack() { - var queens = new Queens(new Queen(2, 3), new Queen(4, 7)); - Assert.False(queens.CanAttack()); + Assert.False(Queens.CanAttack(new Queen(2, 3), new Queen(4, 7))); } [Fact(Skip = "Remove to run test")] public void Can_attack_on_same_row() { - var queens = new Queens(new Queen(2, 4), new Queen(2, 7)); - Assert.True(queens.CanAttack()); + Assert.True(Queens.CanAttack(new Queen(2, 4), new Queen(2, 7))); } [Fact(Skip = "Remove to run test")] public void Can_attack_on_same_column() { - var queens = new Queens(new Queen(5, 4), new Queen(2, 4)); - Assert.True(queens.CanAttack()); + Assert.True(Queens.CanAttack(new Queen(5, 4), new Queen(2, 4))); } [Fact(Skip = "Remove to run test")] public void Can_attack_on_diagonal() { - var queens = new Queens(new Queen(1, 1), new Queen(6, 6)); - Assert.True(queens.CanAttack()); + Assert.True(Queens.CanAttack(new Queen(1, 1), new Queen(6, 6))); } [Fact(Skip = "Remove to run test")] public void Can_attack_on_other_diagonal() { - var queens = new Queens(new Queen(0, 6), new Queen(1, 7)); - Assert.True(queens.CanAttack()); + Assert.True(Queens.CanAttack(new Queen(0, 6), new Queen(1, 7))); } [Fact(Skip = "Remove to run test")] public void Can_attack_on_yet_another_diagonal() { - var queens = new Queens(new Queen(4, 1), new Queen(6, 3)); - Assert.True(queens.CanAttack()); + Assert.True(Queens.CanAttack(new Queen(4, 1), new Queen(6, 3))); } [Fact(Skip = "Remove to run test")] public void Can_attack_on_a_diagonal_slanted_the_other_way() { - var queens = new Queens(new Queen(6, 1), new Queen(1, 6)); - Assert.True(queens.CanAttack()); + Assert.True(Queens.CanAttack(new Queen(6, 1), new Queen(1, 6))); } } \ No newline at end of file diff --git a/exercises/queen-attack/queen-attack.csproj b/exercises/queen-attack/queen-attack.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/queen-attack/queen-attack.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/rail-fence-cipher/RailFenceCipher.cs b/exercises/rail-fence-cipher/RailFenceCipher.cs new file mode 100644 index 0000000000..da3b8930f4 --- /dev/null +++ b/exercises/rail-fence-cipher/RailFenceCipher.cs @@ -0,0 +1,18 @@ +using System; + +public class RailFenceCipher +{ + public RailFenceCipher(int rails) + { + } + + public string Encode(string input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public string Decode(string input) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/rail-fence-cipher/RailFenceCipher.csproj b/exercises/rail-fence-cipher/RailFenceCipher.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/rail-fence-cipher/RailFenceCipher.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/rail-fence-cipher/rail-fence-cipher.csproj b/exercises/rail-fence-cipher/rail-fence-cipher.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/rail-fence-cipher/rail-fence-cipher.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/raindrops/Raindrops.cs b/exercises/raindrops/Raindrops.cs new file mode 100644 index 0000000000..f8f5c0e82f --- /dev/null +++ b/exercises/raindrops/Raindrops.cs @@ -0,0 +1,9 @@ +using System; + +public static class Raindrops +{ + public static string Convert(int number) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/raindrops/Raindrops.csproj b/exercises/raindrops/Raindrops.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/raindrops/Raindrops.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/raindrops/raindrops.csproj b/exercises/raindrops/raindrops.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/raindrops/raindrops.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/react/React.cs b/exercises/react/React.cs new file mode 100644 index 0000000000..408273cb9c --- /dev/null +++ b/exercises/react/React.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; + +public class Reactor +{ + public InputCell CreateInputCell(int value) + { + throw new NotImplementedException("You need to implement this function."); + } + + public ComputeCell CreateComputeCell(IEnumerable producers, Func compute) + { + throw new NotImplementedException("You need to implement this function."); + } +} + +public abstract class Cell +{ +} + +public class InputCell : Cell +{ +} + +public class ComputeCell : Cell +{ + +} \ No newline at end of file diff --git a/exercises/react/React.csproj b/exercises/react/React.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/react/React.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/react/react.csproj b/exercises/react/react.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/react/react.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/rectangles/Rectangles.cs b/exercises/rectangles/Rectangles.cs new file mode 100644 index 0000000000..87ce5f3fc5 --- /dev/null +++ b/exercises/rectangles/Rectangles.cs @@ -0,0 +1,9 @@ +using System; + +public static class Rectangles +{ + public static int Count(string[] rows) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/rectangles/Rectangles.csproj b/exercises/rectangles/Rectangles.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/rectangles/Rectangles.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/rectangles/rectangles.csproj b/exercises/rectangles/rectangles.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/rectangles/rectangles.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/rna-transcription/RnaTranscription.cs b/exercises/rna-transcription/RnaTranscription.cs new file mode 100644 index 0000000000..882268f979 --- /dev/null +++ b/exercises/rna-transcription/RnaTranscription.cs @@ -0,0 +1,9 @@ +using System; + +public static class Complement +{ + public static string OfDna(string nucleotide) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/rna-transcription/RnaTranscription.csproj b/exercises/rna-transcription/RnaTranscription.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/rna-transcription/RnaTranscription.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/rna-transcription/ComplementTest.cs b/exercises/rna-transcription/RnaTranscriptionTest.cs similarity index 100% rename from exercises/rna-transcription/ComplementTest.cs rename to exercises/rna-transcription/RnaTranscriptionTest.cs diff --git a/exercises/rna-transcription/rna-transcription.csproj b/exercises/rna-transcription/rna-transcription.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/rna-transcription/rna-transcription.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/robot-name/RobotName.cs b/exercises/robot-name/RobotName.cs new file mode 100644 index 0000000000..03c4a37ceb --- /dev/null +++ b/exercises/robot-name/RobotName.cs @@ -0,0 +1,17 @@ +using System; + +public class Robot +{ + public string Name + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public void Reset() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/robot-name/RobotName.csproj b/exercises/robot-name/RobotName.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/robot-name/RobotName.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/robot-name/robot-name.csproj b/exercises/robot-name/robot-name.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/robot-name/robot-name.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/robot-simulator/RobotSimulator.cs b/exercises/robot-simulator/RobotSimulator.cs new file mode 100644 index 0000000000..5fa8c719b7 --- /dev/null +++ b/exercises/robot-simulator/RobotSimulator.cs @@ -0,0 +1,64 @@ +using System; + +public enum Bearing +{ + North, + East, + South, + West +} + +public struct Coordinate +{ + public Coordinate(int x, int y) + { + X = x; + Y = y; + } + + public int X { get; } + public int Y { get; } +} + +public class RobotSimulator +{ + public RobotSimulator(Bearing bearing, Coordinate coordinate) + { + } + + public Bearing Bearing + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public Coordinate Coordinate + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public void TurnRight() + { + throw new NotImplementedException("You need to implement this function."); + } + + public void TurnLeft() + { + throw new NotImplementedException("You need to implement this function."); + } + + public void Advance() + { + throw new NotImplementedException("You need to implement this function."); + } + + public void Simulate(string instructions) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/robot-simulator/RobotSimulator.csproj b/exercises/robot-simulator/RobotSimulator.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/robot-simulator/RobotSimulator.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/robot-simulator/robot-simulator.csproj b/exercises/robot-simulator/robot-simulator.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/robot-simulator/robot-simulator.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/roman-numerals/RomanNumerals.cs b/exercises/roman-numerals/RomanNumerals.cs new file mode 100644 index 0000000000..427484ebf4 --- /dev/null +++ b/exercises/roman-numerals/RomanNumerals.cs @@ -0,0 +1,9 @@ +using System; + +public static class RomanNumeralExtension +{ + public static string ToRoman(this int value) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/roman-numerals/RomanNumerals.csproj b/exercises/roman-numerals/RomanNumerals.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/roman-numerals/RomanNumerals.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/roman-numerals/roman-numerals.csproj b/exercises/roman-numerals/roman-numerals.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/roman-numerals/roman-numerals.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/run-length-encoding/RunLengthEncoding.cs b/exercises/run-length-encoding/RunLengthEncoding.cs new file mode 100644 index 0000000000..7844d89208 --- /dev/null +++ b/exercises/run-length-encoding/RunLengthEncoding.cs @@ -0,0 +1,14 @@ +using System; + +public static class RunLengthEncoding +{ + public static string Encode(string input) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static string Decode(string input) + { + throw new NotImplementedException("You need to implement this function."); + } +} diff --git a/exercises/run-length-encoding/RunLengthEncoding.csproj b/exercises/run-length-encoding/RunLengthEncoding.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/run-length-encoding/RunLengthEncoding.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/run-length-encoding/run-length-encoding.csproj b/exercises/run-length-encoding/run-length-encoding.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/run-length-encoding/run-length-encoding.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/saddle-points/SaddlePoints.cs b/exercises/saddle-points/SaddlePoints.cs new file mode 100644 index 0000000000..7d19831ddc --- /dev/null +++ b/exercises/saddle-points/SaddlePoints.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +public class SaddlePoints +{ + public SaddlePoints(int[,] values) + { + } + + public IEnumerable> Calculate() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/saddle-points/SaddlePoints.csproj b/exercises/saddle-points/SaddlePoints.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/saddle-points/SaddlePoints.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/saddle-points/saddle-points.csproj b/exercises/saddle-points/saddle-points.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/saddle-points/saddle-points.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/say/Say.cs b/exercises/say/Say.cs new file mode 100644 index 0000000000..76aae1cd03 --- /dev/null +++ b/exercises/say/Say.cs @@ -0,0 +1,9 @@ +using System; + +public static class Say +{ + public static string InEnglish(long number) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/say/Say.csproj b/exercises/say/Say.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/say/Say.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/say/say.csproj b/exercises/say/say.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/say/say.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/scale-generator/ScaleGenerator.cs b/exercises/scale-generator/ScaleGenerator.cs new file mode 100644 index 0000000000..b1f112109e --- /dev/null +++ b/exercises/scale-generator/ScaleGenerator.cs @@ -0,0 +1,9 @@ +using System; + +public static class ScaleGenerator +{ + public static string[] Pitches(string tonic, string pattern) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/scale-generator/ScaleGenerator.csproj b/exercises/scale-generator/ScaleGenerator.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/scale-generator/ScaleGenerator.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/scale-generator/scale-generator.csproj b/exercises/scale-generator/scale-generator.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/scale-generator/scale-generator.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/scrabble-score/ScrabbleScore.cs b/exercises/scrabble-score/ScrabbleScore.cs new file mode 100644 index 0000000000..d3c4b08e2f --- /dev/null +++ b/exercises/scrabble-score/ScrabbleScore.cs @@ -0,0 +1,9 @@ +using System; + +public static class Scrabble +{ + public static int Score(string input) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/scrabble-score/ScrabbleScore.csproj b/exercises/scrabble-score/ScrabbleScore.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/scrabble-score/ScrabbleScore.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/scrabble-score/scrabble-score.csproj b/exercises/scrabble-score/scrabble-score.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/scrabble-score/scrabble-score.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/secret-handshake/SecretHandshake.cs b/exercises/secret-handshake/SecretHandshake.cs new file mode 100644 index 0000000000..682b7c07ed --- /dev/null +++ b/exercises/secret-handshake/SecretHandshake.cs @@ -0,0 +1,10 @@ +using System; +using System.Linq; + +public static class SecretHandshake +{ + public static string[] Commands(int commandValue) + { + throw new NotImplementedException("You need to implement this function."); + } +} diff --git a/exercises/secret-handshake/SecretHandshake.csproj b/exercises/secret-handshake/SecretHandshake.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/secret-handshake/SecretHandshake.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/secret-handshake/secret-handshake.csproj b/exercises/secret-handshake/secret-handshake.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/secret-handshake/secret-handshake.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/series/Series.cs b/exercises/series/Series.cs new file mode 100644 index 0000000000..5eb412662b --- /dev/null +++ b/exercises/series/Series.cs @@ -0,0 +1,13 @@ +using System; + +public class Series +{ + public Series(string numbers) + { + } + + public int[][] Slices(int sliceLength) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/series/Series.csproj b/exercises/series/Series.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/series/Series.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/series/series.csproj b/exercises/series/series.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/series/series.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/sgf-parsing/SgfParsing.cs b/exercises/sgf-parsing/SgfParsing.cs index ff72a6174c..5c3f7d66f5 100644 --- a/exercises/sgf-parsing/SgfParsing.cs +++ b/exercises/sgf-parsing/SgfParsing.cs @@ -3,14 +3,14 @@ public class SgfTree { - public IDictionary Data { get; } - public SgfTree[] Children { get; } - public SgfTree(IDictionary data, params SgfTree[] children) { Data = data; Children = children; } + + public IDictionary Data { get; } + public SgfTree[] Children { get; } } public class SgfParser diff --git a/exercises/sgf-parsing/sgf-parsing.csproj b/exercises/sgf-parsing/SgfParsing.csproj similarity index 66% rename from exercises/sgf-parsing/sgf-parsing.csproj rename to exercises/sgf-parsing/SgfParsing.csproj index 56e523868f..dc337241d8 100644 --- a/exercises/sgf-parsing/sgf-parsing.csproj +++ b/exercises/sgf-parsing/SgfParsing.csproj @@ -4,15 +4,11 @@ Exe netcoreapp1.0 - - - - - - - + + + diff --git a/exercises/sieve/Sieve.cs b/exercises/sieve/Sieve.cs new file mode 100644 index 0000000000..df8f596801 --- /dev/null +++ b/exercises/sieve/Sieve.cs @@ -0,0 +1,9 @@ +using System; + +public static class Sieve +{ + public static int[] Primes(int limit) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/sieve/Sieve.csproj b/exercises/sieve/Sieve.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/sieve/Sieve.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/sieve/sieve.csproj b/exercises/sieve/sieve.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/sieve/sieve.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/simple-cipher/SimpleCipher.cs b/exercises/simple-cipher/SimpleCipher.cs new file mode 100644 index 0000000000..42f0460a92 --- /dev/null +++ b/exercises/simple-cipher/SimpleCipher.cs @@ -0,0 +1,32 @@ +using System; + +public class Cipher +{ + public Cipher() + { + throw new NotImplementedException("You need to implement this function."); + } + + public Cipher(string key) + { + throw new NotImplementedException("You need to implement this function."); + } + + public string Key + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public string Encode(string plaintext) + { + throw new NotImplementedException("You need to implement this function."); + } + + public string Decode(string ciphertext) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/simple-cipher/SimpleCipher.csproj b/exercises/simple-cipher/SimpleCipher.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/simple-cipher/SimpleCipher.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/simple-cipher/simple-cipher.csproj b/exercises/simple-cipher/simple-cipher.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/simple-cipher/simple-cipher.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/simple-linked-list/SimpleLinkedList.cs b/exercises/simple-linked-list/SimpleLinkedList.cs new file mode 100644 index 0000000000..5ba2da02c6 --- /dev/null +++ b/exercises/simple-linked-list/SimpleLinkedList.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; + +public class SimpleLinkedList : IEnumerable +{ + public SimpleLinkedList(T value) + { + throw new NotImplementedException("You need to implement this function."); + } + + public SimpleLinkedList(IEnumerable values) + { + throw new NotImplementedException("You need to implement this function."); + } + + public T Value + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public SimpleLinkedList Next + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public SimpleLinkedList Add(T value) + { + throw new NotImplementedException("You need to implement this function."); + } + + public IEnumerator GetEnumerator() + { + throw new NotImplementedException("You need to implement this function."); + } + + IEnumerator IEnumerable.GetEnumerator() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/simple-linked-list/SimpleLinkedList.csproj b/exercises/simple-linked-list/SimpleLinkedList.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/simple-linked-list/SimpleLinkedList.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/simple-linked-list/simple-linked-list.csproj b/exercises/simple-linked-list/simple-linked-list.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/simple-linked-list/simple-linked-list.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/space-age/Example.cs b/exercises/space-age/Example.cs index 7bb1aa570c..cd4a95334e 100644 --- a/exercises/space-age/Example.cs +++ b/exercises/space-age/Example.cs @@ -8,7 +8,7 @@ private enum Planet Earth, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune } - public long Seconds { get; private set; } + private readonly long seconds; private readonly Dictionary earthYearToPlanetPeriod = new Dictionary { @@ -24,13 +24,13 @@ private enum Planet public SpaceAge(long seconds) { - Seconds = seconds; + this.seconds = seconds; } private double CalculateAge(double periodInEarthYears) { const double EARTH_ORBIT_IN_SECONDS = 31557600; - return Math.Round(Seconds / (EARTH_ORBIT_IN_SECONDS * periodInEarthYears), 2); + return Math.Round(seconds / (EARTH_ORBIT_IN_SECONDS * periodInEarthYears), 2); } public double OnEarth() diff --git a/exercises/space-age/SpaceAge.cs b/exercises/space-age/SpaceAge.cs new file mode 100644 index 0000000000..d7f9ff29e8 --- /dev/null +++ b/exercises/space-age/SpaceAge.cs @@ -0,0 +1,48 @@ +using System; + +public class SpaceAge +{ + public SpaceAge(long seconds) + { + } + + public double OnEarth() + { + throw new NotImplementedException("You need to implement this function."); + } + + public double OnMercury() + { + throw new NotImplementedException("You need to implement this function."); + } + + public double OnVenus() + { + throw new NotImplementedException("You need to implement this function."); + } + + public double OnMars() + { + throw new NotImplementedException("You need to implement this function."); + } + + public double OnJupiter() + { + throw new NotImplementedException("You need to implement this function."); + } + + public double OnSaturn() + { + throw new NotImplementedException("You need to implement this function."); + } + + public double OnUranus() + { + throw new NotImplementedException("You need to implement this function."); + } + + public double OnNeptune() + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/space-age/SpaceAge.csproj b/exercises/space-age/SpaceAge.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/space-age/SpaceAge.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/space-age/SpaceAgeTest.cs b/exercises/space-age/SpaceAgeTest.cs index 09cee31cc3..498901dc33 100644 --- a/exercises/space-age/SpaceAgeTest.cs +++ b/exercises/space-age/SpaceAgeTest.cs @@ -2,13 +2,6 @@ public class SpaceAgeTest { - [Fact] - public void Age_in_seconds() - { - var age = new SpaceAge(1000000); - Assert.Equal(1000000, age.Seconds); - } - [Fact(Skip = "Remove to run test")] public void Age_on_earth() { diff --git a/exercises/space-age/space-age.csproj b/exercises/space-age/space-age.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/space-age/space-age.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/strain/Strain.cs b/exercises/strain/Strain.cs new file mode 100644 index 0000000000..d380128092 --- /dev/null +++ b/exercises/strain/Strain.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; + +public static class Strain +{ + public static IEnumerable Keep(this IEnumerable collection, Func predicate) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static IEnumerable Discard(this IEnumerable collection, Func predicate) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/strain/Strain.csproj b/exercises/strain/Strain.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/strain/Strain.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/strain/strain.csproj b/exercises/strain/strain.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/strain/strain.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/sublist/Sublist.cs b/exercises/sublist/Sublist.cs new file mode 100644 index 0000000000..dbf5e283d3 --- /dev/null +++ b/exercises/sublist/Sublist.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; + +public enum SublistType +{ + Equal, + Unequal, + Superlist, + Sublist +} + +public static class Sublist +{ + public static SublistType Classify(List list1, List list2) + where T : IComparable + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/sublist/Sublist.csproj b/exercises/sublist/Sublist.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/sublist/Sublist.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/sublist/sublist.csproj b/exercises/sublist/sublist.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/sublist/sublist.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/sum-of-multiples/SumOfMultiples.cs b/exercises/sum-of-multiples/SumOfMultiples.cs new file mode 100644 index 0000000000..789fc36335 --- /dev/null +++ b/exercises/sum-of-multiples/SumOfMultiples.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +public static class SumOfMultiples +{ + public static int To(IEnumerable multiples, int max) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/sum-of-multiples/SumOfMultiples.csproj b/exercises/sum-of-multiples/SumOfMultiples.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/sum-of-multiples/SumOfMultiples.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/sum-of-multiples/sum-of-multiples.csproj b/exercises/sum-of-multiples/sum-of-multiples.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/sum-of-multiples/sum-of-multiples.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/tournament/Tournament.cs b/exercises/tournament/Tournament.cs new file mode 100644 index 0000000000..d80fecb431 --- /dev/null +++ b/exercises/tournament/Tournament.cs @@ -0,0 +1,10 @@ +using System; +using System.IO; + +public static class Tournament +{ + public static void Tally(Stream inStream, Stream outStream) + { + throw new NotImplementedException("You need to implement this function."); + } +} diff --git a/exercises/tournament/Tournament.csproj b/exercises/tournament/Tournament.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/tournament/Tournament.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/tournament/tournament.csproj b/exercises/tournament/tournament.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/tournament/tournament.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/transpose/Transpose.cs b/exercises/transpose/Transpose.cs new file mode 100644 index 0000000000..36f89e4e6f --- /dev/null +++ b/exercises/transpose/Transpose.cs @@ -0,0 +1,9 @@ +using System; + +public static class Transpose +{ + public static string String(string input) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/transpose/Transpose.csproj b/exercises/transpose/Transpose.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/transpose/Transpose.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/transpose/transpose.csproj b/exercises/transpose/transpose.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/transpose/transpose.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/tree-building/TreeBuilding.csproj b/exercises/tree-building/TreeBuilding.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/tree-building/TreeBuilding.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/tree-building/tree-building.csproj b/exercises/tree-building/tree-building.csproj deleted file mode 100644 index 41e5e9409a..0000000000 --- a/exercises/tree-building/tree-building.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - - - - - diff --git a/exercises/triangle/Triangle.cs b/exercises/triangle/Triangle.cs new file mode 100644 index 0000000000..c97bc92775 --- /dev/null +++ b/exercises/triangle/Triangle.cs @@ -0,0 +1,18 @@ +using System; + +public enum TriangleKind +{ + Equilateral, + Isosceles, + Scalene +} + +public class Triangle +{ + public static TriangleKind Kind(decimal side1, decimal side2, decimal side3) + { + throw new NotImplementedException("You need to implement this function."); + } +} + +public class TriangleException : Exception { } \ No newline at end of file diff --git a/exercises/triangle/Triangle.csproj b/exercises/triangle/Triangle.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/triangle/Triangle.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/triangle/triangle.csproj b/exercises/triangle/triangle.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/triangle/triangle.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/twelve-days/Example.cs b/exercises/twelve-days/Example.cs index 639ebe43f7..d7f0669114 100644 --- a/exercises/twelve-days/Example.cs +++ b/exercises/twelve-days/Example.cs @@ -4,14 +4,14 @@ using System.Text; using System.Threading.Tasks; -public class TwelveDaysSong +public static class TwelveDaysSong { - public string Sing() + public static string Sing() { return Verses(1, 12); } - public string Verse(int verseNumber) + public static string Verse(int verseNumber) { switch(verseNumber) { @@ -44,7 +44,7 @@ public string Verse(int verseNumber) } } - public string Verses(int start, int end) + public static string Verses(int start, int end) { var stringBuilder = new StringBuilder(); diff --git a/exercises/twelve-days/TwelveDays.cs b/exercises/twelve-days/TwelveDays.cs new file mode 100644 index 0000000000..95204fd9dc --- /dev/null +++ b/exercises/twelve-days/TwelveDays.cs @@ -0,0 +1,19 @@ +using System; + +public static class TwelveDaysSong +{ + public static string Sing() + { + throw new NotImplementedException("You need to implement this function."); + } + + public static string Verse(int verseNumber) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static string Verses(int start, int end) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/twelve-days/TwelveDays.csproj b/exercises/twelve-days/TwelveDays.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/twelve-days/TwelveDays.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/twelve-days/TwelveDaysTest.cs b/exercises/twelve-days/TwelveDaysTest.cs index ebbb104a35..10a7bd7ea8 100644 --- a/exercises/twelve-days/TwelveDaysTest.cs +++ b/exercises/twelve-days/TwelveDaysTest.cs @@ -2,14 +2,12 @@ public class TwelveDaysTest { - private readonly TwelveDaysSong twelveDaysSong = new TwelveDaysSong(); - [Fact] public void Return_verse_1() { var expected = "On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(1)); + Assert.Equal(expected, TwelveDaysSong.Verse(1)); } [Fact(Skip = "Remove to run test")] @@ -17,7 +15,7 @@ public void Return_verse_2() { var expected = "On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(2)); + Assert.Equal(expected, TwelveDaysSong.Verse(2)); } [Fact(Skip = "Remove to run test")] @@ -25,7 +23,7 @@ public void Return_verse_3() { var expected = "On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(3)); + Assert.Equal(expected, TwelveDaysSong.Verse(3)); } [Fact(Skip = "Remove to run test")] @@ -33,7 +31,7 @@ public void Return_verse_4() { var expected = "On the fourth day of Christmas my true love gave to me, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(4)); + Assert.Equal(expected, TwelveDaysSong.Verse(4)); } [Fact(Skip = "Remove to run test")] @@ -41,7 +39,7 @@ public void Return_verse_5() { var expected = "On the fifth day of Christmas my true love gave to me, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(5)); + Assert.Equal(expected, TwelveDaysSong.Verse(5)); } [Fact(Skip = "Remove to run test")] @@ -49,7 +47,7 @@ public void Return_verse_6() { var expected = "On the sixth day of Christmas my true love gave to me, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(6)); + Assert.Equal(expected, TwelveDaysSong.Verse(6)); } [Fact(Skip = "Remove to run test")] @@ -57,7 +55,7 @@ public void Return_verse_7() { var expected = "On the seventh day of Christmas my true love gave to me, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(7)); + Assert.Equal(expected, TwelveDaysSong.Verse(7)); } [Fact(Skip = "Remove to run test")] @@ -65,7 +63,7 @@ public void Return_verse_8() { var expected = "On the eighth day of Christmas my true love gave to me, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(8)); + Assert.Equal(expected, TwelveDaysSong.Verse(8)); } [Fact(Skip = "Remove to run test")] @@ -73,7 +71,7 @@ public void Return_verse_9() { var expected = "On the ninth day of Christmas my true love gave to me, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(9)); + Assert.Equal(expected, TwelveDaysSong.Verse(9)); } [Fact(Skip = "Remove to run test")] @@ -81,7 +79,7 @@ public void Return_verse_10() { var expected = "On the tenth day of Christmas my true love gave to me, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(10)); + Assert.Equal(expected, TwelveDaysSong.Verse(10)); } [Fact(Skip = "Remove to run test")] @@ -89,7 +87,7 @@ public void Return_verse_11() { var expected = "On the eleventh day of Christmas my true love gave to me, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(11)); + Assert.Equal(expected, TwelveDaysSong.Verse(11)); } [Fact(Skip = "Remove to run test")] @@ -97,7 +95,7 @@ public void Return_verse_12() { var expected = "On the twelfth day of Christmas my true love gave to me, twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n"; - Assert.Equal(expected, twelveDaysSong.Verse(12)); + Assert.Equal(expected, TwelveDaysSong.Verse(12)); } [Fact(Skip = "Remove to run test")] @@ -107,12 +105,12 @@ public void Return_multiple_verses() "On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.\n\n" + "On the third day of Christmas my true love gave to me, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\n"; - Assert.Equal(expected, twelveDaysSong.Verses(1, 3)); + Assert.Equal(expected, TwelveDaysSong.Verses(1, 3)); } [Fact(Skip = "Remove to run test")] public void Return_entire_song() { - Assert.Equal(twelveDaysSong.Sing(), twelveDaysSong.Verses(1, 12)); + Assert.Equal(TwelveDaysSong.Sing(), TwelveDaysSong.Verses(1, 12)); } } \ No newline at end of file diff --git a/exercises/twelve-days/twelve-days.csproj b/exercises/twelve-days/twelve-days.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/twelve-days/twelve-days.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/two-bucket/TwoBucket.cs b/exercises/two-bucket/TwoBucket.cs new file mode 100644 index 0000000000..144bb33a72 --- /dev/null +++ b/exercises/two-bucket/TwoBucket.cs @@ -0,0 +1,27 @@ +using System; + +public enum Bucket +{ + One, + Two +} + +public class TwoBucketResult +{ + public int Moves { get; set; } + public Bucket GoalBucket { get; set; } + public int OtherBucketContents { get; set; } +} + +public class TwoBuckets +{ + public TwoBuckets(int bucketOneSize, int bucketTwoSize, Bucket startBucket) + { + throw new NotImplementedException("You need to implement this function."); + } + + public TwoBucketResult Solve(int goal) + { + throw new NotImplementedException("You need to implement this function."); + } +} diff --git a/exercises/two-bucket/TwoBucket.csproj b/exercises/two-bucket/TwoBucket.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/two-bucket/TwoBucket.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/two-bucket/two-bucket.csproj b/exercises/two-bucket/two-bucket.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/two-bucket/two-bucket.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/variable-length-quantity/VariableLengthQuantity.cs b/exercises/variable-length-quantity/VariableLengthQuantity.cs new file mode 100644 index 0000000000..d2404a8f08 --- /dev/null +++ b/exercises/variable-length-quantity/VariableLengthQuantity.cs @@ -0,0 +1,14 @@ +using System; + +public static class VariableLengthQuantity +{ + public static uint[] ToBytes(uint[] numbers) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static uint[] FromBytes(uint[] bytes) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/variable-length-quantity/VariableLengthQuantity.csproj b/exercises/variable-length-quantity/VariableLengthQuantity.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/variable-length-quantity/VariableLengthQuantity.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/variable-length-quantity/variable-length-quantity.csproj b/exercises/variable-length-quantity/variable-length-quantity.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/variable-length-quantity/variable-length-quantity.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/word-count/WordCount.cs b/exercises/word-count/WordCount.cs new file mode 100644 index 0000000000..651e69f86e --- /dev/null +++ b/exercises/word-count/WordCount.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; + +public class Phrase +{ + public static IDictionary WordCount(string phrase) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/word-count/WordCount.csproj b/exercises/word-count/WordCount.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/word-count/WordCount.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/word-count/word-count.csproj b/exercises/word-count/word-count.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/word-count/word-count.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/word-search/WordSearch.cs b/exercises/word-search/WordSearch.cs new file mode 100644 index 0000000000..8abe18f9e8 --- /dev/null +++ b/exercises/word-search/WordSearch.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +public class WordSearch +{ + public WordSearch(string puzzle) + { + throw new NotImplementedException("You need to implement this function."); + } + + public Tuple, Tuple> Find(string word) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/word-search/WordSearch.csproj b/exercises/word-search/WordSearch.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/word-search/WordSearch.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/word-search/word-search.csproj b/exercises/word-search/word-search.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/word-search/word-search.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/wordy/Wordy.cs b/exercises/wordy/Wordy.cs new file mode 100644 index 0000000000..d33388e8d5 --- /dev/null +++ b/exercises/wordy/Wordy.cs @@ -0,0 +1,9 @@ +using System; + +public class WordProblem +{ + public static int Solve(string problem) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/wordy/Wordy.csproj b/exercises/wordy/Wordy.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/wordy/Wordy.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/wordy/wordy.csproj b/exercises/wordy/wordy.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/wordy/wordy.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/zebra-puzzle/ZebraPuzzle.cs b/exercises/zebra-puzzle/ZebraPuzzle.cs new file mode 100644 index 0000000000..aa0aefd21c --- /dev/null +++ b/exercises/zebra-puzzle/ZebraPuzzle.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +public enum Color { Red , Green , Ivory , Yellow , Blue } +public enum Nationality { Englishman , Spaniard , Ukranian , Japanese , Norwegian } +public enum Pet { Dog , Snails , Fox , Horse , Zebra } +public enum Drink { Coffee , Tea , Milk , OrangeJuice , Water } +public enum Smoke { OldGold , Kools , Chesterfields , LuckyStrike , Parliaments } + +public static class ZebraPuzzle +{ + public static Nationality WhoDrinks(Drink drink) + { + throw new NotImplementedException("You need to implement this function."); + } + + public static Nationality WhoOwns(Pet pet) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/zebra-puzzle/ZebraPuzzle.csproj b/exercises/zebra-puzzle/ZebraPuzzle.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/zebra-puzzle/ZebraPuzzle.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/zebra-puzzle/zebra-puzzle.csproj b/exercises/zebra-puzzle/zebra-puzzle.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/zebra-puzzle/zebra-puzzle.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - diff --git a/exercises/zipper/Zipper.cs b/exercises/zipper/Zipper.cs new file mode 100644 index 0000000000..d7e1ee5626 --- /dev/null +++ b/exercises/zipper/Zipper.cs @@ -0,0 +1,64 @@ +using System; + +public class BinTree +{ + public BinTree(T value, BinTree left, BinTree right) + { + throw new NotImplementedException("You need to implement this function."); + } + + public T Value { get; } + public BinTree Left { get; } + public BinTree Right { get; } +} + +public class Zipper +{ + public T Value + { + get + { + throw new NotImplementedException("You need to implement this function."); + } + } + + public Zipper SetValue(T newValue) + { + throw new NotImplementedException("You need to implement this function."); + } + + public Zipper SetLeft(BinTree binTree) + { + throw new NotImplementedException("You need to implement this function."); + } + + public Zipper SetRight(BinTree binTree) + { + throw new NotImplementedException("You need to implement this function."); + } + + public Zipper Left() + { + throw new NotImplementedException("You need to implement this function."); + } + + public Zipper Right() + { + throw new NotImplementedException("You need to implement this function."); + } + + public Zipper Up() + { + throw new NotImplementedException("You need to implement this function."); + } + + public BinTree ToTree() + { + throw new NotImplementedException("You need to implement this function."); + } + + public static Zipper FromTree(BinTree tree) + { + throw new NotImplementedException("You need to implement this function."); + } +} \ No newline at end of file diff --git a/exercises/zipper/Zipper.csproj b/exercises/zipper/Zipper.csproj new file mode 100644 index 0000000000..abaf321fc2 --- /dev/null +++ b/exercises/zipper/Zipper.csproj @@ -0,0 +1,14 @@ + + + + Exe + netcoreapp1.0 + + + + + + + + + diff --git a/exercises/zipper/zipper.csproj b/exercises/zipper/zipper.csproj deleted file mode 100644 index 4a5a44b594..0000000000 --- a/exercises/zipper/zipper.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - Exe - netcoreapp1.0 - - - - - - - - - From aa7d89b325bf97e3c62d4e4e62735a7c1572b93c Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Sun, 19 Feb 2017 11:52:42 +0100 Subject: [PATCH 04/19] Default file work --- Zipper.cs | 137 +++++++++++++++++++++++++++++++++ build.fsx | 22 ++++-- exercises/hangman/Hangman.cs | 4 - exercises/zipper/ZipperTest.cs | 19 +++-- 4 files changed, 165 insertions(+), 17 deletions(-) create mode 100644 Zipper.cs diff --git a/Zipper.cs b/Zipper.cs new file mode 100644 index 0000000000..23995d9589 --- /dev/null +++ b/Zipper.cs @@ -0,0 +1,137 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +public class BinTree : IEquatable> +{ + public BinTree(T value, BinTree left, BinTree right) + { + Value = value; + Left = left; + Right = right; + } + + public BinTree(BinTree tree) : this(tree.Value, tree.Left, tree.Right) + { + } + + public T Value { get; } + public BinTree Left { get; } + public BinTree Right { get; } + + public bool Equals(BinTree other) + { + if (other == null || !Equals(Value, other.Value)) + return false; + + if (!ReferenceEquals(Left, other.Left) && (!Left?.Equals(other.Left) ?? false)) + return false; + + if (!ReferenceEquals(Right, other.Right) && (!Right?.Equals(other.Right) ?? false)) + return false; + + return true; + } +} + +public abstract class BinTreeCrumb +{ + public BinTreeCrumb(T value, BinTree tree) + { + Value = value; + Tree = tree; + } + + public T Value { get; } + public BinTree Tree { get; } +} + +public class BinTreeLeftCrumb : BinTreeCrumb +{ + public BinTreeLeftCrumb(T value, BinTree tree) : base(value, tree) + { + } +} + +public class BinTreeRightCrumb : BinTreeCrumb +{ + public BinTreeRightCrumb(T value, BinTree tree) : base(value, tree) + { + } +} + +public class Zipper +{ + private readonly T value; + private readonly BinTree left; + private readonly BinTree right; + private readonly List> crumbs; + + public Zipper(T value, BinTree left, BinTree right, List> crumbs) + { + this.value = value; + this.left = left; + this.right = right; + this.crumbs = crumbs; + } + + public T Value => value; + + public Zipper SetValue(T newValue) => new Zipper(newValue, left, right, crumbs); + + public Zipper SetLeft(BinTree binTree) => new Zipper(value, binTree, right, crumbs); + + public Zipper SetRight(BinTree binTree) => new Zipper(value, left, binTree, crumbs); + + public Zipper Left() + { + if (left == null) + return null; + + var newCrumbs = new[] { new BinTreeLeftCrumb(value, right) }.Concat(crumbs).ToList(); + return new Zipper(left.Value, left.Left, left.Right, newCrumbs); + } + + public Zipper Right() + { + if (right == null) + return null; + + var newCrumbs = new[] { new BinTreeRightCrumb(value, left) }.Concat(crumbs).ToList(); + return new Zipper(right.Value, right.Left, right.Right, newCrumbs); + } + + public Zipper Up() + { + if (crumbs.Count == 0) + return null; + + var firstCrumb = crumbs[0]; + var remainingCrumbs = crumbs.Skip(1).ToList(); + + if (firstCrumb is BinTreeLeftCrumb) + return new Zipper(firstCrumb.Value, new BinTree(value, left, right), firstCrumb.Tree, remainingCrumbs); + + if (firstCrumb is BinTreeRightCrumb) + return new Zipper(firstCrumb.Value, firstCrumb.Tree, new BinTree(value, left, right), remainingCrumbs); + + return null; + } + + public BinTree ToTree() + { + var tree = new BinTree(value, left, right); + + foreach (var crumb in crumbs) + { + if (crumb is BinTreeLeftCrumb) + tree = new BinTree(crumb.Value, new BinTree(tree), crumb.Tree); + if (crumb is BinTreeRightCrumb) + tree = new BinTree(crumb.Value, crumb.Tree, new BinTree(tree)); + } + + return tree; + } + + public static Zipper FromTree(BinTree tree) => new Zipper(tree.Value, tree.Left, tree.Right, new List>()); +} \ No newline at end of file diff --git a/build.fsx b/build.fsx index f9cb758c2c..ebdaa3b400 100644 --- a/build.fsx +++ b/build.fsx @@ -11,6 +11,7 @@ let allProjects = !! (buildDir @@ "*/*.csproj") let defaultProjects = !! (buildDir @@ "*/*.csproj") -- (buildDir @@ "*/DotDsl.csproj") -- + (buildDir @@ "*/Hangman.csproj") -- (buildDir @@ "*/React.csproj") let refactoringProjects = !! (buildDir @@ "*/TreeBuilding.csproj") ++ @@ -44,7 +45,7 @@ Target "IgnoreExampleImplementation" (fun _ -> System.Text.Encoding.UTF8 allProjects ) -Target "BuildUsingDefaultImplementation" (fun _ -> +Target "BuildUsingStubImplementation" (fun _ -> Seq.iter restoreAndBuild defaultProjects ) @@ -59,23 +60,28 @@ Target "TestRefactoringProjects" (fun _ -> Seq.iter restoreAndTest refactoringProjects ) -Target "TestUsingExampleImplementation" (fun _ -> - let useExampleInsteadOfDefaultImplementation project = +Target "ReplaceStubWithExampleImplementation" (fun _ -> + let replaceStubWithExampleImplementation project = let projectDir = directory project + let stubFile = projectDir @@ filename project + "" |> changeExt ".cs" let exampleFile = projectDir @@ "Example.cs" - let defaultFile = projectDir @@ filename project + "" |> changeExt ".cs" - CopyFile defaultFile exampleFile + + CopyFile stubFile exampleFile + + Seq.iter replaceStubWithExampleImplementation allProjects +) - Seq.iter useExampleInsteadOfDefaultImplementation allProjects +Target "TestUsingExampleImplementation" (fun _ -> Seq.iter restoreAndTest allProjects ) "Clean" ==> "CopyExercises" ==> "IgnoreExampleImplementation" - ==> "BuildUsingDefaultImplementation" + ==> "BuildUsingStubImplementation" ==> "EnableAllTests" ==> "TestRefactoringProjects" + ==> "ReplaceStubWithExampleImplementation" ==> "TestUsingExampleImplementation" -RunTargetOrDefault "TestUsingExampleImplementation" \ No newline at end of file +RunTargetOrDefault "TestUsingExampleImplementation" diff --git a/exercises/hangman/Hangman.cs b/exercises/hangman/Hangman.cs index 722cbd5c65..8f24908e0f 100644 --- a/exercises/hangman/Hangman.cs +++ b/exercises/hangman/Hangman.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; -public delegate void HangmanChangedEventHandler(object sender, HangmanState state); - public class HangmanState { public HangmanGame.Status Status { get; set; } @@ -24,8 +22,6 @@ public HangmanGame(string word) { } - public event HangmanChangedEventHandler StateChanged; - public void Start() { throw new NotImplementedException("You need to implement this function."); diff --git a/exercises/zipper/ZipperTest.cs b/exercises/zipper/ZipperTest.cs index f1605ae407..2bb6dbcda5 100644 --- a/exercises/zipper/ZipperTest.cs +++ b/exercises/zipper/ZipperTest.cs @@ -5,11 +5,20 @@ public class ZipperTest private static BinTree bt(int v, BinTree l, BinTree r) => new BinTree(v, l, r); private static BinTree leaf(int v) => bt(v, null, null); - private static readonly BinTree empty = null; - private static readonly BinTree t1 = new BinTree(1, bt(2, empty, leaf(3)), leaf(4)); - private static readonly BinTree t2 = new BinTree(1, bt(5, empty, leaf(3)), leaf(4)); - private static readonly BinTree t3 = new BinTree(1, bt(2, leaf(5), leaf(3)), leaf(4)); - private static readonly BinTree t4 = new BinTree(1, leaf(2), leaf(4)); + private readonly BinTree empty; + private readonly BinTree t1; + private readonly BinTree t2; + private readonly BinTree t3; + private readonly BinTree t4; + + public ZipperTest() + { + empty = null; + t1 = new BinTree(1, bt(2, empty, leaf(3)), leaf(4)); + t2 = new BinTree(1, bt(5, empty, leaf(3)), leaf(4)); + t3 = new BinTree(1, bt(2, leaf(5), leaf(3)), leaf(4)); + t4 = new BinTree(1, leaf(2), leaf(4)); + } [Fact] public void Data_is_retained() From 6994af0a7341978b455cd1bab0974d7a821ad702 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Mon, 20 Feb 2017 20:18:40 +0100 Subject: [PATCH 05/19] Update hello-world exercise --- exercises/hello-world/Example.cs | 7 ++----- exercises/hello-world/HelloWorld.cs | 2 +- exercises/hello-world/HelloWorldTest.cs | 16 ++-------------- 3 files changed, 5 insertions(+), 20 deletions(-) diff --git a/exercises/hello-world/Example.cs b/exercises/hello-world/Example.cs index 10e127eb3c..1f977d8161 100644 --- a/exercises/hello-world/Example.cs +++ b/exercises/hello-world/Example.cs @@ -1,7 +1,4 @@ -public class HelloWorld +public static class HelloWorld { - public static string Hello(string name) - { - return $"Hello, {name ?? "World"}!"; - } + public static string Hello() => "Hello, World!"; } diff --git a/exercises/hello-world/HelloWorld.cs b/exercises/hello-world/HelloWorld.cs index d3558cd8db..505875aa3c 100644 --- a/exercises/hello-world/HelloWorld.cs +++ b/exercises/hello-world/HelloWorld.cs @@ -2,7 +2,7 @@ public static class HelloWorld { - public static string Hello(string name) + public static string Hello() { throw new NotImplementedException("You need to implement this function."); } diff --git a/exercises/hello-world/HelloWorldTest.cs b/exercises/hello-world/HelloWorldTest.cs index 7a245f56ec..8cd72f1d0e 100644 --- a/exercises/hello-world/HelloWorldTest.cs +++ b/exercises/hello-world/HelloWorldTest.cs @@ -3,20 +3,8 @@ public class HelloWorldTest { [Fact] - public void No_name() + public void Say_hi() { - Assert.Equal("Hello, World!", HelloWorld.Hello(null)); - } - - [Fact(Skip = "Remove to run test")] - public void Sample_name() - { - Assert.Equal("Hello, Alice!", HelloWorld.Hello("Alice")); - } - - [Fact(Skip = "Remove to run test")] - public void Other_sample_name() - { - Assert.Equal("Hello, Bob!", HelloWorld.Hello("Bob")); + Assert.Equal("Hello, World!", HelloWorld.Hello()); } } From 10dc4dae7c20932b94d034b8087717e401e051b7 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Mon, 20 Feb 2017 21:12:12 +0100 Subject: [PATCH 06/19] Move enumerations to outer scope Fixes #204 --- exercises/connect/Connect.cs | 16 ++++----- exercises/connect/ConnectTest.cs | 16 ++++----- exercises/connect/Example.cs | 24 ++++++------- exercises/go-counting/Example.cs | 48 ++++++++++++------------- exercises/go-counting/GoCounting.cs | 18 +++++----- exercises/go-counting/GoCountingTest.cs | 24 ++++++------- exercises/hangman/Example.cs | 22 ++++++------ exercises/hangman/Hangman.cs | 16 ++++----- exercises/hangman/HangmanTest.cs | 22 ++++++------ 9 files changed, 103 insertions(+), 103 deletions(-) diff --git a/exercises/connect/Connect.cs b/exercises/connect/Connect.cs index d5fdae730f..a15ccaf69c 100644 --- a/exercises/connect/Connect.cs +++ b/exercises/connect/Connect.cs @@ -1,20 +1,20 @@ using System; -public class Connect +public enum ConnectWinner { - public enum Winner - { - White, - Black, - None - } + White, + Black, + None +} +public class Connect +{ public Connect(string input) { throw new NotImplementedException("You need to implement this function."); } - public Winner Result() + public ConnectWinner Result() { throw new NotImplementedException("You need to implement this function."); } diff --git a/exercises/connect/ConnectTest.cs b/exercises/connect/ConnectTest.cs index b90f8015d9..b75b131f6c 100644 --- a/exercises/connect/ConnectTest.cs +++ b/exercises/connect/ConnectTest.cs @@ -20,7 +20,7 @@ public void Empty_board_has_no_winner() " . . . . ." }; var board = new Connect(MakeBoard(lines)); - Assert.Equal(Connect.Winner.None, board.Result()); + Assert.Equal(ConnectWinner.None, board.Result()); } [Fact(Skip = "Remove to run test")] @@ -28,7 +28,7 @@ public void One_by_one_board_with_black_stone() { var lines = new[] { "X" }; var board = new Connect(MakeBoard(lines)); - Assert.Equal(Connect.Winner.Black, board.Result()); + Assert.Equal(ConnectWinner.Black, board.Result()); } [Fact(Skip = "Remove to run test")] @@ -36,7 +36,7 @@ public void One_by_one_board_with_white_stone() { var lines = new[] { "O" }; var board = new Connect(MakeBoard(lines)); - Assert.Equal(Connect.Winner.White, board.Result()); + Assert.Equal(ConnectWinner.White, board.Result()); } [Fact(Skip = "Remove to run test")] @@ -51,7 +51,7 @@ public void Convoluted_path() " O O O O O" }; var board = new Connect(MakeBoard(lines)); - Assert.Equal(Connect.Winner.Black, board.Result()); + Assert.Equal(ConnectWinner.Black, board.Result()); } [Fact(Skip = "Remove to run test")] @@ -66,7 +66,7 @@ public void Rectangle_black_wins() " . O X ." }; var board = new Connect(MakeBoard(lines)); - Assert.Equal(Connect.Winner.Black, board.Result()); + Assert.Equal(ConnectWinner.Black, board.Result()); } [Fact(Skip = "Remove to run test")] @@ -81,7 +81,7 @@ public void Rectangle_white_wins() " . O X ." }; var board = new Connect(MakeBoard(lines)); - Assert.Equal(Connect.Winner.White, board.Result()); + Assert.Equal(ConnectWinner.White, board.Result()); } [Fact(Skip = "Remove to run test")] @@ -100,7 +100,7 @@ public void Spiral_black_wins() "XXXXXXXXO" }; var board = new Connect(MakeBoard(lines)); - Assert.Equal(Connect.Winner.Black, board.Result()); + Assert.Equal(ConnectWinner.Black, board.Result()); } [Fact(Skip = "Remove to run test")] @@ -119,6 +119,6 @@ public void Spiral_nobody_wins() "XXXXXXXXO" }; var board = new Connect(MakeBoard(lines)); - Assert.Equal(Connect.Winner.None, board.Result()); + Assert.Equal(ConnectWinner.None, board.Result()); } } \ No newline at end of file diff --git a/exercises/connect/Example.cs b/exercises/connect/Example.cs index 94225be659..aecd5c257e 100644 --- a/exercises/connect/Example.cs +++ b/exercises/connect/Example.cs @@ -2,16 +2,16 @@ using System.Collections.Generic; using System.Linq; -public class Connect +public enum ConnectWinner { - public enum Winner - { - White, - Black, - None - } + White, + Black, + None +} - public enum Cell +public class Connect +{ + private enum Cell { Empty, White, @@ -107,14 +107,14 @@ private bool ColorWins(Cell cell, Func, bool> stop, Fu private bool WhiteWins() => ColorWins(Cell.White, IsWhiteStop, WhiteStart); private bool BlackWins() => ColorWins(Cell.Black, IsBlackStop, BlackStart); - public Winner Result() + public ConnectWinner Result() { if (WhiteWins()) - return Winner.White; + return ConnectWinner.White; if (BlackWins()) - return Winner.Black; + return ConnectWinner.Black; - return Winner.None; + return ConnectWinner.None; } } \ No newline at end of file diff --git a/exercises/go-counting/Example.cs b/exercises/go-counting/Example.cs index 434310fc26..0d3bc38ff5 100644 --- a/exercises/go-counting/Example.cs +++ b/exercises/go-counting/Example.cs @@ -2,33 +2,33 @@ using System.Collections.Generic; using System.Linq; -public class GoCounting +public enum GoPlayer { - public enum Player - { - None, - Black, - White - } + None, + Black, + White +} - private readonly Player[][] board; +public class GoCounting +{ + private readonly GoPlayer[][] board; public GoCounting(string input) { board = ParseBoard(input); } - private static Player CharToPlayer(char c) + private static GoPlayer CharToPlayer(char c) { switch (c) { - case 'B': return Player.Black; - case 'W': return Player.White; - default: return Player.None; + case 'B': return GoPlayer.Black; + case 'W': return GoPlayer.White; + default: return GoPlayer.None; } } - private static Player[][] ParseBoard(string input) + private static GoPlayer[][] ParseBoard(string input) { var split = input.Split('\n'); var rows = split.Length; @@ -44,9 +44,9 @@ private bool IsValidCoordinate(Tuple coordinate) => coordinate.Item2 >= 0 && coordinate.Item2 < Rows && coordinate.Item1 >= 0 && coordinate.Item1 < Cols; - private Player GetPlayer(Tuple coordinate) => board[coordinate.Item2][coordinate.Item1]; + private GoPlayer GetPlayer(Tuple coordinate) => board[coordinate.Item2][coordinate.Item1]; - private bool IsEmpty(Tuple coordinate) => GetPlayer(coordinate) == Player.None; + private bool IsEmpty(Tuple coordinate) => GetPlayer(coordinate) == GoPlayer.None; private bool IsTaken(Tuple coordinate) => !IsEmpty(coordinate); private IEnumerable> EmptyCoordinates() @@ -63,10 +63,10 @@ private IEnumerable> NeighborCoordinates(Tuple coordin var coords = new[] { - new Tuple(col, row - 1), + new Tuple(col, row - 1), new Tuple(col-1, row), new Tuple(col+1, row), - new Tuple(col, row+1) + new Tuple(col, row+1) }; return coords.Where(IsValidCoordinate); @@ -78,7 +78,7 @@ private IEnumerable> TakenNeighborCoordinates(Tuple co private IEnumerable> EmptyNeighborCoordinates(Tuple coordinate) => NeighborCoordinates(coordinate).Where(IsEmpty); - private Player TerritoryOwner(HashSet> coords) + private GoPlayer TerritoryOwner(HashSet> coords) { var neighborColors = coords.SelectMany(TakenNeighborCoordinates).Select(GetPlayer); var uniqueNeighborColors = ToSet(neighborColors); @@ -86,7 +86,7 @@ private Player TerritoryOwner(HashSet> coords) if (uniqueNeighborColors.Count == 1) return uniqueNeighborColors.First(); - return Player.None; + return GoPlayer.None; } private HashSet> TerritoryHelper(HashSet> remainder, HashSet> acc) @@ -107,7 +107,7 @@ private HashSet> Territory(Tuple coordinate) => ? TerritoryHelper(ToSingletonSet(coordinate), ToSingletonSet(coordinate)) : new HashSet>(); - public Tuple>> TerritoryFor(Tuple coord) + public Tuple>> TerritoryFor(Tuple coord) { var coords = Territory(coord); if (!coords.Any()) @@ -117,7 +117,7 @@ public Tuple>> TerritoryFor(Tuple return Tuple.Create(owner, coords.AsEnumerable()); } - private Dictionary>> TerritoriesHelper(HashSet> remainder, Dictionary>> acc) + private Dictionary>> TerritoriesHelper(HashSet> remainder, Dictionary>> acc) { if (!remainder.Any()) return acc; @@ -129,17 +129,17 @@ private Dictionary>> TerritoriesHelper(HashS var newRemainder = ToSet(remainder); newRemainder.ExceptWith(coords); - var newAcc = new Dictionary>>(acc) + var newAcc = new Dictionary>>(acc) { [owner] = coords }; return TerritoriesHelper(newRemainder, newAcc); } - public Dictionary>> Territories() + public Dictionary>> Territories() { var emptyCoords = EmptyCoordinates(); - return TerritoriesHelper(ToSet(emptyCoords), new Dictionary>>()); + return TerritoriesHelper(ToSet(emptyCoords), new Dictionary>>()); } private static HashSet ToSet(IEnumerable value) => new HashSet(value); diff --git a/exercises/go-counting/GoCounting.cs b/exercises/go-counting/GoCounting.cs index be63789f07..b7dde33f9f 100644 --- a/exercises/go-counting/GoCounting.cs +++ b/exercises/go-counting/GoCounting.cs @@ -1,26 +1,26 @@ using System; using System.Collections.Generic; -public class GoCounting +public enum GoPlayer { - public enum Player - { - None, - Black, - White - } + None, + Black, + White +} +public class GoCounting +{ public GoCounting(string input) { throw new NotImplementedException("You need to implement this function."); } - public Tuple>> TerritoryFor(Tuple coord) + public Tuple>> TerritoryFor(Tuple coord) { throw new NotImplementedException("You need to implement this function."); } - public Dictionary>> Territories() + public Dictionary>> Territories() { throw new NotImplementedException("You need to implement this function."); } diff --git a/exercises/go-counting/GoCountingTest.cs b/exercises/go-counting/GoCountingTest.cs index e60e234ffd..56381c9358 100644 --- a/exercises/go-counting/GoCountingTest.cs +++ b/exercises/go-counting/GoCountingTest.cs @@ -35,7 +35,7 @@ public void FiveByFiveTerritoryForBlack() var board = new GoCounting(boardFiveByFive); var result = board.TerritoryFor(new Tuple(0, 1)); var expected = new HashSet> { new Tuple(0, 0), new Tuple(0, 1), new Tuple(1, 0) }; - Assert.Equal(GoCounting.Player.Black, result.Item1); + Assert.Equal(GoPlayer.Black, result.Item1); Assert.True(expected.SetEquals(result.Item2)); } @@ -45,7 +45,7 @@ public void FiveByFiveTerritoryForWhite() var board = new GoCounting(boardFiveByFive); var result = board.TerritoryFor(new Tuple(2, 3)); var expected = new HashSet> { new Tuple(2, 3) }; - Assert.Equal(GoCounting.Player.White, result.Item1); + Assert.Equal(GoPlayer.White, result.Item1); Assert.True(expected.SetEquals(result.Item2)); } @@ -55,7 +55,7 @@ public void FiveByFiveOpenTerritory() var board = new GoCounting(boardFiveByFive); var result = board.TerritoryFor(new Tuple(1, 4)); var expected = new HashSet> { new Tuple(0, 3), new Tuple(0, 4), new Tuple(1, 4) }; - Assert.Equal(GoCounting.Player.None, result.Item1); + Assert.Equal(GoPlayer.None, result.Item1); Assert.True(expected.SetEquals(result.Item2)); } @@ -86,7 +86,7 @@ public void MinimalBoardWithNoTerritories() var input = "B"; var board = new GoCounting(input); - var expected = new Dictionary>>(); + var expected = new Dictionary>>(); Assert.Equal(expected, board.Territories()); } @@ -98,13 +98,13 @@ public void OneTerritoryCoveringTheWholeBoard() var board = new GoCounting(input); var actual = board.Territories(); - var expected = new Dictionary>> + var expected = new Dictionary>> { - [GoCounting.Player.None] = new[] { new Tuple(0, 0) } + [GoPlayer.None] = new[] { new Tuple(0, 0) } }; Assert.Equal(expected.Keys, actual.Keys); - Assert.Equal(expected[GoCounting.Player.None], actual[GoCounting.Player.None]); + Assert.Equal(expected[GoPlayer.None], actual[GoPlayer.None]); } [Fact(Skip = "Remove to run test")] @@ -114,15 +114,15 @@ public void TwoTerritoriesOnRectangularBoard() var board = new GoCounting(input); var actual = board.Territories(); - var expected = new Dictionary>> + var expected = new Dictionary>> { - [GoCounting.Player.Black] = new[] { new Tuple(0, 0), new Tuple(0, 1) }, - [GoCounting.Player.White] = new[] { new Tuple(3, 0), new Tuple(3, 1) } + [GoPlayer.Black] = new[] { new Tuple(0, 0), new Tuple(0, 1) }, + [GoPlayer.White] = new[] { new Tuple(3, 0), new Tuple(3, 1) } }; Assert.Equal(expected.Keys, actual.Keys); - Assert.Equal(expected[GoCounting.Player.Black], actual[GoCounting.Player.Black]); - Assert.Equal(expected[GoCounting.Player.White], actual[GoCounting.Player.White]); + Assert.Equal(expected[GoPlayer.Black], actual[GoPlayer.Black]); + Assert.Equal(expected[GoPlayer.White], actual[GoPlayer.White]); } private class EnumerableEqualityComparer : IEqualityComparer> diff --git a/exercises/hangman/Example.cs b/exercises/hangman/Example.cs index ca9fc51847..a7c900c733 100644 --- a/exercises/hangman/Example.cs +++ b/exercises/hangman/Example.cs @@ -5,12 +5,19 @@ public class HangmanState { - public HangmanGame.Status Status { get; set; } + public HangmanStatus Status { get; set; } public int RemainingGuesses { get; set; } public string MaskedWord { get; set; } public HashSet Guesses { get; set; } } +public enum HangmanStatus +{ + Busy, + Win, + Lose +} + public class HangmanGame { private const int NumberOfAllowedGuesses = 9; @@ -19,13 +26,6 @@ public class HangmanGame private readonly string word; private readonly HangmanState state; - public enum Status - { - Busy, - Win, - Lose - } - public HangmanGame(string word) { this.word = word; @@ -76,10 +76,10 @@ private void UpdateMaskedWord() private void UpdateStatus() { if (state.MaskedWord == word) - state.Status = Status.Win; + state.Status = HangmanStatus.Win; else if (state.RemainingGuesses < 0) - state.Status = Status.Lose; + state.Status = HangmanStatus.Lose; else - state.Status = Status.Busy; + state.Status = HangmanStatus.Busy; } } \ No newline at end of file diff --git a/exercises/hangman/Hangman.cs b/exercises/hangman/Hangman.cs index 8f24908e0f..df5ea98bcb 100644 --- a/exercises/hangman/Hangman.cs +++ b/exercises/hangman/Hangman.cs @@ -3,21 +3,21 @@ public class HangmanState { - public HangmanGame.Status Status { get; set; } + public HangmanStatus Status { get; set; } public int RemainingGuesses { get; set; } public string MaskedWord { get; set; } public HashSet Guesses { get; set; } } -public class HangmanGame +public enum HangmanStatus { - public enum Status - { - Busy, - Win, - Lose - } + Busy, + Win, + Lose +} +public class HangmanGame +{ public HangmanGame(string word) { } diff --git a/exercises/hangman/HangmanTest.cs b/exercises/hangman/HangmanTest.cs index 9678a26911..684f872e41 100644 --- a/exercises/hangman/HangmanTest.cs +++ b/exercises/hangman/HangmanTest.cs @@ -12,7 +12,7 @@ public void Initially_9_failures_are_allowed() game.Start(); - Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(HangmanStatus.Busy, lastState.Status); Assert.Equal(9, lastState.RemainingGuesses); } @@ -44,7 +44,7 @@ public void After_10_failures_the_game_is_over() game.Guess('x'); } - Assert.Equal(HangmanGame.Status.Lose, lastState.Status); + Assert.Equal(HangmanStatus.Lose, lastState.Status); } [Fact(Skip = "Remove to run test")] @@ -59,13 +59,13 @@ public void Feeding_a_correct_letter_removes_underscores() game.Guess('b'); - Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(HangmanStatus.Busy, lastState.Status); Assert.Equal(9, lastState.RemainingGuesses); Assert.Equal("___b__", lastState.MaskedWord); game.Guess('o'); - Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(HangmanStatus.Busy, lastState.Status); Assert.Equal(9, lastState.RemainingGuesses); Assert.Equal("_oob__", lastState.MaskedWord); } @@ -82,13 +82,13 @@ public void Feeding_a_correct_letter_twice_counts_as_a_failure() game.Guess('b'); - Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(HangmanStatus.Busy, lastState.Status); Assert.Equal(9, lastState.RemainingGuesses); Assert.Equal("___b__", lastState.MaskedWord); game.Guess('b'); - Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(HangmanStatus.Busy, lastState.Status); Assert.Equal(8, lastState.RemainingGuesses); Assert.Equal("___b__", lastState.MaskedWord); } @@ -105,31 +105,31 @@ public void Getting_all_the_letters_right_makes_for_a_win() game.Guess('b'); - Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(HangmanStatus.Busy, lastState.Status); Assert.Equal(8, lastState.RemainingGuesses); Assert.Equal("_____", lastState.MaskedWord); game.Guess('e'); - Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(HangmanStatus.Busy, lastState.Status); Assert.Equal(8, lastState.RemainingGuesses); Assert.Equal("_e___", lastState.MaskedWord); game.Guess('l'); - Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(HangmanStatus.Busy, lastState.Status); Assert.Equal(8, lastState.RemainingGuesses); Assert.Equal("_ell_", lastState.MaskedWord); game.Guess('o'); - Assert.Equal(HangmanGame.Status.Busy, lastState.Status); + Assert.Equal(HangmanStatus.Busy, lastState.Status); Assert.Equal(8, lastState.RemainingGuesses); Assert.Equal("_ello", lastState.MaskedWord); game.Guess('h'); - Assert.Equal(HangmanGame.Status.Win, lastState.Status); + Assert.Equal(HangmanStatus.Win, lastState.Status); Assert.Equal("hello", lastState.MaskedWord); } } \ No newline at end of file From 5a8fc26fdd95cfdb7f2519b1ad3da2564201af8b Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Mon, 20 Feb 2017 22:27:51 +0100 Subject: [PATCH 07/19] All building single project --- build.fsx | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/build.fsx b/build.fsx index ebdaa3b400..545183bae2 100644 --- a/build.fsx +++ b/build.fsx @@ -3,20 +3,22 @@ open Fake open Fake.DotNetCli +let project = environVarOrDefault "project" "*" let buildDir = "./build/" let sourceDir = "./exercises/" +let projectDirs = buildDir @@ project -let testFiles = !! (buildDir @@ "*/*Test.cs") -let allProjects = !! (buildDir @@ "*/*.csproj") +let testFiles = !! (projectDirs @@ "*Test.cs") +let allProjects = !! (projectDirs @@ "*.csproj") let defaultProjects = - !! (buildDir @@ "*/*.csproj") -- - (buildDir @@ "*/DotDsl.csproj") -- - (buildDir @@ "*/Hangman.csproj") -- - (buildDir @@ "*/React.csproj") + !! (projectDirs @@ ".csproj") -- + (projectDirs @@ "DotDsl.csproj") -- + (projectDirs @@ "Hangman.csproj") -- + (projectDirs @@ "React.csproj") let refactoringProjects = - !! (buildDir @@ "*/TreeBuilding.csproj") ++ - (buildDir @@ "*/Ledger.csproj") ++ - (buildDir @@ "*/Markdown.csproj") + !! (projectDirs @@ "TreeBuilding.csproj") ++ + (projectDirs @@ "Ledger.csproj") ++ + (projectDirs @@ "Markdown.csproj") let restore project = DotNetCli.Restore (fun p -> { p with Project = project }) let build project = DotNetCli.Build (fun p -> { p with Project = project }) From 4300f5c6692212a66a90a8d691b2add63d54a819 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Tue, 21 Feb 2017 22:00:06 +0100 Subject: [PATCH 08/19] Ignore Example.cs in project This enables us to: - Directly build the exercises from the command-line - Simplify the build script --- build.fsx | 27 ++++++------------- exercises/accumulate/Accumulate.csproj | 4 +++ exercises/acronym/Acronym.csproj | 4 +++ exercises/all-your-base/AllYourBase.csproj | 4 +++ exercises/allergies/Allergies.csproj | 4 +++ exercises/alphametics/Alphametics.csproj | 4 +++ exercises/anagram/Anagram.csproj | 4 +++ exercises/atbash-cipher/AtbashCipher.csproj | 4 +++ exercises/bank-account/BankAccount.csproj | 4 +++ exercises/beer-song/BeerSong.csproj | 4 +++ .../BinarySearchTree.csproj | 4 +++ exercises/binary-search/BinarySearch.csproj | 4 +++ exercises/bob/Bob.csproj | 4 +++ exercises/book-store/BookStore.csproj | 4 +++ exercises/bowling/Bowling.csproj | 4 +++ exercises/bracket-push/BracketPush.csproj | 4 +++ exercises/change/Change.csproj | 4 +++ .../circular-buffer/CircularBuffer.csproj | 4 +++ exercises/clock/Clock.csproj | 4 +++ exercises/connect/Connect.csproj | 4 +++ exercises/crypto-square/CryptoSquare.csproj | 4 +++ exercises/custom-set/CustomSet.csproj | 4 +++ exercises/diamond/Diamond.csproj | 4 +++ .../DifferenceOfSquares.csproj | 4 +++ exercises/diffie-hellman/DiffieHellman.csproj | 4 +++ exercises/dominoes/Dominoes.csproj | 4 +++ exercises/dot-dsl/DotDsl.csproj | 4 +++ exercises/error-handling/ErrorHandling.csproj | 4 +++ exercises/etl/Etl.csproj | 4 +++ exercises/flatten-array/FlattenArray.csproj | 4 +++ exercises/food-chain/FoodChain.csproj | 4 +++ exercises/forth/Forth.csproj | 4 +++ exercises/gigasecond/Gigasecond.csproj | 4 +++ exercises/go-counting/GoCounting.csproj | 4 +++ exercises/grade-school/GradeSchool.csproj | 4 +++ exercises/grains/Grains.csproj | 4 +++ exercises/grep/Grep.csproj | 4 +++ exercises/hamming/Hamming.csproj | 4 +++ exercises/hangman/Hangman.csproj | 4 +++ exercises/hello-world/HelloWorld.csproj | 4 +++ exercises/house/House.csproj | 4 +++ exercises/isogram/Isogram.csproj | 4 +++ .../KindergartenGarden.csproj | 4 +++ .../LargestSeriesProduct.csproj | 4 +++ exercises/leap/Leap.csproj | 4 +++ exercises/ledger/Ledger.csproj | 4 +++ exercises/linked-list/LinkedList.csproj | 4 +++ exercises/list-ops/ListOps.csproj | 4 +++ exercises/luhn/Luhn.csproj | 4 +++ exercises/markdown/Markdown.csproj | 4 +++ exercises/matrix/Matrix.csproj | 4 +++ exercises/meetup/Meetup.csproj | 4 +++ exercises/minesweeper/Minesweeper.csproj | 4 +++ exercises/nth-prime/NthPrime.csproj | 4 +++ .../nucleotide-count/NucleotideCount.csproj | 4 +++ exercises/ocr-numbers/OcrNumbers.csproj | 4 +++ .../PalindromeProducts.csproj | 4 +++ exercises/pangram/Pangram.csproj | 4 +++ .../ParallelLetterFrequency.csproj | 4 +++ .../pascals-triangle/PascalsTriangle.csproj | 4 +++ .../perfect-numbers/PerfectNumbers.csproj | 4 +++ exercises/phone-number/PhoneNumber.csproj | 4 +++ exercises/pig-latin/PigLatin.csproj | 4 +++ exercises/poker/Poker.csproj | 4 +++ exercises/pov/Pov.csproj | 4 +++ exercises/prime-factors/PrimeFactors.csproj | 4 +++ .../ProteinTranslation.csproj | 4 +++ exercises/proverb/Proverb.csproj | 4 +++ .../PythagoreanTriplet.csproj | 4 +++ exercises/queen-attack/QueenAttack.csproj | 4 +++ .../rail-fence-cipher/RailFenceCipher.csproj | 4 +++ exercises/raindrops/Raindrops.csproj | 4 +++ exercises/react/React.csproj | 4 +++ exercises/rectangles/Rectangles.csproj | 4 +++ .../rna-transcription/RnaTranscription.csproj | 4 +++ exercises/robot-name/RobotName.csproj | 4 +++ .../robot-simulator/RobotSimulator.csproj | 4 +++ exercises/roman-numerals/RomanNumerals.csproj | 4 +++ .../RunLengthEncoding.csproj | 4 +++ exercises/saddle-points/SaddlePoints.csproj | 4 +++ exercises/say/Say.csproj | 4 +++ .../scale-generator/ScaleGenerator.csproj | 4 +++ exercises/scrabble-score/ScrabbleScore.csproj | 4 +++ .../secret-handshake/SecretHandshake.csproj | 4 +++ exercises/series/Series.csproj | 4 +++ exercises/sgf-parsing/SgfParsing.csproj | 4 +++ exercises/sieve/Sieve.csproj | 4 +++ exercises/simple-cipher/SimpleCipher.csproj | 4 +++ .../SimpleLinkedList.csproj | 4 +++ exercises/space-age/SpaceAge.csproj | 4 +++ exercises/strain/Strain.csproj | 4 +++ exercises/sublist/Sublist.csproj | 4 +++ .../sum-of-multiples/SumOfMultiples.csproj | 4 +++ exercises/tournament/Tournament.csproj | 4 +++ exercises/transpose/Transpose.csproj | 4 +++ exercises/tree-building/TreeBuilding.csproj | 4 +++ exercises/triangle/Triangle.csproj | 4 +++ exercises/twelve-days/TwelveDays.csproj | 4 +++ exercises/two-bucket/TwoBucket.csproj | 4 +++ .../VariableLengthQuantity.csproj | 4 +++ exercises/word-count/WordCount.csproj | 4 +++ exercises/word-search/WordSearch.csproj | 4 +++ exercises/wordy/Wordy.csproj | 4 +++ exercises/zebra-puzzle/ZebraPuzzle.csproj | 4 +++ exercises/zipper/Zipper.csproj | 4 +++ 105 files changed, 424 insertions(+), 19 deletions(-) diff --git a/build.fsx b/build.fsx index 545183bae2..425ae5a224 100644 --- a/build.fsx +++ b/build.fsx @@ -2,6 +2,7 @@ open Fake open Fake.DotNetCli +open System.Text let project = environVarOrDefault "project" "*" let buildDir = "./build/" @@ -11,7 +12,7 @@ let projectDirs = buildDir @@ project let testFiles = !! (projectDirs @@ "*Test.cs") let allProjects = !! (projectDirs @@ "*.csproj") let defaultProjects = - !! (projectDirs @@ ".csproj") -- + !! (projectDirs @@ "*.csproj") -- (projectDirs @@ "DotDsl.csproj") -- (projectDirs @@ "Hangman.csproj") -- (projectDirs @@ "React.csproj") @@ -40,22 +41,13 @@ Target "CopyExercises" (fun _ -> CopyDir buildDir sourceDir allFiles ) -Target "IgnoreExampleImplementation" (fun _ -> - RegexReplaceInFilesWithEncoding - "" - "" - System.Text.Encoding.UTF8 allProjects -) - Target "BuildUsingStubImplementation" (fun _ -> Seq.iter restoreAndBuild defaultProjects ) Target "EnableAllTests" (fun _ -> - RegexReplaceInFilesWithEncoding - "Skip\s*=\s*\"Remove to run test\"" - "" - System.Text.Encoding.UTF8 testFiles + let skipProperty = "Skip\s*=\s*\"Remove to run test\"" + RegexReplaceInFilesWithEncoding skipProperty "" Encoding.UTF8 testFiles ) Target "TestRefactoringProjects" (fun _ -> @@ -64,11 +56,9 @@ Target "TestRefactoringProjects" (fun _ -> Target "ReplaceStubWithExampleImplementation" (fun _ -> let replaceStubWithExampleImplementation project = - let projectDir = directory project - let stubFile = projectDir @@ filename project + "" |> changeExt ".cs" - let exampleFile = projectDir @@ "Example.cs" - - CopyFile stubFile exampleFile + let stubFile = filename project + "" |> changeExt ".cs" + let exampleFile = "Example.cs" + RegexReplaceInFileWithEncoding exampleFile stubFile Encoding.UTF8 project Seq.iter replaceStubWithExampleImplementation allProjects ) @@ -79,11 +69,10 @@ Target "TestUsingExampleImplementation" (fun _ -> "Clean" ==> "CopyExercises" - ==> "IgnoreExampleImplementation" ==> "BuildUsingStubImplementation" ==> "EnableAllTests" ==> "TestRefactoringProjects" ==> "ReplaceStubWithExampleImplementation" ==> "TestUsingExampleImplementation" -RunTargetOrDefault "TestUsingExampleImplementation" +RunTargetOrDefault "TestUsingExampleImplementation" \ No newline at end of file diff --git a/exercises/accumulate/Accumulate.csproj b/exercises/accumulate/Accumulate.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/accumulate/Accumulate.csproj +++ b/exercises/accumulate/Accumulate.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/acronym/Acronym.csproj b/exercises/acronym/Acronym.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/acronym/Acronym.csproj +++ b/exercises/acronym/Acronym.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/all-your-base/AllYourBase.csproj b/exercises/all-your-base/AllYourBase.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/all-your-base/AllYourBase.csproj +++ b/exercises/all-your-base/AllYourBase.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/allergies/Allergies.csproj b/exercises/allergies/Allergies.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/allergies/Allergies.csproj +++ b/exercises/allergies/Allergies.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/alphametics/Alphametics.csproj b/exercises/alphametics/Alphametics.csproj index f41b76d58a..e208192428 100644 --- a/exercises/alphametics/Alphametics.csproj +++ b/exercises/alphametics/Alphametics.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/anagram/Anagram.csproj b/exercises/anagram/Anagram.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/anagram/Anagram.csproj +++ b/exercises/anagram/Anagram.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/atbash-cipher/AtbashCipher.csproj b/exercises/atbash-cipher/AtbashCipher.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/atbash-cipher/AtbashCipher.csproj +++ b/exercises/atbash-cipher/AtbashCipher.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/bank-account/BankAccount.csproj b/exercises/bank-account/BankAccount.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/bank-account/BankAccount.csproj +++ b/exercises/bank-account/BankAccount.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/beer-song/BeerSong.csproj b/exercises/beer-song/BeerSong.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/beer-song/BeerSong.csproj +++ b/exercises/beer-song/BeerSong.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/binary-search-tree/BinarySearchTree.csproj b/exercises/binary-search-tree/BinarySearchTree.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/binary-search-tree/BinarySearchTree.csproj +++ b/exercises/binary-search-tree/BinarySearchTree.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/binary-search/BinarySearch.csproj b/exercises/binary-search/BinarySearch.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/binary-search/BinarySearch.csproj +++ b/exercises/binary-search/BinarySearch.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/bob/Bob.csproj b/exercises/bob/Bob.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/bob/Bob.csproj +++ b/exercises/bob/Bob.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/book-store/BookStore.csproj b/exercises/book-store/BookStore.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/book-store/BookStore.csproj +++ b/exercises/book-store/BookStore.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/bowling/Bowling.csproj b/exercises/bowling/Bowling.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/bowling/Bowling.csproj +++ b/exercises/bowling/Bowling.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/bracket-push/BracketPush.csproj b/exercises/bracket-push/BracketPush.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/bracket-push/BracketPush.csproj +++ b/exercises/bracket-push/BracketPush.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/change/Change.csproj b/exercises/change/Change.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/change/Change.csproj +++ b/exercises/change/Change.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/circular-buffer/CircularBuffer.csproj b/exercises/circular-buffer/CircularBuffer.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/circular-buffer/CircularBuffer.csproj +++ b/exercises/circular-buffer/CircularBuffer.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/clock/Clock.csproj b/exercises/clock/Clock.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/clock/Clock.csproj +++ b/exercises/clock/Clock.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/connect/Connect.csproj b/exercises/connect/Connect.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/connect/Connect.csproj +++ b/exercises/connect/Connect.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/crypto-square/CryptoSquare.csproj b/exercises/crypto-square/CryptoSquare.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/crypto-square/CryptoSquare.csproj +++ b/exercises/crypto-square/CryptoSquare.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/custom-set/CustomSet.csproj b/exercises/custom-set/CustomSet.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/custom-set/CustomSet.csproj +++ b/exercises/custom-set/CustomSet.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/diamond/Diamond.csproj b/exercises/diamond/Diamond.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/diamond/Diamond.csproj +++ b/exercises/diamond/Diamond.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/difference-of-squares/DifferenceOfSquares.csproj b/exercises/difference-of-squares/DifferenceOfSquares.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/difference-of-squares/DifferenceOfSquares.csproj +++ b/exercises/difference-of-squares/DifferenceOfSquares.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/diffie-hellman/DiffieHellman.csproj b/exercises/diffie-hellman/DiffieHellman.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/diffie-hellman/DiffieHellman.csproj +++ b/exercises/diffie-hellman/DiffieHellman.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/dominoes/Dominoes.csproj b/exercises/dominoes/Dominoes.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/dominoes/Dominoes.csproj +++ b/exercises/dominoes/Dominoes.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/dot-dsl/DotDsl.csproj b/exercises/dot-dsl/DotDsl.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/dot-dsl/DotDsl.csproj +++ b/exercises/dot-dsl/DotDsl.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/error-handling/ErrorHandling.csproj b/exercises/error-handling/ErrorHandling.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/error-handling/ErrorHandling.csproj +++ b/exercises/error-handling/ErrorHandling.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/etl/Etl.csproj b/exercises/etl/Etl.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/etl/Etl.csproj +++ b/exercises/etl/Etl.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/flatten-array/FlattenArray.csproj b/exercises/flatten-array/FlattenArray.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/flatten-array/FlattenArray.csproj +++ b/exercises/flatten-array/FlattenArray.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/food-chain/FoodChain.csproj b/exercises/food-chain/FoodChain.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/food-chain/FoodChain.csproj +++ b/exercises/food-chain/FoodChain.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/forth/Forth.csproj b/exercises/forth/Forth.csproj index f41b76d58a..e208192428 100644 --- a/exercises/forth/Forth.csproj +++ b/exercises/forth/Forth.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/gigasecond/Gigasecond.csproj b/exercises/gigasecond/Gigasecond.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/gigasecond/Gigasecond.csproj +++ b/exercises/gigasecond/Gigasecond.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/go-counting/GoCounting.csproj b/exercises/go-counting/GoCounting.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/go-counting/GoCounting.csproj +++ b/exercises/go-counting/GoCounting.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/grade-school/GradeSchool.csproj b/exercises/grade-school/GradeSchool.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/grade-school/GradeSchool.csproj +++ b/exercises/grade-school/GradeSchool.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/grains/Grains.csproj b/exercises/grains/Grains.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/grains/Grains.csproj +++ b/exercises/grains/Grains.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/grep/Grep.csproj b/exercises/grep/Grep.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/grep/Grep.csproj +++ b/exercises/grep/Grep.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/hamming/Hamming.csproj b/exercises/hamming/Hamming.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/hamming/Hamming.csproj +++ b/exercises/hamming/Hamming.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/hangman/Hangman.csproj b/exercises/hangman/Hangman.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/hangman/Hangman.csproj +++ b/exercises/hangman/Hangman.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/hello-world/HelloWorld.csproj b/exercises/hello-world/HelloWorld.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/hello-world/HelloWorld.csproj +++ b/exercises/hello-world/HelloWorld.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/house/House.csproj b/exercises/house/House.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/house/House.csproj +++ b/exercises/house/House.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/isogram/Isogram.csproj b/exercises/isogram/Isogram.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/isogram/Isogram.csproj +++ b/exercises/isogram/Isogram.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/kindergarten-garden/KindergartenGarden.csproj b/exercises/kindergarten-garden/KindergartenGarden.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/kindergarten-garden/KindergartenGarden.csproj +++ b/exercises/kindergarten-garden/KindergartenGarden.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/largest-series-product/LargestSeriesProduct.csproj b/exercises/largest-series-product/LargestSeriesProduct.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/largest-series-product/LargestSeriesProduct.csproj +++ b/exercises/largest-series-product/LargestSeriesProduct.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/leap/Leap.csproj b/exercises/leap/Leap.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/leap/Leap.csproj +++ b/exercises/leap/Leap.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/ledger/Ledger.csproj b/exercises/ledger/Ledger.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/ledger/Ledger.csproj +++ b/exercises/ledger/Ledger.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/linked-list/LinkedList.csproj b/exercises/linked-list/LinkedList.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/linked-list/LinkedList.csproj +++ b/exercises/linked-list/LinkedList.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/list-ops/ListOps.csproj b/exercises/list-ops/ListOps.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/list-ops/ListOps.csproj +++ b/exercises/list-ops/ListOps.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/luhn/Luhn.csproj b/exercises/luhn/Luhn.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/luhn/Luhn.csproj +++ b/exercises/luhn/Luhn.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/markdown/Markdown.csproj b/exercises/markdown/Markdown.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/markdown/Markdown.csproj +++ b/exercises/markdown/Markdown.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/matrix/Matrix.csproj b/exercises/matrix/Matrix.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/matrix/Matrix.csproj +++ b/exercises/matrix/Matrix.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/meetup/Meetup.csproj b/exercises/meetup/Meetup.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/meetup/Meetup.csproj +++ b/exercises/meetup/Meetup.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/minesweeper/Minesweeper.csproj b/exercises/minesweeper/Minesweeper.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/minesweeper/Minesweeper.csproj +++ b/exercises/minesweeper/Minesweeper.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/nth-prime/NthPrime.csproj b/exercises/nth-prime/NthPrime.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/nth-prime/NthPrime.csproj +++ b/exercises/nth-prime/NthPrime.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/nucleotide-count/NucleotideCount.csproj b/exercises/nucleotide-count/NucleotideCount.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/nucleotide-count/NucleotideCount.csproj +++ b/exercises/nucleotide-count/NucleotideCount.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/ocr-numbers/OcrNumbers.csproj b/exercises/ocr-numbers/OcrNumbers.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/ocr-numbers/OcrNumbers.csproj +++ b/exercises/ocr-numbers/OcrNumbers.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/palindrome-products/PalindromeProducts.csproj b/exercises/palindrome-products/PalindromeProducts.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/palindrome-products/PalindromeProducts.csproj +++ b/exercises/palindrome-products/PalindromeProducts.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/pangram/Pangram.csproj b/exercises/pangram/Pangram.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/pangram/Pangram.csproj +++ b/exercises/pangram/Pangram.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj b/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj +++ b/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/pascals-triangle/PascalsTriangle.csproj b/exercises/pascals-triangle/PascalsTriangle.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/pascals-triangle/PascalsTriangle.csproj +++ b/exercises/pascals-triangle/PascalsTriangle.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/perfect-numbers/PerfectNumbers.csproj b/exercises/perfect-numbers/PerfectNumbers.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/perfect-numbers/PerfectNumbers.csproj +++ b/exercises/perfect-numbers/PerfectNumbers.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/phone-number/PhoneNumber.csproj b/exercises/phone-number/PhoneNumber.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/phone-number/PhoneNumber.csproj +++ b/exercises/phone-number/PhoneNumber.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/pig-latin/PigLatin.csproj b/exercises/pig-latin/PigLatin.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/pig-latin/PigLatin.csproj +++ b/exercises/pig-latin/PigLatin.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/poker/Poker.csproj b/exercises/poker/Poker.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/poker/Poker.csproj +++ b/exercises/poker/Poker.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/pov/Pov.csproj b/exercises/pov/Pov.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/pov/Pov.csproj +++ b/exercises/pov/Pov.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/prime-factors/PrimeFactors.csproj b/exercises/prime-factors/PrimeFactors.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/prime-factors/PrimeFactors.csproj +++ b/exercises/prime-factors/PrimeFactors.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/protein-translation/ProteinTranslation.csproj b/exercises/protein-translation/ProteinTranslation.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/protein-translation/ProteinTranslation.csproj +++ b/exercises/protein-translation/ProteinTranslation.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/proverb/Proverb.csproj b/exercises/proverb/Proverb.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/proverb/Proverb.csproj +++ b/exercises/proverb/Proverb.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/pythagorean-triplet/PythagoreanTriplet.csproj b/exercises/pythagorean-triplet/PythagoreanTriplet.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/pythagorean-triplet/PythagoreanTriplet.csproj +++ b/exercises/pythagorean-triplet/PythagoreanTriplet.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/queen-attack/QueenAttack.csproj b/exercises/queen-attack/QueenAttack.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/queen-attack/QueenAttack.csproj +++ b/exercises/queen-attack/QueenAttack.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/rail-fence-cipher/RailFenceCipher.csproj b/exercises/rail-fence-cipher/RailFenceCipher.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/rail-fence-cipher/RailFenceCipher.csproj +++ b/exercises/rail-fence-cipher/RailFenceCipher.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/raindrops/Raindrops.csproj b/exercises/raindrops/Raindrops.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/raindrops/Raindrops.csproj +++ b/exercises/raindrops/Raindrops.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/react/React.csproj b/exercises/react/React.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/react/React.csproj +++ b/exercises/react/React.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/rectangles/Rectangles.csproj b/exercises/rectangles/Rectangles.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/rectangles/Rectangles.csproj +++ b/exercises/rectangles/Rectangles.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/rna-transcription/RnaTranscription.csproj b/exercises/rna-transcription/RnaTranscription.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/rna-transcription/RnaTranscription.csproj +++ b/exercises/rna-transcription/RnaTranscription.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/robot-name/RobotName.csproj b/exercises/robot-name/RobotName.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/robot-name/RobotName.csproj +++ b/exercises/robot-name/RobotName.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/robot-simulator/RobotSimulator.csproj b/exercises/robot-simulator/RobotSimulator.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/robot-simulator/RobotSimulator.csproj +++ b/exercises/robot-simulator/RobotSimulator.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/roman-numerals/RomanNumerals.csproj b/exercises/roman-numerals/RomanNumerals.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/roman-numerals/RomanNumerals.csproj +++ b/exercises/roman-numerals/RomanNumerals.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/run-length-encoding/RunLengthEncoding.csproj b/exercises/run-length-encoding/RunLengthEncoding.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/run-length-encoding/RunLengthEncoding.csproj +++ b/exercises/run-length-encoding/RunLengthEncoding.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/saddle-points/SaddlePoints.csproj b/exercises/saddle-points/SaddlePoints.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/saddle-points/SaddlePoints.csproj +++ b/exercises/saddle-points/SaddlePoints.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/say/Say.csproj b/exercises/say/Say.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/say/Say.csproj +++ b/exercises/say/Say.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/scale-generator/ScaleGenerator.csproj b/exercises/scale-generator/ScaleGenerator.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/scale-generator/ScaleGenerator.csproj +++ b/exercises/scale-generator/ScaleGenerator.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/scrabble-score/ScrabbleScore.csproj b/exercises/scrabble-score/ScrabbleScore.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/scrabble-score/ScrabbleScore.csproj +++ b/exercises/scrabble-score/ScrabbleScore.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/secret-handshake/SecretHandshake.csproj b/exercises/secret-handshake/SecretHandshake.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/secret-handshake/SecretHandshake.csproj +++ b/exercises/secret-handshake/SecretHandshake.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/series/Series.csproj b/exercises/series/Series.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/series/Series.csproj +++ b/exercises/series/Series.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/sgf-parsing/SgfParsing.csproj b/exercises/sgf-parsing/SgfParsing.csproj index dc337241d8..16c4c829fc 100644 --- a/exercises/sgf-parsing/SgfParsing.csproj +++ b/exercises/sgf-parsing/SgfParsing.csproj @@ -4,6 +4,10 @@ Exe netcoreapp1.0 + + + + diff --git a/exercises/sieve/Sieve.csproj b/exercises/sieve/Sieve.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/sieve/Sieve.csproj +++ b/exercises/sieve/Sieve.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/simple-cipher/SimpleCipher.csproj b/exercises/simple-cipher/SimpleCipher.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/simple-cipher/SimpleCipher.csproj +++ b/exercises/simple-cipher/SimpleCipher.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/simple-linked-list/SimpleLinkedList.csproj b/exercises/simple-linked-list/SimpleLinkedList.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/simple-linked-list/SimpleLinkedList.csproj +++ b/exercises/simple-linked-list/SimpleLinkedList.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/space-age/SpaceAge.csproj b/exercises/space-age/SpaceAge.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/space-age/SpaceAge.csproj +++ b/exercises/space-age/SpaceAge.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/strain/Strain.csproj b/exercises/strain/Strain.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/strain/Strain.csproj +++ b/exercises/strain/Strain.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/sublist/Sublist.csproj b/exercises/sublist/Sublist.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/sublist/Sublist.csproj +++ b/exercises/sublist/Sublist.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/sum-of-multiples/SumOfMultiples.csproj b/exercises/sum-of-multiples/SumOfMultiples.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/sum-of-multiples/SumOfMultiples.csproj +++ b/exercises/sum-of-multiples/SumOfMultiples.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/tournament/Tournament.csproj b/exercises/tournament/Tournament.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/tournament/Tournament.csproj +++ b/exercises/tournament/Tournament.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/transpose/Transpose.csproj b/exercises/transpose/Transpose.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/transpose/Transpose.csproj +++ b/exercises/transpose/Transpose.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/tree-building/TreeBuilding.csproj b/exercises/tree-building/TreeBuilding.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/tree-building/TreeBuilding.csproj +++ b/exercises/tree-building/TreeBuilding.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/triangle/Triangle.csproj b/exercises/triangle/Triangle.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/triangle/Triangle.csproj +++ b/exercises/triangle/Triangle.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/twelve-days/TwelveDays.csproj b/exercises/twelve-days/TwelveDays.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/twelve-days/TwelveDays.csproj +++ b/exercises/twelve-days/TwelveDays.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/two-bucket/TwoBucket.csproj b/exercises/two-bucket/TwoBucket.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/two-bucket/TwoBucket.csproj +++ b/exercises/two-bucket/TwoBucket.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/variable-length-quantity/VariableLengthQuantity.csproj b/exercises/variable-length-quantity/VariableLengthQuantity.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/variable-length-quantity/VariableLengthQuantity.csproj +++ b/exercises/variable-length-quantity/VariableLengthQuantity.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/word-count/WordCount.csproj b/exercises/word-count/WordCount.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/word-count/WordCount.csproj +++ b/exercises/word-count/WordCount.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/word-search/WordSearch.csproj b/exercises/word-search/WordSearch.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/word-search/WordSearch.csproj +++ b/exercises/word-search/WordSearch.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/wordy/Wordy.csproj b/exercises/wordy/Wordy.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/wordy/Wordy.csproj +++ b/exercises/wordy/Wordy.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/zebra-puzzle/ZebraPuzzle.csproj b/exercises/zebra-puzzle/ZebraPuzzle.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/zebra-puzzle/ZebraPuzzle.csproj +++ b/exercises/zebra-puzzle/ZebraPuzzle.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + diff --git a/exercises/zipper/Zipper.csproj b/exercises/zipper/Zipper.csproj index abaf321fc2..1f6f878cc1 100644 --- a/exercises/zipper/Zipper.csproj +++ b/exercises/zipper/Zipper.csproj @@ -5,6 +5,10 @@ netcoreapp1.0 + + + + From 49b9b4f9aaebafdf85f041c81abe925ff8f766e0 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 22 Feb 2017 19:06:30 +0100 Subject: [PATCH 09/19] Update package references --- exercises/accumulate/Accumulate.csproj | 6 +++--- exercises/acronym/Acronym.csproj | 6 +++--- exercises/all-your-base/AllYourBase.csproj | 6 +++--- exercises/allergies/Allergies.csproj | 6 +++--- exercises/alphametics/Alphametics.csproj | 6 +++--- exercises/anagram/Anagram.csproj | 6 +++--- exercises/atbash-cipher/AtbashCipher.csproj | 6 +++--- exercises/bank-account/BankAccount.csproj | 6 +++--- exercises/beer-song/BeerSong.csproj | 6 +++--- exercises/binary-search-tree/BinarySearchTree.csproj | 6 +++--- exercises/binary-search/BinarySearch.csproj | 6 +++--- exercises/bob/Bob.csproj | 6 +++--- exercises/book-store/BookStore.csproj | 6 +++--- exercises/bowling/Bowling.csproj | 6 +++--- exercises/bracket-push/BracketPush.csproj | 6 +++--- exercises/change/Change.csproj | 6 +++--- exercises/circular-buffer/CircularBuffer.csproj | 6 +++--- exercises/clock/Clock.csproj | 6 +++--- exercises/connect/Connect.csproj | 6 +++--- exercises/crypto-square/CryptoSquare.csproj | 6 +++--- exercises/custom-set/CustomSet.csproj | 6 +++--- exercises/diamond/Diamond.csproj | 6 +++--- exercises/difference-of-squares/DifferenceOfSquares.csproj | 6 +++--- exercises/diffie-hellman/DiffieHellman.csproj | 6 +++--- exercises/dominoes/Dominoes.csproj | 6 +++--- exercises/dot-dsl/DotDsl.csproj | 6 +++--- exercises/error-handling/ErrorHandling.csproj | 6 +++--- exercises/etl/Etl.csproj | 6 +++--- exercises/flatten-array/FlattenArray.csproj | 6 +++--- exercises/food-chain/FoodChain.csproj | 6 +++--- exercises/forth/Forth.csproj | 6 +++--- exercises/gigasecond/Gigasecond.csproj | 6 +++--- exercises/go-counting/GoCounting.csproj | 6 +++--- exercises/grade-school/GradeSchool.csproj | 6 +++--- exercises/grains/Grains.csproj | 6 +++--- exercises/grep/Grep.csproj | 6 +++--- exercises/hamming/Hamming.csproj | 6 +++--- exercises/hangman/Hangman.csproj | 6 +++--- exercises/hello-world/HelloWorld.csproj | 6 +++--- exercises/house/House.csproj | 6 +++--- exercises/isogram/Isogram.csproj | 6 +++--- exercises/kindergarten-garden/KindergartenGarden.csproj | 6 +++--- .../largest-series-product/LargestSeriesProduct.csproj | 6 +++--- exercises/leap/Leap.csproj | 6 +++--- exercises/ledger/Ledger.csproj | 6 +++--- exercises/linked-list/LinkedList.csproj | 6 +++--- exercises/list-ops/ListOps.csproj | 6 +++--- exercises/luhn/Luhn.csproj | 6 +++--- exercises/markdown/Markdown.csproj | 6 +++--- exercises/matrix/Matrix.csproj | 6 +++--- exercises/meetup/Meetup.csproj | 6 +++--- exercises/minesweeper/Minesweeper.csproj | 6 +++--- exercises/nth-prime/NthPrime.csproj | 6 +++--- exercises/nucleotide-count/NucleotideCount.csproj | 6 +++--- exercises/ocr-numbers/OcrNumbers.csproj | 6 +++--- exercises/palindrome-products/PalindromeProducts.csproj | 6 +++--- exercises/pangram/Pangram.csproj | 6 +++--- .../ParallelLetterFrequency.csproj | 6 +++--- exercises/pascals-triangle/PascalsTriangle.csproj | 6 +++--- exercises/perfect-numbers/PerfectNumbers.csproj | 6 +++--- exercises/phone-number/PhoneNumber.csproj | 6 +++--- exercises/pig-latin/PigLatin.csproj | 6 +++--- exercises/poker/Poker.csproj | 6 +++--- exercises/pov/Pov.csproj | 6 +++--- exercises/prime-factors/PrimeFactors.csproj | 6 +++--- exercises/protein-translation/ProteinTranslation.csproj | 6 +++--- exercises/proverb/Proverb.csproj | 6 +++--- exercises/pythagorean-triplet/PythagoreanTriplet.csproj | 6 +++--- exercises/queen-attack/QueenAttack.csproj | 6 +++--- exercises/rail-fence-cipher/RailFenceCipher.csproj | 6 +++--- exercises/raindrops/Raindrops.csproj | 6 +++--- exercises/react/React.csproj | 6 +++--- exercises/rectangles/Rectangles.csproj | 6 +++--- exercises/rna-transcription/RnaTranscription.csproj | 6 +++--- exercises/robot-name/RobotName.csproj | 6 +++--- exercises/robot-simulator/RobotSimulator.csproj | 6 +++--- exercises/roman-numerals/RomanNumerals.csproj | 6 +++--- exercises/run-length-encoding/RunLengthEncoding.csproj | 6 +++--- exercises/saddle-points/SaddlePoints.csproj | 6 +++--- exercises/say/Say.csproj | 6 +++--- exercises/scale-generator/ScaleGenerator.csproj | 6 +++--- exercises/scrabble-score/ScrabbleScore.csproj | 6 +++--- exercises/secret-handshake/SecretHandshake.csproj | 6 +++--- exercises/series/Series.csproj | 6 +++--- exercises/sgf-parsing/SgfParsing.csproj | 6 +++--- exercises/sieve/Sieve.csproj | 6 +++--- exercises/simple-cipher/SimpleCipher.csproj | 6 +++--- exercises/simple-linked-list/SimpleLinkedList.csproj | 6 +++--- exercises/space-age/SpaceAge.csproj | 6 +++--- exercises/strain/Strain.csproj | 6 +++--- exercises/sublist/Sublist.csproj | 6 +++--- exercises/sum-of-multiples/SumOfMultiples.csproj | 6 +++--- exercises/tournament/Tournament.csproj | 6 +++--- exercises/transpose/Transpose.csproj | 6 +++--- exercises/tree-building/TreeBuilding.csproj | 6 +++--- exercises/triangle/Triangle.csproj | 6 +++--- exercises/twelve-days/TwelveDays.csproj | 6 +++--- exercises/two-bucket/TwoBucket.csproj | 6 +++--- .../variable-length-quantity/VariableLengthQuantity.csproj | 6 +++--- exercises/word-count/WordCount.csproj | 6 +++--- exercises/word-search/WordSearch.csproj | 6 +++--- exercises/wordy/Wordy.csproj | 6 +++--- exercises/zebra-puzzle/ZebraPuzzle.csproj | 6 +++--- exercises/zipper/Zipper.csproj | 6 +++--- 104 files changed, 312 insertions(+), 312 deletions(-) diff --git a/exercises/accumulate/Accumulate.csproj b/exercises/accumulate/Accumulate.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/accumulate/Accumulate.csproj +++ b/exercises/accumulate/Accumulate.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/acronym/Acronym.csproj b/exercises/acronym/Acronym.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/acronym/Acronym.csproj +++ b/exercises/acronym/Acronym.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/all-your-base/AllYourBase.csproj b/exercises/all-your-base/AllYourBase.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/all-your-base/AllYourBase.csproj +++ b/exercises/all-your-base/AllYourBase.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/allergies/Allergies.csproj b/exercises/allergies/Allergies.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/allergies/Allergies.csproj +++ b/exercises/allergies/Allergies.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/alphametics/Alphametics.csproj b/exercises/alphametics/Alphametics.csproj index e208192428..a33a0915fb 100644 --- a/exercises/alphametics/Alphametics.csproj +++ b/exercises/alphametics/Alphametics.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/anagram/Anagram.csproj b/exercises/anagram/Anagram.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/anagram/Anagram.csproj +++ b/exercises/anagram/Anagram.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/atbash-cipher/AtbashCipher.csproj b/exercises/atbash-cipher/AtbashCipher.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/atbash-cipher/AtbashCipher.csproj +++ b/exercises/atbash-cipher/AtbashCipher.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/bank-account/BankAccount.csproj b/exercises/bank-account/BankAccount.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/bank-account/BankAccount.csproj +++ b/exercises/bank-account/BankAccount.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/beer-song/BeerSong.csproj b/exercises/beer-song/BeerSong.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/beer-song/BeerSong.csproj +++ b/exercises/beer-song/BeerSong.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/binary-search-tree/BinarySearchTree.csproj b/exercises/binary-search-tree/BinarySearchTree.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/binary-search-tree/BinarySearchTree.csproj +++ b/exercises/binary-search-tree/BinarySearchTree.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/binary-search/BinarySearch.csproj b/exercises/binary-search/BinarySearch.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/binary-search/BinarySearch.csproj +++ b/exercises/binary-search/BinarySearch.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/bob/Bob.csproj b/exercises/bob/Bob.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/bob/Bob.csproj +++ b/exercises/bob/Bob.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/book-store/BookStore.csproj b/exercises/book-store/BookStore.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/book-store/BookStore.csproj +++ b/exercises/book-store/BookStore.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/bowling/Bowling.csproj b/exercises/bowling/Bowling.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/bowling/Bowling.csproj +++ b/exercises/bowling/Bowling.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/bracket-push/BracketPush.csproj b/exercises/bracket-push/BracketPush.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/bracket-push/BracketPush.csproj +++ b/exercises/bracket-push/BracketPush.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/change/Change.csproj b/exercises/change/Change.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/change/Change.csproj +++ b/exercises/change/Change.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/circular-buffer/CircularBuffer.csproj b/exercises/circular-buffer/CircularBuffer.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/circular-buffer/CircularBuffer.csproj +++ b/exercises/circular-buffer/CircularBuffer.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/clock/Clock.csproj b/exercises/clock/Clock.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/clock/Clock.csproj +++ b/exercises/clock/Clock.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/connect/Connect.csproj b/exercises/connect/Connect.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/connect/Connect.csproj +++ b/exercises/connect/Connect.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/crypto-square/CryptoSquare.csproj b/exercises/crypto-square/CryptoSquare.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/crypto-square/CryptoSquare.csproj +++ b/exercises/crypto-square/CryptoSquare.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/custom-set/CustomSet.csproj b/exercises/custom-set/CustomSet.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/custom-set/CustomSet.csproj +++ b/exercises/custom-set/CustomSet.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/diamond/Diamond.csproj b/exercises/diamond/Diamond.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/diamond/Diamond.csproj +++ b/exercises/diamond/Diamond.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/difference-of-squares/DifferenceOfSquares.csproj b/exercises/difference-of-squares/DifferenceOfSquares.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/difference-of-squares/DifferenceOfSquares.csproj +++ b/exercises/difference-of-squares/DifferenceOfSquares.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/diffie-hellman/DiffieHellman.csproj b/exercises/diffie-hellman/DiffieHellman.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/diffie-hellman/DiffieHellman.csproj +++ b/exercises/diffie-hellman/DiffieHellman.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/dominoes/Dominoes.csproj b/exercises/dominoes/Dominoes.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/dominoes/Dominoes.csproj +++ b/exercises/dominoes/Dominoes.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/dot-dsl/DotDsl.csproj b/exercises/dot-dsl/DotDsl.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/dot-dsl/DotDsl.csproj +++ b/exercises/dot-dsl/DotDsl.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/error-handling/ErrorHandling.csproj b/exercises/error-handling/ErrorHandling.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/error-handling/ErrorHandling.csproj +++ b/exercises/error-handling/ErrorHandling.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/etl/Etl.csproj b/exercises/etl/Etl.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/etl/Etl.csproj +++ b/exercises/etl/Etl.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/flatten-array/FlattenArray.csproj b/exercises/flatten-array/FlattenArray.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/flatten-array/FlattenArray.csproj +++ b/exercises/flatten-array/FlattenArray.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/food-chain/FoodChain.csproj b/exercises/food-chain/FoodChain.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/food-chain/FoodChain.csproj +++ b/exercises/food-chain/FoodChain.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/forth/Forth.csproj b/exercises/forth/Forth.csproj index e208192428..a33a0915fb 100644 --- a/exercises/forth/Forth.csproj +++ b/exercises/forth/Forth.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/gigasecond/Gigasecond.csproj b/exercises/gigasecond/Gigasecond.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/gigasecond/Gigasecond.csproj +++ b/exercises/gigasecond/Gigasecond.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/go-counting/GoCounting.csproj b/exercises/go-counting/GoCounting.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/go-counting/GoCounting.csproj +++ b/exercises/go-counting/GoCounting.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/grade-school/GradeSchool.csproj b/exercises/grade-school/GradeSchool.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/grade-school/GradeSchool.csproj +++ b/exercises/grade-school/GradeSchool.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/grains/Grains.csproj b/exercises/grains/Grains.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/grains/Grains.csproj +++ b/exercises/grains/Grains.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/grep/Grep.csproj b/exercises/grep/Grep.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/grep/Grep.csproj +++ b/exercises/grep/Grep.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/hamming/Hamming.csproj b/exercises/hamming/Hamming.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/hamming/Hamming.csproj +++ b/exercises/hamming/Hamming.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/hangman/Hangman.csproj b/exercises/hangman/Hangman.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/hangman/Hangman.csproj +++ b/exercises/hangman/Hangman.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/hello-world/HelloWorld.csproj b/exercises/hello-world/HelloWorld.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/hello-world/HelloWorld.csproj +++ b/exercises/hello-world/HelloWorld.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/house/House.csproj b/exercises/house/House.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/house/House.csproj +++ b/exercises/house/House.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/isogram/Isogram.csproj b/exercises/isogram/Isogram.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/isogram/Isogram.csproj +++ b/exercises/isogram/Isogram.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/kindergarten-garden/KindergartenGarden.csproj b/exercises/kindergarten-garden/KindergartenGarden.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/kindergarten-garden/KindergartenGarden.csproj +++ b/exercises/kindergarten-garden/KindergartenGarden.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/largest-series-product/LargestSeriesProduct.csproj b/exercises/largest-series-product/LargestSeriesProduct.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/largest-series-product/LargestSeriesProduct.csproj +++ b/exercises/largest-series-product/LargestSeriesProduct.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/leap/Leap.csproj b/exercises/leap/Leap.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/leap/Leap.csproj +++ b/exercises/leap/Leap.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/ledger/Ledger.csproj b/exercises/ledger/Ledger.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/ledger/Ledger.csproj +++ b/exercises/ledger/Ledger.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/linked-list/LinkedList.csproj b/exercises/linked-list/LinkedList.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/linked-list/LinkedList.csproj +++ b/exercises/linked-list/LinkedList.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/list-ops/ListOps.csproj b/exercises/list-ops/ListOps.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/list-ops/ListOps.csproj +++ b/exercises/list-ops/ListOps.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/luhn/Luhn.csproj b/exercises/luhn/Luhn.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/luhn/Luhn.csproj +++ b/exercises/luhn/Luhn.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/markdown/Markdown.csproj b/exercises/markdown/Markdown.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/markdown/Markdown.csproj +++ b/exercises/markdown/Markdown.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/matrix/Matrix.csproj b/exercises/matrix/Matrix.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/matrix/Matrix.csproj +++ b/exercises/matrix/Matrix.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/meetup/Meetup.csproj b/exercises/meetup/Meetup.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/meetup/Meetup.csproj +++ b/exercises/meetup/Meetup.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/minesweeper/Minesweeper.csproj b/exercises/minesweeper/Minesweeper.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/minesweeper/Minesweeper.csproj +++ b/exercises/minesweeper/Minesweeper.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/nth-prime/NthPrime.csproj b/exercises/nth-prime/NthPrime.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/nth-prime/NthPrime.csproj +++ b/exercises/nth-prime/NthPrime.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/nucleotide-count/NucleotideCount.csproj b/exercises/nucleotide-count/NucleotideCount.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/nucleotide-count/NucleotideCount.csproj +++ b/exercises/nucleotide-count/NucleotideCount.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/ocr-numbers/OcrNumbers.csproj b/exercises/ocr-numbers/OcrNumbers.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/ocr-numbers/OcrNumbers.csproj +++ b/exercises/ocr-numbers/OcrNumbers.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/palindrome-products/PalindromeProducts.csproj b/exercises/palindrome-products/PalindromeProducts.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/palindrome-products/PalindromeProducts.csproj +++ b/exercises/palindrome-products/PalindromeProducts.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/pangram/Pangram.csproj b/exercises/pangram/Pangram.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/pangram/Pangram.csproj +++ b/exercises/pangram/Pangram.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj b/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj +++ b/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/pascals-triangle/PascalsTriangle.csproj b/exercises/pascals-triangle/PascalsTriangle.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/pascals-triangle/PascalsTriangle.csproj +++ b/exercises/pascals-triangle/PascalsTriangle.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/perfect-numbers/PerfectNumbers.csproj b/exercises/perfect-numbers/PerfectNumbers.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/perfect-numbers/PerfectNumbers.csproj +++ b/exercises/perfect-numbers/PerfectNumbers.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/phone-number/PhoneNumber.csproj b/exercises/phone-number/PhoneNumber.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/phone-number/PhoneNumber.csproj +++ b/exercises/phone-number/PhoneNumber.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/pig-latin/PigLatin.csproj b/exercises/pig-latin/PigLatin.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/pig-latin/PigLatin.csproj +++ b/exercises/pig-latin/PigLatin.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/poker/Poker.csproj b/exercises/poker/Poker.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/poker/Poker.csproj +++ b/exercises/poker/Poker.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/pov/Pov.csproj b/exercises/pov/Pov.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/pov/Pov.csproj +++ b/exercises/pov/Pov.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/prime-factors/PrimeFactors.csproj b/exercises/prime-factors/PrimeFactors.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/prime-factors/PrimeFactors.csproj +++ b/exercises/prime-factors/PrimeFactors.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/protein-translation/ProteinTranslation.csproj b/exercises/protein-translation/ProteinTranslation.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/protein-translation/ProteinTranslation.csproj +++ b/exercises/protein-translation/ProteinTranslation.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/proverb/Proverb.csproj b/exercises/proverb/Proverb.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/proverb/Proverb.csproj +++ b/exercises/proverb/Proverb.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/pythagorean-triplet/PythagoreanTriplet.csproj b/exercises/pythagorean-triplet/PythagoreanTriplet.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/pythagorean-triplet/PythagoreanTriplet.csproj +++ b/exercises/pythagorean-triplet/PythagoreanTriplet.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/queen-attack/QueenAttack.csproj b/exercises/queen-attack/QueenAttack.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/queen-attack/QueenAttack.csproj +++ b/exercises/queen-attack/QueenAttack.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/rail-fence-cipher/RailFenceCipher.csproj b/exercises/rail-fence-cipher/RailFenceCipher.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/rail-fence-cipher/RailFenceCipher.csproj +++ b/exercises/rail-fence-cipher/RailFenceCipher.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/raindrops/Raindrops.csproj b/exercises/raindrops/Raindrops.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/raindrops/Raindrops.csproj +++ b/exercises/raindrops/Raindrops.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/react/React.csproj b/exercises/react/React.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/react/React.csproj +++ b/exercises/react/React.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/rectangles/Rectangles.csproj b/exercises/rectangles/Rectangles.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/rectangles/Rectangles.csproj +++ b/exercises/rectangles/Rectangles.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/rna-transcription/RnaTranscription.csproj b/exercises/rna-transcription/RnaTranscription.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/rna-transcription/RnaTranscription.csproj +++ b/exercises/rna-transcription/RnaTranscription.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/robot-name/RobotName.csproj b/exercises/robot-name/RobotName.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/robot-name/RobotName.csproj +++ b/exercises/robot-name/RobotName.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/robot-simulator/RobotSimulator.csproj b/exercises/robot-simulator/RobotSimulator.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/robot-simulator/RobotSimulator.csproj +++ b/exercises/robot-simulator/RobotSimulator.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/roman-numerals/RomanNumerals.csproj b/exercises/roman-numerals/RomanNumerals.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/roman-numerals/RomanNumerals.csproj +++ b/exercises/roman-numerals/RomanNumerals.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/run-length-encoding/RunLengthEncoding.csproj b/exercises/run-length-encoding/RunLengthEncoding.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/run-length-encoding/RunLengthEncoding.csproj +++ b/exercises/run-length-encoding/RunLengthEncoding.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/saddle-points/SaddlePoints.csproj b/exercises/saddle-points/SaddlePoints.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/saddle-points/SaddlePoints.csproj +++ b/exercises/saddle-points/SaddlePoints.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/say/Say.csproj b/exercises/say/Say.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/say/Say.csproj +++ b/exercises/say/Say.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/scale-generator/ScaleGenerator.csproj b/exercises/scale-generator/ScaleGenerator.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/scale-generator/ScaleGenerator.csproj +++ b/exercises/scale-generator/ScaleGenerator.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/scrabble-score/ScrabbleScore.csproj b/exercises/scrabble-score/ScrabbleScore.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/scrabble-score/ScrabbleScore.csproj +++ b/exercises/scrabble-score/ScrabbleScore.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/secret-handshake/SecretHandshake.csproj b/exercises/secret-handshake/SecretHandshake.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/secret-handshake/SecretHandshake.csproj +++ b/exercises/secret-handshake/SecretHandshake.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/series/Series.csproj b/exercises/series/Series.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/series/Series.csproj +++ b/exercises/series/Series.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/sgf-parsing/SgfParsing.csproj b/exercises/sgf-parsing/SgfParsing.csproj index 16c4c829fc..a0ea8c9ae7 100644 --- a/exercises/sgf-parsing/SgfParsing.csproj +++ b/exercises/sgf-parsing/SgfParsing.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/sieve/Sieve.csproj b/exercises/sieve/Sieve.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/sieve/Sieve.csproj +++ b/exercises/sieve/Sieve.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/simple-cipher/SimpleCipher.csproj b/exercises/simple-cipher/SimpleCipher.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/simple-cipher/SimpleCipher.csproj +++ b/exercises/simple-cipher/SimpleCipher.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/simple-linked-list/SimpleLinkedList.csproj b/exercises/simple-linked-list/SimpleLinkedList.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/simple-linked-list/SimpleLinkedList.csproj +++ b/exercises/simple-linked-list/SimpleLinkedList.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/space-age/SpaceAge.csproj b/exercises/space-age/SpaceAge.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/space-age/SpaceAge.csproj +++ b/exercises/space-age/SpaceAge.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/strain/Strain.csproj b/exercises/strain/Strain.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/strain/Strain.csproj +++ b/exercises/strain/Strain.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/sublist/Sublist.csproj b/exercises/sublist/Sublist.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/sublist/Sublist.csproj +++ b/exercises/sublist/Sublist.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/sum-of-multiples/SumOfMultiples.csproj b/exercises/sum-of-multiples/SumOfMultiples.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/sum-of-multiples/SumOfMultiples.csproj +++ b/exercises/sum-of-multiples/SumOfMultiples.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/tournament/Tournament.csproj b/exercises/tournament/Tournament.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/tournament/Tournament.csproj +++ b/exercises/tournament/Tournament.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/transpose/Transpose.csproj b/exercises/transpose/Transpose.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/transpose/Transpose.csproj +++ b/exercises/transpose/Transpose.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/tree-building/TreeBuilding.csproj b/exercises/tree-building/TreeBuilding.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/tree-building/TreeBuilding.csproj +++ b/exercises/tree-building/TreeBuilding.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/triangle/Triangle.csproj b/exercises/triangle/Triangle.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/triangle/Triangle.csproj +++ b/exercises/triangle/Triangle.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/twelve-days/TwelveDays.csproj b/exercises/twelve-days/TwelveDays.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/twelve-days/TwelveDays.csproj +++ b/exercises/twelve-days/TwelveDays.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/two-bucket/TwoBucket.csproj b/exercises/two-bucket/TwoBucket.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/two-bucket/TwoBucket.csproj +++ b/exercises/two-bucket/TwoBucket.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/variable-length-quantity/VariableLengthQuantity.csproj b/exercises/variable-length-quantity/VariableLengthQuantity.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/variable-length-quantity/VariableLengthQuantity.csproj +++ b/exercises/variable-length-quantity/VariableLengthQuantity.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/word-count/WordCount.csproj b/exercises/word-count/WordCount.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/word-count/WordCount.csproj +++ b/exercises/word-count/WordCount.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/word-search/WordSearch.csproj b/exercises/word-search/WordSearch.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/word-search/WordSearch.csproj +++ b/exercises/word-search/WordSearch.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/wordy/Wordy.csproj b/exercises/wordy/Wordy.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/wordy/Wordy.csproj +++ b/exercises/wordy/Wordy.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/zebra-puzzle/ZebraPuzzle.csproj b/exercises/zebra-puzzle/ZebraPuzzle.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/zebra-puzzle/ZebraPuzzle.csproj +++ b/exercises/zebra-puzzle/ZebraPuzzle.csproj @@ -10,9 +10,9 @@ - - - + + + diff --git a/exercises/zipper/Zipper.csproj b/exercises/zipper/Zipper.csproj index 1f6f878cc1..4264395a76 100644 --- a/exercises/zipper/Zipper.csproj +++ b/exercises/zipper/Zipper.csproj @@ -10,9 +10,9 @@ - - - + + + From 8a60e34276f1aef78247d7faaedb05d67f4e2fd4 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Mon, 27 Feb 2017 08:53:19 +0100 Subject: [PATCH 10/19] Use RTM version of Microsoft.NET.Test.Sdk package --- exercises/accumulate/Accumulate.csproj | 2 +- exercises/acronym/Acronym.csproj | 2 +- exercises/all-your-base/AllYourBase.csproj | 2 +- exercises/allergies/Allergies.csproj | 2 +- exercises/alphametics/Alphametics.csproj | 2 +- exercises/anagram/Anagram.csproj | 2 +- exercises/atbash-cipher/AtbashCipher.csproj | 2 +- exercises/bank-account/BankAccount.csproj | 2 +- exercises/beer-song/BeerSong.csproj | 2 +- exercises/binary-search-tree/BinarySearchTree.csproj | 2 +- exercises/binary-search/BinarySearch.csproj | 2 +- exercises/bob/Bob.csproj | 2 +- exercises/book-store/BookStore.csproj | 2 +- exercises/bowling/Bowling.csproj | 2 +- exercises/bracket-push/BracketPush.csproj | 2 +- exercises/change/Change.csproj | 2 +- exercises/circular-buffer/CircularBuffer.csproj | 2 +- exercises/clock/Clock.csproj | 2 +- exercises/connect/Connect.csproj | 2 +- exercises/crypto-square/CryptoSquare.csproj | 2 +- exercises/custom-set/CustomSet.csproj | 2 +- exercises/diamond/Diamond.csproj | 2 +- exercises/difference-of-squares/DifferenceOfSquares.csproj | 2 +- exercises/diffie-hellman/DiffieHellman.csproj | 2 +- exercises/dominoes/Dominoes.csproj | 2 +- exercises/dot-dsl/DotDsl.csproj | 2 +- exercises/error-handling/ErrorHandling.csproj | 2 +- exercises/etl/Etl.csproj | 2 +- exercises/flatten-array/FlattenArray.csproj | 2 +- exercises/food-chain/FoodChain.csproj | 2 +- exercises/forth/Forth.csproj | 2 +- exercises/gigasecond/Gigasecond.csproj | 2 +- exercises/go-counting/GoCounting.csproj | 2 +- exercises/grade-school/GradeSchool.csproj | 2 +- exercises/grains/Grains.csproj | 2 +- exercises/grep/Grep.csproj | 2 +- exercises/hamming/Hamming.csproj | 2 +- exercises/hangman/Hangman.csproj | 2 +- exercises/hello-world/HelloWorld.csproj | 2 +- exercises/house/House.csproj | 2 +- exercises/isogram/Isogram.csproj | 2 +- exercises/kindergarten-garden/KindergartenGarden.csproj | 2 +- exercises/largest-series-product/LargestSeriesProduct.csproj | 2 +- exercises/leap/Leap.csproj | 2 +- exercises/ledger/Ledger.csproj | 2 +- exercises/linked-list/LinkedList.csproj | 2 +- exercises/list-ops/ListOps.csproj | 2 +- exercises/luhn/Luhn.csproj | 2 +- exercises/markdown/Markdown.csproj | 2 +- exercises/matrix/Matrix.csproj | 2 +- exercises/meetup/Meetup.csproj | 2 +- exercises/minesweeper/Minesweeper.csproj | 2 +- exercises/nth-prime/NthPrime.csproj | 2 +- exercises/nucleotide-count/NucleotideCount.csproj | 2 +- exercises/ocr-numbers/OcrNumbers.csproj | 2 +- exercises/palindrome-products/PalindromeProducts.csproj | 2 +- exercises/pangram/Pangram.csproj | 2 +- .../parallel-letter-frequency/ParallelLetterFrequency.csproj | 2 +- exercises/pascals-triangle/PascalsTriangle.csproj | 2 +- exercises/perfect-numbers/PerfectNumbers.csproj | 2 +- exercises/phone-number/PhoneNumber.csproj | 2 +- exercises/pig-latin/PigLatin.csproj | 2 +- exercises/poker/Poker.csproj | 2 +- exercises/pov/Pov.csproj | 2 +- exercises/prime-factors/PrimeFactors.csproj | 2 +- exercises/protein-translation/ProteinTranslation.csproj | 2 +- exercises/proverb/Proverb.csproj | 2 +- exercises/pythagorean-triplet/PythagoreanTriplet.csproj | 2 +- exercises/queen-attack/QueenAttack.csproj | 2 +- exercises/rail-fence-cipher/RailFenceCipher.csproj | 2 +- exercises/raindrops/Raindrops.csproj | 2 +- exercises/react/React.csproj | 2 +- exercises/rectangles/Rectangles.csproj | 2 +- exercises/rna-transcription/RnaTranscription.csproj | 2 +- exercises/robot-name/RobotName.csproj | 2 +- exercises/robot-simulator/RobotSimulator.csproj | 2 +- exercises/roman-numerals/RomanNumerals.csproj | 2 +- exercises/run-length-encoding/RunLengthEncoding.csproj | 2 +- exercises/saddle-points/SaddlePoints.csproj | 2 +- exercises/say/Say.csproj | 2 +- exercises/scale-generator/ScaleGenerator.csproj | 2 +- exercises/scrabble-score/ScrabbleScore.csproj | 2 +- exercises/secret-handshake/SecretHandshake.csproj | 2 +- exercises/series/Series.csproj | 2 +- exercises/sgf-parsing/SgfParsing.csproj | 2 +- exercises/sieve/Sieve.csproj | 2 +- exercises/simple-cipher/SimpleCipher.csproj | 2 +- exercises/simple-linked-list/SimpleLinkedList.csproj | 2 +- exercises/space-age/SpaceAge.csproj | 2 +- exercises/strain/Strain.csproj | 2 +- exercises/sublist/Sublist.csproj | 2 +- exercises/sum-of-multiples/SumOfMultiples.csproj | 2 +- exercises/tournament/Tournament.csproj | 2 +- exercises/transpose/Transpose.csproj | 2 +- exercises/tree-building/TreeBuilding.csproj | 2 +- exercises/triangle/Triangle.csproj | 2 +- exercises/twelve-days/TwelveDays.csproj | 2 +- exercises/two-bucket/TwoBucket.csproj | 2 +- .../variable-length-quantity/VariableLengthQuantity.csproj | 2 +- exercises/word-count/WordCount.csproj | 2 +- exercises/word-search/WordSearch.csproj | 2 +- exercises/wordy/Wordy.csproj | 2 +- exercises/zebra-puzzle/ZebraPuzzle.csproj | 2 +- exercises/zipper/Zipper.csproj | 2 +- 104 files changed, 104 insertions(+), 104 deletions(-) diff --git a/exercises/accumulate/Accumulate.csproj b/exercises/accumulate/Accumulate.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/accumulate/Accumulate.csproj +++ b/exercises/accumulate/Accumulate.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/acronym/Acronym.csproj b/exercises/acronym/Acronym.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/acronym/Acronym.csproj +++ b/exercises/acronym/Acronym.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/all-your-base/AllYourBase.csproj b/exercises/all-your-base/AllYourBase.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/all-your-base/AllYourBase.csproj +++ b/exercises/all-your-base/AllYourBase.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/allergies/Allergies.csproj b/exercises/allergies/Allergies.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/allergies/Allergies.csproj +++ b/exercises/allergies/Allergies.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/alphametics/Alphametics.csproj b/exercises/alphametics/Alphametics.csproj index a33a0915fb..c826cd5794 100644 --- a/exercises/alphametics/Alphametics.csproj +++ b/exercises/alphametics/Alphametics.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/anagram/Anagram.csproj b/exercises/anagram/Anagram.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/anagram/Anagram.csproj +++ b/exercises/anagram/Anagram.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/atbash-cipher/AtbashCipher.csproj b/exercises/atbash-cipher/AtbashCipher.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/atbash-cipher/AtbashCipher.csproj +++ b/exercises/atbash-cipher/AtbashCipher.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/bank-account/BankAccount.csproj b/exercises/bank-account/BankAccount.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/bank-account/BankAccount.csproj +++ b/exercises/bank-account/BankAccount.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/beer-song/BeerSong.csproj b/exercises/beer-song/BeerSong.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/beer-song/BeerSong.csproj +++ b/exercises/beer-song/BeerSong.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/binary-search-tree/BinarySearchTree.csproj b/exercises/binary-search-tree/BinarySearchTree.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/binary-search-tree/BinarySearchTree.csproj +++ b/exercises/binary-search-tree/BinarySearchTree.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/binary-search/BinarySearch.csproj b/exercises/binary-search/BinarySearch.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/binary-search/BinarySearch.csproj +++ b/exercises/binary-search/BinarySearch.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/bob/Bob.csproj b/exercises/bob/Bob.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/bob/Bob.csproj +++ b/exercises/bob/Bob.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/book-store/BookStore.csproj b/exercises/book-store/BookStore.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/book-store/BookStore.csproj +++ b/exercises/book-store/BookStore.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/bowling/Bowling.csproj b/exercises/bowling/Bowling.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/bowling/Bowling.csproj +++ b/exercises/bowling/Bowling.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/bracket-push/BracketPush.csproj b/exercises/bracket-push/BracketPush.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/bracket-push/BracketPush.csproj +++ b/exercises/bracket-push/BracketPush.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/change/Change.csproj b/exercises/change/Change.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/change/Change.csproj +++ b/exercises/change/Change.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/circular-buffer/CircularBuffer.csproj b/exercises/circular-buffer/CircularBuffer.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/circular-buffer/CircularBuffer.csproj +++ b/exercises/circular-buffer/CircularBuffer.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/clock/Clock.csproj b/exercises/clock/Clock.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/clock/Clock.csproj +++ b/exercises/clock/Clock.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/connect/Connect.csproj b/exercises/connect/Connect.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/connect/Connect.csproj +++ b/exercises/connect/Connect.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/crypto-square/CryptoSquare.csproj b/exercises/crypto-square/CryptoSquare.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/crypto-square/CryptoSquare.csproj +++ b/exercises/crypto-square/CryptoSquare.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/custom-set/CustomSet.csproj b/exercises/custom-set/CustomSet.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/custom-set/CustomSet.csproj +++ b/exercises/custom-set/CustomSet.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/diamond/Diamond.csproj b/exercises/diamond/Diamond.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/diamond/Diamond.csproj +++ b/exercises/diamond/Diamond.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/difference-of-squares/DifferenceOfSquares.csproj b/exercises/difference-of-squares/DifferenceOfSquares.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/difference-of-squares/DifferenceOfSquares.csproj +++ b/exercises/difference-of-squares/DifferenceOfSquares.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/diffie-hellman/DiffieHellman.csproj b/exercises/diffie-hellman/DiffieHellman.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/diffie-hellman/DiffieHellman.csproj +++ b/exercises/diffie-hellman/DiffieHellman.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/dominoes/Dominoes.csproj b/exercises/dominoes/Dominoes.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/dominoes/Dominoes.csproj +++ b/exercises/dominoes/Dominoes.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/dot-dsl/DotDsl.csproj b/exercises/dot-dsl/DotDsl.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/dot-dsl/DotDsl.csproj +++ b/exercises/dot-dsl/DotDsl.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/error-handling/ErrorHandling.csproj b/exercises/error-handling/ErrorHandling.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/error-handling/ErrorHandling.csproj +++ b/exercises/error-handling/ErrorHandling.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/etl/Etl.csproj b/exercises/etl/Etl.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/etl/Etl.csproj +++ b/exercises/etl/Etl.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/flatten-array/FlattenArray.csproj b/exercises/flatten-array/FlattenArray.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/flatten-array/FlattenArray.csproj +++ b/exercises/flatten-array/FlattenArray.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/food-chain/FoodChain.csproj b/exercises/food-chain/FoodChain.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/food-chain/FoodChain.csproj +++ b/exercises/food-chain/FoodChain.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/forth/Forth.csproj b/exercises/forth/Forth.csproj index a33a0915fb..c826cd5794 100644 --- a/exercises/forth/Forth.csproj +++ b/exercises/forth/Forth.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/gigasecond/Gigasecond.csproj b/exercises/gigasecond/Gigasecond.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/gigasecond/Gigasecond.csproj +++ b/exercises/gigasecond/Gigasecond.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/go-counting/GoCounting.csproj b/exercises/go-counting/GoCounting.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/go-counting/GoCounting.csproj +++ b/exercises/go-counting/GoCounting.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/grade-school/GradeSchool.csproj b/exercises/grade-school/GradeSchool.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/grade-school/GradeSchool.csproj +++ b/exercises/grade-school/GradeSchool.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/grains/Grains.csproj b/exercises/grains/Grains.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/grains/Grains.csproj +++ b/exercises/grains/Grains.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/grep/Grep.csproj b/exercises/grep/Grep.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/grep/Grep.csproj +++ b/exercises/grep/Grep.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/hamming/Hamming.csproj b/exercises/hamming/Hamming.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/hamming/Hamming.csproj +++ b/exercises/hamming/Hamming.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/hangman/Hangman.csproj b/exercises/hangman/Hangman.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/hangman/Hangman.csproj +++ b/exercises/hangman/Hangman.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/hello-world/HelloWorld.csproj b/exercises/hello-world/HelloWorld.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/hello-world/HelloWorld.csproj +++ b/exercises/hello-world/HelloWorld.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/house/House.csproj b/exercises/house/House.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/house/House.csproj +++ b/exercises/house/House.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/isogram/Isogram.csproj b/exercises/isogram/Isogram.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/isogram/Isogram.csproj +++ b/exercises/isogram/Isogram.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/kindergarten-garden/KindergartenGarden.csproj b/exercises/kindergarten-garden/KindergartenGarden.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/kindergarten-garden/KindergartenGarden.csproj +++ b/exercises/kindergarten-garden/KindergartenGarden.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/largest-series-product/LargestSeriesProduct.csproj b/exercises/largest-series-product/LargestSeriesProduct.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/largest-series-product/LargestSeriesProduct.csproj +++ b/exercises/largest-series-product/LargestSeriesProduct.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/leap/Leap.csproj b/exercises/leap/Leap.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/leap/Leap.csproj +++ b/exercises/leap/Leap.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/ledger/Ledger.csproj b/exercises/ledger/Ledger.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/ledger/Ledger.csproj +++ b/exercises/ledger/Ledger.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/linked-list/LinkedList.csproj b/exercises/linked-list/LinkedList.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/linked-list/LinkedList.csproj +++ b/exercises/linked-list/LinkedList.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/list-ops/ListOps.csproj b/exercises/list-ops/ListOps.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/list-ops/ListOps.csproj +++ b/exercises/list-ops/ListOps.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/luhn/Luhn.csproj b/exercises/luhn/Luhn.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/luhn/Luhn.csproj +++ b/exercises/luhn/Luhn.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/markdown/Markdown.csproj b/exercises/markdown/Markdown.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/markdown/Markdown.csproj +++ b/exercises/markdown/Markdown.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/matrix/Matrix.csproj b/exercises/matrix/Matrix.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/matrix/Matrix.csproj +++ b/exercises/matrix/Matrix.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/meetup/Meetup.csproj b/exercises/meetup/Meetup.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/meetup/Meetup.csproj +++ b/exercises/meetup/Meetup.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/minesweeper/Minesweeper.csproj b/exercises/minesweeper/Minesweeper.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/minesweeper/Minesweeper.csproj +++ b/exercises/minesweeper/Minesweeper.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/nth-prime/NthPrime.csproj b/exercises/nth-prime/NthPrime.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/nth-prime/NthPrime.csproj +++ b/exercises/nth-prime/NthPrime.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/nucleotide-count/NucleotideCount.csproj b/exercises/nucleotide-count/NucleotideCount.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/nucleotide-count/NucleotideCount.csproj +++ b/exercises/nucleotide-count/NucleotideCount.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/ocr-numbers/OcrNumbers.csproj b/exercises/ocr-numbers/OcrNumbers.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/ocr-numbers/OcrNumbers.csproj +++ b/exercises/ocr-numbers/OcrNumbers.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/palindrome-products/PalindromeProducts.csproj b/exercises/palindrome-products/PalindromeProducts.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/palindrome-products/PalindromeProducts.csproj +++ b/exercises/palindrome-products/PalindromeProducts.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/pangram/Pangram.csproj b/exercises/pangram/Pangram.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/pangram/Pangram.csproj +++ b/exercises/pangram/Pangram.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj b/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj +++ b/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/pascals-triangle/PascalsTriangle.csproj b/exercises/pascals-triangle/PascalsTriangle.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/pascals-triangle/PascalsTriangle.csproj +++ b/exercises/pascals-triangle/PascalsTriangle.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/perfect-numbers/PerfectNumbers.csproj b/exercises/perfect-numbers/PerfectNumbers.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/perfect-numbers/PerfectNumbers.csproj +++ b/exercises/perfect-numbers/PerfectNumbers.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/phone-number/PhoneNumber.csproj b/exercises/phone-number/PhoneNumber.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/phone-number/PhoneNumber.csproj +++ b/exercises/phone-number/PhoneNumber.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/pig-latin/PigLatin.csproj b/exercises/pig-latin/PigLatin.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/pig-latin/PigLatin.csproj +++ b/exercises/pig-latin/PigLatin.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/poker/Poker.csproj b/exercises/poker/Poker.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/poker/Poker.csproj +++ b/exercises/poker/Poker.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/pov/Pov.csproj b/exercises/pov/Pov.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/pov/Pov.csproj +++ b/exercises/pov/Pov.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/prime-factors/PrimeFactors.csproj b/exercises/prime-factors/PrimeFactors.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/prime-factors/PrimeFactors.csproj +++ b/exercises/prime-factors/PrimeFactors.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/protein-translation/ProteinTranslation.csproj b/exercises/protein-translation/ProteinTranslation.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/protein-translation/ProteinTranslation.csproj +++ b/exercises/protein-translation/ProteinTranslation.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/proverb/Proverb.csproj b/exercises/proverb/Proverb.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/proverb/Proverb.csproj +++ b/exercises/proverb/Proverb.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/pythagorean-triplet/PythagoreanTriplet.csproj b/exercises/pythagorean-triplet/PythagoreanTriplet.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/pythagorean-triplet/PythagoreanTriplet.csproj +++ b/exercises/pythagorean-triplet/PythagoreanTriplet.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/queen-attack/QueenAttack.csproj b/exercises/queen-attack/QueenAttack.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/queen-attack/QueenAttack.csproj +++ b/exercises/queen-attack/QueenAttack.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/rail-fence-cipher/RailFenceCipher.csproj b/exercises/rail-fence-cipher/RailFenceCipher.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/rail-fence-cipher/RailFenceCipher.csproj +++ b/exercises/rail-fence-cipher/RailFenceCipher.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/raindrops/Raindrops.csproj b/exercises/raindrops/Raindrops.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/raindrops/Raindrops.csproj +++ b/exercises/raindrops/Raindrops.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/react/React.csproj b/exercises/react/React.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/react/React.csproj +++ b/exercises/react/React.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/rectangles/Rectangles.csproj b/exercises/rectangles/Rectangles.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/rectangles/Rectangles.csproj +++ b/exercises/rectangles/Rectangles.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/rna-transcription/RnaTranscription.csproj b/exercises/rna-transcription/RnaTranscription.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/rna-transcription/RnaTranscription.csproj +++ b/exercises/rna-transcription/RnaTranscription.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/robot-name/RobotName.csproj b/exercises/robot-name/RobotName.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/robot-name/RobotName.csproj +++ b/exercises/robot-name/RobotName.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/robot-simulator/RobotSimulator.csproj b/exercises/robot-simulator/RobotSimulator.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/robot-simulator/RobotSimulator.csproj +++ b/exercises/robot-simulator/RobotSimulator.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/roman-numerals/RomanNumerals.csproj b/exercises/roman-numerals/RomanNumerals.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/roman-numerals/RomanNumerals.csproj +++ b/exercises/roman-numerals/RomanNumerals.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/run-length-encoding/RunLengthEncoding.csproj b/exercises/run-length-encoding/RunLengthEncoding.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/run-length-encoding/RunLengthEncoding.csproj +++ b/exercises/run-length-encoding/RunLengthEncoding.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/saddle-points/SaddlePoints.csproj b/exercises/saddle-points/SaddlePoints.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/saddle-points/SaddlePoints.csproj +++ b/exercises/saddle-points/SaddlePoints.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/say/Say.csproj b/exercises/say/Say.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/say/Say.csproj +++ b/exercises/say/Say.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/scale-generator/ScaleGenerator.csproj b/exercises/scale-generator/ScaleGenerator.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/scale-generator/ScaleGenerator.csproj +++ b/exercises/scale-generator/ScaleGenerator.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/scrabble-score/ScrabbleScore.csproj b/exercises/scrabble-score/ScrabbleScore.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/scrabble-score/ScrabbleScore.csproj +++ b/exercises/scrabble-score/ScrabbleScore.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/secret-handshake/SecretHandshake.csproj b/exercises/secret-handshake/SecretHandshake.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/secret-handshake/SecretHandshake.csproj +++ b/exercises/secret-handshake/SecretHandshake.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/series/Series.csproj b/exercises/series/Series.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/series/Series.csproj +++ b/exercises/series/Series.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/sgf-parsing/SgfParsing.csproj b/exercises/sgf-parsing/SgfParsing.csproj index a0ea8c9ae7..e441cf3746 100644 --- a/exercises/sgf-parsing/SgfParsing.csproj +++ b/exercises/sgf-parsing/SgfParsing.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/sieve/Sieve.csproj b/exercises/sieve/Sieve.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/sieve/Sieve.csproj +++ b/exercises/sieve/Sieve.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/simple-cipher/SimpleCipher.csproj b/exercises/simple-cipher/SimpleCipher.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/simple-cipher/SimpleCipher.csproj +++ b/exercises/simple-cipher/SimpleCipher.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/simple-linked-list/SimpleLinkedList.csproj b/exercises/simple-linked-list/SimpleLinkedList.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/simple-linked-list/SimpleLinkedList.csproj +++ b/exercises/simple-linked-list/SimpleLinkedList.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/space-age/SpaceAge.csproj b/exercises/space-age/SpaceAge.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/space-age/SpaceAge.csproj +++ b/exercises/space-age/SpaceAge.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/strain/Strain.csproj b/exercises/strain/Strain.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/strain/Strain.csproj +++ b/exercises/strain/Strain.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/sublist/Sublist.csproj b/exercises/sublist/Sublist.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/sublist/Sublist.csproj +++ b/exercises/sublist/Sublist.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/sum-of-multiples/SumOfMultiples.csproj b/exercises/sum-of-multiples/SumOfMultiples.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/sum-of-multiples/SumOfMultiples.csproj +++ b/exercises/sum-of-multiples/SumOfMultiples.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/tournament/Tournament.csproj b/exercises/tournament/Tournament.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/tournament/Tournament.csproj +++ b/exercises/tournament/Tournament.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/transpose/Transpose.csproj b/exercises/transpose/Transpose.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/transpose/Transpose.csproj +++ b/exercises/transpose/Transpose.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/tree-building/TreeBuilding.csproj b/exercises/tree-building/TreeBuilding.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/tree-building/TreeBuilding.csproj +++ b/exercises/tree-building/TreeBuilding.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/triangle/Triangle.csproj b/exercises/triangle/Triangle.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/triangle/Triangle.csproj +++ b/exercises/triangle/Triangle.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/twelve-days/TwelveDays.csproj b/exercises/twelve-days/TwelveDays.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/twelve-days/TwelveDays.csproj +++ b/exercises/twelve-days/TwelveDays.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/two-bucket/TwoBucket.csproj b/exercises/two-bucket/TwoBucket.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/two-bucket/TwoBucket.csproj +++ b/exercises/two-bucket/TwoBucket.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/variable-length-quantity/VariableLengthQuantity.csproj b/exercises/variable-length-quantity/VariableLengthQuantity.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/variable-length-quantity/VariableLengthQuantity.csproj +++ b/exercises/variable-length-quantity/VariableLengthQuantity.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/word-count/WordCount.csproj b/exercises/word-count/WordCount.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/word-count/WordCount.csproj +++ b/exercises/word-count/WordCount.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/word-search/WordSearch.csproj b/exercises/word-search/WordSearch.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/word-search/WordSearch.csproj +++ b/exercises/word-search/WordSearch.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/wordy/Wordy.csproj b/exercises/wordy/Wordy.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/wordy/Wordy.csproj +++ b/exercises/wordy/Wordy.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/zebra-puzzle/ZebraPuzzle.csproj b/exercises/zebra-puzzle/ZebraPuzzle.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/zebra-puzzle/ZebraPuzzle.csproj +++ b/exercises/zebra-puzzle/ZebraPuzzle.csproj @@ -10,7 +10,7 @@ - + diff --git a/exercises/zipper/Zipper.csproj b/exercises/zipper/Zipper.csproj index 4264395a76..51531edfd8 100644 --- a/exercises/zipper/Zipper.csproj +++ b/exercises/zipper/Zipper.csproj @@ -10,7 +10,7 @@ - + From 5849e3bc0b14ee9c3b204ea67d44d718a268f384 Mon Sep 17 00:00:00 2001 From: Tushar Tyagi Date: Tue, 28 Feb 2017 11:09:29 +0530 Subject: [PATCH 11/19] Added static keyword to static classes --- exercises/atbash-cipher/AtbashCipher.cs | 2 +- exercises/grains/Grains.cs | 2 +- exercises/triangle/Triangle.cs | 2 +- exercises/word-count/WordCount.cs | 2 +- exercises/wordy/Wordy.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/exercises/atbash-cipher/AtbashCipher.cs b/exercises/atbash-cipher/AtbashCipher.cs index db96e2df12..827d56037a 100644 --- a/exercises/atbash-cipher/AtbashCipher.cs +++ b/exercises/atbash-cipher/AtbashCipher.cs @@ -1,6 +1,6 @@ using System; -public class Atbash +public static class Atbash { public static string Encode(string value) { diff --git a/exercises/grains/Grains.cs b/exercises/grains/Grains.cs index b75b9a5057..54162d0958 100644 --- a/exercises/grains/Grains.cs +++ b/exercises/grains/Grains.cs @@ -1,6 +1,6 @@ using System; -public class Grains +public static class Grains { public static ulong Square(int n) { diff --git a/exercises/triangle/Triangle.cs b/exercises/triangle/Triangle.cs index c97bc92775..69a7577a1a 100644 --- a/exercises/triangle/Triangle.cs +++ b/exercises/triangle/Triangle.cs @@ -7,7 +7,7 @@ public enum TriangleKind Scalene } -public class Triangle +public static class Triangle { public static TriangleKind Kind(decimal side1, decimal side2, decimal side3) { diff --git a/exercises/word-count/WordCount.cs b/exercises/word-count/WordCount.cs index 651e69f86e..42214c7db0 100644 --- a/exercises/word-count/WordCount.cs +++ b/exercises/word-count/WordCount.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -public class Phrase +public static class Phrase { public static IDictionary WordCount(string phrase) { diff --git a/exercises/wordy/Wordy.cs b/exercises/wordy/Wordy.cs index d33388e8d5..cdb4c52037 100644 --- a/exercises/wordy/Wordy.cs +++ b/exercises/wordy/Wordy.cs @@ -1,6 +1,6 @@ using System; -public class WordProblem +public static class WordProblem { public static int Solve(string problem) { From e839e27e76004a9c0af1cb644480d8a1d36d71ec Mon Sep 17 00:00:00 2001 From: Tushar Tyagi Date: Tue, 28 Feb 2017 11:09:29 +0530 Subject: [PATCH 12/19] Added static keyword to static classes and the examples --- exercises/atbash-cipher/Example.cs | 2 +- exercises/grains/Example.cs | 2 +- exercises/triangle/Example.cs | 2 +- exercises/word-count/Example.cs | 2 +- exercises/wordy/Example.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/exercises/atbash-cipher/Example.cs b/exercises/atbash-cipher/Example.cs index a918218e63..6885c8e753 100644 --- a/exercises/atbash-cipher/Example.cs +++ b/exercises/atbash-cipher/Example.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Linq; -public class Atbash +public static class Atbash { private const string PLAIN = "abcdefghijklmnopqrstuvwxyz"; private const string CIPHER = "zyxwvutsrqponmlkjihgfedcba"; diff --git a/exercises/grains/Example.cs b/exercises/grains/Example.cs index 65de26bfcd..4b152c4eed 100644 --- a/exercises/grains/Example.cs +++ b/exercises/grains/Example.cs @@ -1,4 +1,4 @@ -public class Grains +public static class Grains { public static ulong Square(int n) { diff --git a/exercises/triangle/Example.cs b/exercises/triangle/Example.cs index f8416c2cdb..78215581c4 100644 --- a/exercises/triangle/Example.cs +++ b/exercises/triangle/Example.cs @@ -8,7 +8,7 @@ public enum TriangleKind Scalene } -public class Triangle +public static class Triangle { public static TriangleKind Kind(decimal side1, decimal side2, decimal side3) { diff --git a/exercises/word-count/Example.cs b/exercises/word-count/Example.cs index 91f1295b01..30a37bf919 100644 --- a/exercises/word-count/Example.cs +++ b/exercises/word-count/Example.cs @@ -2,7 +2,7 @@ using System.Text.RegularExpressions; using System.Collections.Generic; -public class Phrase +public static class Phrase { public static IDictionary WordCount(string phrase) { diff --git a/exercises/wordy/Example.cs b/exercises/wordy/Example.cs index 36865936c4..c6b4a0d4d5 100644 --- a/exercises/wordy/Example.cs +++ b/exercises/wordy/Example.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text.RegularExpressions; -public class WordProblem +public static class WordProblem { private static readonly Regex VariableAndOperatorGroupsRegex = new Regex(string.Format(@"{0} {1} {0}\s*{1}*\s*{0}*", @"(-?\d+)", "(plus|minus|multiplied by|divided by)")); From 19c7c3bc04d7bacc44ac5766d9bb35c1e06c037f Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Mon, 27 Feb 2017 13:36:34 +0100 Subject: [PATCH 13/19] Ignore Project Rider folder and *.userpref files --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index cb95cd5456..ae045d20d0 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,6 @@ paket-files TestResult.xml junit-results.xml obj/ -bin/ \ No newline at end of file +bin/ +*.userprefs +.idea/ \ No newline at end of file From 33ffad6f8680e02d2cd50b66065bfe46e474459b Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Mon, 27 Feb 2017 13:38:52 +0100 Subject: [PATCH 14/19] Update installation and test instructions The instructions now show how to run under .NET Core --- docs/INSTALLATION.md | 189 +++---------------------------------------- docs/TESTS.md | 59 +++++--------- 2 files changed, 33 insertions(+), 215 deletions(-) diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index f4eba89f9a..5368fb4ecd 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -1,185 +1,20 @@ -## Installing C# +### Installing .NET Core -* [Windows](#windows) -* [Mac](#mac) -* [Linux](#linux) - -### [Windows](#windows) -There are a couple of different ways to get started using C#. The main way is to -install Visual Studio, the IDE for C# and related projects. - -If you don't want to use the IDE, files can be compiled via command line using the -compiler provided by the .NET framework. - -#### With Visual Studio - -Install [Visual Studio Express 2013 for Windows Desktop](http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop). This will include the IDE and compiler for C#. - -You can either start by creating your own project for working with the Exercism problems or you can download a Visual Studio solution that is already set up. - -#### Exercism.io Visual Studio Template - -This is a Visual Studio template that comes pre-configured to work on the problems in as many languages as Visual Studio supports. - -![Solution Explorer](http://x.exercism.io/v3/tracks/csharp/docs/img/SolutionExplorer.png) - -1. Download the [Exercism.io Visual Studio Template](https://github.com/rprouse/Exercism.VisualStudio) from GitHub by clicking the Download Zip button on the page. -2. Unzip the template into your exercises directory, for example `C:\src\exercises` -2. Install the [Exercism CLI](http://exercism.io/cli) -3. Open a command prompt to your exercise directory -4. Add your API key to exercism `exercism configure --key=YOUR_API_KEY` -5. Configure your source directory in exercism `exercism configure --dir=C:\src\exercises` -6. [Fetch your first exercise](http://exercism.io/how-it-works/newbie) `exercism fetch csharp` -7. Open the Exercism solution in Visual Studio -8. Expand the Exercism.csharp project -9. Click on **Show All Files** in Solution Explorer (See below) -10. The exercise you just fetched will appear greyed out. Right click on the folder and **Include In Project** -11. Get coding... - -![Add files](http://x.exercism.io/v3/tracks/csharp/docs/img/AddFiles.png) - -The NUnit NuGet package is included in the project, so you will not need to install it. - -If you have a paid version of Visual Studio install the [NUnit Visual Studio Test Adapter](https://visualstudiogallery.msdn.microsoft.com/6ab922d0-21c0-4f06-ab5f-4ecd1fe7175d). This will allow you to run the tests from within Visual Studio. If you have ReSharper installed, you can also [run the tests using ReSharper](https://www.jetbrains.com/resharper/features/unit_testing.html). - -![Test Explorer](http://x.exercism.io/v3/tracks/csharp/docs/img/TestExplorer.png) - -If you are using Visual Studio Express, install [NUnit 3.x](http://www.nunit.org/) and run the tests from the command line (see below). - -#### Create a New Visual Studio Project - -Once installed and started, click on "Create New Project" (alternatively, you can go to File->New->New Project). - -![New Project](http://x.exercism.io/v3/tracks/csharp/docs/img/newProject.png) - -Choose what language and project type (Visual C# and Class Library). Also name your project to whatever you'd like. - -![Create Project](http://x.exercism.io/v3/tracks/csharp/docs/img/createNewProject.png) - -Once created, feel free to drag and drop the C# Exercism folders into the project. - -![Drag and Drop Folders](http://x.exercism.io/v3/tracks/csharp/docs/img/dragDropFolders.png) - -In order to compile, get the [NUnit](http://nunit.org/) assembly referenced for the unit tests. This can be done via [NuGet](http://www.nuget.org/) - a package manager for Visual Studio. The best packages is to get the base [NUnit]() and the [NUnit.Console](https://www.nuget.org/packages/NUnit.Console/) -package since it includes the assemblies needed and a GUI test runner. - -![Nuget](http://x.exercism.io/v3/tracks/csharp/docs/img/nugetMenu.png) - -Two options to use Nuget - the NuGet manager or through the Package Manager Console. - -The manager is the easiest way to get started. - -![Nuget Manager](http://x.exercism.io/v3/tracks/csharp/docs/img/nugetManageNunitRunner.png) - -The project should now be able to compile. - -The next piece required is the NUnit Test Adapter for Visual Studio. The major version of the Test Adapter must match the major version of the NUnit Framework that you installed above, or the Visual Studio Test Explorer window will not detect your unit tests. -- [Adapter Version 3 for NUnit 3.x](https://visualstudiogallery.msdn.microsoft.com/0da0f6bd-9bb6-4ae3-87a8-537788622f2d) -- [Adapter Version 2 for NUnit 2.x](https://visualstudiogallery.msdn.microsoft.com/6ab922d0-21c0-4f06-ab5f-4ecd1fe7175d) - -To start implementing the exercise, in Visual Studio, right click on where you want the file to go to and go to `Add` -> `Class`. Name it what you'd like. - -![New Item](http://x.exercism.io/v3/tracks/csharp/docs/img/addNewClass.png) - -Now you can start coding! - -#### With the command line compiler -The .cs files can also be compiled without Visual Studio. Get the latest version of -[.NET installed](http://msdn.microsoft.com/en-us/library/5a4x27ek(v=vs.110).aspx) and there will be an executable called csc.exe. - -The compiler executable is usually located in the Microsoft.NET\Framework\Version folder under the Windows directory. - -Refer to this [MSDN article](http://msdn.microsoft.com/en-us/library/78f4aasd.aspx) for more information on the command line compiler. - -### [Mac](#mac) - -Install [Xamarin Studio](http://xamarin.com/download). - -While Xamarin is most known for creating iOS and Android applications, it's still a perfect IDE to create C# console -or library projects which is all that's needed for Exercism. - -Once installed and running, click on new solution and you'll find the C# library project to select. - -![Xamarin New Project](http://x.exercism.io/v3/tracks/csharp/docs/img/xamarin-csharp.jpg) - -### [Linux](#linux) - -.NET Core is available for Linux. Follow the [official installation guide](https://www.microsoft.com/net/core#linuxubuntu) to install the .NET Core development tools. - -After installing .NET Core, fetch the first exercise of the csharp-track: - -``` -exercism fetch csharp -``` - -Move into the exercise directory: - -``` -cd ~/exercism/csharp/hello-world -``` - -Initialize a new dotnet project - -``` -dotnet new -``` - -Several new files are created, among them project.json. We have to add nunit as a dependency in order to run the tests provided in the exercise. - -Add the following lines to the dependency block: +The C# track is built on top of the [.NET Core](https://www.microsoft.com/net/core/platform) platform, which runs on Windows, Linux and macOS. To build .NET Core projects, you can use the [.NET Core Command Line Interface](https://docs.microsoft.com/en-us/dotnet/articles/core/preview3/tools/index) (CLI). This CLI is part of the .NET Core SDK, which you can install by following the [installation instructions](https://www.microsoft.com/net/core). After completing the installation, you can verify if the CLI was installed succesfully by running this command in a terminal: -``` -"dependencies": { - "nunit": "3.6.0", - "dotnet-test-nunit": "3.4.0-*" -} +```bash +dotnet --version ``` -We also have to specify the testrunner, add this line below the dependency block: +It the output is a version greater than or equal to `1.0.0`, the .NET Core SDK has been installed succesfully. -``` -"testRunner":"nunit" -``` - -The complete **project.json** file should look something like this: +### Using an IDE -``` -{ - "version": "1.0.0-*", - "buildOptions": { - "debugType": "portable", - "emitEntryPoint": true - }, - "dependencies": { - "nunit": "3.6.0", - "dotnet-test-nunit": "3.4.0-*" - }, - "testRunner":"nunit", - "frameworks": { - "netcoreapp1.1": { - "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.1.0" - } - }, - "imports": "dnxcore50" - } - } -} -``` - -Then we can restore the packages using: - -``` -dotnet restore -``` - -Compile the project and run the tests with this: - -``` -dotnet test -``` +If you want a more full-featured editing experience, you probably want to to use an IDE. These are the most popular IDE's that support building .NET Core projects: +* [Visual Studio 2017](https://www.visualstudio.com/vs/visual-studio-2017-rc/) +* [Visual Studio Code](https://code.visualstudio.com/download) with the [C# extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp) +* [Visual Studio for Mac](https://www.visualstudio.com/vs/visual-studio-mac/) (still in beta) +* [Project Rider](https://www.jetbrains.com/rider/download/) (still in EAP) -[Mono Develop](http://www.mono-project.com/Mono_For_Linux_Developers) is available for Linux. +Note: as the .NET Core project format differs significantly from earlier versions, older IDE's (like Visual Studio 2015 and Xamarin Studio) are not supported. \ No newline at end of file diff --git a/docs/TESTS.md b/docs/TESTS.md index a3f69ffa2c..231ce97133 100644 --- a/docs/TESTS.md +++ b/docs/TESTS.md @@ -1,50 +1,33 @@ -### Windows -All tests have been ignored except the first one for you to work on. To continue, just remove the ```[Ignore]``` attribute on the test to start working on it. +## Running Tests -Make sure [NUnit](http://nunit.org/?p=download) version 3.x is installed, if not already installed from the setup above. +To run the tests, you first need to restore the project's dependencies using the following command: -This installation should include the NUnit-Gui executable. Run this, and after compiling, open the assembly from the Gui and you are able to run the tests. +```bash +dotnet restore +``` -**Note:** You may need to include the nunit-framework.dll in the same directory as the source code you're compiling if you get an error saying it can't find the ```nunit.framework.dll```. +You can then run the tests by executing the following command: -If you installed the NUnit runner through NuGet, the runner will be located in the ```\packages\NUnit.Console(version number)\tools``` folder where your project is. +```bash +dotnet test +``` -If you installed NUnit manually the runner will be in the ```Program Files (x86)\NUnit(version number)\bin``` folder. +## Solving the exercise -![NUnit Runner](http://x.exercism.io/v3/tracks/csharp/docs/img/nUnitRunner.png) +Solving an exercise means making all its tests pass. By default, only one test (the first one) is executed when you run the tests. This is intentional, as it allows you to focus on just making that one test pass. Once it passes, you can enable the next test by removing `Skip = "Remove to run test"` from the test's `[Fact]` or `[Theory]` attribute. When all tests have been enabled and your implementation makes them all pass, you'll have solved the exercise! -Once you have been able to compile the code it will create a DLL in the ```\bin\Debug``` folder of your project. In the NUnit runner, select "Open Project" and select the DLL that was created from compiling. This will load all the tests and allow you to run them. +To help you get started, each exercise comes with a stub implementation file. You can use this file as a starting point for building your solution. Feel free to remove or change this file if you think it is the right thing to do. -![NUnit Runner Execute Tests](http://x.exercism.io/v3/tracks/csharp/docs/img/nUnitExecuteTests.png) +## Using packages -The NUnit runner will automatically reload the DLL if it has been updated. +You should be able to solve most exercises without using any external packages. However, for the exercises where you do want to use an external package, you can add it to your project by running the following command: -##### Visual Studio Integration +```bash +dotnet add package +``` -Another alternative to running the tests with NUnit-Gui is to run them directly in Visual Studio, which is very convenient if that's your IDE of choice. While the support is natively built in to Visual Studio 2015, for older versions you'll need to install the [NUnit Test Adapter](http://www.nunit.org/index.php?p=vsTestAdapter&r=2.6.2). +Once the package has been added, you need to update the project's dependencies again to use it in your project: -### Mac -Xamarin Studio also ships with NUnit. To set the tests up you will have to add an NUnit library project to your solution, name it correctly and set a reference to your solution. - -This is the example setup for the "leap" exercise. We assume you created a solution called `LeapCalculator`. - -Right-click the solution and choose *Add* -> *Add New Project*. -![Add Xamarin NUnit Test](http://x.exercism.io/v3/tracks/csharp/docs/img/xamarin-add-new-project.png) - -Then from the new project dialog, select an NUnit Library Project. -![Xamarin NUnit](http://x.exercism.io/v3/tracks/csharp/docs/img/xamarin-nunit.jpg) - -For the project name append `.Tests` to the name of your solution. So in our case `LeapCalculator.Tests` -![Xamarin NUnit](http://x.exercism.io/v3/tracks/csharp/docs/img/xamarin-naming.png) - -Set a reference to your solution with right-click on references in your test project. Then choose the Projects tab and tick the box to your solution and click `ok`. - -![Xamarin NUnit](http://x.exercism.io/v3/tracks/csharp/docs/img/xamarin-edit-reference.png) - -![Xamarin NUnit](http://x.exercism.io/v3/tracks/csharp/docs/img/xamarin-add-reference.png) - -Add some of the tests from the exercise or write your own. - -To run the tests open the `Unit Tests` pad within Xamarin (View -> Pads -> Unit Tests) and click `Run All`. - -![Xamarin NUnit](http://x.exercism.io/v3/tracks/csharp/docs/img/xamarin-tests.png) +```bash +dotnet restore +``` \ No newline at end of file From 1bf058a32c04f0cc35253b406e69271c4b291c28 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Tue, 28 Feb 2017 21:17:21 +0100 Subject: [PATCH 15/19] Remove unused documentation images --- docs/img/AddFiles.png | Bin 22264 -> 0 bytes docs/img/SolutionExplorer.png | Bin 8643 -> 0 bytes docs/img/TestExplorer.png | Bin 25961 -> 0 bytes docs/img/addNewClass.png | Bin 127248 -> 0 bytes docs/img/createNewProject.png | Bin 49648 -> 0 bytes docs/img/dragDropFolders.png | Bin 8332 -> 0 bytes docs/img/nUnitExecuteTests.png | Bin 42590 -> 0 bytes docs/img/nUnitRunner.png | Bin 26298 -> 0 bytes docs/img/newProject.png | Bin 8736 -> 0 bytes docs/img/nugetManageNunitRunner.png | Bin 19090 -> 0 bytes docs/img/nugetMenu.png | Bin 19736 -> 0 bytes docs/img/xamarin-add-new-project.png | Bin 68622 -> 0 bytes docs/img/xamarin-add-reference.png | Bin 55124 -> 0 bytes docs/img/xamarin-csharp.jpg | Bin 86820 -> 0 bytes docs/img/xamarin-edit-reference.png | Bin 35394 -> 0 bytes docs/img/xamarin-naming.png | Bin 25743 -> 0 bytes docs/img/xamarin-nunit.jpg | Bin 39173 -> 0 bytes docs/img/xamarin-tests.png | Bin 14686 -> 0 bytes 18 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/img/AddFiles.png delete mode 100644 docs/img/SolutionExplorer.png delete mode 100644 docs/img/TestExplorer.png delete mode 100644 docs/img/addNewClass.png delete mode 100644 docs/img/createNewProject.png delete mode 100644 docs/img/dragDropFolders.png delete mode 100644 docs/img/nUnitExecuteTests.png delete mode 100644 docs/img/nUnitRunner.png delete mode 100644 docs/img/newProject.png delete mode 100644 docs/img/nugetManageNunitRunner.png delete mode 100644 docs/img/nugetMenu.png delete mode 100644 docs/img/xamarin-add-new-project.png delete mode 100644 docs/img/xamarin-add-reference.png delete mode 100644 docs/img/xamarin-csharp.jpg delete mode 100644 docs/img/xamarin-edit-reference.png delete mode 100644 docs/img/xamarin-naming.png delete mode 100644 docs/img/xamarin-nunit.jpg delete mode 100644 docs/img/xamarin-tests.png diff --git a/docs/img/AddFiles.png b/docs/img/AddFiles.png deleted file mode 100644 index 03e7a9163c7b65de67ca7d40e774dfecca42c458..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22264 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 diff --git a/docs/img/TestExplorer.png b/docs/img/TestExplorer.png deleted file mode 100644 index 1cdc5e84aed29449496d0de02e56145cfdbb6983..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25961 zcmb@tbwFF~w(g4r2vP{{5TsZs+TzmSv}mCPiaW*KH8>QfKym3;pisQQ9U82-yF-EC zt|#rc)|PwM*>~@I&L2o7Gjo#U9b-J>H=Z|AO-23@4iydx3d$oz1)0|!NS$U*x4LK-r3yT-o?tn)!+>f`4qEdMHz^urvakb$CVV`eDKL_Y9O<5 zKl4+y#eTER=0JLe%f49|V%g=0i9)oAHY3#zPZ8+fr2BsBW!o)iLD%X(sYL+ zZr3Fpm;mZP!&X$_1EQOp@GP9`}g8TW5I-e|qiy4Zh;SoFTTzvM(L zyt&)md3)D#RiCkGp)8B9edMC))bA848rFLBPD~L9&{FDwrE96e6{mbt7Syx$VM&sPJ#Q(1*cn<#NKSa6fl#72(a6RAnK&M;lN_ZEN*!&z7+w`mDCy@xY^VSlzZx(T z@s)}4oIoRN)nsN=-lLvt@v^4>FTP1kH%-CGPQKO?pe;WH5G*yU&U@IYxfCL%yu8Z1 zq;bfE4PB;x8RtVQZAZ_l31o|Y0z4njKY<#F#N`V3D4r|GEHz$SXvRkX9X-v!@)%$2 zSQ2^6f%wJhB=d)JL-n_Pj-nzQ5B;@@aLr5|nCTR;)T-{#w_S09W;)2{6d4SLo}=GG{aqagH@wpKg_ z0SSymq#=WefnZni9>vHObZjX-1rU&t1NjXKI(-2F|MT~FFbKc^Mn0B$@q0bx%HyI5 zWP>Bt8E>@Xh(qY_wpE~D-{CBAysEeaFi3`5%Hy1;M?wyHZZmLUrW1Tafn0p2CCbW7PDU2@HIm5@X`itQQxG`cRnB<30wSot>d+cztdAu}dBZ_7uE==7kN3~1ZrdkhWV?3n#-L%Z1_{Y6A^jWDg+olxv~pQaqB7lR4i z^?pd=2G3$B8~tMG0W5Ygk0%sxFE-cWd-d|Kmi;~Bc)wB&sL@v@rc_q+-&gyfK4z51 zi8gsrNSD}`gpZAuAmW%F7#n8-c6c}|FRVboMC{+z0MSl{@h@?QXFc(Ak2B}2v}j5f*nl*5&#?==X`}Z0tg-Ro1uVv(47DEDg8&p zeD9JM>nk88R_&2963QSQ_T*-J zFjfl0j2W?Ks?P%K;U5xvLPIQ>vD0I;wvi;ryTkruT^@enVr4EWhsq3;xsWDD&lI5% z_fGcv@g7YMvw;HKP#q3AujI<%%LRoHq64VQ4Fl+7hnb!lcCVsHvM7*0gMa&xq25c{?n0NCu9J~I4Ag(%Ky&2y`lf_Gz9GkR0NW_hVmpmCXHu zTKw;2c$k5Hctilk2z=a*hZ`gG+l9HMjtikDv7G_D4G1e zqxH}4J{fi_Ngin&NH}>B-8J3ctOme%nTXXWqW-G^pz* z?_lW*0ap*3OA84U>VNqXF$F&08askoZ;)A4nVQ zevqjANPZ>2Rc3&T2?At{Bt-KVre4NMnjqA_w+~pf60RhU!ccmCNbwMaC=~T0mjmJs zbv!%=_Gd#M*4%{O#kY#)1n6Kqv||g3@=sizl?ObsnJRk@HUHvw8zBYKUSH1Kx>$tK zD#fyNwUksUxf9);7}8L?d)ik$nYAEfepz?$(AVc$c+dpy(TI9bj3Av|wQIJR$tlPj zx|sexyqgxv`03$5MsZX;#36(Nd<0nWad5$svwVBurcSH>{nJZ`i(sO+eqJXGbw>Iw^K&qhIK9Rxk zV%5mOpd4kl)r1Ogk09ye@He#5bXW7<_O$eb@sgr&XL-F0nM{S;=;&j83IBX(;LXc| z7Iaa0G0X=}+a7pT3-#`0(uW6+eCGFkpl9hGN+8EZ|CNQF{OB)uLZc_@t+)Wx_Slh6 zgUIVsNLh5bxw~?(-+s&@xPW_!J@lWS5dz>`I4CN_bz`nFpbERimQLE%YG^J@3oaqh zO1F7!P3snrHF)1j{J2<<^kI;)ePamL>7S7cPRpX%olQ_6$An6m@pyF@OacK8CdV{KysK%~p-Qg!I~N^EJ98;GZ<2?aoEAT##v&ZRc;^vAr! zq=38IfjYZ$VadN@8=6ZL)4@ft4gs454Y$?CY>>m-uV6dNA!gT)VC|mRAqml~`Z~gU z2BnbUIY9f>fc$D}&RkK*u5FiAHpU?#fHm{2ybCUi(5wJf0l0@SswL}tfeX~ARwr9v z`lkA1eeUxK>D)H~zokMIkNi&Pu!f=%$eX@c;$dHeh{)nP6AUVrX>5Jr>VvFQ3d?y_ z9Q3971gG3rhH>j&RQy@>C%(v3TL!s>+vDX3gH;2 z-6&a486XOwz#bv!u%5)2-XfDWdU)CP;5}Y)cB4gBMkB3kLH)IPo$NS6MAxr)a4v=K z{ngfjA;=s3EwiJ6hb!zG8kJdI8(UsImBD^kq-bQebO%&TTN_BuZBQe9G>C&n@axK5 zylZQT)Yj#cE2XaromYxe z@%Lve_@N<+x5no87F270>bPvlt=m1u;tCySD?s*c<{DKpz9?a zbd7nw*hDzCz-Bc!3PptAVW6M0j^YxCkAo%|E8(}yXgs%yaFq$fOG@Jp?QzWA^`g2GNgbr3FPOM;46jQ(GeQ0EsqpKd^Io_PRr$L zG&3%AcbpD>Jg%w+nikkUEJI{70ohQjbPHvHnAm6|I>;wg7~>G( zxqr1~G@RS+xE3SWE*V!hXB7^P*j9){uC^wz19P@g_7K_c(MF>wiaczVpj#_M+;UlI zqtWe;Bc5_+I+AhHwhnV#eud!W}%!x{yQ&rl0k_I+phH?$%9_v|&5||HV^e4%#Lo0l{oqI$w%|GDn z4>TlULw2>kshz?Z>jFCON*AGixJGV+R0Yiyu5uvT!d5^`<=8N%sJKX;BNs{FE63I5 z@X{fer(=fg188uTeHFW7`?=$G{^NHsyg~~~&|%YGsi;2OHPX5oc(Knf&>%vd+hDP# zGvhc4u;jw6#`ImU{i`dkw)tikW24CzFu&U`M{0Unwl(A_gYrO_X+JdgfVFSrilk7w zGD7GjkdlGN7!287%pDVa-u6y|5^MJq6Jpgok0UvFUn!5rBXX%faj-l(m1+e4MC-T| zc9UE+`{P}(xDPX|(;0V$A(Jq{u2$~oSftl0xDQPY12t}8PX?euyPr(A^=$lO!kj6? z?CNxHWeA)rNmf?E;|U*oITK|2XdaK!hx>(3TJZ}S$aYQuP1*Bxse7kJRec+68&!Vo zfcL>C=0kICSrMK4@>99S->g}kAyyAx^@Xkq=IBB{MB$~?xFts5r_ZIY{MDDb9P8!* zguK8PpnW#$l8`l+-MWir6hOd{gz$<~0-2eG%Zg4)M%6xIBJ$5clWauWjzG3-aTv7P zPUD^-Ai&CU>{xBq(xV|=b0vzh8N!ICG&V5;@!L!xufFjxIsh{8#q_VAJ^TK=eNYk+ zg7F-8dFQM|ZB`q{6z2z<3C}YRw(;lwRyFXfA8&==UKL}4Uk4dFZgTnFXGF4L1PRv( z5wH>sBO(s0%GI-=p0U4>H@^su8;wn(+T9L`0@W2PnaJXdZZAFP3+>bN$5P#fvN=Ph zHPrFPJd`bC@0WjI<=sn(`<_jeFOP9cnvbBWP@ist?R=pV!>ecoSFc zOp(;ZyD2qrEEw6a>0a(HwFEC%dUW<&$Z?nio*l=ox0ie>_qNSLZ}2$SC`R$$^tk=T z=Za?Dx2&}}E0Bka<|4(QP^B*#vL!I#zEkA(>1Q1wl#3DeD4p*Ve?5Ltb5P+ccslJ1 zK?1JS!+q@w9dk;vNi)81`ey%UoC~caixRg2pHn|~27cceN~rF$fT+6>iXFBI1&iwf zJkw~S6`2HFI12}y-);ObR?|VDgH*hLujjRxbP`hee|UkFJU2!ZtUV7zZSCJu5hT5# zQ6vJC!f(po_Yu{D=N&s^_8yIdtI`?g2VM~I;JjG3BtEwgQBhGDwL_S=W1?Mw8hB}`7d_Zee zc@;dG{(9QemPv^{y@QNr1zjiCxlRh(Y3XF>Sck)mf|7BwY4HFfN4Ax zD+_C6BX{iLV`kLTobPS%^9*#nZExbL`z@=P*?oo($XMj=Os&(*DHE9P#9w?POzOrX zb*Ku3<{n1Cq8t~Uj`N@9EB9?b<&Ll}4nGC}AP(FQ68wi^5oHAgTbf$?~MuAT$Mp4-*Z@h;D>{B@6Xt=>BXeLZ<|SlyAs zZW2h?abJBCbAI}`d!V=CL_S+1p#WP6G@!Tun?+;9rJPJ^(cN-?C!B3Cg$L8{ql~6% zjt9H)U$W71ze-dp0y6kRlevb9FOBc~k8o-uby+%!hg2cEQ{O<16v5Gk`XQn8T&FTv zo&!|+j++V!u&fE zw%=WwsK{PvVfs?MKf3ScEM$B=rio50psdyv_|RA3Ibjm_baF(tFh$<_mNRs6u!p8~ z;JclahrsP3g^6Ssqrvv{ZJ}fUWLP$22AIjGjeH%kcmruN!P^q2#hFpZF2L=*ONp>Y ztO9N4lJ=GdR?7}HtA|@4I`8RI8t7BB^N7^z%qR+-h>^+m2MOc>ckwIM0Tf6@3;)R4 zx$f$`=J*$8fkj{#Adftr8PevRUrr&z=nNUo(d-)NFIc4R_IF;7<38yL%+_R%D0}P- zdC{=-4$}*;71C5t9?vNX`MgSjgolt9tKZ!9ntXZ1g#4Q(fIi;~dNCoOkwiWuvdF)Y z{#WD~nIe2)Z3jPq~Pi$bt>P$0^W|rQa`Y$efKk~RRDX_&FcXh~UX{>}%;_L#Hl234y!L|~{PBsbE$?tHY-N~<=FI(z@un32{Rm$r6o{DP>}Z9XABj3xxW=uvsp1dA=Vrlad7<@w2#j zB~ENSNs*ph;XIG-h`1%J*zXZZQ9W{4x_cyXeagf_R7GLbjB!KO_H}QB5UA)e=AUQ#2Gc&x-nv$G%64$u$6lxp*81EZB|qEtLTMHU4qzWXN=QRY&tPi;wW zjw;oi3^wAO+Y&D4c`+-#rEPaCL{Vtl=A5&SgmBu21TJlyLLqyprR$oz-JGp^#wALIu1`HGL{K zbmG*$1Qb@s#U<3&PIyot*!(x$ya@kyYWdIE5(M~~1DLFlfYbu)gaD-i0pCl#9=P7FEGesHsZgQ zqI@_RRBNQY&vR5%70Dnhy*$yUWh~t*S9h_PAm{UsHcXXuGN;7ShC+$)uq&2zxh)i3 zZB7$6&LJREe6&dzMrn|FkvL+Y4SoA8Ob0RD?934+tJ_2RxGz19gtnSs%*L6+o_iMG zrGJYGi7Fm`N;`B2F8QM$(0GN*0_*%{2j5q;d~QRQd0O%i-UaSL6G5}nbR4!-+?F(< z;p068$Gw6>sue;`T=f#BU#&sq=R*gcWCHh^AEc_!$#N${Zf}pw31Z-@n za7f{SjW8*pQcRdS>U}pmVDoj;J;JTWzQ;n4%u9S7yrJpp1Ym*_@xcftKgLog=XSgL z-eo2qcyhj7V%&4>6@I&}QDPuZkF2kVew#gV45g%VrC7Ctr|p?hIhi+r zA9ghGOqyyI{bqks6+eHRNqR#9!-q2)7Ld0qkN2Hbk(m1Xn!*o8^NJNG7n_+;@9Jm$ zh4n7vfQxHb*l3dE_T2bZCyWbfN)!?=sfm&=i8!Ppa=?G}yKro7Zgi|Rbn_S?P}<0w z$g(-igh^Yk_Nj$NygP_#!IVCHU>l8;DLRp`_0Ju=c=)7Wm1bEAM3q2RPuR>ZL_Y7e z;V&qF^fKOtKO&M@kVp{n<1Jk6GQ36Gktj1IU^Y&UH%J^b75!RlnP%%?k{h%X> zi9_HJ^o#$CkF7Br5iLxb^b|Od?dX1UY40Ocw-9h0|JFO5F_?Lz(3xYEIK2NYXYg70 zWM_yn@iaG372%6xk^Iw$u{{)pDWVd?)Yu&H(v$z->A7pc6rH=L;Io4#$SZOI^+Gb& z1b?WA5<;8A*&GVq#jW`$M-C?aj`7t13s7Va25Ngq@qt+@y6|)1L%m-vj)v`ioT-dB z?QNw&Jjcxm@hwcWZ?($9_8!gf*v|{~6)S-BU%UjMk_+as4P-pvtlJL-zu72RCior@ z_}J~$^wP(VPZ&ysa2K_2F+b3Wi^%R$C>7|nJ>nB4S_Z`I&@zz16+i;YW3%h@!XWW1 zWDmeWu$7u0G~GF@O!B(9Dl?SGzH zh*L=WbA$iqhB|*WP5PW^yi0JCc=(;FiLl_i97`!L{s+z}hHENXG5`ts-a0Z8IAmUY zDWOdm>qhiMdS&@pc=6jLO~>XZ>^u;RAh!Pl5NyEJ=K#KCUasFihdIl#@w~JOi~8g& zo?ngx$RuQB9o^CU`ME0Ce{kS^R`}&@qckVhMRn)g`MHISO!Y&GDQmWlacK8D{hx$R zpVv1K6jIT4^C{AtEXqzaH`8>FB>MW!KiF*|Dri)aBW?0j3+LB<*+p+0?poO;omZAe z6L{M0dM|?Q)(C^?gqN?LX$=r9MYhOGL35)~M^}7+v15&SC2QO1LPd;$DsahHv2ERL z@{VetOQ%!y^ym<~=-M%-m;3W!J|HO02#B~~xf+c? z*CQI9?q|}H0z3?3zY~-Xt;AA+fvXgyEgSKp{`XLDfj(ANU=HycNZUz)A?39QJ90KA zECdCS5K;^?p)#G)pczA;!v))E;ItggB6eifFhXZ~N+sl)fHY~~KmFMHd@7p4m*2U1 zDI@+!dGI(RLUZjbI+-Mn5;O3Wt56pt0GrHKmIv_Zwe5>h^+vD5V!rW;*A%O>b;#~o^p8c{ zVLA&AkUZ#mi$2`uQGI;C{C>_9)#U6L-X#6pvhU1^yFTk`#m%qhR@x=A$i`~6)tX%8 zej6swP{4@JVwc67AG`^(@GL%lTxYsKD+P)VR>l&CNx8Ykj^{Z^;&~zP%fptA9OK>} z6b|Ms)WbwrYj=+i{8b9FRRcBLO(8%x&JJ{uiq)bcAOoO-E2Og0JroJg%Zm9x<>h7i$7oKH0qaNG}lH~&WaP%2pm;D+Tp`X75j~f<+m)~EL`d)7oa*DLQ z52mC2Y^NIhbVIl4e7YRh-{q|?UdWo_iGA}JriTd$x<>;8O(%a`Dq>mUT_bZi4l8ic zJHKgeQ5xvQ*?}kW_4)E)!n}4kvQ}60XBEHHQld0SyF%0Sd)=K$ckp=mba^h|j;!UT z_Q2?3X5n|KM(V2OCMK^#>&+55pJ}HFACwf(_=N7#8~Gox-jz&*P!^Fr&jF`r?N0eX zufAm!*1ZPbzGV-wA$Ql;PWH!FMR1EP7U61@D{{>~w&s*kUywATz@5~;hi8v@vy{4VVjxD~@uZ6Ht~s=HY5St;9VoPGp9U3Hyy_odzwtsod3Whqp`TPI8)*10SRSyx0W z!0bGE#4*WMwt%OMzxf_xq*^f&>}cP7CeYK<6PTXE(gtreKsd6!G82@zf#5=&qsBHPG%^J?u)2W zO0{v;Sd}WMMsn_yu2fAA_-7e_j3TcYfr3l7+=sh0&)B}PhsMAKI+F9*ZBdCO;-9hk zfcjGp&*dFD%dYi#d5{=?Yl?y}q;;|=_)(fR(&UZl*uYd)UD_cWyVi;5*_ zci6P3uq0DD2SOuak)xx-Wd^m%R%m1p(r}pgK%C;h`;G0Vzx4=F=*8}0csRY+v{hVQ zDSO1>uMQzVS>!PN?wMGz6}PrCxeUXxH?Z{tM?GAh{zM~W+M*J_>ty|NHCyz@xtr?i zQ%~pA-@Q)@Ux0+IX#GzLN<2M5(5B`<&=(tJHK#H(e}hXGGWJrj3Zj%!18Za=w{n9h zAM_U2Vf2L(--uDsT?1xNo ze{{g&YAc^vr}1DcjRelo&t8LUOJ*%9!tsaw-cE&*0dk&W1>J-@%Sh9@mwK}itaUk4 zpGC+q)@8{QBAXbR{!NNW9IqPs3d) z2unb$E%B@Uo#&HR?b$jRz0O?7UL60tJ~N8LTF61JyZ|<#3erbvG)&Bn0TPkjlBS`4{}Gj5?p;#=Z+~&b__K*NWb;G9yWGmh zY49Dn#A2)mdmJ39GxJi{HMN;a(${L^zPS^@QUB4WLNz)V1@j#E}r-jm~^3%SZ1nya;b zF~03)RgUYJX@<&>qOz7X{2AmYmt`wDQh+=+e!n55{n;$$P`xN>Y|C{74UtEPU@F#{ z9Qo$4(c$#zXOks{$I!qoT|}Mdm5Hb0t!D}0xwU-KBP4=&{9l8SOWUBOj0`^hr9h-8 zj%-+>mo%73Mb2%InQ3__0=soC!QY!XBKfzrqv&x6IPWi>Zd|%o0*MFrVB`fn=;oGI zefS;Jj(@EkHm%^@ij~-sk-Q;qM_>Cvi68_J(k9?`;PM*=epUVYApy0_FzvqGRmkNE zZ@hNAlY8mmaY?ENGl79_O&c=&Ir*Xvoz{c^T-PJy&lKahs^LLbYopj=gQa5Dh#R5G zrk<#BgD$(#MEiXBh)rT?3W7cOSK}9?zNr^|uRdwh@8b z)9jc8CbU&IW}A<+2c@7NPM^bND7k#U3aJ}cgfr=1D2@}p1M%eZGV7d;zd~876!*ei z-<@bKqh$zES<*@@JnEa0M^nB#sR{H@d=lW;gAFX68;Scre)65iteq*5-!N}4Ks%SuBMx%Id} zH~Gm*->86_eTT!5LVDhW_->Tlr_;44Z_UfkXK`uN?RY`4tUn8pQSU0(i(Q}OwYgPA zJ1=jeg)|3`^ZGG8Qdt%U5QW&w8!AMt&K%h zft6 zMWGlx|5BI~J6|`62-5bGtBLMDW&}q3C}% zVs%swxi6|X{hZ&l*}<*zDoupzTmVaV7cH#9KE-@y7gAbc|f-4ygtwA2KO`VK@c?r9%XWE9ZjcP1KqZ$+nFE%vsG~l7p z;UH8JCA(sQk)ORHIChf{huWN&c2VFa6rXg?1S<*5$}a|B;D60pF?|+nx(%!#z;_P0 z@;(VxvFub<84p^D+c+Yp zH*X&iSPXAIM@n`ZLj%)RHly?!%a=JpP1PoysY{n0{H5^lCNe z=4?7M3gY(J<&=gg+mmP^Nd+jC;phneRZm+p(?o8u)D_xEgliX|vJO4$tylf+8ye{4 zwHZbBSu5jPg+_NrXNPBotrlo`@>m5^abbPL9}Rq*MC-*~>M95xnK49ib2>8{Ayr2B zrn6aIlq{bM$1GrSWS=-5d`cuj%HSwJwX^z2Q67}$SEAZT82oY_8lRDh8@)@0^gf`Y z7#_a!{2ITZdAr%@uq?BSjU4)z?ezwhD(e{d1TlRTIDUnnl!h#B3iar9rtk41>f9aa zzv-hwLB75jo^HcmK%Cfw?Z{gx<&yylC2pPb? zgPBm4O4iV^*rvDnLp-gwGHup?4$7KTJ zlEsA!P0~d6(zw2YbHO9!c;bl>7^u5P)G>%Z$^xX6cCB(Q8n2OrKJ-xn>w-FC?WBl2}@wZ955W{%ANBsu^067&Cc?_JH5w0-neQo;bC0ADsE81Mf6QeJc z_C&prGw`U5^nOv?S_i^@-elbYP6vF>xO69*I4K(q;eq&C)wxGoa~XNQVP{_RB34#z z68&xw5{iF3oTA=R(0ClecqbZIz3-R$CXEo$!ZOkj%iO)D{XK$?*|4`I%KPplF`L@> zN+7q0mY3lG)b8bzA<2V#DCjZ&lid17Tqr4a<_K+;T}j|wm6}oVFimhK_G|Hc)x>|& zTl=^9zv*rLZ!>4AlyjH+*H3DTAC@xmX0CK4#%2d;HOoq5fx^7CP0b6=D3vjD&Jo?8 z*<(%V=Q>AXyLTP81nq3>Q~EBiy!NK;__9s$$-y=mMGjUOT{TrF!58A z6LI|*J!?Hto*0=-=i)p_GBd7G4Tpz%|@Q>%U!*gG7;#+bsL{lzkn(cVU)zvT{&8o;xHx2tS5SN_G zBRy@NeA;ZZ4og8Z~1LyxsZj3 zMxeXAPz1T^>Mw;ye*lh{B>CKiSpMup>y6oqjl-7_1n^cMjW1d6{O)al%9S zatPKH@UszXerQW%`6vs4Kt#@-w?L?d&hqcit*;((KlVCI;@>`0xc_*cQyJ^KA9nZM zuR=Wa_FhXo(4X?7V;({*S=@n3l?>TO9Fz7l>^i3K^40P0s;~gQ8Ge@2CZzoS!^{yYNpcGPsE>Qvfp}POh~i7PqBTOtMPKMlx{A%Qm=YNSW=#xYu$uzAa7!I-fYryak5X(mgx`I z7~Y{6k|&oAUhuqQ-T2=)O#}4)51po`(>VLuRHKqh?v7j_7=H*Y`@HGwO?_+x?Vy{I zfF)VhPbZ=JlRW7a-??dqjX|3^(z8RckTq}7dO!QOeufF1etJ%tj{v` zhe0zF)<;F2t;s!8Y9+yWW-$aKB!W)jrKpN^X#ui1T8{OPCS_MB2zc;VsdM2JwLT=z zN5V2ySz)E6=UKwn!PN92*SKeg6Nar&)z;f&Su7#D;ey~A#QTcBe50r6c2E7Y;AH5$ z$FCl4y8x)7iR<8|6H1XJ8~E_mht+P3SCUv>0Sj-{K1Dej{8($8mNL4;Xd8NeifHgt z-*+2auJ<_jlM5abI) zg{V_JwEdo0*xtP*#4b*X&JNX4r~vXJkpcY-9ZpAO|V~oVc@y({pzs2g<#pW|GkjUFV4)X zJv_|-%}1}^a)urevuMX`5BYz&Ev&qtM1cNo2{Rn-$uHgBQ6*0%cl{Z zSD;E3kJxzSc~ekptaZngCT=N!N8yM?jFI#YH_Z#U|E*Rl^sDI`9-j-_a~Z|}5p~R* zcS=hM__Fd*%YrWa)BLzB|8Ugscpid^rVZP>+L!^7y${&^wP|mYEhN8NMRwe{9dvfa ziP_e`)h0|u`Rugv&a6z z)M>P1_k9mD6=c#9@-Rt*xC$EqZ?a~V!qq1yTb;0^IpiF%%?;gHrJKg8VG=;P#j(5< zDruR}(TD!TxOe9-IUjedF|u!JDzb2|`6|tI&H2~+*^O5tMz6H{qPw3PJ&4|=I~EG+ zm(=L>tZaSF30@L@?7HBCqOu=ikfc%B@Fo2(!>Mi*N?jf@m|s)OU+SG9?3b~a^Y_D( z;YPX>0>RC(v7bkVDUsU&gh`*Hm1Dpim8UDEzTtfw5?|J9)S<`55b-nYEuKEs!Nu#P zT_r@X36?m0cbun*1MtjKT8~N(&mo>7S?8I$|g^Z`jYN*K8KUL9O{+qb^j_i#iE(Qgu!0!Rgp{Lq{97r2RASaX z$GAena5@%X=KnX!b~E#<$;*sVp{$LB#|afO`d@q&8LPB?ul|vc{^(_YuUjqUJ@=~j z+WqSsphWAwd`@36n`C(4VC;eEw4({S?ZcY;c`W8Vj0HacelhyJ2h3g=H9dg1p<{Py_Hu*%y@{&@MjEbfPMirM^6W#02bjtQDl zL*pK^CU&}@(h&p(*pug|C%5vp${0%#9Z|3=$fX4<~&}lkziMdao5pqt9 zbO`JZwo)I*ZFHtC`C|9ubDHAjIQq<Q?$-C3ScMg%R`NUYVtit7Gm4iWuyUS3L|j zheJh^V$ZESc9asLMt`RJnftR7ZmM7j?EQ`Xe1PA6Xjf+1<4vYE)&iDu8+cQ;pSbFTEd z9%>6#$D}KWKmNWsT!qH;3ZF-+Eh8+={ccF>0ncY}Kj_I+d0Tqiq-Q?*z~F6r9$$HL zT|w9yatfx$Iua`Lu;1SM>9AM)YylLP%8e%Yn}vH1V^ z%%xh@@b@;hZhv)(1WB|>S{?W?`#qwuwOu~Pze`4n48640XbDaGWAm&{oEuLoep!sn z>+qLKpo)T*S!trMyx@l4`Gka7+4Vi{jm{5q-*@U{AxKkC`{eaEp2v6C1>%zl zSqV#v7H*s`t9Fu|GCXhBnRO6Wm<2pHl@EliaCZq{psy0iS!whZ4sI z$5CproJ#iy#46xWaZ^*(j}x?p)QG zU(5cl+Ri(i?SJj#RFI&=ro^mKyR987rD*L^qiR!Hduz=GRijkR+M}&j?OlpkrPN5N zJz~`iQN-r?>hFx_I_F%^b$;hMPyWmw-;67{KllBwC)tTqWe-Cnikd4sPA;N`Tc!T!0hb1@jWl%eaj>yLqq}s?L0c z_S{3H_^&2-U>{$XRoctG??a4b~mUZwgz!j z9r)l)30O579pK-DvmNPx)DtPHM#xOS(Z$c63or&w4E`a!pylw@ zg?xE`!i4dbE5Na(+UebMCr$sVGkGF;E=rO_=*`>(?vjg9aXPEDO)A5B4wdaY|A}~R z1>=(d+@M4DhX5EzMi?8e&A-U-yfzEfET;(%g=LHl8zM=}JDW)UZ5=)1_ne%Jr$A?z zw|GvSS25*~K~k79v`o=8VmeFL=Lig=3uE?A%X#d|mS`hxwHx=dv2vD|ZxyxK`D;Hq zt^(u0vZ-e74~QAnqNTtxOiXM1`rCdbb0Mk+*w=4WNcA<|o!bM~`bYeoc*I|+XZHOu z2)Cy%dHlV;iS$Q@x2w0>fo3V8+wjVh26lC@w0E8DSBlAG3{>h0z z#^Ettkzx~D)9KoXCdbaQ<<22m_i^5L$Ns^1FIF`#gLn^td(O{2mC=JD2^^_T{-~OR zDc$xpZY^$g=<$j{7z$?gFpDIVM>C47RT8SHGi{JW2e>GUlRM`2Khk1zF2Xt*^vS-k=!(?Sn+O#U;iUbcdU%~V@ehCcI}3vFC> zeMXd@JWC*!d7wieae0Rt@Oe)MIsrObz?|DylwH~Bz?0OnhZl~BXFp`>w8T^}YhJE{ zT7s_DSPB&tnL%8CHg;sWh>t0!Rz}CG0+;|C0O9`_8>4Pn18~7wM|lVOQG{f#wF45m zd4?`{ZVWABYetW{{CUPYCnL&CJ!6HWt&mnqDv#%q_wE*}83TvDO#E%2#MIS6Zdy$r z8*%vhvlR(g5C^|MArksv+Im`2bRS~UVS@WICuO;_jJ{&pX?bbvSb3!>48{yHi?-F` zF*ab7eZ`dr)Hu{93CsUJbq%Wd2kP3F`~iSgnA5)O!8be)G(8`uV89`D3|AP!W(-=1r^fi2 z$U8+%oS_qX;%T$E^u15OHUROzbo~L?Yam^ryIQ@N`&Dph#ZA@qRgk#Hu)mYMm!^CiZr|P<3UkZ11#DqlE z(^`EVfD@G_ZOD3Av-KPi$13*7L4m?G7LfQGv;LRFzZ6T~<1X98OIZlcp>3e#%J_19 zRaPCz!D^hY@V>8SVnsT$vU!CKR9lcuT3L$iys1Vlf;KdQI;k0T=#LqdI?BZg@m^x% zO98cBPZE1hie7^VgL#1rG(|f%*d%t}Wy!F`!-RFczT|zEkMLy#v@cX0s|$-IN7|&r zT|+qhR3d*QO}x)+DCNLy$4_7yUAo;Dw-dU((6s!>oGCuQWh?a8RELItNOiC*%uie8 z16XYqU&#?4aU@4l%EW~HZv8!|F2Sg~xQNF&r5*iGl(q}0QD(fWZzkF!!y|CVdmV?i zsNJLnvB*?WiUOj)k6B}2g_aL%Q>jy2u0=ElVql`+hn4{pnUS%<31xuH7_2jWPUvYD zBK6JacBh>B`a9;KBEiH>&uu_WcZ$I`O`9AUw)*^YQ@E!BtFJ{By%0DGRvu>~XoUdp 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 W8g4Bwh9?mKk6SmjRZ4DHBL4^Zgl9Sc diff --git a/docs/img/addNewClass.png b/docs/img/addNewClass.png deleted file mode 100644 index 393120072a3136e1f36e43b14a2f23e1ca61801d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127248 zcmZ5{Q($Dlx^8US>|iFgZEG^IZQHhObU5+Ewr$%J+sU1cbI#uPp|=%#UG>?bYMv{6bPKyB0H}yCH5g$vP%6RF7p?}*nP@3=1?YPtOD4=O0xZd8tcc>BbxTn z^fbzY0z8c=+z!^<=yt`eOp0A#G(>@RI>n9|&>PyM^M_O>$l(+9{QPsaEC?e;hTg<6 zWr1}Bvls^MWyCEQ2u$(-SBE1~)C-q+E{J=H*+C>kgp^?k>TrK7Niy;$D za=+YexV!B1eFH))Bes8yU8)!;g@#RrdBQ~%!NrBf(vkT~_v$v0ugVACi07N?4dwZC zu26KY#~x5JJNPnR)|dH=n)~# z*pZ@;78kf3Y~2fn77y*5562on&j?1Vk4WIpVh_GW0ut;mi2|MqPA>^&AqeqXh=1iT z1esPqU4ty`K^6i$XCUMQ+3lgUA=G*h?covpB?RF@du13ww*o9+0G58=}{j1S2>C13oLR z4ugLqDjcs407WIWN+2r&D;LX*M=HW^jgd@nH~@zVD=?f4*}9}5AGg; zy>APSHnS~THAFM=a&)`@SwG?~<&AsC_brU8K;&MhYeR3+E;v5|Kcek8;-PM;cvwvc zt3YJZR1$zS;0FpG%rVSIFlryGQb3u4Gg&B#$AGrsx4PIBp$;hmO8F!VsZap6GT>WA zL%2Qql(RH13Wen5G`BQ8`aCK zlJ^!crCz~al>lJv&jRt?hCaR!DY4AL6vJ@COv4Dnpgp!hC5n#3fW&4rg>u2u+Bu41 zQas`LVvo6&2Dt|AHIp?)LJ5wdxA~;g!F%G9&U;uB3KOkE>O+DHX<-_8JS_ua0jiFW+syd#8}4n5KZH#Ql<0wOhnk%=u;WOJRZ0 zlG4(^a@F!}k-j2kx^&ttcRELp_3Pk0>`!f5glEgEn+RZ9%!U{4B>I`}{N>>H^N_kazMcoqJT7F|aGbC&JQ9@b0Wd)H1 z-3GY^z+EHqUkMen-+`Jyo*_=7CWpuy{(UXV+K3#fM5&ljIhB=#tsnYr(+$%IR!8QP ztQBnS!-cgQ8XA@2OZi;=yd&N~kE|COc)lq0s2r?KEIrx_S{1r8T4IfF8j$KX4S#B1 z`_~3Ct#pihhC?m)jq0aLHjf&s%IUUUyDxlrGIeS+`~GN zo>rV)soR5n7E#Ymc3Y-yqW7Vxyr}BtrAoJRG^V~yAx;6|5wNeZ7wB*tXB~E12pkjW zjp?KH-0ce%RM%7XHP2or<3{F2B%)%lWU$=CMS-U@p`=)4&RCJi3zt+z9P{3$`56$@AX>U z4k4D4+QZ%wkB4ZEV{UYwP2LkA(t>{n&x)oE=tLMvRZC$??Sm-@HSW0l*1HWjC{K=0 z27Y5HpDmxX2yS?8m=~rnh^(d2Vd10dWawuFGK#c~Su9?vq8AFzCdg7dX_&UB$9~E_ zNJay)D1tQL>n(q8nMs)BjVVo_9^D^g9@vf(j^2&F`Lda^xw)8ixqgPe_p)7DAytJe zRco)e%Dd_Gw(UN2oyFOZ*hsEkkBg7TnBZ^QMs6)A8>6_PI9SsS$3M=h)(oJb0 zSr1xcT3>9M)>m1sr;+K-J{XSgMeZq3Y$Tp-Yxt)>=s_KUfZYs^Erf5gmeN~U*7l8j~SWuV`ehb z2~(KaSzLK;zPG|dAvaMG*kRmi&iri+2Xi^qwbfhW0ckb5H?5B4>z!}!s%aHw)m%C} zJ~=*}7oi_9OGNFtse0$W7N?C@Hl3&T^&hGGRk2-=KF6;*Zwy(=e5Jh9DD*>4mrv7(H;Dg{sFIkDeu>`nth*n)9*<6&-w)~j_Sy85GFy@7>-N@Z zW;i-rQE7dbIr%eD}u8t>OEZQ^MLyYB+&_U{UaZv+DZA zdnJ#|h7bw5M7|S#y~#$x-CaGY$@ijDA}!oDXWxJoL{|aU)%IJ^=5d((avzMZpjiVc zB_G`7JJ|wf=XJAsg3X66=XXLz(a@f<`F`^lam}BcmcN}84ZdPr=@8nNN!JQE)KPQH zg;ka4cx%b%Ss?3vvLG}JUp*Bto6*2o@$JYyTKd*Pzx(Q(O^MXrwJWJy3M)_Rj=-=8 zA`^E!ysWgrE|z_-@MkFie=RvxOjn83T-siyKs`Sc)Wdg}Mi7~--T?3R4O})1Mx;!FEV$7K zuigsgg`PdiWS74ZMC6(H^Y-D3gCGt76cx6$WqId!_zUmEiwJhF z7j6Rj4jp#|eT(8iKuH~7v4|MsDVK1RXU^WWZVu2D_D)Ol28`mi!%;7U1HNNFPY!>* zh)~k%1-=ulb(5`jQ-E1?u8}7IrZjBC z4QuY~kI7Z+ZLc8GD=eiBG9MKRo6U#;qs(1O*5GD(^swx~0Hi@W z2Hr5U+>D^oOqydHD~zL?THPp~+JZkXXB z@b-<-6Ca_Z2ai2*1O-GP=b`u^HkgWfa7q@t?+sGs-K<$AzRbS+`d(9Z3Oq5{65vgz zRQsNW>uh`&m(m}W-5OJ~P%KD3r4_WS-@_?P1Tk-J>&dQ72bDT*QtH3SCO-_`8V3jq0Mn(uyk%95z= z!ApcTZx)}YC#X;pk}FGE_uiDsU>!3JC0P{@AJ!j{oNTP^ap+!Eb&pC7FyzJ_`(8ME zanICpfkvg9>&x;J17s-~^d#$0!kJ#t(hb`Y0MIEOCihBJyhnzxFORErfy z*m%eW1KSv{eN#Uz;%FtI6M%b46*J)CBvEKTM(6H)@$=yQp8K-Pli%_-YBv%tZ1zeR za$AkN*bja$DM^3+ZO4rGQJD&%z!xLsM;|=8VIrE~)`t2!{~XSmL0zKtoj`pG#JFPk zG?51aJV$b`0dt|H8NYPJAAMwG2?(3{0-_g8&jE=!cx!tgS#xklZcC<7Lbi3t)U<;P z!L`Ol8K5pk0dDr_q2ErPL~rnaIMPuH`=2n`*@;5NVQJH!{B2aD+jH%f?|>|pRAWEtB4 z3GHtN&xWYsohBp38^h(x2Pr~-{)=}Q29EgsF}!C*mH4PCS1M(rLarul82%P3N2MQ^ z0TO0`bo{7)x0)Su_b)saLv-3})wwB{x_X30esaS(!vgXq&)y|NxOkK5)(xi95BcO) zm6^^nd+h};M54S0ME2LOn24{eSe7#mgQOH9pB&JF4oV#YdD_{?=yiVy#NqOrQ`Eu6 zSjJayt15#_vZD?t)(O6{33zR6PhD(>0eZ5rkiNwl%jLMxcGnM1r3AIWu@Wmuo)-Zy ztD^v>WTK5*PG?>dK(&u4AhJZhN2JC(lwwq&@Inq-|3{4t^_wH1G%8{t>N7grT9q#5 zKLF@2EJ&J<@+^a54(JfJK8(^1xAyShTB_NOetyQenC)D@2zZA9O}*>$9yI!?tSmog zXklpXk6=ZZ@M9@d(;!MtTvHVnuG!BYxx2)S-T~hgun1f;@ZZJ^lm}M;FztKQ;16mo z8HJ6HY`v&wC4$C4YwRb?@*#e92>;;fn91l**kHqSdDR4%B($swqomBC`n;;{9j|F7 zuUmj0?;Qh`n|Uz4xP9He#PFAaD3l?R?80}Oka8sXUnTzevgICh9l5k%}pP|dn6`pD}T>go%xO|M*GOVSV>U}dM2VW zS}3L}IEiUzd>TxvwO50v1pMArI;-PmMk5R>CFvY}#hLRRG(~%=)nz6)MEYcO=Cpy~ z)nu6Rf9nV`h!<&SZsK+54ipVi+&?tdvCLa1+0+_{))% z$KzvD)uo7GJyF%rbVn`l)qyL&J_h+d0M*<1;y4h9I$Vci)Kgax&0Mag&SKpi`Cw%8 zC7p1azY%dW{A#xAqc=3Swp0N>!gT3?HFwpq7GxT2N!V9gv4F23_E@-dktkRvsV3D~ zCmVcmQTawe;<&L`YbstH3r*2|K%Tj5*un-eRTPUe!-0ME*?};cm+LN6XNo5fA{_X<(*@CrS=$xjO4N$Vj*t92l zT_@9TaiEkx|A4Xe9S*D~<|Q;?x$MdIpcv`6g_`KNNIv?Q)`h$3me>z1oeDn7GR$Tz z!#$x6+#M})dLB;Sb6BreV3h+@AR*8?J&BHwXxFRnI zueZzH_O`Rkc8=bb$#(m+uCGVenJ!}85;kuPWwUr8GT6bjV~gEgH$K#hh=cL-@Po=? ze4WjkF%|S&1iEH<OAlBIj9XXS@j1Z)YgnO|1m9KNoQCv9>~&n}|Z{SgwY`W$_X2 zUB_QqwchsTsJ_6D-w{uEUonbqLU&7#ulmep(+vAEYz$_-625MXwZFQF3uG>0eakDZ zcjp$Lxj5hnc|wI0=1PEiEzS}jL}&G=-PW2h7g^-9UNO3s%GX;_QY8 z!u0yM*Y%^@j+C@{dcffMUM|_392PI^$Qeu+ZM`3@MQv_@K1)~~tXAmU3b;taZ{7KK z8gpTwka-&sqYB;;ay;Eb=x#V=ag?Jmdu*c2SCz$;`95f#gcrkc3Yfqy>9A`?Xjktq z@C{T#3#Xm#9u??Jv+Mrc3X!!45r@rv;7uJ60>99J)C zh5R)CI@JF$Q?Ic}@=r$ zwY~Y;41vZ@>DzE&t#1Eh&u(rduuF3!Pd}16lDr3G(JsVUX3DMZ2)72s3=~*G>gJdR zS}dU?Pv*uz!lwdT=5ag=CTBeSpOdBso~26j({m?FKJvOf$aKH4&aq_2<}wlQJ>u(z zc70JiZ-LOgz+Zh^n^NqDWi)eYA>RS1{weHB?7cmd(#bF_X$L~T87|afA+3+f7 z`^3Yyryae7xYvAwxoq)+m*z{Bde?^WQ-ikyobVN4kToK|Rl7si=e;0RI1$#`jsJb7 zn{b#(!D;lLdw$JZfti1a8(h}qC zJtO#R-3LT|)!VCNb`L(ZUezHhT`>0;$_~wfr#VDx?Vfm$n(B&1^Kbam>Dde&D{RL` zh9tl!oJSTc$Mjh6VeMa#u~=heZ1c6;^%B=Ea-x0ovoKvhFSeNV#gs`35OQpB5}DC% z#&W?g8I_Xb86-!ByQTSRjRE@f>nX|D*sy76F3P?YumY6hW?;t9Wh<8z!PJNaBzbc1 z<>MfC3kZ&bH}^LN9K`+FF>A0jz}OErqrM^g#1W<@q%)eton3ObUQ+JnFzf1cEZyt! zp;4!`8Y<@5Xv&mi*B`CEn;iS4`d4dsy3M`ojMTyyhUd85=O#$;)7q-@nWD{BXs8%Kq^04 zd^R8D_I`b_4E}+iz+}((IuJtIpc&5kBHIshYpz3dfiKA1w|TAma$Y52;YyLcV7HWF z-9I)NlK)%C3*l;C@z^f}~^(GK>m2&+ieu%i9mNP&=pgHgQ)n99gVk zG{Dl2TD6XLAxcvU?M(W8!-F9)guwgu1pV1s!^1W;0a%o>$k_=PwGxmUkoK_qrhWzIhZ*KjStU zY*EMfXaJSr*9=tGGplSf#z{o0ti3K7NQ#dz4nptpw5&7%Cr};t%|k~@WFucL&0l?; z=o@(b&fB#lMV1ja%{7#^hC^8Ecy13sBhSJd!E4-!bv5Iwy>STT`@w~qp5$+h|pz1 z1_}NwJaa;`G>-K;q}pfeNSw`@&gkFAMhP0HpwmwoEk?4bKa0V(>12kp z>bg1V&>py$Rj}W*@zB|CF4_~cHl3`p51Cq8rE_2YtR{UL8O5WwiW_Ngwwc7*`Xc1_ zwPSnNX3>*}Su?rS#K2X!aeeP-L*U<{<|Y`VrrmWxu@#dnLO=Ype*{MUla&5TB>Ay{ z;q783?mD-jU}1#<L=uYUevQ^vNQ%sdYfrR{NSAOi1Ve38rCDHr31iyx6w zUJEi9Lz*bqxL=qNlJPDp*XaH9>HU<-J}Y01AwPvPIsj?5Rt9!5=al%ooFX31KlV5z zo^9gk67J0>?%K6|YjNW|jV85WCUDJl`j#*o@5fdC%O0Mvf>XDTcO*d_i zruewhIA{rQP4Tnm`P6#mg358Ax%8t%Jj?5Xh^u}Ihf9rnzqrR8JE9!}9XLB@CkGu} z^VasYZJb}scU;!2oDe_ zs0wJ#A7aBB{Z=XB!`ez}!f?*$4muM>KQjLM<|7ObZq>^XBj#z>#I32-iV2rovR?$K zuRf_QmI{&+n!x{M#o#$9J{tw?nHJ(+HW%mr@>6E7GW$LX7;}S!9`s* z<9c<5NWXFx8K0IF{3!7O9~8MFbA;a3yzuqgwXGzDAgR6iS z3O`*jbcf6v_qZH8_;Pl&T%`9|ZY8z#nUDuuvNjhfyoJ*yQG31oz@qLDWxWT6OHN_yiq$)*MR zf_v_?c#E5zcq6=0&<=)WmHE*}gs`ddK7cjG%Ozf4YpxJ#Uv;n=i>{&&O-mB%}@%vLlfP0O$vy&&H)1TI*taPEM;h^s#^8VgiQQ zqL+2tF4|b!2nkv)k07dfVg++$xx|D(Z{2;64)Cf+=!MFcBVnwNB3-Nce{G=Ru>Ufc z+=!mH-ec!oohZ?Xx|r#d;K#xY?Ze9qWgl#PUYU~1WY;ZS<27Oa^>1_LpFB>DY(~=k z$x0CokyMlK6trR0T2etq$dHU!CMleiMmf$w%S8(kiij^Jv;08#NjcqDA`6mXd0_>(62f(f{LCj zhx|qN*fn4N*f=?GQN8h1e8YZ|kF)$KsAZSVlZz1Govk{mcD0|OVbf|+b@<75zDA6G$r*GbOt@bQQt@hWMholxOdK}$a zq)m>(P|h+!|Kq6L?hUSn`_7b9I$t(3LLB-dMZLrP`a+hYb{y}gLZrk)=%D+>r&|2& zh+K;qCs2oz@cGkVwE-(U=-gN|A{Z5&>G)`0zmd_m$_O{N+ZrFvMdLcWGxz9GraR_t z_NY`s)EV_>=cmAiaxbC{x~cx7`kIJct<$nsiJN_oHw2d<*~d?yH9Y36BM9 zhum;}$KYTYoUa1zZK_XT+;mO=Y<*ZD(?V@YPsl5Gtn5`|r54DtWO`YROOP>>3+-iI zmTZxa`pY|}dV??iMubDH@(H1{tqcyQQ+gD0f^elqbwAq&`t=l^z8T-cVX*kp2*rxh z`pz+>h)u+Sc(A51x)i?=MSi6LL2Hc0Lm%ez-kDwj&jrBTO75v411&B)PhimLsrarf zD|9$;d9&YbZ+{vdg@-i{f0={+ z)fOdg5AbZc)BzFK+^NYZm=7yA)4sI)u><80O zO)!PkJl&bw+j0h{uBUzn7E60V*$Dz^_@u1uL<42Dl$R9fFA;QoI%7!|Tgy9Kl^Ool zT!T>@_$J+>)DTHegNFrLcN%j&iyr zC;Fk?#;iSuAL0#1Iu9Ojb%$xp?s5&qr0|(L^9!GR0?RF;X=5$jkBrV2i% zELAqEx{$=nR9!~%53Au1KlIcq4Z>}DiZt>DI@eBvD1hW^%*l8JCe*+2cj&(vZa~8q zS~Qo2&vLPQB(S?9*!sRYV{G5SVA%knGpw|JJD^K@pw~5HgmPe^wYSoT?ryZ4UP=pm zUKK3Y>06NUbpuW(-m!9QMfgOzRvRa*_ck92Y^jQ;OLOOMInl0~M;nU_geE!>!lTSV&*AB&|4bpb2TRZE{*H+!HfEV_r0FnxHAgw(jg>iNbGqe`GrTe@vm&`od z_-bFYmo5%)9cY8r{|EC*)MSh#+ijd{hR=^9_bV_#$~wA#oIi6z`mf20s&=pqmtt`d zuI0*R@K2-Vx|#eRYLpl)mNwBrgMut5e#LFeBMeWRVT$KU8-k-sY9Z7D(B$j63ZSg1 zF`!Dwa*&FOl4(E`@R|-EsLjVQi7x%amaZQovsdkMLCRL4j6Uv^vXN}eC_%y$qAR2f z7EypNi))P*LyL}vfql)?o|b@C2t<|mT^6@D#Ox7#MJuHAjrdH0f`md88e0YNEW>gI z@VfVLs+azhyMMt4yC#@5Mx&^7<*yaaJKq;FI7Aw}TcW-24gM*p8A^;z))qyqvm{rF z7%siR-@)4l&4MiS&sxbNo4FswR!tB@XZizRQ9C+SJuq`af6O?K@Z~<4g%}2?IzY-5 zQBXUO3Rm(Y77kEtZt5peaWGKwv{A?p33}ygV!sXSt8ZddA}4 z-dqws%8VmN9(-m%8ex!(OdipY6hSFl$Ij^nhFcob3qff_o$iQE49vvw`X~dKD zB=%-rx+T_W=d6(Ja7x%h;mU98Z4HWbj2kaZ=>kiDD^sWT=7bUQBuHBG%Cxu@=6JKSDUu4KvPmb>cWsEcd9 z5}2#q_9jcye+5X2;)3KIa)`;IXt%`&&fIKh1lZVNU!QKWM(V#Ax}MQeQdAL%+Wfo6 zMi_ixt(F{76$nPDq$018yWM&4yPw_i_F)~9@}Xs8lLR3II8G!&j>B!7QP^{nYEAIm z7G8_V3M_bLjo70alk6@(Q?3oIk)fK!^;IfzC#*5#-y!A`;K-; z+2kX+4az>D09T-cP3hjDLUTSPcVb;|hP80$rrEAbk8ck(b`IJ1+Rma_G+51Vcw3!E zvVHCF0S>u4oGhAnX49_BwFF5GBMnI$)aAq4q0pu=qM6k&dDH2^R08YLlQuZ89lQnR zr)!8)NjhxRxL%9ZVnq2E!&q4%fMr+fnuC~J_l75~ZSu2VvJQzQ&x+N5s^|a_$be3m z8f(oYGQiJBZ>-L0l(oo6xQi9tOdTSdWF~XAg&J}q&|M#K{9-btOx9wt@)5hgT>|k0 z8Vp$34N?x7H(Eb?0@5=m8CvG`Ar(i(s2qH^-YL+hRPFQmz)po)73BTPRQx^gZ)s1} z4g*9=!B62jo@@^P-sxnu*t>|nv*XxF7%%6$cg`;sx#G`ujarDG3W9<~*obooa+!`K z>>PKgU-JC|%t-C2=>sW{hqY(@@#z!R7JE$}L1K50k=UI#7DL46*Nhg`Fjoe@<1O+2 zg&pG19$h88Kv51(f69nIJ7Hoq2QyP!ZlORs_Z9z zO$K|~62zOWqqa512Kd^MU?K7r>U&T}sNtJlouHpHfkn;9Dd>k>+1USzi)U!kTD{;W z|05A!;QmqJh`cOtOi>G3xdWj$xMv7HgYa7 zYXpO8l83ad0k{J6##b`U^U0GgB5_{^cGtopz4$)upaY>+|!|?hi-@&>H^{iXe zGas?U_uKzDaR12TP*cmG{()wN?f$3rbQ+t z=BUJx^%>CxWpJlCbMf6(AmtPJO^3sTBRI($C$l!(vEo=1L^WFz_if@QQ3AapPxL({ zaDObuo0(>V2#b^P7epn&AUu=#RH?ro1Haiu&;^rO?lPzK#U+0bp!E%U z$wr7WQJ^LMUJ`oo=ZA|ZFJOf4rT=c?L%GcO1IS#Y=8qsVp)8(ONTX@=K6!66s|CH1J#F=Gzq8RfoUmqCPHQe_8>K) zs`Nhz{69pVeGBPK^flaSO5X1|M{Vy>v6kDho0ij(tebvhnS|`@qQL_`6p(>>tMLZ? z6OAAy=Mj{uQ!Tr0xjxk(8TwY7yKNtA;50Wp11}HqI>2Pf4$GDnZSJ&sU~2GcZ{PZr zZJwvlN!l)ZC4y`HyQ_f~CM3+#N;@GfhH01#+=Vf%$Sb`m1I}NVM+iYat=^^XoU+iHHC`JHE&ZRL(!! z7a44maOC|49sm>jR@8Ev)ijhlMSMw$j20kLiVN2Lxe-t|O^SD{*=RDBv*FB@a_Wx^ z!~Ggp`kh~mVQ-r`Ae3(Cw_dx!PD|Iw?+hjN_@Ir$Jbfkp+Vix@aOz44L$h1W$E*1e zvesjJgiApKF&+A*LoTjk<9qIM=z1R|D51F4PBMHgM*_yR$6O=d>NJbY{v7}l$5Uiz z4DJenYU?vw90%Ll>(>!kS<-)vyH5ugR7nz48+&>m6zq)`Hv73o_mfAJ z1Y=`q^#n`|-|&ni-2sIpTHS zWbBwBAGIg3UFc?mKg)#nFTk_{fzjgL{lJf~VaDBh*OrINgppsgLh?Uol}{oTz3%F4 zW1w@|OZ&zq%`Xq@nJ%{|!Y{Y;eBSC_-|XUbQv928GE%V?SCp(JMyqw~-+sq4IZ_hc zX4qf7PmXNX!FInE#slzR6ReD*`{a=IB8?NBb++DGK0?iENe_89e6}Tx(@kP4)$U0z zbFT@OD7EK|V_g?k)Amx9g&8mRbjw!m(f{x`i*c)nl0Wfn@V!WR|L%=d^z07$27L1B zRTcY>a25kBj1eqTzTn#`q0`iA%fnJccx0qyGJANoko&?X*6Fm&m6^9QZzv*h`}=R$yW{Stwl;3>``O{Likf~NyGaQR7p~Fj==nZDUio60FCYiI3nwN2 zHAHUi9fmFERG1F&WPcx8?v)ceJ&rf!lmH)U*WC2=^}JpIzy*U+9yfG?5dQjP;&u({w3;2*)sw1h9hQm%dO?c=NkJ0 zi;+4^L;)Ks)(3qX!B^AI{Wq?8hjq4nM%yJ0>c?~sC;gIm14!L;Ufd^dWvB`^LOvgO z#)nwwYl8&X5?`Q$=dq}9F(v9U+QA{qV6{relx<4~d(kS~&G@l`(W}?G(lHZ>(E@14FgQgi<)@JUC3q1lWpH;)yzo->r|LiYVQnA1I#FHmZEBRE3ks+auACWy@k zV<_$uo2?5<4vN(2J=v+_b*!{*!$45740H5`=cezX;bC7non>l373f7m^Bakc$ac=E z!)SFIQ|;lOHKKnEv40-7Z7?$hcr)i%*eN^b^mqR-Nx3 zZ#KEwj<(%z>XCNcUg*SrhoX*OzW0gB%GdpA>c3C;yc^t^y2f2B)x)1w$6v(&7uQs~ z4OUkJ5B+nkH?fY88D#q{o=$#)uc~M9TE_utj%$hUi0X}okn9(RT9guucrBwbNKQaf z)X@mv6S_h<0a|6UjO$?WRef|IGbP0e5h)V^TyNV5=+@D9Panvfs z48#MsG6w1Z=z+pEM=5cSBpD1Flozk=z8B2`-i6G>XLTf<$9q~ zG#0--UbA!h3?i*2V=Y{hv4Phiu^3@UUNd4%qED!Kro}M*94IZmMeWA+(BliwsHqmK z%Zhu~P*Ky2ex<*7$qj)eMoEM;ma1Iu(T;)}SJdn6C-t-yG;&jpJHG$4tn~Kg9XggD zoL?pk0uD{|!TW3t++(lAPz#)dut|v9*Jm}5*4?xGv@eR$)owDS(lw)4s(MDBiuHc_0*qLNb$E|za&Zsh(^GVHZC@VE(Le8Mu@(D zv?NBT<1~2iD+Qs9F4E zqMwTWa%MXA8xB0R1VD%Lp{H6vUNBDwy60o`zAuNZ{&;y%76-~6MVfE1f}cHt57_?Q z*ibu~^@chkV`$9)*J6^v8Q$59u)!F@G39`^a5}{kaWMMSafkdl^3ZTk9L-XGOJ(XP zgK+CnWyOC+aBu zG`a0Mx1QLz-loL8cS03Wt|xpM2!w63N-g3G>7&Uq0tp;+d@Vuiv(`?p@#Hb*@t=&?Id~Y^v6o6wNyc! zIwBM{!7CL4F=N2NwEm0=ft|U(kQ0u1ztSVaUS*Ix?ezvXRC9f zKXo-@rr6pt(ym5U9o`c;spD#3hVmP<2CsH-Z&RM;bMWy579Ng!*)9HbC|>?33+21pU2-n_7kqcz*( zOy4sUfd&XU%dyNQWJ^Pgtx7+CiZT4oVh>Sj+6f71+hGjCZcJewh8YO+NVtj~^oKXw zd%%Ay+}X5pm@VR{D`8K7XR=keOE?=BW0`F zj(j%-@XjhV#r}B|$x9yT2){Z|^8XEL`~ZQlYcv+voCmYC9Vi}L30{d?;FukGK1(PW zDZh0y#6fdKMg4zGm(LrR2JT%p-56md{f7k%|sj51-FzB)&i#3wkqyWSPtIVylr1?WpU5!L313<%V>?P^j z@9towYVpkjKMX-yK_kcc~D!q0E+~bP*RvrP&VpzE)E|egyVX z`g~l3^oR7br2`0~;s;hjXfKNDy4_Lx$a zLH;hsyLGY=nl3F&8bKPP1sXlAeXM0LCB@8CS)EqXxr zcy~&oWM^XwmQihyeWgEnVDgp30{iXpcj@TNUo`(0e-$JL3td@RX~!2JJisRnV`FQS zl#wAv{rSO)Gp)cXc+~K78gry#z)x%gD?|1F9|Eb z&n;oee1@E)rh_w5Sl&FXd5RF?0M z&!_8y>aDFf50uhuJK}@6KK8;}zrakxjF@BoXyOQijnX1Hp8jC@dpjf6|D7(3*&^y4 zAJrXf;avWPp;-d4?B5Y>m;hK6nFUJRukpjs!9M3Uc`7Vgb^pJmBm&CBCTu-#*t$BV z`^--VkD%dx1Vb$N`m8~=#FKnzjr)${Y$tZl`;&mbk?w52cG0O9J_Y991Li7NV;jGz zO$FU*>>)8-zr2rEwxES*b2P;J^BsM68!h}Kw3+@P2c1_6p~arsV+A87 zo%iD;`=|4%zL@b(g1$=9aOu-<{*UiBPBwI77s4fj;*`nuSC@ZdMc++z1S*%|0v&|` z3xfbrY)mdKCH3(bFT~H2{;xz;mLLDM`}JWO;C53;!4q)7ax?!D@KCfcWo^$>^~s>S z&o|t0pI27j%jKH9N8J&_co-|_gERz&BDWecKziwhpmCZK zj=+<)sNFqKq@6C^>7oAl+a1_Mwj&<%N%>>KLXGbY_r}`@@-+bq9tS@Y+~dpNV)2Pe zya9XuPEvWx$EZSW12rP}6i!$6gdDB1c^ZeGm>%5pXFJ{)9Gv~X{{$TF|+<%~Fw&~S3w)FYj=d^34FRUY|&F@4P zYQ~!MeJGZg2tP{W+E4rk3z2H#Sr-Z3nl5Y^#6Kb|vI(SS%mp-+q+mg@#k|o%g~s7h zEjnYHH9@28dL$;jZ()g=F)R%BPnjpoa|d;G^)IaS8S8Ja&sKd=!K8wMdaL~lhT*KX zis*K1*D<7QRSdC2(^xj*$YPUg#I;+Ce957Naq`meJC5f)$zi_T$YUTGl4XXsuC|M< ze8sf3*g==Y&Cu&6nf`JQXn}9zy$;kBz5M95qGC@+%}0au_D@Y+y+neacByU$VpGj_ zQwWHGyoiHoXc|iw9Y|PC@PMoH0h_otc(td9X7eXnnsok5-OD|iGqz9wDnLID8SbNe z2s7zPpZD3Fdnj(|u4E@`+b2Gg6H;VsbFjdP)@RsMz3~b-hf`o+I>9F9in1rjZj$-G z!j2y{c%_Ux1Zj`xhW$AEV!qv`fcy10XRXJzsi>IP48mG|)UDeAqj6JfYv{_>MDteQ zHGV^jFjG~$*5yOw;Qj1ZY)kw@(I?ak9!}@4wEjKEL91e|Rx*7xa41GN>#cJ4QtjT? zRu6_hAbybZ+ka4SmIHX+Phu?pax-4jc{jTg3cPx=1IuEDaky}N49QV-_CouzVqIX{gsRNJYyh)|%7ZRbn{JN%Q-XM`GvqZD9%`KggVyT{Ls{Uiz!RT+^*IBWPyDKAQH|yVbw^Cj)J8{H!?tAFyt!KNNH7&vz0A zYt7Qr#j^Oaqa-t-Pfwnec1Lm)7(iESCf$nfn_jSqa@4zLj!Ef5NkMUDg0Ued((={S z-Hozyi+D#Glvc(JiMn4BQN;!AuX~#j__nM#P~2=V%iP)4@M4mUJ>zi)d-N|HqUYUh zR-zs(ohV;8h|5|ekq9MNMuV^!@k_`qKk>J*wMoV3T?Vu;l%l*HIb*nF7N z)=GAR-!30mGIu=~YBH8M_;58sEq^okL0pqD4KmxpMn~3@wT+@={s{3X7x_mFiM5B+ z47rG8T$oI50CY8eOMuq(dSxH4!zUv0oibKipgdg1oXJW^$V;#!?FPDTdS5dfyC85C zyT|4Ylwtntm?ZQ5rZD;`mYD^uRG*TqgWc~ze?Sotvbr0_y%Cvpo3pd5 zag-)t!9ᗍ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ⅈO{I;#n`hKi1s>ByX=x4~9`h0rT>a{=z=Z6G^QN7X~%dS~MtrL8?Q#{@SdZmnsP+$eKx{5)MI`4C@ zegR*2)?TjL%*gd9Nv$kFIrMdd($Z2FnY;e>xAyucRUEm2MDX^gM%-~c!SeME z{AWkR>eKjTKMq^2qagqJlM9&%CGi*v6l@E-IaKX6F8f+{ih}d)ZmQ;4YiUzkB#0%Y zMPEHeudZ6N&XvZD3uhfzGX(@!H`6&4jj$LP;Q@pv5?SBYLNLj=`mu?Y;v^4EpD7uc z4f*_ya^FY3L2#1FpDo5#Os`Ee^uD!UX4LveIg6|L*dX$DdK4!$HTq3Q9317lK|O-7 zag+FOa(NtYpVBEx()9SCqTkq2^54l8bzl?5gLyc{=~=Q`@=_>9#Xz08<(1du=24<@ z9gvnn`nKBmpVz$ddq|nPG72F}0-)M9ew8 zvZJkS47Cx@^$-SU$VLNun)EoqV%fCif-HX+&gK#SllT~PXiWoJqtpEF-{f(IxGO{YI%6~^ae@yb;~pt zDvb&uqX3I%dVgo6+zi;Ahlt1t8z z9r*y5nkNrs`}dWUr^hY_xZfj#eE|%$3extgFMAjOpEFW@7gc3@?>)9IBRBRMA7g>a zyibOY=Mlc|o;JlsL+jcnl5b%9H%Kmp@1lXYJtO#j@3X@DC*IK3tg8julLDb%9W|(j zhibsTu72)(>*~9r|HATt*`1?>H{sn)@}ZvNl-VOycqwDJExa{EBjdlCslTRLMsdd8Oes^tmGLpy*>xO~y{+0bXn|vZkSa z&awKgZyF}O-u{xZO*j9S z9SCrbJobfw!*{+EZR;;)m|3|nb&0N{b&qV|hG}_*(XFUieBW>&YU-{4{~)g1i7)5Y zece)Tv7vKilI+ABRyQc~DTdq{C5ha7VSQ_+S~aY8c3KP6Oy{)gEmT|@k0f=D`j6|3 z3c5U>roF1pj!nzCgmSYclRAgQNq8&aunmj6^j9gU=eIE~+%-EDfbqDW_l~EaLfsZfQ zsixiwrn$wBLPSY(SQvG%QY=mZV^K9r`g7eZnX)%zQ61n{zQS4ETQkn}UJN@x(Z@%m zrHI)&TvECAU%ct!O$3-uQc}ju>^CH8f^In!fXvL2okm=B`b7Z_R@90f+N7ByG0;H# zOwU0SO#{{QKJF%DT?$GZ*?IY^J_rjD!)f;+>>K?`SHcl-OJT5Krg0a15B~Plqm8&o zV}Iou$ZK6?+gw~I2ES$RS&iSehatkIiO2e zC@Pdd?;>F7B`W%7=4w>*P1}`)ezXl#r?rqNPIn_iEEN&-7afTeQKpb^u1*bnDU00O zu=|V&ocaN;t;XK)WHpaV32*I>Hc=T0mq?1QAW+-D{;kTbcrGPeeWo36_H85-=jwxy zPJ1f`t?F{XV0L!c=i@gezAXI`ujcqIdoY>>AfDD0_rP3FK0&qZsSwu1lety!`DuqJ zu^|^3c)W}S$ z^W-#(v1m{JN>K1?aaiNwHxOST)82^bc{wQfLx1&e3Yxm3=05!#_msVkXZIJ@}$yn@>xNt(`Am!QHuj4&^uVXLG*L>FyePX5 zPr;E@T$3^o)8@nn%jT)Lz@%*b%{QdC9u$@t1gX zy#Y@`jN+55!#cGmv(*70hr9Ik|lTY#?BJlEyuesexZW4}Qe#Z|DBeA&V^70!}h1$w~%*aJX{;rF<{#yIhBKs#Y(@;Ukwdep1 zzHV#x$fRn=$uMl#w>3EqEg=Spj>G*L#aD^nB=) zG{lW(sg+vkR%m{$-WG6H<+u1ytePLRsfx3IX((A<#@!Lm$YD|&#qfY9)^`PwB}k1@ z`m3u(teL;=cL-78Yr9!Xtu${boDapt%sI@W&%D_H=>?gPPDX-axX{OCIW-2W^_$2L zy)u(m+hjoBgDp$6umKVk39#M{fwlHZLqCv=twFcow!OIrWE$R|9Ge$P7fR10ZQ!fF z;@hm}i2(5$`2``r4=T!efPJO*EI~C-O(D_Zh5lWoYj~{stEPxvV2=1DIN^D} zJHZvOc5V#t`lS9tS9B^K$B(nsdEf6+p;rf3v&1AN+VUCgZ*7DqB}g|DzX%_bQIcrI zP#T~@&4ULv_?iFWLHgmzK`-PF@z~7@%fP_S>b_nJdfmwl5r_mwZmzmsR!jhLY(VKh zuW*>G9ZP(E2pS(zHZ@2l>|T}$k60=*5_VnF#+Nh&_=IB72}%L0Wd#cbvOK~G>YKk~ zcmMu`X*J-CxmZK9cQ*r`X94b#lx6lbWPKa~k)UFR7o~0(FMUCLo33_^KRYpC-86^m z4E==LiOl^Z%)-#^=X%Ab8=r!~RR8MR{?#`osfx}f+E9GBT_FMj<&i@?Ow41Sp{c;k zRIaBeG7VUvG6X*wN$N$n7Of$-s?Z30Qjq2rIvkk<1g&;YeMgG+PhiSTsv%iZ#4=(LeHd zIbt@;6q@1ReOcQ($12O}G-T)19m6R&+fPzM94g?G-{kVXWu{|~mtdFA1N+5hmiyK2 z+zMDal?U@CT?Tq1Zv-cj_0$$o~h207(@GJV|K=wtp?>W{U{ z@4GLaV!c(u1;K*0dTR!YYo`Yv`-$P6yPa=4?vmhMyNKJm{RkxGDvvtzkaP5LS+BL* z9>Rh3Z!xgfSI`7#3uP=*rx3;n;pIy#+p%eG8U0IDEQBZ%^l~eEe>$(ih8Gc!KFGr) zE($f19FmvU{TSD@B44uk4t@c^l?aF;*FJUP28fzv;$+SJyWqU!PrFcIPmO2zv5vN$ ztn~Q?1|Aj8ZyQEke$4AH(xPvRZjc0ALuyzkjjY;T4(>V-u!2J1#~PC(a00@Fw;s5= zng_ywv)$+%pFGgso^lCMs{Ng7x&M^5e{BA>W?){3_D{+TUj_aJ;nb9mGCo%tP*|zg+jJdjFVSuL| zoXh*D@oB86PVZFk-6Hd`;S(=$+Y$0mY$xs~w*|t;v_V`mB0burNodm5x!+wtwpoYq zVrgJslo8BsY2nRuTMW+ZWk+X`K_>)8LP#*EJNdo zcM~lKqcgTb&{DCjxw=5UUAngO2Uu}(K80IdYgRrp8u_&S6GvhGK1GIh@WM*5~Z z#Y97-DQMNrMe9)dX)B#*l`vKuMR3%weSw~C+Oe%3s^`4EEz0~6eXFYN>R)Z$LTO~F zOC+^Z)R_gaWK$G(4SZwNuNkY>k$V7b152H{dZ@V7Aox#V4bR@D9$U*!U_G8}Cg7UY z-apF?Y}uiY>$FQiGrSx$Jcprh#qMEZ)1DfYM5%sI5W8U)BT!N)u1I>$nQ@K@g~Iry zs6%DUQ`_kIW_=ATyX#Wjsv&Q*_3aOVe%k-Z(tI@^PLs;r1~k|95JSc2MxCI+P?{3O zH(K}sSeaALurxk^;+!8aE*I0xg5^_(L-q)N+JA4)6b=;fOeL5HhGiY6<@K+`@gAoo zMNZ*m6xBvj#?@Z??UcBR!A&mW0IR6-_qU$&$+$Oh{<9TWen-Q@qy`LdDUIyU_QpLE zAk;tIXMoV|YlYl!E$sB8vLs}KzKjtW)qUrZXN6w)a~@Cc$2sW{Pke`2d);DXaf&qip1b--;61mV+n&PJ)5DRhdnj!6I#=A?Y2>ItQXk zEu2B&ppX!1-r#@hOUB#-xp@R9D_I$wX8%5!@p@Q|>ML`&UA{Le37_fTtP8VRSKM51zIfh1YzhWO{7T+Iv5GwE+cBX=r}o;^qIph-+Q?{fcW%?j=@xnd9^tlMd@^ zgs$GN**NFpPVhlM$W!jkJl{3K(-)aei-wS@3$tZq! zNJ;wKbV;y%xSc>$?L)8uZFeIHthf%h8x*FsYveRFXxG>~;G*tpY&GLtvhfFQB|C}Z zpZ=!HvvVd7U7E7P;&tsVrIJ#{0p+}iIGa}5={FLyAiFdC<7%zN2z6HXb7X+j!p2SO zP|@g^uk`N9B0Hn+3;UZ5kgsPiDwlP=8QXX<>9}1yI+&>pvH4XsS^A2Zvo3dMc#=k8 zJRbH3Pn|sp zTY8qkLhj_%jQ`c{5V9fzJyz3AXygVuf4Ay|(SEZ9V{MVb>Bzi8ksy}mGnrt{cjg^% z5c+3G+s3!zXzBdmetM@{YmeBQbW9*#A|m4L1$q+zekgmGJ2lb{2lIgK{VLwO&ujT?`G4!UEzX^0cI$*qV9qVIT$&lM>r`%tc zTW$S`sq#6-K6G4`|10m}Ku| zypu6XpsOx_kzZG%7e8vv>~myOQ7LS?skaLOi&;s^i~zYwp*D(TP)PIN)n8CHMygs8 z8lT2z=3<V0lzt}ky)>e)ekuI6!FFc_QHZooO&S_}&=q<5pgpVcqJ)O^pE2NZnv z4A#b*ElbQn6)%e&9M(49Poen;^2*R0bQ#dl2aOU!;ZlwCA(Bb_3Xl^hZU7N-3{lx0 zNvdV~Y$)dsE!i1Knyz4gCSPHUF9eziDLofKaCS4fCH41`16eY@uoQC z2Nw1h$Iai8p53P&n3GyfyOtMg^K1JNF@PRkib^5vZw#2Y$ui47>kmFAo##J&RFdy~ z1s?pkV(qN<8hm#KS`RJF%XeD4DLoXcxY@F6bVz=N;jW+AqPe=TSeR#!Iv4yWnlC_0 zdwCEMNg|_?FE>${w3tjcS#Pqz74mD7GVgiXN37Ou&MpZmox*@LA^t~x_?_Hh<4|;FhJynk(+bxgtyl(cxF$Ka;raMXiR~uJ*-H~v4 zAyN>NO^Er>--+z%jW1AFPfvcL&+;G%ks%skYOv!&m>uvbI9F(=-w81!)MguE{cA}Y z`Z1ehBY#smmL0rp(a1?`;63PUMbqCK=R*Gz*LBSQ|L{$T`uP7p_jJg)>vKfRqt4V@8@eC_9yjau}-1`lKEQtDW){dGmvCm_JUr?&1yD`_;#AHX5nQ zNz#X!rnJ;lB~*VjxyrGQF`JR-2(q=q)!TEDwIcHL2pr~U`cu;2P&xb2HZ*i-BpE60 z@$Zo!TT8><@gvC)8ZR_sGmRrDeq(F;y;t0aFGURA_2pdT%19w!QJ#jJaC$m0ghnUF z7{$Bo_r~TW`SyE1P2&p-F)!EvIh+?|6t-$ctT10jYx`;JaDRyjYn(NzN~=xZNZNZH zKLOb&Ql(`F&0{Ycu;rK8Y(s5WM@L1jdh!y)4$EmZR^$3r9ajzK*38PtTkT+g&wn>^Hi_PUvp-y-3VqjtnzMUi&2<_1R{e79T|K!2 zW9G-jlDgI1SuOuQka(`EE~lc^jJMf#KgSjt`33lO|j$G%J9zmdDPHQywy_M zztRs=8MHK5_u^2%lpA|S18mh@Frk6j6&G1H4k%-+wjLM0mN*=5Gq#nZoOwbS5scq+ zf-BWW0R9`g@|hqy&9%JC^@09)>9b*-X~*FHbP(!!q`nc&LB(PUaLk?@#}VBH`!96_ z43d87BKj+5biU5qma{oe(6>mt))1G?6w2rBIGBk4Qrg4>?cDYz-L;G`YA8!flxPra zINjt~PkE1Q%cJc*d&7l~rsNr)pnk77@;bw-r|(4tS(vrii6kY0)I+i3yEcrg314c%n#%ZUX9W1%xgC{ z)+w^~*BfxSRS0;>C2+X{oWid-4oO*|SBhypWz3B10k5yBG|>sfa7KGYPad82E}o-@;N|~_XfAoE)t$rvT3jammo|`!Q6#6ICH4eepU~> zMNQiACs)(@Aedz_OaQ*@g#Vn)j@{?xMa%;NZ8(KmO}DLfATg-z+BmxCawoS3f6o4M z{=44X$?AVC>Ib4?`?b4t(=LFtIRsKUJUePgSZiynNbqscHyROi%c_OPur-L<3g*Ep zjTa9O!e_n@DhiNnxhA9kML9h?ZVCQTQ|_iOo3-dUb}Tjgkfw7z?a}s;Fl)-U!*#CT zfXlFjG(7w*m<#4~4JYXqsd zFRxc>-vSL9j8raLX~Gb6U;vnvSF>|6p#@mR_D|r%KO4kdl;U9r}IK?k#cI@+peo1B-A?frP1kSKz~^xqBT(4kPcAR7Lz z_e-^S|>hpfR*y zA+|I(*y$OpK1uo)HxP{{rc4;+b87wAk7xUqr;Nl8i3zHa<_2>rm6 z4$c3uj2*}xfx4%do`=Ok*CNO5BoUrBPEVy|uGkL2&610BYc!5G9_yE}9NIwSYy59Z zSAfq^&A= zk2skk6Z5cqc$;bX;It%Cf+V`FMC3;tL~6TCwlHZ%LuY_xKuUEUrmPUS1&UDW=5M9- zkx}fW6FzlYH}#sef1F>d2aetPL!f7{0L!v5+b|-QHJN5DbW)Z_D_$(fyl0 zW99O=_4y$iN%^xyx~ry;-b>gTvyz5{0dZ{7L&av=ve6aVAR)|N6|y>XYdAxt=bX|! zXHLT&=9a}IYF6BlFPMB(T>S^y)HRwjmioD9As)Y271dq1oF$V$7y6EogXCM(0vm9z zJ<3nodOW7Cw*)56bL1xZ4^^SI(+H{?*4Q*5%=O31nXI%9_|M27R(kk$HV@j$19_^^ z!19!)h4isW#v@S(Jo3LXrN7Y%42)t054ixczUj377g{@Kd#QCLVfGSSE*3+~eVQr^ z+!iw&{oKNc*XR$Fk6JgnB%4}8b#xKo*LVd~U$q=cfk29R1vi2fL17fT-Q7)J*Oj# z&#!l=iFsWs{pigzH8GxXS9qD6E@f>wcGiK>R_vjv%7p>k>AvW>?I^Cfj?IjZlM{u{ zI}>EdlFGMy!|tPyeP)*K38P83spuG%H3n6<`TPt5?qu)o^#8stJVp>?e)4x~k1G}3 zgJ-8U9~EQp`1@x;H+=}FQ$y!p_fBmEx%?QgmQJXy8;GYA_nenn1Ckp*uf(hHszy@@i!gtkTEucfhbmrah!U zqX^mD5&H8VD~Q)lMN{#Vt;Sk{qm?w-lx=TX3|;z?b@ZF4qY9@2TApl3w_CqBACsWfsC`aGy2=U3A7siKeDaBgKtB>oI-V+x0+ej6E#n z8FdMTy9<3FF)`#$2JKH_6vAs|%7=T^71E*eB1axKiqu2xG&S2N<{!3OVoJFv-FEHY zKi%1POW>s6>TX?L_rL8$>wT^NVuAFw)+p6_Fj%O$ zF8~ww%%)F$%->5#Xi+Kneq?h;4?3h{|Ko;epu7?DUacqDH&F#k6?oJAa1_!E(u~}J zov~rkPHqdqo4lBTx9L>t5g^n%J(1f8ae!Z3ThH^ncVAzA7=@lhd>6WNd+mXCST-R*F;pqjZ7PP&*U}_wn5FJFZ!7rldY4?PHb>6Yjq?}N#-t$ulPGMh z{}p+(CCJoUSj)I%%4}P}Z`vX0oxGIEWpHc593?6;?eIo}Dp!oI*xM0m5_RT^`Oe^+ zJm`7uci7^vREv%98455)z7KMWQauTq*@=>bCBbZKz1;o4N=m)l4AFBbiBnn@`_fQ( zsaO;7?Hgiw&|{>IvS8~l#1?p$Ycjwm)C5)Vbj!iUgoY$F=X*+bi2Um*yC+S=OHz+k z?QDYiQ@&L*5%{**4n|F`&Qy7Y7i%>s!njR6nTGjj59er;)G(y}aEUH*tjhuKQDr<& zhQ+O~J+0Z8bcqZahjty)t->zueVJ`=UQ-al7f#zTs=BrX-6c%7FqcAR0*f9`y7qkf zfYB&2dCx{ag&|zOTrvF&|D%ASZ)16IBW@&SR1=%fyh7SkgZ~cTsX^RbP{Ng>LUY~X zL)(OLmkJ{|u^;CEB(h*Dd>wkfM|-LzvHAx<*c_E|Hu!mgA# z-dTDf*ag)azwR0yxI8(;N;GVywor_v1wTUDzoZhH4HJnDLAr;$Zp`SYjlVI^cGt3w zr%j+xd3Kyw{PAliZsfg`$OllGfG+#nu@X9f5wVb=T4Ps-> zI?)nDB{Yf?_(%`BV)Hd9xit84#4;U*-ZwfYjaW}O;cOK+;XfhI5-2}qBSGG<5R`3- z_+5kbXMILtS8x%Uh6>!K3ExeD9MP{KP)pr+*7yw0sG;W%gD*yq%ghKl_H|loKVT5+ zkp;LK?oc?eJYetI_R$K6^iJHz!%l~F;GmF{eSBfQm#Jn$RJ&nHouN18JXWxd18Q!z zHf8PCA6~|r0wkw?-^XtzO{1)Ec;wp#7h8cZ4f@{MSES!j=!qonnVJE;Q?TaR-0zAJff_~i*=(~Ro9_%e~Yz7k>9Etk9?EV5gvIk)@WXTD!<*Q&g=-{)GY^6EB^9E?c;Zr@xrU^mRvq|GlV5(>1`{{@cdEwf zZ0kq2A(G#g=Tt^x^xok|d$4TdDxozH34IY0FM@7`-EV#2{K9`v7L<;GPff|NW zZT7{nrD{pdTjf!ULRN%hrFj}#F=%cKn!G0F8Mmn_1w~c#VBRAM%aA=bx5p4}c@ivP zg?lE%>l;ueM-YtjiI`x9w`NQ@9-w^3J?TZR>PsFC5$N&&Sz7cNHR4@u3lrpHsBo** z*Uhft0h~`+{pwt}J!QIBCa&ixl#R#Z5!9|E`*zDkqBZ4BB4+w)g47do^3JDRGQa1( zQ!W+M?vb`=@Ou-SJMOd=$BbLz-$3U4^@Y5%JW?c#fqPimXv5+ESs@^U@#^n_`*KDW zWowyVuYEZf%m+^}KcM=Zdf{qc;SL<|revV{#x_Q-H+rT!#fk zz*b>$e*3YTh-;X%wAKo52nj+A zb-CM*=;Q658YYeMFmGetNN&9keSUD?eCU;7ejLrt2UKU5H%QfCYFi@S5W+ZP0lbs8 zNwr8!oT-I~|4%A*4`HJrFT7o?H>MLKi*-6SN|*g>d8IYeMqHe{cK^B;m?;%rx@~M4 zzvsY0{vKKqRND15EnQW}mXe|RYYvjWx*{T6*Kvsh+-7I>_KQ9K z{C-~ocb=00JC{!)^&|`va{pqC*H1To$G}57Oy054GfuNDnw)~4LgDpe_D$}Q7nlL( zd^eXUe6RFx&%t}E&N~8KcRRnVIo>+;ngs0mzCTI3G)Vmhxxe?Cdm}yIY_b809y3SbD(JqE|c3XxU+2Re2ovzgcTI;@r zQ_V-op$Rs+=W>41b>_U#wxL_L5@I^=WBSGYtaOdG)h^*RUa5cqUGJ z!FpQ7i*jjAzeD8!;_f~0QV;$L+%Ey^r(#_mB0pEl^%Z`#p($^BBO~~?<9h4~#F9J( zuEs$rbl5{7?D%0j*>41sBfe_t#oB693ikW82NBbC@1sd3D%j+q1b4*3v@0WGqmY^& zhQ5e5izMiYKz9i`nl^{j=!%#+W7R^ZP*FY~__8s(H?!aK{5J;z`mqZ@!J}Zs%kYs- zkcNRr7+vrEwn%yDk$wm@YbT)C=|AWJz@D?0IRCP;ko zf0=o}kK4n9zA;%yR<8Gaw$gDJ7ZFvZV<+-;37SIX_p-iz#dDi?8V?2R4~ng8oBHC- zR*||!7_sV?Aa5Xh0lXFLyC5y>4EvEYj*Y8K$qoD%2k?A}5Do(SA=NI{mHWP40q^ko zP|fhc+ySbF7;7fc!yK%ZN~0z49_nAutw?jnuZ3x@L==gHIg$p$E2(<6$A6FFlu2^y8xeNdKZx7b=j4GE(SPHV6jh(){&)r)n= zkUxB{wG>zwdF9lEN?iR%Ax zWp?yen8;`yHHqG8N3Jq5W=3D^08a^dHrJ^``i~l!wh%d$l%2EUdVj5+wfbMh8XWgC6(7#Rq6z*<7UN|0%;*BI~$>DDMne? zAmVT`gW>8f=!Gs+j}A`P>MFAQQr#Ul8G|Z?%B29(dG_nY5xNhQeJ@ zCMBEXmIk7qGU8LNhqcIeQ@C?oE;M3mBwDyro>8$;!%4PZ0oL430DT2H>LT$;;e*W< z;A`U6=q_T`f|wj_L8}Z&ght4B?v!Z(C12V})uwi7)9PR#`;gXY7~JdpQRuNMp;x5Map{aFv;$?wBcZ&u${!e6P(?bGINq8s5R`Pj^Vb~ ztWQ(LtO!H(kb6=W=Q?CRS(F612(wvFzvq_?+}Afnz%gO^BqjT(E%hI^@#=W^uC239 z6s-u|%!8$%!#2!WR}Kl|zgbmU)}yPDN0xgU7(^I^Mku4AjQ)4X_B&<~Y(g=Fqu3h6 z)uBuM8HhGjrta&%z;w0MBa)NVG|m)p)6$}4FvJP6-^>elMNbI=Z__jb?@ORH_M-Ee zE?qPp9?|l?q5cGT(kS32AhL9QgNKLj3g)ZxywL4>-1aT6thCe#RpR~kI&vFfL!OwJ zg$@##Gudm=GIcV6&P8YOtFBf4DNz%=wtp8UL0zb=MQKk(Ro*f`iFt~}yX>HT_L`+D zqJq~ip#h`zrb*kF#3vVqc3|fKwVy(kM2d-W@C@gLO!-Q!7!=tWq)zzR8SG*qYJ1o+*_n0D$3Z;M@Jwphu z5Jb&>gk^R;#a+<5$8sxuR`_-4lIH)0PSME7YlTY5Wu$a~RXqQQ%E&-nK59-gUbuug z4u?=A2~X|Wq)D~vqVciyGBK#YQN3%J=yc|Y7ito{*`N6Z{|-wUcW50Zt_{U7;Q)%r zNz8N*!w?)ZxbhY3p8Ya8k4c%Uvz?wp=;zdyvi~m9eI>oP`QhTMhsNkCoaT!U{k_Qb z#Vk=w-m<^(cBk*=>J%-_wy2c{CR8eJ@Q%RJ?6||%<>=?Z_ZF(;1)X~kv5(1;lg|J| zWn?Q&b!ED@1Y(r7wy7sotf)XIgeO&i*TuRA;QgLkMO8Jrt7{vV*OgN1k8a$$F2~)X z^%Xv-v@DupLlY==p7<3a|14~pn)j#|!QQsD^t9862pSmeG>MDZ59Qs}PXuu1Cu0tr zJ5tv{k*xfgY}@bN@4ssbyKX(l8K!pnX+?e@;C=i(qcnHW><}rAD|_ex?JG*5oc@;V zLfZ_Lpn}HuxGOP*2X$SaSZ0@pnU6cS_@o;Kpz3~g|4nB+kMf) z-i@s*ZM%xjs9PrtU!{jdSLP?-xXKU8&LAEoke@)?5rz+dep4$Dap{FtC@Z&>)rn)5 zk`(D%^W2_WITH;bm2#*dDV<&&)CKpgLl@XF2K=VnfbCGdKMv;@kEcM8&HBlpf}0s9)NP&=zA0Ngg`4 zqx)a*7V)Yacab3utXVmkHAXMZoDxU(sKSNW6NIQA-^rLxPYU~p>flWOG)ohL@>4Fe zHF621TPEw>+Xm=v3a$L*d{zf^inF?q8U(;PC%!zbe2s7TLNk3+kt?xRI1!_~w0Yd( zru>xtg-U_dZEkYjAw>%~>*~@ox9vh4937cWrvIU3U{K%p?Suh9Iyi51v5qA68SF$g zJ9S4ra(B#Mb$tbe$}{(kbSnc%^ay3R)UL;tqI7@4)8WO6BR&=tw&5Zpkj_!?a>P|C zKtcMI^E2N4!wuH0M7rjRZ@Y76tMh&1K@iFAVm+7c63z3S0 z{Lz~oZAbjfX=@08Q@&h}pKu`AKOBv%OV=Kho>k*Xu``EnYDTiuYjk(=hnK^LjAoWL z)Vj=mUn&l`#NI{3ls56#VSYJM9ti6}w!TyDJ9*A8w!d&p_4be{<>tuF0x1$MbmUgF zUDnf;KTo~`-i%<;mKaiUE6D5Rxk9O72Pi!a!M)!$M!d(p%~HK@A58t43K39*=uS}+ zIkbvHJNqH>XF_96eejcRx%u%v8ek}Mr*PULX^LLLVe5~(9iooYkReCiM{kRwC-1m2 znWSd;djOu$#-6vy^>%lB5v?I=qVX3ZwrzA+S-jKGh{s22{)j<>rv5j{n+VcW*hUyw z;9g5!Pp?GUz(!m_!J30@rpnNtxy^e4$mER;?a75Gx*)_Ofq>%;3a#cO7Of11E!tA_0oZ>d+78)us_1lo_9Y$6)c}OhOf- zCeOm}QorN6!R{?$;MWgNgk|W$;$2z%XmG%DOjm7dME7K7kwOtbR+km2E!-?`e}bEw z*y2p|d7E8;&=-2(a9qh)B=MI<4)+3DJuM0&r%2yR`s^v4)0?%1R6%`MA0SPL;RAtj z?V)UrQCNCR`?IAqNtL?wbktAyf1Kwo&Sks@%=eeCAd(+>U(|xvc(>}tBe*R<&T&_**_XJclXn^|Pb?ydMKu8BSAjk!@9$Oan0M3xt`*OqQ@5BHL zcrL9nlc%f<;BwVyp*CYX7XcTrJ12hx;T>wq=d@LZ`H_qxZ89{eKDHt@__Lw?IE6U; zHC=M=@ph#DZG{Fjp?5geaW1!stv1r@7>F)!Fz9mei?VVyI(S6u=ThzLpc~0Wge1Wr z;|+=cYp`RbaNr(xqJ_OxHwqpkJDWXi-SY(ztq4B#rwQ#}VT0N2j9aRtUdkNdf0SxQfckd-cUh`8+ieA6_K^YjNBypaUtKrx3m}?5c`l~7Q&vZHrMrd9 zbU6chCNjfGHE2VMK58f{oh&jK|b_YhY3ot1)F=myC1(?MxH2AUV#_IJzR~PUh zfbC}p|30^~JAr5ge0;6EUKhns<9IE&0zn8o?m}AQx--}GJU#MwO)Ke4DD`V{NcTSs z3ty`xq0WaMCkgt(AuJD32r*+_=imVA%UTCktk^%CZ^v0b->KftwrWlA{O~ez&DsughL8v&$B*)2Do@#XmKsq$b(#pzepWl@w099Q@1goVd9K@ejIwM%K(QlX zm9JP77`?#b?rz0$a|K2mn%iVLUn3#S&h*)yhsY<_R5<03EpVbOYfkXjXTLezx-*tRgbp;X8lOIU;w4-D_@}%*JFkx` zpoez2m1(}{+Y_R$Hlu&TPzwB3vT3%)`r~P_4jD{ zYj`Qu7q0#F+{pwn=P7@82AMh=BbWy8L%=u$vIrg#ZbQqVe^$8>|TM8m?l{ z^YCbf@a+9~A%KSR+UcBx*0U^WAHy(@N``&(i}hHaKUj@Mz4RuS#O=-DN<$Ub<8Aq) z7y9{l!5rI8j+gb@|H*V1#t$^?X+5>%Is?g2D%tydrN*e&f&^RDG)CYd ze51aQNSGe})B4IjjvU zpC}wvpt(mRHKG?i_&Vl(+L-%@J(PK@^f_jHI5tPF zc_i#C=G%XUV_3K$*Ldah&*q62ZW^lQrO3?yP+17&=Tweb(d`+$D*}O-AErt)7IN48 zKPEE#<@%)Eu_KNkIft>WpBf0vSj4?UQ_y6@Qfc+1i8U$)gG#{7oWd5#Z9-QCgetLSdl=M@@8H z|DoWdM_k?;oT{SZ<^1|4XN6U_ZvVY>XPUv{Msv<=au#6)G=$--#v0M8e~NM;Ce4+C zzoghKGW$QlOeeGE2us8$*p)+9G9e)pZ9{Kp7$jT~d;+HI?Cd(9dt1M|`B4Pi^dU}I zo7B_OQ_R|{M-EamulC&ER>@flKHrQcLSH-CzjxTxc{w4!Gp3$WE@JX|(O~$=oJxGm zq?g63m8SoXw$8FEjwsC5xCaQXjXMN)4-(uHG!QHV0s(?G?ljW42MDe~gS#{|!QHiS zx8RLjGBbDGnKidQ)E}sGs_N|h?EN0&w|G?*)Co(+FV8AYJ2@8cA}U9Gm%8J*lA5g{ zrjfW}P9d4*i|vmn%OW1fZI640HaNyq5^YHq!Wn-N(OYXIES;!yZ4D#aAJ?Og~aQW&} zH;Z7TIv)Ztjd-*@67j*Os zxI+K62V?q^_rZX(zjSU>W@L4i%=8Ry4nDq`aQRXXFEuI3{eoaNyhRO0!hK!NupYm~ zCzZH>qZs2$J{7gvHJP>3)y7&PBeEMh%u)Of#Hfx_j`TL8`);Bcj8yg|U*#2Fzj}9O zC%Eh0Fm`i>iPBtMNgnN4nDuYENoxv$-j4zCAx!ehsYC^)==IkBX{epfDcw&=fLC2# zc6qvUAza4>4j@5gW(1f8%%P%LMxN+s0~vWjFDs>lvx(JwE527f$23 zZGTU_Pxz)g_H6ut^lV_1Ssr=-`&RzW;Kb2s)ABEms4ul?$AN5HZ3AM9fLwUFlQ%Y| z!RPt6y5zWg0z(iP7F|1f`d{EbSpwv>*@rJvF~~P7mXY=&>WyJGWa))0@=j1%_L-r|g1ovZhpy5!c3 zqRQF##wvcCTMar`>yQ0+dV4TAq-ihyZt32<%#%((UaU#;B$QiIqm9`5{IJ_vQeLiu zPzhv3!B8cWyOC_ISRoQ&KmVR5zGh$=peeP6U?WhQp2#|&EJ^2l^92Z*y^t-GLtP+c z*S3=;hOmHpMNL1a;bnmny&d`ngOE}1AfE~nCgOPWd90-ig+Q_0Ir9|;9d0z&VrV(b zyoeA*>-7v|!IGQAX8}c}Wpd<_Buy3!8ijA))4hBYdy8)%RW5^C-8kR11E<2`vjQW; zw`0z^tfxI0@F{I&gTs!a&vJaGSZ?W$k-*`~3KmJEebW;>Wwni07Bt-1A|Qc+jIzk# zZsp==+0F}V;K|FF;_gBZNwdwK4K(wEdVU`FNzD1CP?@BGpD>g^^o;mq-pEcDTKqzS zNwAD$$~Xy=U_WBflKBQi8vn*((XiClFJX*>%LEg5c1z%27`>S(WHjrG9biiA0y4N5 z66^m}d6PxONQK&uVL=sb9W3#^n?yfnSPB=SX!G54IuDRZT9Zkd={VT7Y1a{ppk(@V zdtTz`7u!Y^S2QGJ)ERC9&d$WtP}e(N4K<43vM$jzS&Jb1fgfH7tqWQKrJ zF@3G7t3}n74%g5Lxg+}Cd8~ya=_4tce#fhna(oqO`be}?wv3@!l=`?a#9QBhfZ9%$ zU%^k`W65l7R00y1Rtu8qJ0T(-r2;8KLObGK(AyV7^Y0V$w9U!^++B}%K@B3WsO#kz zuzJ)MA@`b&TRPgirZ#OZl62@a3NmgsrOI{Q{m^6D{1Vk;w3o+zcUNp6;36%h4FuXU zFm#J0h81#cbmIy$=AH6*EpxC!)T%tX;_(+*{+$?p)&|`FIr^stH`dC~YNU2hzhP6k z4SF!`^pjLzenO3yijIk~6P1f0){dn4eLh>kBVcgI8PdqSrL~vK77@XFIeezAbfPL= z?$$$oKzG*~f%jMlyy|luhEJ(2`=|V@iDkOIcEmo1=@av)7w{4MSpOqI`j;kp_YQD$ zdy_RRCKav%=X*H5vuAD{>GEYc#NVmTyI$(t4AjiL{5<{Fyq^c%y`aU4y5Xpah~G~b z-FHCW>xKaRMmQ(pXYBn9&8KthcBh+R8FGqNR6)uoyjT*P-Yn8Ac^FRDWE1geXA5@U zjtG+7B4`ZTO}vAXmOI+?9m9sMMOR=7wUpO}`fmYX{1QhhZ5+p|_?NNR z-^*JqcOD+YqT;R}&uyL(_MG(hgwi@Biy7A1VsNpXSY^ zajMMpAjjEn?2VE>yZk`MU|g1uK(3QcOLnu~0V+Altl`zA+#={>huPQu2(K4;}W7w#XhlRWzZ?DQ+V zTG2L291jaY2~zX|^+Grf>@HUD&Uf6uST(POm8qZ8an*PZy8n@iSV=q!#jxUsONa(3 z3&a=^5fkN?Er%|%>2K_WCJvNzF^RQInHb>>x*r9mZ!3QZS+bVj36N5X7Sdviz*BNz z!`iQppwCK6%_S$9oz}%1ItdzburpTlCBHUgm|$T5 zph>|q!C9Qk>bRd4qsQ>w#7()nQe`pe!t+D|8%ohW7#iWyqv3*`%G{YU+DhzmbW*`p zEk^7W&Nbqd!u6>?AywnH9>Mt5L&AoU2gE$I+OR^mID*Px`lDxS5@cLG^I>J2|PHU->D zXti6_#!06`Xz`rDaQk!+>8T%bw!?2a>oZpH35~iY6QQw-MmH0G&)Mo#)R{j=*{8kK zz$3CrVm>{Y>?B-d%iFIRWIes_Q&x!vBZjC$qW~g^#;4w-hmi-``u_M#@ZoT3Uh-6F z0c_aVT4-n0d>Dl;m8*|*>f7m#xGFYI$xqS|d6@7V%#!U%6WU<{ZgB$KS2U4CVH5BiKP|;|JWxM4 zF5wcry!W+-ycwCw6~gIFHp3Qvh7k6f#h}}?oLbFC>%QKaxprq?BZq7(0CTgTTx-ox@8`=glFFTQ$ckI@U{X z&XRdmgGJL50jumH!*7CM`D3qOYVQuCu&YRy^g-?RQg$X7-ftX^9FvW}&X<~PR-AY{ zwSJA;X4c#qTOqKjgzRBzgeI5I@$^qoshkwL26?|7wch;_Y04uZ%hiHvYi?!{U$OtxqBZ zVqw++FobbO84=5DL9qJu{9tt{Jr3_B&=|Xs7JS6}>WLADMmlu^%aZL21RrS;I2<(5 z)U(}N)@c$7!fu!tdy_)^&A}^m|1JfdX^*6H1*ITjF%AF9-3H+2OR<10av2bdlFw!O zGmX|ilH#3CGB61fGc$Me-B5%`wa?|KHTR7qN(aA_>iTq;C0=*?2yWhM z+>(_zH>W%1sA=y`t&};Dr;Pd7ur_3Au}RHp{1@w6Q^@KGJ9Diz5tE52%G=f=zZcRl z_(j2W#G}yXYH`8FSgYh5z`Q+vT}@g3gLd{0sI~V8Dvd<<$Gnzl_v{euGiYX3l*l%% z^6yV?e}qW?nXKU4=9^$nWS3Vj-Rg5|CF^H3UT@nQHi@&=Ss>E!kdj_X(OkAyVwO|j zLsX>IE^_l{vF2g^tsfJj<+O<`Kx;@9}{E7es;WiHhd47*Pe13pf)_?Nutf1Mv{tDWb6yy zAh*=a7e#MIN?LEs^VzO_>Gv=Wm+plOHR;Kr>B3(|9vrFDKI8yqCW>KLL4E1LbFfm- zPbi1k(YsFFe)F?%*Do$_pps)|y|sely0@P%+gU7Rj);Mm(o0&DKZoU85rXA&)MjO4 ztfT*vfKcJ$@A?k{Lh{satrj+W-WMvYa?aBFUj)P-=MVK1a0nr5j&>L^o@uCbTQ=xn zztLi1Xv=-|UZT?I3^1#|9}gwlj}h7?mhn?EsbR))j@Qes3oCDObNvteF5mtizHA*_ z*5@{YBrPD-__h9zcAKZi;P=%DDJ0a%qR?+p9OMHm>F%gTt$?7RYV~up+w`nSp^)qG zzXjlHH*E4&s}S_Y2Dmu8TnDx&9Wd`6-qa{#V`qTH^`3tRi`wkCe--wM)rA2+Z0f0L zoNsCD<$>&dQKJ##UYtAkeI`+3stxu0us7m4CLmQgjBlmgnpTyDW4y73()OU~37h2+ zkna(E_@8`)DCh<^{^q^f!cj!h8I$HFfOBQt3dixysH+y2^BPIHK}UsXn7&<#`T+)G z0H(Jb+57W@JkVy)!p-_ei72E z|M8MtC3f+hJlJQeE4E*HxyygqdFWw3WOC6qDU;ElT$02a(kIi7jF4I5$!5s#cq+&J zZ)QP$Ka#sErM8XUvuLolkYD|+m^060!xFB>_JywygmheprL*1o%F2h^<6Fx(@hs_V&>t8B;( zWl}UvgZAUcI%;_2@;Dw(wdP2d_&l1|HY7g*HeX9^*6}0+mGUP9i1j0ICH|rMm0kyB ztQG5M@~ArP;UpZnH0_|MrXn?~V^Y>!NORpOBVMeT;yr9O6q)JO5(pC(p+c{@oDi<| zjU|WPvW6`hXbs3XDx-Wbog&VkIzbt4`N7AORAJ=UQ&O(Re8^juJD{1Y+T2|h-gq}z z*7*WW+D#haQQQF8#RP0eRL8XXVzC-kD*4e*(DIymS z$|c)aFL!*;hfUa>ZpX3lE;EK4Z%koJ{H^MTkVhuLFLkZy>!hJcQl;UHftm59T6q#- zS~Iy;noRav8$}ETadfBrXuY2?Rt%AsmTOYm3$0NigNO<5@nk4Urv(VE^)ywQzEifr zm>E^fT4!#&M3f<)mHvwz(DCO#vXP|!9RDLb6gXgupLtNbvED#$&>N+$^=pO#KY5BK zn8=6^`)AfOS_*&Q8}?*9qE#{+3PIc{$F%6&!;`)&?u4oN6eSJI8OYLi$r-$tLe3Yd zzQi*&yC*oHv7tdFmokx<>#Feaw)tu0xKvE4S!FS|DEVx<6J$@$&&J0HD+X^4kmm_b)5BR(1#kx?iM^F|BH+YpwWwXi;p zDDzmp?)S2N;#k5W%WAV1@!E2vvD25~4Fo;M0hjUjT!!VNkt%xP%V#PW$d*-849dFw z->HsTHSVV>I{1?y+GD^~5wayF`N+576>Susy<$U?WjO{~_X`;EjaQV(H*d{%H?RBX zdI%feK=ngO=A#G5{{LBz>eSNznf1U}j|PM3=kn6=$amO=rry0UMy?i!%6fYJN-R+A z&Zkw9IAg_E`AA}c>lI4w7kJo<$O6&cT9Y4EkHr*44q*;bO+d?7lP@8R^2;+%qvE z4A+`X=^bmneYlf=*o9fI{IB9lbbJ$MskkqxlUUN&R< z39Kq_QKz9yOQd@zDU`&!#h_CVPOKi?wR}1aKERzpdbjX`d`S+XN&bw&1|G#EQo_%D zayxC-P{T10;)l<-wp=4)ra9_dFWQG}9Z};SjALy3Fc7&D0@Or51W`kJDf>I+XwrXk zgNGJ=dr>a?41aU7ak+$T{?XylJ)5t{WbC!Cl`$jaS&K6A zqqS?@l^vk;RtUZypR9!tn*0`O0s@Q)*$6y$izz!45oSz6j-2_GE3I=>ynk$(F|9Vd zl9c_FZNbpc-siHYP5klx1pTsIb=$)=4kLRn3ICP(kyBKN%NbAK&$fV(InLYqd*k}9 zntxDyY;xg@mmYQriIz-wuR&3PRc>xKl@e0HM~Y+jy$D)Vt2<0i6F1_L-xz5yof0V$ z+kGMgSgj61Nb3ZeIu0=e$Qiq{5R_*{Qw#n2Rr{-pwgOmnNi9ctR4rIL&i0SZEsmyJEtw1x<;5u7$o?H2%@T!SK!dSHl8{#Iug)k+A6No9e3aKf%$ zO4OY0OgSQM420EJKLv)j3vk$Cw+WM6wmp!VLF(`Mx6(*Hd^ptl$HLYG09P2Hd`wJ<08^;< zlr9IraAzVvCdj?Vn}Xz<{M)KkJxCr4_)C{+S^i^d+9kw5=2gVGC4WK^BQ;3r04*L@ zR?Yy3Lg2y|Z$&RdD5BW)L3#U^opdM)BXfLLY)Le(;>mldFt7Q&be#=a)OpN#Y$&&i zMGQ@f7xhKaaGxb!X5d9?WsjV{SundLvs&J0VG=28>s4D9DqgQLR$4rtVRqAfh>w|# zmGldl*r977(zi6XfoAUzRi{6=MF)n^@{m2WAHi=x&EP#W8ta3gwHxYC~{8DHmVv)Ag`Xw;wv*F6I@%@_C0Hv zfKOn!#z;V=#_yZ`ZQ>gn)d$=UPl%G1qrXkrOQC&4-S>tX&ign z4%e%V57gzs4RNP9hL7Xo%$aotN3}czdh@qIasg{TkBf`t>B+evgQk-tLWYY30&YAp zf;@m;aGOWBXigUPKv`9Ch-6{U?#5^hb?P#&H-mUxToxf)Kn0^e&UuncyIeQgV;bb50FJVt!j&#ZMGy{vWGA-Bn^ zx)HZus=;%UA{=iu(RjJ zx%@aJhVsYTK|P%Oj&j)Z?Dg_3+y%)!Ljq^f!OUFOoM~{-B%B7wJ}S~~<^mrw7nbkp z_=U*J@-vjuOq8@G`B%;75nO>j#cuOhxz3tYSgtsFzU$^2dozCoOcsqkYdp!o(pAT5 zPq-IRh9xUC6^hhWQhjx7GMW`w4B5p@f)wgFXFgI^!84VQSE0Qxr?~w-^Lc}PaL_(Zj=7$`zE${2y}1*5^p11`syYT~w$bR`y2SFS zuY756R>QIk2R8>cG>EPXAHd#B(QOvkrV-i?9aNN98u$LKdT&qNCiTHU1b{Rr`9kC+ zb-5K-%sV>vsoul{6n4ed{3Y4Am_{mJszdF2Nw7xdy;M%))<#XbY#_2EZ8lxkQ2AaD zG##AVIQP?xLdg?BZ(AQJ?H7zA(A4?R)Y>Vq0UfXXMI6P7q9YZ~Ju`s|?0Y^`{qZVZSOwz21Qh=jO=AuGBRALy5kPf`8}Ftv&Yv<5P(>&nP2q%YDFNTB5sbNWZ z_4yW#)Fw$i0ErIL1Wx=)T1<pGmX=eJprB}zGCcO55D-S?Zu z=(JCJ9vQX)(=j(x;$d%=Jt@Ea+p1CC8^vV#j_6`z>7aOq3Ouw?8sW_9nAq z>z3G6Y5b7sNf4t6`#-HF4{6*u%{j$W2cu`HG@vr4R0~{@NXy*5x9|pb;G%Ciw(6hj zKAxQB31`&naN!0#|HdsM9P7{YoU`;=NCe(Q>D=-$=fxN%OJ!!f_eQ-%8$>(k% zz$X0(YQtb?H^zN9-B)#fu032A_r(3?>xQeb9c-*RzFU0?={#-1tnz_qA%ZXmF^4Aw0&3k;2YMDs0BOGSo1yAgi#yHh<{GL2qbc4M_!L+4%r z`J!&0*?@85`TE`V-tQpub4j?Dk?T7NoPPp!Tb$F}pG04v}z+Oekw zOEZEIW9*s|6&t8+p1qM$SDs!UB#lR(Ts`K_Nr4KVi88N?;k-^Zh)~o1W{afe3(aL` z?A^geBe3mH4z7l$xsj&3zU2AC9JT8I@UVj3+$W_tks#Jnu-DHddU&iG>aW94SvFcx t|DIofTE~;f(77BqZV>)CSW_go&+)5e2>1S+9SAR%vVw+u<=am|{|8$7oCp8_ diff --git a/docs/img/createNewProject.png b/docs/img/createNewProject.png deleted file mode 100644 index c0fa0ee44dda27dfed4cc11b991fa1b298878a89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49648 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 ND9WnJR7!mc{C{+IGztI! diff --git a/docs/img/nUnitExecuteTests.png b/docs/img/nUnitExecuteTests.png deleted file mode 100644 index b975a238cd7b6429eb1356d59fde681b5f0c8899..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42590 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

~TOg=}Sm;jO|M(Lij_0@(-q76{t(4B` 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 Tr^rzt-atx^)Z~j~jo$nhaR!v& diff --git a/docs/img/newProject.png b/docs/img/newProject.png deleted file mode 100644 index 064438a349e3d455b59da82eabf3eed696d07a6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8736 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 Y*C=4fkm0BQ_YWCRlm*FDNtp%yFP0iA?f?J) diff --git a/docs/img/nugetManageNunitRunner.png b/docs/img/nugetManageNunitRunner.png deleted file mode 100644 index f855bd84e7b8b57de630cc5f912d2ef055fe4c0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19090 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 diff --git a/docs/img/nugetMenu.png b/docs/img/nugetMenu.png deleted file mode 100644 index 72f2436fdfb0b67d74f56ca838b952cfd060be57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19736 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 diff --git a/docs/img/xamarin-add-new-project.png b/docs/img/xamarin-add-new-project.png deleted file mode 100644 index 680f4480323b26bcb315adccbf8ac3933ffcb635..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68622 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 diff --git a/docs/img/xamarin-csharp.jpg b/docs/img/xamarin-csharp.jpg deleted file mode 100644 index e37c226d43ac3e8393d49be0e94fcb79eedebbb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86820 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ÿvc*pt@4CcJcb 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 A?*IS* diff --git a/docs/img/xamarin-naming.png b/docs/img/xamarin-naming.png deleted file mode 100644 index 7207b7dae4a17b2591f87d7460f2a4f14aab27fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25743 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 Z6gS&-GA+7i{&T@W@|&DkrHG#Y{|C=xjXwYY From 06832e5f96792d39881e1ae3d7a711a0528ae025 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Mon, 6 Mar 2017 08:41:12 +0100 Subject: [PATCH 16/19] Update solution file This solution file has been created with the `dotnet sln add` command, and thus is more consistent with what people would expect --- exercises/exercises.sln | 1893 ++++++++++++++++++++++++++++----------- 1 file changed, 1356 insertions(+), 537 deletions(-) diff --git a/exercises/exercises.sln b/exercises/exercises.sln index 39159a62f9..99187592f2 100644 --- a/exercises/exercises.sln +++ b/exercises/exercises.sln @@ -3,652 +3,1471 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26124.0 MinimumVisualStudioVersion = 15.0.26124.0 -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "accumulate", "accumulate\accumulate.csproj", "{D063D598-EF0B-4EC7-9524-1CF222700A29}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Accumulate", "accumulate\Accumulate.csproj", "{373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "acronym", "acronym\acronym.csproj", "{F3F868D6-685C-45C2-B02E-8B9A2F9E7A83}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Acronym", "acronym\Acronym.csproj", "{32096AEE-EB88-473F-AA6E-8DEF1092A273}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "all-your-base", "all-your-base\all-your-base.csproj", "{3B9B9B58-4761-437E-B98D-F94B142412F6}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "AllYourBase", "all-your-base\AllYourBase.csproj", "{AC1FB94A-4FC6-4981-AE6E-E9868223C53D}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "allergies", "allergies\allergies.csproj", "{7DF688C8-9CD6-45FE-B696-965B12DA1C63}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Allergies", "allergies\Allergies.csproj", "{33500D09-72CD-43EB-A7EF-B08E307610A5}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "alphametics", "alphametics\alphametics.csproj", "{B7B980BA-1138-42CB-9527-1AA7BB66C1F0}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Alphametics", "alphametics\Alphametics.csproj", "{59EED89F-22FF-4932-8A6E-3FDF3760EB43}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "anagram", "anagram\anagram.csproj", "{4D9695D7-B8F8-43E2-BF32-2885168579BC}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Anagram", "anagram\Anagram.csproj", "{47842EF9-20C4-4283-8F70-8618DCAD6546}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "atbash-cipher", "atbash-cipher\atbash-cipher.csproj", "{2DF2F8DD-D63E-43FC-B6E9-94215E2ECD5F}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "AtbashCipher", "atbash-cipher\AtbashCipher.csproj", "{ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "bank-account", "bank-account\bank-account.csproj", "{A6A9102E-2C10-4216-A67E-D5B3AF6D748A}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BankAccount", "bank-account\BankAccount.csproj", "{89932A4D-7A93-4F69-93C9-7BD42614141A}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "beer-song", "beer-song\beer-song.csproj", "{9BCE5F2A-8D24-48A3-B064-E52933EFDA82}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BeerSong", "beer-song\BeerSong.csproj", "{0761B5CE-3177-4A64-A61C-BCD0CA691C5C}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "binary-search", "binary-search\binary-search.csproj", "{8018A132-1A85-49F3-954D-EBDC8A2A6CB6}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BinarySearch", "binary-search\BinarySearch.csproj", "{70B93253-E2A4-4C5F-9068-1BD9A5074865}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "binary-search-tree", "binary-search-tree\binary-search-tree.csproj", "{1CD5C9E3-1FA5-4B50-8FC4-98CEAC06AF2D}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BinarySearchTree", "binary-search-tree\BinarySearchTree.csproj", "{60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "bob", "bob\bob.csproj", "{9BC41F0F-BB6A-4639-98A0-B04C11AF29D9}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Bob", "bob\Bob.csproj", "{879C94ED-7E65-4313-8716-1671B7C14361}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "book-store", "book-store\book-store.csproj", "{794CDC10-A8B0-4D95-B183-89E85035DACB}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BookStore", "book-store\BookStore.csproj", "{6D8999BC-C3CD-4333-AE7C-03687F55AF31}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "bowling", "bowling\bowling.csproj", "{5B17F837-BA6F-4673-83AF-D6AC370A4911}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Bowling", "bowling\Bowling.csproj", "{8116AB75-6EC0-4205-B7C8-8850B6FB7A88}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "bracket-push", "bracket-push\bracket-push.csproj", "{1E0AFCE4-7B81-4886-ACF9-7F182EDDA68D}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BracketPush", "bracket-push\BracketPush.csproj", "{9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "change", "change\change.csproj", "{3F9927FC-E00B-4489-80A0-8A2228345671}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Change", "change\Change.csproj", "{7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "circular-buffer", "circular-buffer\circular-buffer.csproj", "{F1832F90-E545-4162-9ECD-253A320EAD3D}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "CircularBuffer", "circular-buffer\CircularBuffer.csproj", "{E1A1694E-C809-412B-A10B-D556AEEA2E1F}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "clock", "clock\clock.csproj", "{897D63F4-9739-4BAA-A8B1-E2A28B86AF5D}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Clock", "clock\Clock.csproj", "{D2FA5E1D-399A-4786-88C7-14BB2B6A8162}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "connect", "connect\connect.csproj", "{059B4355-EA9F-40CC-B7E4-8ECDB57CAABD}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Connect", "connect\Connect.csproj", "{81620641-C50D-4AB8-A68D-54708270D2E4}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "crypto-square", "crypto-square\crypto-square.csproj", "{7C7DD54D-9E2F-4A06-A139-C874FE8FA6A0}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "CryptoSquare", "crypto-square\CryptoSquare.csproj", "{1428B313-1C8C-4700-892F-B4D1F0C1B92F}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "custom-set", "custom-set\custom-set.csproj", "{3A833915-014C-4763-8B7C-F72115C34865}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "CustomSet", "custom-set\CustomSet.csproj", "{F54007A4-3967-489D-A917-440B0D163D96}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "diamond", "diamond\diamond.csproj", "{61356A52-5145-466B-8290-7914A548A83E}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Diamond", "diamond\Diamond.csproj", "{657F9623-3E01-4ED5-A400-58547D34E579}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "difference-of-squares", "difference-of-squares\difference-of-squares.csproj", "{CC5ACDA0-D567-4C27-A1FD-C2A06C68E458}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "DifferenceOfSquares", "difference-of-squares\DifferenceOfSquares.csproj", "{3D4DAEED-3579-4F74-8A49-D1464083AFB0}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "diffie-hellman", "diffie-hellman\diffie-hellman.csproj", "{40237254-9B27-4C58-B0D7-77D664557E91}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "DiffieHellman", "diffie-hellman\DiffieHellman.csproj", "{BD4E4301-18DB-4DA9-84FF-AE187C5120F1}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "dominoes", "dominoes\dominoes.csproj", "{D2F79385-4B12-41F9-B1D0-E9DA5C4C2733}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Dominoes", "dominoes\Dominoes.csproj", "{83DEEC98-CBC0-49BE-9014-886B481595F0}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "dot-dsl", "dot-dsl\dot-dsl.csproj", "{68A33556-4669-4961-B700-6D508518BCA7}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "DotDsl", "dot-dsl\DotDsl.csproj", "{96666549-F0B6-4DF3-B0BA-754E650C54DF}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "error-handling", "error-handling\error-handling.csproj", "{546A1A24-4939-4F21-8F39-DBD75B603B53}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ErrorHandling", "error-handling\ErrorHandling.csproj", "{C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "etl", "etl\etl.csproj", "{E1D3570B-918A-4953-B41F-100AE9B2504D}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Etl", "etl\Etl.csproj", "{3712944B-0B6B-4465-816C-D88BA2CE2D7D}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "flatten-array", "flatten-array\flatten-array.csproj", "{C8144EE9-EBC2-44D4-9CAE-5E8EA7BA7068}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "FlattenArray", "flatten-array\FlattenArray.csproj", "{34A3BBDB-3205-421D-A773-B7AD42EAACE6}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "food-chain", "food-chain\food-chain.csproj", "{9EBE7704-56EB-44A5-82EF-8F45C98AD53A}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "FoodChain", "food-chain\FoodChain.csproj", "{75FF023B-1698-482E-90CE-AFAC23458ED9}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "forth", "forth\forth.csproj", "{92FF324F-14DF-431B-9E04-2758B0662CFA}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Forth", "forth\Forth.csproj", "{D0B4E886-3142-4D36-9DCE-12CE77E71161}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "gigasecond", "gigasecond\gigasecond.csproj", "{7EA802D9-B45E-473C-A09A-D27A13CFD1C6}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Gigasecond", "gigasecond\Gigasecond.csproj", "{F0C639E6-3318-4FF6-993D-A8E3EE439E09}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "go-counting", "go-counting\go-counting.csproj", "{665D4251-D44E-4EF2-B93D-2CCAD7FF1701}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "GoCounting", "go-counting\GoCounting.csproj", "{23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "grade-school", "grade-school\grade-school.csproj", "{5E547307-71A1-41BC-A08A-24E3F787CC63}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "GradeSchool", "grade-school\GradeSchool.csproj", "{91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "grains", "grains\grains.csproj", "{8384B7A0-2BC1-44E3-BF03-694319045C49}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Grains", "grains\Grains.csproj", "{246719B1-0179-4A81-A372-3290AAA5699E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "grep", "grep\grep.csproj", "{44AD4D28-EB10-4854-A91B-14CE3784DFA5}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Grep", "grep\Grep.csproj", "{63AEC01A-53F5-44DB-8D44-733E30E79853}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "hamming", "hamming\hamming.csproj", "{75F2F415-98B0-449B-98BC-B324DC983FAD}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Hamming", "hamming\Hamming.csproj", "{9442849E-6A05-4496-BE3D-C10F3461BDA8}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "hangman", "hangman\hangman.csproj", "{D8766F5F-B484-490B-8940-438ECFD221AF}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Hangman", "hangman\Hangman.csproj", "{6657D50B-BD81-43E9-A0FC-E6851182CB32}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "hello-world", "hello-world\hello-world.csproj", "{05154CE6-C9DD-4D5C-ABA5-52731F05274A}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "HelloWorld", "hello-world\HelloWorld.csproj", "{9C808610-CA3A-49D3-A73A-679CE86C7346}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "house", "house\house.csproj", "{2E6C4EB3-6307-493C-9258-359F7C3FF38E}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "House", "house\House.csproj", "{33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "isogram", "isogram\isogram.csproj", "{903D5674-6527-4C4D-89B4-D6A435EF8091}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Isogram", "isogram\Isogram.csproj", "{1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "kindergarten-garden", "kindergarten-garden\kindergarten-garden.csproj", "{B05F63CD-2E95-45DC-8760-42B2FDB8CA07}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "KindergartenGarden", "kindergarten-garden\KindergartenGarden.csproj", "{C8562C85-5C76-488E-ABCE-C61F2B90D914}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "largest-series-product", "largest-series-product\largest-series-product.csproj", "{579C646B-9261-4CCE-B639-8C25C2F6FC85}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "LargestSeriesProduct", "largest-series-product\LargestSeriesProduct.csproj", "{5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "leap", "leap\leap.csproj", "{CC0F2F90-FB74-495E-87D1-5025FE6D0FD2}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Leap", "leap\Leap.csproj", "{CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ledger", "ledger\ledger.csproj", "{60E9423E-0513-4E43-9AB5-24AA3ED608E9}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Ledger", "ledger\Ledger.csproj", "{2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "linked-list", "linked-list\linked-list.csproj", "{36A78BD2-DFFC-4551-BAE1-70C8DDEAC23E}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "LinkedList", "linked-list\LinkedList.csproj", "{EF592579-C359-4A98-A550-EEE8F0373E12}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "list-ops", "list-ops\list-ops.csproj", "{79ADD139-E6DE-46E0-A183-3E126EDDBC4B}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ListOps", "list-ops\ListOps.csproj", "{0AAB6052-071D-4B0E-A58C-266CA4D0591A}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "luhn", "luhn\luhn.csproj", "{668842AF-86CD-4397-8C00-D40B4163806C}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Luhn", "luhn\Luhn.csproj", "{13AA981F-53F0-4159-9D08-44710A338491}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "markdown", "markdown\markdown.csproj", "{86D5BB24-8A64-4DB0-B878-E0946B9A1EF8}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Markdown", "markdown\Markdown.csproj", "{3908302C-778F-4CC0-9938-C3D6C21EECEF}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "matrix", "matrix\matrix.csproj", "{81693A36-6034-4B6E-8EE1-DDB9BAD0997B}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Matrix", "matrix\Matrix.csproj", "{4B5D0AF8-825F-4442-B3A9-0B2418E207E5}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "meetup", "meetup\meetup.csproj", "{38C26EFC-4134-4A6A-AC3C-DCD06588EC01}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Meetup", "meetup\Meetup.csproj", "{5B572FDA-BD61-4656-9547-179C243B3CBA}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "minesweeper", "minesweeper\minesweeper.csproj", "{F5E865C0-9E3A-424F-89A0-A83B89A3954E}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Minesweeper", "minesweeper\Minesweeper.csproj", "{DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "nth-prime", "nth-prime\nth-prime.csproj", "{2936F95B-DB62-44A9-8988-8BAC809D477A}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "NthPrime", "nth-prime\NthPrime.csproj", "{D001CFA9-58D9-4C59-A127-020178622959}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "nucleotide-count", "nucleotide-count\nucleotide-count.csproj", "{20D30203-F647-4B3E-B0DF-37C0CE51EB28}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "NucleotideCount", "nucleotide-count\NucleotideCount.csproj", "{C37D8291-33C1-4189-9678-5377EE4D9A91}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ocr-numbers", "ocr-numbers\ocr-numbers.csproj", "{3F0704F2-4B42-4799-B96C-FEA52B66E0AA}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "OcrNumbers", "ocr-numbers\OcrNumbers.csproj", "{4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "packages", "packages\packages.csproj", "{81354A14-A306-412E-9763-4E4F45B5BF9B}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PalindromeProducts", "palindrome-products\PalindromeProducts.csproj", "{3026B0F5-BEF6-4A10-A49A-8047CCB43C50}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "palindrome-products", "palindrome-products\palindrome-products.csproj", "{7BB236CB-A44C-4360-B14E-6E1F90CDC646}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Pangram", "pangram\Pangram.csproj", "{54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "pangram", "pangram\pangram.csproj", "{7AF4B76F-ADD1-4579-9ED0-0A1D68870AB2}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ParallelLetterFrequency", "parallel-letter-frequency\ParallelLetterFrequency.csproj", "{BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "parallel-letter-frequency", "parallel-letter-frequency\parallel-letter-frequency.csproj", "{B3B282BD-F0E5-4095-A354-82FA02EFA037}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PascalsTriangle", "pascals-triangle\PascalsTriangle.csproj", "{5271A1BB-8952-43B5-A274-60A264EFE877}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "pascals-triangle", "pascals-triangle\pascals-triangle.csproj", "{A8128E38-6760-42FE-9DB9-2EA3A7F54CDA}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PerfectNumbers", "perfect-numbers\PerfectNumbers.csproj", "{ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "perfect-numbers", "perfect-numbers\perfect-numbers.csproj", "{B67E68F4-4256-448E-8F7A-BF7E69B22D69}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PhoneNumber", "phone-number\PhoneNumber.csproj", "{9B0659B1-4248-4A4E-A33C-64B019863AFE}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "phone-number", "phone-number\phone-number.csproj", "{23E6A4E8-4A4B-46C7-984A-4EDF2EBE383B}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PigLatin", "pig-latin\PigLatin.csproj", "{118B000E-9C65-4D2F-B7A2-5F834F3F624F}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "pig-latin", "pig-latin\pig-latin.csproj", "{193780BF-A7BE-41ED-A2D1-582C5A956E60}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Poker", "poker\Poker.csproj", "{92A2D17A-F0B4-42B4-82D4-322C2B8106B4}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "poker", "poker\poker.csproj", "{30F201A3-0F44-45B9-A6D8-84DFFBE62050}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Pov", "pov\Pov.csproj", "{450474BD-ED3E-4403-A6FB-91A518A66D87}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "pov", "pov\pov.csproj", "{A2AE7A88-09EA-4867-A282-915E3BDBA33F}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PrimeFactors", "prime-factors\PrimeFactors.csproj", "{1FB5D78C-C981-4F0E-A160-7A12DFA6280D}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "prime-factors", "prime-factors\prime-factors.csproj", "{6748F003-FEAB-4124-9B0B-C72F59401E1F}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ProteinTranslation", "protein-translation\ProteinTranslation.csproj", "{1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "protein-translation", "protein-translation\protein-translation.csproj", "{5A70513A-2090-409D-B54D-35C85582BBEF}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Proverb", "proverb\Proverb.csproj", "{FB25CF38-0E05-44F2-8A38-31195E06175A}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "proverb", "proverb\proverb.csproj", "{4FBBF373-D315-4CD7-937B-AA168652ABAA}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PythagoreanTriplet", "pythagorean-triplet\PythagoreanTriplet.csproj", "{25C3281E-C5CA-45DF-BBD1-2502230BD0E2}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "pythagorean-triplet", "pythagorean-triplet\pythagorean-triplet.csproj", "{17DF526B-2E81-4694-9F65-44905800134B}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "QueenAttack", "queen-attack\QueenAttack.csproj", "{3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "queen-attack", "queen-attack\queen-attack.csproj", "{A32A60C5-09F3-4C1A-9FB2-783A51A41885}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RailFenceCipher", "rail-fence-cipher\RailFenceCipher.csproj", "{FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "rail-fence-cipher", "rail-fence-cipher\rail-fence-cipher.csproj", "{4A98A66A-03E4-4958-8856-763561C2BDD8}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Raindrops", "raindrops\Raindrops.csproj", "{2C566FD1-CA8A-4026-AB2A-148ED99805DE}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "raindrops", "raindrops\raindrops.csproj", "{DE1D6036-786D-45B9-B6E6-1C47DBC56AD0}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "React", "react\React.csproj", "{00940258-A8D1-4203-A46E-20F3B4AF92D6}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "react", "react\react.csproj", "{938247C6-DF24-4C04-A064-F480942138CB}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Rectangles", "rectangles\Rectangles.csproj", "{C51A14DF-4E90-40C5-85C8-6410F25CEB8A}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "rectangles", "rectangles\rectangles.csproj", "{9F483C40-467F-4A37-B610-CEDA12C64394}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RnaTranscription", "rna-transcription\RnaTranscription.csproj", "{A0D5347A-235B-4B42-8943-1C82F5EC79ED}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "rna-transcription", "rna-transcription\rna-transcription.csproj", "{64F92163-4AA8-4C73-BD53-1EACC26E6DF2}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RobotName", "robot-name\RobotName.csproj", "{2C9B739E-16B3-4E46-8EF2-F69D5D112D96}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "robot-name", "robot-name\robot-name.csproj", "{4CE0EC4F-C062-4CB7-81FF-A76AF879A99B}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RobotSimulator", "robot-simulator\RobotSimulator.csproj", "{7C666F7D-DF1A-495B-998E-D71C49C7B601}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "robot-simulator", "robot-simulator\robot-simulator.csproj", "{A00E48C5-43A1-4199-9884-F507FCE7D86D}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RomanNumerals", "roman-numerals\RomanNumerals.csproj", "{72FA0C78-7A1C-417E-9EAD-6CB394941AD2}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "roman-numerals", "roman-numerals\roman-numerals.csproj", "{EC1A5746-4444-4658-9690-47EAA943B9FC}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RunLengthEncoding", "run-length-encoding\RunLengthEncoding.csproj", "{ED5A94A2-DE4A-4014-B0E5-789713A6C53F}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "run-length-encoding", "run-length-encoding\run-length-encoding.csproj", "{98318985-17D7-4543-8F0F-C17732BC6297}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SaddlePoints", "saddle-points\SaddlePoints.csproj", "{75B099FA-BEB4-47D0-9AE9-B30C06DEC877}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "saddle-points", "saddle-points\saddle-points.csproj", "{908DCE45-7F26-401E-903F-AD640679E0A7}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Say", "say\Say.csproj", "{F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "say", "say\say.csproj", "{19E97F97-32FC-499F-BD76-DF62C36DF492}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ScaleGenerator", "scale-generator\ScaleGenerator.csproj", "{22012921-789F-48A5-8CFC-C685CB71A80D}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "scale-generator", "scale-generator\scale-generator.csproj", "{CEDC1F1D-E20E-4B13-A7B7-43A1728193CB}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ScrabbleScore", "scrabble-score\ScrabbleScore.csproj", "{12428FEF-C4E4-4062-A810-A1BF3634472A}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "scrabble-score", "scrabble-score\scrabble-score.csproj", "{324941D7-FA9C-4021-B0BB-D1E55E4179A8}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SecretHandshake", "secret-handshake\SecretHandshake.csproj", "{A51411C6-3466-4246-AF38-4FF74BE333B4}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "secret-handshake", "secret-handshake\secret-handshake.csproj", "{DE92DD5C-87F9-4B6F-BC8E-B56FEE7E3C06}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Series", "series\Series.csproj", "{59397B60-FA26-412E-80A1-92D4F4B3167C}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "series", "series\series.csproj", "{78D5DF1B-7E42-4BFB-AF90-20608C2898FA}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SgfParsing", "sgf-parsing\SgfParsing.csproj", "{D500CE42-142F-43CA-A992-9D46D530E09E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "sgf-parsing", "sgf-parsing\sgf-parsing.csproj", "{894F3F35-7C20-4F83-A6E9-FA5DBBCD89CC}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Sieve", "sieve\Sieve.csproj", "{11F62571-6733-47E6-B2C8-D9DDDA500583}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "sieve", "sieve\sieve.csproj", "{F36F8F8B-54B9-4309-9E47-6B8D1B27C34E}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SimpleCipher", "simple-cipher\SimpleCipher.csproj", "{E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "simple-cipher", "simple-cipher\simple-cipher.csproj", "{9FE55261-595F-463C-A0E1-907F7B40F9E1}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SimpleLinkedList", "simple-linked-list\SimpleLinkedList.csproj", "{F63A20A1-405E-44E5-86B5-400304B9BD79}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "simple-linked-list", "simple-linked-list\simple-linked-list.csproj", "{120FE8CB-377C-41E0-BB0A-7A682550FA92}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SpaceAge", "space-age\SpaceAge.csproj", "{00484484-C185-41FB-9455-A8EA8680AD4E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "space-age", "space-age\space-age.csproj", "{D88E3E58-5B30-472C-8CE7-2306F3B3E8AB}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Strain", "strain\Strain.csproj", "{DF82974A-9442-4545-B97A-351B8F9BD726}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "strain", "strain\strain.csproj", "{5160A0A5-36BD-4A33-8318-7C6D4582A0C3}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Sublist", "sublist\Sublist.csproj", "{2FA82303-4540-4C6F-8895-071CCFD4992B}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "sublist", "sublist\sublist.csproj", "{AB6AE6A9-B1EE-4FB4-A14A-67FB4132F090}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SumOfMultiples", "sum-of-multiples\SumOfMultiples.csproj", "{F9B797F7-52CD-4BA7-9683-96905A07951F}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "sum-of-multiples", "sum-of-multiples\sum-of-multiples.csproj", "{9709A07C-1EF0-445E-BD20-8DCF33656353}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Tournament", "tournament\Tournament.csproj", "{46262700-25A8-4A13-9E46-43B6923A8FDD}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "tournament", "tournament\tournament.csproj", "{BA36F7AD-BA4D-40CE-89CA-130C15DE0FCD}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Transpose", "transpose\Transpose.csproj", "{0B5B82E7-BFEC-4567-8649-B7E92AA1B466}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "transpose", "transpose\transpose.csproj", "{A5E9168E-2EE7-4390-9A04-12388DAA7AE0}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "TreeBuilding", "tree-building\TreeBuilding.csproj", "{27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "tree-building", "tree-building\tree-building.csproj", "{C7DD3601-FA66-41B3-8655-C6ACC765EBDF}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Triangle", "triangle\Triangle.csproj", "{2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "triangle", "triangle\triangle.csproj", "{5ACA3E89-2A99-4D3D-96D1-3BA2E4C233F2}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "TwelveDays", "twelve-days\TwelveDays.csproj", "{C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "twelve-days", "twelve-days\twelve-days.csproj", "{B1B0CCAA-FFDD-4FD2-BBAE-16546E623AD8}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "TwoBucket", "two-bucket\TwoBucket.csproj", "{35DC825C-BBDA-4709-BA21-8AE018848610}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "two-bucket", "two-bucket\two-bucket.csproj", "{1130169C-03BA-4EF2-BF24-67615E39084E}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "VariableLengthQuantity", "variable-length-quantity\VariableLengthQuantity.csproj", "{B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "variable-length-quantity", "variable-length-quantity\variable-length-quantity.csproj", "{7D05F065-EB26-4AF3-99D3-8B05190DA09E}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "WordCount", "word-count\WordCount.csproj", "{99C2269B-7E12-43C0-981F-EAB994D35829}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "word-count", "word-count\word-count.csproj", "{F7DF4759-887F-44A6-9716-0ABA20DB0610}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "WordSearch", "word-search\WordSearch.csproj", "{EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "word-search", "word-search\word-search.csproj", "{553F61F1-C66F-4F58-8011-D292CD605933}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Wordy", "wordy\Wordy.csproj", "{85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "wordy", "wordy\wordy.csproj", "{9F068F41-C68F-4E35-B615-01EB361898F0}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ZebraPuzzle", "zebra-puzzle\ZebraPuzzle.csproj", "{74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "zebra-puzzle", "zebra-puzzle\zebra-puzzle.csproj", "{78C39A81-141E-4D3D-86CC-F3B221C1B6AB}" -EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "zipper", "zipper\zipper.csproj", "{B40B37DE-CB8E-49F5-93B9-AC1E81696CA2}" +Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Zipper", "zipper\Zipper.csproj", "{AF8A15C2-18F6-4F29-8DBD-47745954790E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D063D598-EF0B-4EC7-9524-1CF222700A29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D063D598-EF0B-4EC7-9524-1CF222700A29}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D063D598-EF0B-4EC7-9524-1CF222700A29}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D063D598-EF0B-4EC7-9524-1CF222700A29}.Release|Any CPU.Build.0 = Release|Any CPU - {F3F868D6-685C-45C2-B02E-8B9A2F9E7A83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F3F868D6-685C-45C2-B02E-8B9A2F9E7A83}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F3F868D6-685C-45C2-B02E-8B9A2F9E7A83}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F3F868D6-685C-45C2-B02E-8B9A2F9E7A83}.Release|Any CPU.Build.0 = Release|Any CPU - {3B9B9B58-4761-437E-B98D-F94B142412F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3B9B9B58-4761-437E-B98D-F94B142412F6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3B9B9B58-4761-437E-B98D-F94B142412F6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3B9B9B58-4761-437E-B98D-F94B142412F6}.Release|Any CPU.Build.0 = Release|Any CPU - {7DF688C8-9CD6-45FE-B696-965B12DA1C63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7DF688C8-9CD6-45FE-B696-965B12DA1C63}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7DF688C8-9CD6-45FE-B696-965B12DA1C63}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7DF688C8-9CD6-45FE-B696-965B12DA1C63}.Release|Any CPU.Build.0 = Release|Any CPU - {B7B980BA-1138-42CB-9527-1AA7BB66C1F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B7B980BA-1138-42CB-9527-1AA7BB66C1F0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B7B980BA-1138-42CB-9527-1AA7BB66C1F0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B7B980BA-1138-42CB-9527-1AA7BB66C1F0}.Release|Any CPU.Build.0 = Release|Any CPU - {4D9695D7-B8F8-43E2-BF32-2885168579BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4D9695D7-B8F8-43E2-BF32-2885168579BC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4D9695D7-B8F8-43E2-BF32-2885168579BC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4D9695D7-B8F8-43E2-BF32-2885168579BC}.Release|Any CPU.Build.0 = Release|Any CPU - {2DF2F8DD-D63E-43FC-B6E9-94215E2ECD5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2DF2F8DD-D63E-43FC-B6E9-94215E2ECD5F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2DF2F8DD-D63E-43FC-B6E9-94215E2ECD5F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2DF2F8DD-D63E-43FC-B6E9-94215E2ECD5F}.Release|Any CPU.Build.0 = Release|Any CPU - {A6A9102E-2C10-4216-A67E-D5B3AF6D748A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A6A9102E-2C10-4216-A67E-D5B3AF6D748A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A6A9102E-2C10-4216-A67E-D5B3AF6D748A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A6A9102E-2C10-4216-A67E-D5B3AF6D748A}.Release|Any CPU.Build.0 = Release|Any CPU - {9BCE5F2A-8D24-48A3-B064-E52933EFDA82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9BCE5F2A-8D24-48A3-B064-E52933EFDA82}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9BCE5F2A-8D24-48A3-B064-E52933EFDA82}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9BCE5F2A-8D24-48A3-B064-E52933EFDA82}.Release|Any CPU.Build.0 = Release|Any CPU - {DC8AA97C-2208-4C8F-8819-CFEF8EA5C6B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DC8AA97C-2208-4C8F-8819-CFEF8EA5C6B8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DC8AA97C-2208-4C8F-8819-CFEF8EA5C6B8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DC8AA97C-2208-4C8F-8819-CFEF8EA5C6B8}.Release|Any CPU.Build.0 = Release|Any CPU - {8018A132-1A85-49F3-954D-EBDC8A2A6CB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8018A132-1A85-49F3-954D-EBDC8A2A6CB6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8018A132-1A85-49F3-954D-EBDC8A2A6CB6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8018A132-1A85-49F3-954D-EBDC8A2A6CB6}.Release|Any CPU.Build.0 = Release|Any CPU - {1CD5C9E3-1FA5-4B50-8FC4-98CEAC06AF2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1CD5C9E3-1FA5-4B50-8FC4-98CEAC06AF2D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1CD5C9E3-1FA5-4B50-8FC4-98CEAC06AF2D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1CD5C9E3-1FA5-4B50-8FC4-98CEAC06AF2D}.Release|Any CPU.Build.0 = Release|Any CPU - {9BC41F0F-BB6A-4639-98A0-B04C11AF29D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9BC41F0F-BB6A-4639-98A0-B04C11AF29D9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9BC41F0F-BB6A-4639-98A0-B04C11AF29D9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9BC41F0F-BB6A-4639-98A0-B04C11AF29D9}.Release|Any CPU.Build.0 = Release|Any CPU - {794CDC10-A8B0-4D95-B183-89E85035DACB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {794CDC10-A8B0-4D95-B183-89E85035DACB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {794CDC10-A8B0-4D95-B183-89E85035DACB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {794CDC10-A8B0-4D95-B183-89E85035DACB}.Release|Any CPU.Build.0 = Release|Any CPU - {5B17F837-BA6F-4673-83AF-D6AC370A4911}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5B17F837-BA6F-4673-83AF-D6AC370A4911}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5B17F837-BA6F-4673-83AF-D6AC370A4911}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5B17F837-BA6F-4673-83AF-D6AC370A4911}.Release|Any CPU.Build.0 = Release|Any CPU - {1E0AFCE4-7B81-4886-ACF9-7F182EDDA68D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1E0AFCE4-7B81-4886-ACF9-7F182EDDA68D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1E0AFCE4-7B81-4886-ACF9-7F182EDDA68D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1E0AFCE4-7B81-4886-ACF9-7F182EDDA68D}.Release|Any CPU.Build.0 = Release|Any CPU - {3F9927FC-E00B-4489-80A0-8A2228345671}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3F9927FC-E00B-4489-80A0-8A2228345671}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3F9927FC-E00B-4489-80A0-8A2228345671}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3F9927FC-E00B-4489-80A0-8A2228345671}.Release|Any CPU.Build.0 = Release|Any CPU - {F1832F90-E545-4162-9ECD-253A320EAD3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F1832F90-E545-4162-9ECD-253A320EAD3D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F1832F90-E545-4162-9ECD-253A320EAD3D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F1832F90-E545-4162-9ECD-253A320EAD3D}.Release|Any CPU.Build.0 = Release|Any CPU - {897D63F4-9739-4BAA-A8B1-E2A28B86AF5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {897D63F4-9739-4BAA-A8B1-E2A28B86AF5D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {897D63F4-9739-4BAA-A8B1-E2A28B86AF5D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {897D63F4-9739-4BAA-A8B1-E2A28B86AF5D}.Release|Any CPU.Build.0 = Release|Any CPU - {059B4355-EA9F-40CC-B7E4-8ECDB57CAABD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {059B4355-EA9F-40CC-B7E4-8ECDB57CAABD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {059B4355-EA9F-40CC-B7E4-8ECDB57CAABD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {059B4355-EA9F-40CC-B7E4-8ECDB57CAABD}.Release|Any CPU.Build.0 = Release|Any CPU - {7C7DD54D-9E2F-4A06-A139-C874FE8FA6A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7C7DD54D-9E2F-4A06-A139-C874FE8FA6A0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7C7DD54D-9E2F-4A06-A139-C874FE8FA6A0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7C7DD54D-9E2F-4A06-A139-C874FE8FA6A0}.Release|Any CPU.Build.0 = Release|Any CPU - {3A833915-014C-4763-8B7C-F72115C34865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3A833915-014C-4763-8B7C-F72115C34865}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3A833915-014C-4763-8B7C-F72115C34865}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3A833915-014C-4763-8B7C-F72115C34865}.Release|Any CPU.Build.0 = Release|Any CPU - {61356A52-5145-466B-8290-7914A548A83E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {61356A52-5145-466B-8290-7914A548A83E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {61356A52-5145-466B-8290-7914A548A83E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {61356A52-5145-466B-8290-7914A548A83E}.Release|Any CPU.Build.0 = Release|Any CPU - {CC5ACDA0-D567-4C27-A1FD-C2A06C68E458}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CC5ACDA0-D567-4C27-A1FD-C2A06C68E458}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CC5ACDA0-D567-4C27-A1FD-C2A06C68E458}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CC5ACDA0-D567-4C27-A1FD-C2A06C68E458}.Release|Any CPU.Build.0 = Release|Any CPU - {40237254-9B27-4C58-B0D7-77D664557E91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {40237254-9B27-4C58-B0D7-77D664557E91}.Debug|Any CPU.Build.0 = Debug|Any CPU - {40237254-9B27-4C58-B0D7-77D664557E91}.Release|Any CPU.ActiveCfg = Release|Any CPU - {40237254-9B27-4C58-B0D7-77D664557E91}.Release|Any CPU.Build.0 = Release|Any CPU - {D2F79385-4B12-41F9-B1D0-E9DA5C4C2733}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D2F79385-4B12-41F9-B1D0-E9DA5C4C2733}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D2F79385-4B12-41F9-B1D0-E9DA5C4C2733}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D2F79385-4B12-41F9-B1D0-E9DA5C4C2733}.Release|Any CPU.Build.0 = Release|Any CPU - {68A33556-4669-4961-B700-6D508518BCA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {68A33556-4669-4961-B700-6D508518BCA7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {68A33556-4669-4961-B700-6D508518BCA7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {68A33556-4669-4961-B700-6D508518BCA7}.Release|Any CPU.Build.0 = Release|Any CPU - {546A1A24-4939-4F21-8F39-DBD75B603B53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {546A1A24-4939-4F21-8F39-DBD75B603B53}.Debug|Any CPU.Build.0 = Debug|Any CPU - {546A1A24-4939-4F21-8F39-DBD75B603B53}.Release|Any CPU.ActiveCfg = Release|Any CPU - {546A1A24-4939-4F21-8F39-DBD75B603B53}.Release|Any CPU.Build.0 = Release|Any CPU - {E1D3570B-918A-4953-B41F-100AE9B2504D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E1D3570B-918A-4953-B41F-100AE9B2504D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E1D3570B-918A-4953-B41F-100AE9B2504D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E1D3570B-918A-4953-B41F-100AE9B2504D}.Release|Any CPU.Build.0 = Release|Any CPU - {C8144EE9-EBC2-44D4-9CAE-5E8EA7BA7068}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C8144EE9-EBC2-44D4-9CAE-5E8EA7BA7068}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C8144EE9-EBC2-44D4-9CAE-5E8EA7BA7068}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C8144EE9-EBC2-44D4-9CAE-5E8EA7BA7068}.Release|Any CPU.Build.0 = Release|Any CPU - {9EBE7704-56EB-44A5-82EF-8F45C98AD53A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9EBE7704-56EB-44A5-82EF-8F45C98AD53A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9EBE7704-56EB-44A5-82EF-8F45C98AD53A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9EBE7704-56EB-44A5-82EF-8F45C98AD53A}.Release|Any CPU.Build.0 = Release|Any CPU - {92FF324F-14DF-431B-9E04-2758B0662CFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {92FF324F-14DF-431B-9E04-2758B0662CFA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {92FF324F-14DF-431B-9E04-2758B0662CFA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {92FF324F-14DF-431B-9E04-2758B0662CFA}.Release|Any CPU.Build.0 = Release|Any CPU - {7EA802D9-B45E-473C-A09A-D27A13CFD1C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7EA802D9-B45E-473C-A09A-D27A13CFD1C6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7EA802D9-B45E-473C-A09A-D27A13CFD1C6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7EA802D9-B45E-473C-A09A-D27A13CFD1C6}.Release|Any CPU.Build.0 = Release|Any CPU - {665D4251-D44E-4EF2-B93D-2CCAD7FF1701}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {665D4251-D44E-4EF2-B93D-2CCAD7FF1701}.Debug|Any CPU.Build.0 = Debug|Any CPU - {665D4251-D44E-4EF2-B93D-2CCAD7FF1701}.Release|Any CPU.ActiveCfg = Release|Any CPU - {665D4251-D44E-4EF2-B93D-2CCAD7FF1701}.Release|Any CPU.Build.0 = Release|Any CPU - {5E547307-71A1-41BC-A08A-24E3F787CC63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5E547307-71A1-41BC-A08A-24E3F787CC63}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5E547307-71A1-41BC-A08A-24E3F787CC63}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5E547307-71A1-41BC-A08A-24E3F787CC63}.Release|Any CPU.Build.0 = Release|Any CPU - {8384B7A0-2BC1-44E3-BF03-694319045C49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8384B7A0-2BC1-44E3-BF03-694319045C49}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8384B7A0-2BC1-44E3-BF03-694319045C49}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8384B7A0-2BC1-44E3-BF03-694319045C49}.Release|Any CPU.Build.0 = Release|Any CPU - {44AD4D28-EB10-4854-A91B-14CE3784DFA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {44AD4D28-EB10-4854-A91B-14CE3784DFA5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {44AD4D28-EB10-4854-A91B-14CE3784DFA5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {44AD4D28-EB10-4854-A91B-14CE3784DFA5}.Release|Any CPU.Build.0 = Release|Any CPU - {75F2F415-98B0-449B-98BC-B324DC983FAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {75F2F415-98B0-449B-98BC-B324DC983FAD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {75F2F415-98B0-449B-98BC-B324DC983FAD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {75F2F415-98B0-449B-98BC-B324DC983FAD}.Release|Any CPU.Build.0 = Release|Any CPU - {D8766F5F-B484-490B-8940-438ECFD221AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D8766F5F-B484-490B-8940-438ECFD221AF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D8766F5F-B484-490B-8940-438ECFD221AF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D8766F5F-B484-490B-8940-438ECFD221AF}.Release|Any CPU.Build.0 = Release|Any CPU - {05154CE6-C9DD-4D5C-ABA5-52731F05274A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {05154CE6-C9DD-4D5C-ABA5-52731F05274A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {05154CE6-C9DD-4D5C-ABA5-52731F05274A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {05154CE6-C9DD-4D5C-ABA5-52731F05274A}.Release|Any CPU.Build.0 = Release|Any CPU - {2E6C4EB3-6307-493C-9258-359F7C3FF38E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2E6C4EB3-6307-493C-9258-359F7C3FF38E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2E6C4EB3-6307-493C-9258-359F7C3FF38E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2E6C4EB3-6307-493C-9258-359F7C3FF38E}.Release|Any CPU.Build.0 = Release|Any CPU - {903D5674-6527-4C4D-89B4-D6A435EF8091}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {903D5674-6527-4C4D-89B4-D6A435EF8091}.Debug|Any CPU.Build.0 = Debug|Any CPU - {903D5674-6527-4C4D-89B4-D6A435EF8091}.Release|Any CPU.ActiveCfg = Release|Any CPU - {903D5674-6527-4C4D-89B4-D6A435EF8091}.Release|Any CPU.Build.0 = Release|Any CPU - {B05F63CD-2E95-45DC-8760-42B2FDB8CA07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B05F63CD-2E95-45DC-8760-42B2FDB8CA07}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B05F63CD-2E95-45DC-8760-42B2FDB8CA07}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B05F63CD-2E95-45DC-8760-42B2FDB8CA07}.Release|Any CPU.Build.0 = Release|Any CPU - {579C646B-9261-4CCE-B639-8C25C2F6FC85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {579C646B-9261-4CCE-B639-8C25C2F6FC85}.Debug|Any CPU.Build.0 = Debug|Any CPU - {579C646B-9261-4CCE-B639-8C25C2F6FC85}.Release|Any CPU.ActiveCfg = Release|Any CPU - {579C646B-9261-4CCE-B639-8C25C2F6FC85}.Release|Any CPU.Build.0 = Release|Any CPU - {CC0F2F90-FB74-495E-87D1-5025FE6D0FD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CC0F2F90-FB74-495E-87D1-5025FE6D0FD2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CC0F2F90-FB74-495E-87D1-5025FE6D0FD2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CC0F2F90-FB74-495E-87D1-5025FE6D0FD2}.Release|Any CPU.Build.0 = Release|Any CPU - {60E9423E-0513-4E43-9AB5-24AA3ED608E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {60E9423E-0513-4E43-9AB5-24AA3ED608E9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {60E9423E-0513-4E43-9AB5-24AA3ED608E9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {60E9423E-0513-4E43-9AB5-24AA3ED608E9}.Release|Any CPU.Build.0 = Release|Any CPU - {36A78BD2-DFFC-4551-BAE1-70C8DDEAC23E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {36A78BD2-DFFC-4551-BAE1-70C8DDEAC23E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {36A78BD2-DFFC-4551-BAE1-70C8DDEAC23E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {36A78BD2-DFFC-4551-BAE1-70C8DDEAC23E}.Release|Any CPU.Build.0 = Release|Any CPU - {79ADD139-E6DE-46E0-A183-3E126EDDBC4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {79ADD139-E6DE-46E0-A183-3E126EDDBC4B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {79ADD139-E6DE-46E0-A183-3E126EDDBC4B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {79ADD139-E6DE-46E0-A183-3E126EDDBC4B}.Release|Any CPU.Build.0 = Release|Any CPU - {668842AF-86CD-4397-8C00-D40B4163806C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {668842AF-86CD-4397-8C00-D40B4163806C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {668842AF-86CD-4397-8C00-D40B4163806C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {668842AF-86CD-4397-8C00-D40B4163806C}.Release|Any CPU.Build.0 = Release|Any CPU - {86D5BB24-8A64-4DB0-B878-E0946B9A1EF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {86D5BB24-8A64-4DB0-B878-E0946B9A1EF8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {86D5BB24-8A64-4DB0-B878-E0946B9A1EF8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {86D5BB24-8A64-4DB0-B878-E0946B9A1EF8}.Release|Any CPU.Build.0 = Release|Any CPU - {81693A36-6034-4B6E-8EE1-DDB9BAD0997B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {81693A36-6034-4B6E-8EE1-DDB9BAD0997B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {81693A36-6034-4B6E-8EE1-DDB9BAD0997B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {81693A36-6034-4B6E-8EE1-DDB9BAD0997B}.Release|Any CPU.Build.0 = Release|Any CPU - {38C26EFC-4134-4A6A-AC3C-DCD06588EC01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {38C26EFC-4134-4A6A-AC3C-DCD06588EC01}.Debug|Any CPU.Build.0 = Debug|Any CPU - {38C26EFC-4134-4A6A-AC3C-DCD06588EC01}.Release|Any CPU.ActiveCfg = Release|Any CPU - {38C26EFC-4134-4A6A-AC3C-DCD06588EC01}.Release|Any CPU.Build.0 = Release|Any CPU - {F5E865C0-9E3A-424F-89A0-A83B89A3954E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F5E865C0-9E3A-424F-89A0-A83B89A3954E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F5E865C0-9E3A-424F-89A0-A83B89A3954E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F5E865C0-9E3A-424F-89A0-A83B89A3954E}.Release|Any CPU.Build.0 = Release|Any CPU - {2936F95B-DB62-44A9-8988-8BAC809D477A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2936F95B-DB62-44A9-8988-8BAC809D477A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2936F95B-DB62-44A9-8988-8BAC809D477A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2936F95B-DB62-44A9-8988-8BAC809D477A}.Release|Any CPU.Build.0 = Release|Any CPU - {20D30203-F647-4B3E-B0DF-37C0CE51EB28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {20D30203-F647-4B3E-B0DF-37C0CE51EB28}.Debug|Any CPU.Build.0 = Debug|Any CPU - {20D30203-F647-4B3E-B0DF-37C0CE51EB28}.Release|Any CPU.ActiveCfg = Release|Any CPU - {20D30203-F647-4B3E-B0DF-37C0CE51EB28}.Release|Any CPU.Build.0 = Release|Any CPU - {75776E3D-257D-403F-AC43-C7442534BB49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {75776E3D-257D-403F-AC43-C7442534BB49}.Debug|Any CPU.Build.0 = Debug|Any CPU - {75776E3D-257D-403F-AC43-C7442534BB49}.Release|Any CPU.ActiveCfg = Release|Any CPU - {75776E3D-257D-403F-AC43-C7442534BB49}.Release|Any CPU.Build.0 = Release|Any CPU - {3F0704F2-4B42-4799-B96C-FEA52B66E0AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3F0704F2-4B42-4799-B96C-FEA52B66E0AA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3F0704F2-4B42-4799-B96C-FEA52B66E0AA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3F0704F2-4B42-4799-B96C-FEA52B66E0AA}.Release|Any CPU.Build.0 = Release|Any CPU - {81354A14-A306-412E-9763-4E4F45B5BF9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {81354A14-A306-412E-9763-4E4F45B5BF9B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {81354A14-A306-412E-9763-4E4F45B5BF9B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {81354A14-A306-412E-9763-4E4F45B5BF9B}.Release|Any CPU.Build.0 = Release|Any CPU - {7BB236CB-A44C-4360-B14E-6E1F90CDC646}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7BB236CB-A44C-4360-B14E-6E1F90CDC646}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7BB236CB-A44C-4360-B14E-6E1F90CDC646}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7BB236CB-A44C-4360-B14E-6E1F90CDC646}.Release|Any CPU.Build.0 = Release|Any CPU - {7AF4B76F-ADD1-4579-9ED0-0A1D68870AB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7AF4B76F-ADD1-4579-9ED0-0A1D68870AB2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7AF4B76F-ADD1-4579-9ED0-0A1D68870AB2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7AF4B76F-ADD1-4579-9ED0-0A1D68870AB2}.Release|Any CPU.Build.0 = Release|Any CPU - {B3B282BD-F0E5-4095-A354-82FA02EFA037}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B3B282BD-F0E5-4095-A354-82FA02EFA037}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B3B282BD-F0E5-4095-A354-82FA02EFA037}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B3B282BD-F0E5-4095-A354-82FA02EFA037}.Release|Any CPU.Build.0 = Release|Any CPU - {A8128E38-6760-42FE-9DB9-2EA3A7F54CDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A8128E38-6760-42FE-9DB9-2EA3A7F54CDA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A8128E38-6760-42FE-9DB9-2EA3A7F54CDA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A8128E38-6760-42FE-9DB9-2EA3A7F54CDA}.Release|Any CPU.Build.0 = Release|Any CPU - {B67E68F4-4256-448E-8F7A-BF7E69B22D69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B67E68F4-4256-448E-8F7A-BF7E69B22D69}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B67E68F4-4256-448E-8F7A-BF7E69B22D69}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B67E68F4-4256-448E-8F7A-BF7E69B22D69}.Release|Any CPU.Build.0 = Release|Any CPU - {23E6A4E8-4A4B-46C7-984A-4EDF2EBE383B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {23E6A4E8-4A4B-46C7-984A-4EDF2EBE383B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {23E6A4E8-4A4B-46C7-984A-4EDF2EBE383B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {23E6A4E8-4A4B-46C7-984A-4EDF2EBE383B}.Release|Any CPU.Build.0 = Release|Any CPU - {193780BF-A7BE-41ED-A2D1-582C5A956E60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {193780BF-A7BE-41ED-A2D1-582C5A956E60}.Debug|Any CPU.Build.0 = Debug|Any CPU - {193780BF-A7BE-41ED-A2D1-582C5A956E60}.Release|Any CPU.ActiveCfg = Release|Any CPU - {193780BF-A7BE-41ED-A2D1-582C5A956E60}.Release|Any CPU.Build.0 = Release|Any CPU - {30F201A3-0F44-45B9-A6D8-84DFFBE62050}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30F201A3-0F44-45B9-A6D8-84DFFBE62050}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30F201A3-0F44-45B9-A6D8-84DFFBE62050}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30F201A3-0F44-45B9-A6D8-84DFFBE62050}.Release|Any CPU.Build.0 = Release|Any CPU - {A2AE7A88-09EA-4867-A282-915E3BDBA33F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A2AE7A88-09EA-4867-A282-915E3BDBA33F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A2AE7A88-09EA-4867-A282-915E3BDBA33F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A2AE7A88-09EA-4867-A282-915E3BDBA33F}.Release|Any CPU.Build.0 = Release|Any CPU - {6748F003-FEAB-4124-9B0B-C72F59401E1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6748F003-FEAB-4124-9B0B-C72F59401E1F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6748F003-FEAB-4124-9B0B-C72F59401E1F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6748F003-FEAB-4124-9B0B-C72F59401E1F}.Release|Any CPU.Build.0 = Release|Any CPU - {5A70513A-2090-409D-B54D-35C85582BBEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5A70513A-2090-409D-B54D-35C85582BBEF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5A70513A-2090-409D-B54D-35C85582BBEF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5A70513A-2090-409D-B54D-35C85582BBEF}.Release|Any CPU.Build.0 = Release|Any CPU - {4FBBF373-D315-4CD7-937B-AA168652ABAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4FBBF373-D315-4CD7-937B-AA168652ABAA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4FBBF373-D315-4CD7-937B-AA168652ABAA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4FBBF373-D315-4CD7-937B-AA168652ABAA}.Release|Any CPU.Build.0 = Release|Any CPU - {17DF526B-2E81-4694-9F65-44905800134B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {17DF526B-2E81-4694-9F65-44905800134B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {17DF526B-2E81-4694-9F65-44905800134B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {17DF526B-2E81-4694-9F65-44905800134B}.Release|Any CPU.Build.0 = Release|Any CPU - {A32A60C5-09F3-4C1A-9FB2-783A51A41885}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A32A60C5-09F3-4C1A-9FB2-783A51A41885}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A32A60C5-09F3-4C1A-9FB2-783A51A41885}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A32A60C5-09F3-4C1A-9FB2-783A51A41885}.Release|Any CPU.Build.0 = Release|Any CPU - {4A98A66A-03E4-4958-8856-763561C2BDD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4A98A66A-03E4-4958-8856-763561C2BDD8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4A98A66A-03E4-4958-8856-763561C2BDD8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4A98A66A-03E4-4958-8856-763561C2BDD8}.Release|Any CPU.Build.0 = Release|Any CPU - {DE1D6036-786D-45B9-B6E6-1C47DBC56AD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DE1D6036-786D-45B9-B6E6-1C47DBC56AD0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DE1D6036-786D-45B9-B6E6-1C47DBC56AD0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DE1D6036-786D-45B9-B6E6-1C47DBC56AD0}.Release|Any CPU.Build.0 = Release|Any CPU - {938247C6-DF24-4C04-A064-F480942138CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {938247C6-DF24-4C04-A064-F480942138CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {938247C6-DF24-4C04-A064-F480942138CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {938247C6-DF24-4C04-A064-F480942138CB}.Release|Any CPU.Build.0 = Release|Any CPU - {9F483C40-467F-4A37-B610-CEDA12C64394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9F483C40-467F-4A37-B610-CEDA12C64394}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9F483C40-467F-4A37-B610-CEDA12C64394}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9F483C40-467F-4A37-B610-CEDA12C64394}.Release|Any CPU.Build.0 = Release|Any CPU - {64F92163-4AA8-4C73-BD53-1EACC26E6DF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {64F92163-4AA8-4C73-BD53-1EACC26E6DF2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {64F92163-4AA8-4C73-BD53-1EACC26E6DF2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {64F92163-4AA8-4C73-BD53-1EACC26E6DF2}.Release|Any CPU.Build.0 = Release|Any CPU - {4CE0EC4F-C062-4CB7-81FF-A76AF879A99B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4CE0EC4F-C062-4CB7-81FF-A76AF879A99B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4CE0EC4F-C062-4CB7-81FF-A76AF879A99B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4CE0EC4F-C062-4CB7-81FF-A76AF879A99B}.Release|Any CPU.Build.0 = Release|Any CPU - {A00E48C5-43A1-4199-9884-F507FCE7D86D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A00E48C5-43A1-4199-9884-F507FCE7D86D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A00E48C5-43A1-4199-9884-F507FCE7D86D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A00E48C5-43A1-4199-9884-F507FCE7D86D}.Release|Any CPU.Build.0 = Release|Any CPU - {EC1A5746-4444-4658-9690-47EAA943B9FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EC1A5746-4444-4658-9690-47EAA943B9FC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EC1A5746-4444-4658-9690-47EAA943B9FC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EC1A5746-4444-4658-9690-47EAA943B9FC}.Release|Any CPU.Build.0 = Release|Any CPU - {98318985-17D7-4543-8F0F-C17732BC6297}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {98318985-17D7-4543-8F0F-C17732BC6297}.Debug|Any CPU.Build.0 = Debug|Any CPU - {98318985-17D7-4543-8F0F-C17732BC6297}.Release|Any CPU.ActiveCfg = Release|Any CPU - {98318985-17D7-4543-8F0F-C17732BC6297}.Release|Any CPU.Build.0 = Release|Any CPU - {908DCE45-7F26-401E-903F-AD640679E0A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {908DCE45-7F26-401E-903F-AD640679E0A7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {908DCE45-7F26-401E-903F-AD640679E0A7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {908DCE45-7F26-401E-903F-AD640679E0A7}.Release|Any CPU.Build.0 = Release|Any CPU - {19E97F97-32FC-499F-BD76-DF62C36DF492}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {19E97F97-32FC-499F-BD76-DF62C36DF492}.Debug|Any CPU.Build.0 = Debug|Any CPU - {19E97F97-32FC-499F-BD76-DF62C36DF492}.Release|Any CPU.ActiveCfg = Release|Any CPU - {19E97F97-32FC-499F-BD76-DF62C36DF492}.Release|Any CPU.Build.0 = Release|Any CPU - {CEDC1F1D-E20E-4B13-A7B7-43A1728193CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CEDC1F1D-E20E-4B13-A7B7-43A1728193CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CEDC1F1D-E20E-4B13-A7B7-43A1728193CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CEDC1F1D-E20E-4B13-A7B7-43A1728193CB}.Release|Any CPU.Build.0 = Release|Any CPU - {324941D7-FA9C-4021-B0BB-D1E55E4179A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {324941D7-FA9C-4021-B0BB-D1E55E4179A8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {324941D7-FA9C-4021-B0BB-D1E55E4179A8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {324941D7-FA9C-4021-B0BB-D1E55E4179A8}.Release|Any CPU.Build.0 = Release|Any CPU - {DE92DD5C-87F9-4B6F-BC8E-B56FEE7E3C06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DE92DD5C-87F9-4B6F-BC8E-B56FEE7E3C06}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DE92DD5C-87F9-4B6F-BC8E-B56FEE7E3C06}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DE92DD5C-87F9-4B6F-BC8E-B56FEE7E3C06}.Release|Any CPU.Build.0 = Release|Any CPU - {78D5DF1B-7E42-4BFB-AF90-20608C2898FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {78D5DF1B-7E42-4BFB-AF90-20608C2898FA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {78D5DF1B-7E42-4BFB-AF90-20608C2898FA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {78D5DF1B-7E42-4BFB-AF90-20608C2898FA}.Release|Any CPU.Build.0 = Release|Any CPU - {894F3F35-7C20-4F83-A6E9-FA5DBBCD89CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {894F3F35-7C20-4F83-A6E9-FA5DBBCD89CC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {894F3F35-7C20-4F83-A6E9-FA5DBBCD89CC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {894F3F35-7C20-4F83-A6E9-FA5DBBCD89CC}.Release|Any CPU.Build.0 = Release|Any CPU - {F36F8F8B-54B9-4309-9E47-6B8D1B27C34E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F36F8F8B-54B9-4309-9E47-6B8D1B27C34E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F36F8F8B-54B9-4309-9E47-6B8D1B27C34E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F36F8F8B-54B9-4309-9E47-6B8D1B27C34E}.Release|Any CPU.Build.0 = Release|Any CPU - {9FE55261-595F-463C-A0E1-907F7B40F9E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9FE55261-595F-463C-A0E1-907F7B40F9E1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9FE55261-595F-463C-A0E1-907F7B40F9E1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9FE55261-595F-463C-A0E1-907F7B40F9E1}.Release|Any CPU.Build.0 = Release|Any CPU - {120FE8CB-377C-41E0-BB0A-7A682550FA92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {120FE8CB-377C-41E0-BB0A-7A682550FA92}.Debug|Any CPU.Build.0 = Debug|Any CPU - {120FE8CB-377C-41E0-BB0A-7A682550FA92}.Release|Any CPU.ActiveCfg = Release|Any CPU - {120FE8CB-377C-41E0-BB0A-7A682550FA92}.Release|Any CPU.Build.0 = Release|Any CPU - {D88E3E58-5B30-472C-8CE7-2306F3B3E8AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D88E3E58-5B30-472C-8CE7-2306F3B3E8AB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D88E3E58-5B30-472C-8CE7-2306F3B3E8AB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D88E3E58-5B30-472C-8CE7-2306F3B3E8AB}.Release|Any CPU.Build.0 = Release|Any CPU - {5160A0A5-36BD-4A33-8318-7C6D4582A0C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5160A0A5-36BD-4A33-8318-7C6D4582A0C3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5160A0A5-36BD-4A33-8318-7C6D4582A0C3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5160A0A5-36BD-4A33-8318-7C6D4582A0C3}.Release|Any CPU.Build.0 = Release|Any CPU - {AB6AE6A9-B1EE-4FB4-A14A-67FB4132F090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AB6AE6A9-B1EE-4FB4-A14A-67FB4132F090}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AB6AE6A9-B1EE-4FB4-A14A-67FB4132F090}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AB6AE6A9-B1EE-4FB4-A14A-67FB4132F090}.Release|Any CPU.Build.0 = Release|Any CPU - {9709A07C-1EF0-445E-BD20-8DCF33656353}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9709A07C-1EF0-445E-BD20-8DCF33656353}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9709A07C-1EF0-445E-BD20-8DCF33656353}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9709A07C-1EF0-445E-BD20-8DCF33656353}.Release|Any CPU.Build.0 = Release|Any CPU - {BA36F7AD-BA4D-40CE-89CA-130C15DE0FCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BA36F7AD-BA4D-40CE-89CA-130C15DE0FCD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA36F7AD-BA4D-40CE-89CA-130C15DE0FCD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BA36F7AD-BA4D-40CE-89CA-130C15DE0FCD}.Release|Any CPU.Build.0 = Release|Any CPU - {A5E9168E-2EE7-4390-9A04-12388DAA7AE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A5E9168E-2EE7-4390-9A04-12388DAA7AE0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A5E9168E-2EE7-4390-9A04-12388DAA7AE0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A5E9168E-2EE7-4390-9A04-12388DAA7AE0}.Release|Any CPU.Build.0 = Release|Any CPU - {C7DD3601-FA66-41B3-8655-C6ACC765EBDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C7DD3601-FA66-41B3-8655-C6ACC765EBDF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C7DD3601-FA66-41B3-8655-C6ACC765EBDF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C7DD3601-FA66-41B3-8655-C6ACC765EBDF}.Release|Any CPU.Build.0 = Release|Any CPU - {5ACA3E89-2A99-4D3D-96D1-3BA2E4C233F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5ACA3E89-2A99-4D3D-96D1-3BA2E4C233F2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5ACA3E89-2A99-4D3D-96D1-3BA2E4C233F2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5ACA3E89-2A99-4D3D-96D1-3BA2E4C233F2}.Release|Any CPU.Build.0 = Release|Any CPU - {B1B0CCAA-FFDD-4FD2-BBAE-16546E623AD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B1B0CCAA-FFDD-4FD2-BBAE-16546E623AD8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B1B0CCAA-FFDD-4FD2-BBAE-16546E623AD8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B1B0CCAA-FFDD-4FD2-BBAE-16546E623AD8}.Release|Any CPU.Build.0 = Release|Any CPU - {1130169C-03BA-4EF2-BF24-67615E39084E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1130169C-03BA-4EF2-BF24-67615E39084E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1130169C-03BA-4EF2-BF24-67615E39084E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1130169C-03BA-4EF2-BF24-67615E39084E}.Release|Any CPU.Build.0 = Release|Any CPU - {7D05F065-EB26-4AF3-99D3-8B05190DA09E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7D05F065-EB26-4AF3-99D3-8B05190DA09E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7D05F065-EB26-4AF3-99D3-8B05190DA09E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7D05F065-EB26-4AF3-99D3-8B05190DA09E}.Release|Any CPU.Build.0 = Release|Any CPU - {F7DF4759-887F-44A6-9716-0ABA20DB0610}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F7DF4759-887F-44A6-9716-0ABA20DB0610}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F7DF4759-887F-44A6-9716-0ABA20DB0610}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F7DF4759-887F-44A6-9716-0ABA20DB0610}.Release|Any CPU.Build.0 = Release|Any CPU - {553F61F1-C66F-4F58-8011-D292CD605933}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {553F61F1-C66F-4F58-8011-D292CD605933}.Debug|Any CPU.Build.0 = Debug|Any CPU - {553F61F1-C66F-4F58-8011-D292CD605933}.Release|Any CPU.ActiveCfg = Release|Any CPU - {553F61F1-C66F-4F58-8011-D292CD605933}.Release|Any CPU.Build.0 = Release|Any CPU - {9F068F41-C68F-4E35-B615-01EB361898F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9F068F41-C68F-4E35-B615-01EB361898F0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9F068F41-C68F-4E35-B615-01EB361898F0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9F068F41-C68F-4E35-B615-01EB361898F0}.Release|Any CPU.Build.0 = Release|Any CPU - {78C39A81-141E-4D3D-86CC-F3B221C1B6AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {78C39A81-141E-4D3D-86CC-F3B221C1B6AB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {78C39A81-141E-4D3D-86CC-F3B221C1B6AB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {78C39A81-141E-4D3D-86CC-F3B221C1B6AB}.Release|Any CPU.Build.0 = Release|Any CPU - {B40B37DE-CB8E-49F5-93B9-AC1E81696CA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B40B37DE-CB8E-49F5-93B9-AC1E81696CA2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B40B37DE-CB8E-49F5-93B9-AC1E81696CA2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B40B37DE-CB8E-49F5-93B9-AC1E81696CA2}.Release|Any CPU.Build.0 = Release|Any CPU + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|x64.ActiveCfg = Debug|x64 + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|x64.Build.0 = Debug|x64 + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|x86.ActiveCfg = Debug|x86 + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|x86.Build.0 = Debug|x86 + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|Any CPU.Build.0 = Release|Any CPU + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|x64.ActiveCfg = Release|x64 + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|x64.Build.0 = Release|x64 + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|x86.ActiveCfg = Release|x86 + {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|x86.Build.0 = Release|x86 + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|Any CPU.Build.0 = Debug|Any CPU + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|x64.ActiveCfg = Debug|x64 + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|x64.Build.0 = Debug|x64 + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|x86.ActiveCfg = Debug|x86 + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|x86.Build.0 = Debug|x86 + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|Any CPU.ActiveCfg = Release|Any CPU + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|Any CPU.Build.0 = Release|Any CPU + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|x64.ActiveCfg = Release|x64 + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|x64.Build.0 = Release|x64 + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|x86.ActiveCfg = Release|x86 + {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|x86.Build.0 = Release|x86 + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|x64.ActiveCfg = Debug|x64 + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|x64.Build.0 = Debug|x64 + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|x86.ActiveCfg = Debug|x86 + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|x86.Build.0 = Debug|x86 + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|Any CPU.Build.0 = Release|Any CPU + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|x64.ActiveCfg = Release|x64 + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|x64.Build.0 = Release|x64 + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|x86.ActiveCfg = Release|x86 + {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|x86.Build.0 = Release|x86 + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|x64.ActiveCfg = Debug|x64 + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|x64.Build.0 = Debug|x64 + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|x86.ActiveCfg = Debug|x86 + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|x86.Build.0 = Debug|x86 + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|Any CPU.Build.0 = Release|Any CPU + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|x64.ActiveCfg = Release|x64 + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|x64.Build.0 = Release|x64 + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|x86.ActiveCfg = Release|x86 + {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|x86.Build.0 = Release|x86 + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|Any CPU.Build.0 = Debug|Any CPU + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|x64.ActiveCfg = Debug|x64 + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|x64.Build.0 = Debug|x64 + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|x86.ActiveCfg = Debug|x86 + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|x86.Build.0 = Debug|x86 + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|Any CPU.ActiveCfg = Release|Any CPU + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|Any CPU.Build.0 = Release|Any CPU + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|x64.ActiveCfg = Release|x64 + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|x64.Build.0 = Release|x64 + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|x86.ActiveCfg = Release|x86 + {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|x86.Build.0 = Release|x86 + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|x64.ActiveCfg = Debug|x64 + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|x64.Build.0 = Debug|x64 + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|x86.ActiveCfg = Debug|x86 + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|x86.Build.0 = Debug|x86 + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|Any CPU.ActiveCfg = Release|Any CPU + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|Any CPU.Build.0 = Release|Any CPU + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|x64.ActiveCfg = Release|x64 + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|x64.Build.0 = Release|x64 + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|x86.ActiveCfg = Release|x86 + {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|x86.Build.0 = Release|x86 + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|x64.ActiveCfg = Debug|x64 + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|x64.Build.0 = Debug|x64 + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|x86.ActiveCfg = Debug|x86 + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|x86.Build.0 = Debug|x86 + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|Any CPU.Build.0 = Release|Any CPU + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|x64.ActiveCfg = Release|x64 + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|x64.Build.0 = Release|x64 + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|x86.ActiveCfg = Release|x86 + {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|x86.Build.0 = Release|x86 + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|x64.ActiveCfg = Debug|x64 + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|x64.Build.0 = Debug|x64 + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|x86.ActiveCfg = Debug|x86 + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|x86.Build.0 = Debug|x86 + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|Any CPU.Build.0 = Release|Any CPU + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|x64.ActiveCfg = Release|x64 + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|x64.Build.0 = Release|x64 + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|x86.ActiveCfg = Release|x86 + {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|x86.Build.0 = Release|x86 + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|x64.ActiveCfg = Debug|x64 + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|x64.Build.0 = Debug|x64 + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|x86.ActiveCfg = Debug|x86 + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|x86.Build.0 = Debug|x86 + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|Any CPU.Build.0 = Release|Any CPU + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|x64.ActiveCfg = Release|x64 + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|x64.Build.0 = Release|x64 + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|x86.ActiveCfg = Release|x86 + {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|x86.Build.0 = Release|x86 + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|Any CPU.Build.0 = Debug|Any CPU + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|x64.ActiveCfg = Debug|x64 + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|x64.Build.0 = Debug|x64 + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|x86.ActiveCfg = Debug|x86 + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|x86.Build.0 = Debug|x86 + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|Any CPU.ActiveCfg = Release|Any CPU + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|Any CPU.Build.0 = Release|Any CPU + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|x64.ActiveCfg = Release|x64 + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|x64.Build.0 = Release|x64 + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|x86.ActiveCfg = Release|x86 + {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|x86.Build.0 = Release|x86 + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|Any CPU.Build.0 = Debug|Any CPU + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|x64.ActiveCfg = Debug|x64 + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|x64.Build.0 = Debug|x64 + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|x86.ActiveCfg = Debug|x86 + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|x86.Build.0 = Debug|x86 + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|Any CPU.ActiveCfg = Release|Any CPU + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|Any CPU.Build.0 = Release|Any CPU + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|x64.ActiveCfg = Release|x64 + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|x64.Build.0 = Release|x64 + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|x86.ActiveCfg = Release|x86 + {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|x86.Build.0 = Release|x86 + {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|Any CPU.Build.0 = Debug|Any CPU + {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|x64.ActiveCfg = Debug|x64 + {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|x64.Build.0 = Debug|x64 + {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|x86.ActiveCfg = Debug|x86 + {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|x86.Build.0 = Debug|x86 + {879C94ED-7E65-4313-8716-1671B7C14361}.Release|Any CPU.ActiveCfg = Release|Any CPU + {879C94ED-7E65-4313-8716-1671B7C14361}.Release|Any CPU.Build.0 = Release|Any CPU + {879C94ED-7E65-4313-8716-1671B7C14361}.Release|x64.ActiveCfg = Release|x64 + {879C94ED-7E65-4313-8716-1671B7C14361}.Release|x64.Build.0 = Release|x64 + {879C94ED-7E65-4313-8716-1671B7C14361}.Release|x86.ActiveCfg = Release|x86 + {879C94ED-7E65-4313-8716-1671B7C14361}.Release|x86.Build.0 = Release|x86 + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|x64.ActiveCfg = Debug|x64 + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|x64.Build.0 = Debug|x64 + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|x86.ActiveCfg = Debug|x86 + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|x86.Build.0 = Debug|x86 + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|Any CPU.Build.0 = Release|Any CPU + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|x64.ActiveCfg = Release|x64 + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|x64.Build.0 = Release|x64 + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|x86.ActiveCfg = Release|x86 + {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|x86.Build.0 = Release|x86 + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|x64.ActiveCfg = Debug|x64 + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|x64.Build.0 = Debug|x64 + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|x86.ActiveCfg = Debug|x86 + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|x86.Build.0 = Debug|x86 + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|Any CPU.Build.0 = Release|Any CPU + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|x64.ActiveCfg = Release|x64 + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|x64.Build.0 = Release|x64 + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|x86.ActiveCfg = Release|x86 + {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|x86.Build.0 = Release|x86 + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|x64.ActiveCfg = Debug|x64 + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|x64.Build.0 = Debug|x64 + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|x86.ActiveCfg = Debug|x86 + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|x86.Build.0 = Debug|x86 + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|Any CPU.Build.0 = Release|Any CPU + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|x64.ActiveCfg = Release|x64 + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|x64.Build.0 = Release|x64 + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|x86.ActiveCfg = Release|x86 + {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|x86.Build.0 = Release|x86 + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|x64.ActiveCfg = Debug|x64 + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|x64.Build.0 = Debug|x64 + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|x86.ActiveCfg = Debug|x86 + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|x86.Build.0 = Debug|x86 + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|Any CPU.Build.0 = Release|Any CPU + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|x64.ActiveCfg = Release|x64 + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|x64.Build.0 = Release|x64 + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|x86.ActiveCfg = Release|x86 + {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|x86.Build.0 = Release|x86 + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|x64.ActiveCfg = Debug|x64 + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|x64.Build.0 = Debug|x64 + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|x86.ActiveCfg = Debug|x86 + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|x86.Build.0 = Debug|x86 + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|Any CPU.Build.0 = Release|Any CPU + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|x64.ActiveCfg = Release|x64 + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|x64.Build.0 = Release|x64 + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|x86.ActiveCfg = Release|x86 + {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|x86.Build.0 = Release|x86 + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|x64.ActiveCfg = Debug|x64 + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|x64.Build.0 = Debug|x64 + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|x86.ActiveCfg = Debug|x86 + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|x86.Build.0 = Debug|x86 + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|Any CPU.Build.0 = Release|Any CPU + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|x64.ActiveCfg = Release|x64 + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|x64.Build.0 = Release|x64 + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|x86.ActiveCfg = Release|x86 + {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|x86.Build.0 = Release|x86 + {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|x64.ActiveCfg = Debug|x64 + {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|x64.Build.0 = Debug|x64 + {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|x86.ActiveCfg = Debug|x86 + {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|x86.Build.0 = Debug|x86 + {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|Any CPU.Build.0 = Release|Any CPU + {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|x64.ActiveCfg = Release|x64 + {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|x64.Build.0 = Release|x64 + {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|x86.ActiveCfg = Release|x86 + {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|x86.Build.0 = Release|x86 + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|x64.ActiveCfg = Debug|x64 + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|x64.Build.0 = Debug|x64 + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|x86.ActiveCfg = Debug|x86 + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|x86.Build.0 = Debug|x86 + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|Any CPU.Build.0 = Release|Any CPU + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|x64.ActiveCfg = Release|x64 + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|x64.Build.0 = Release|x64 + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|x86.ActiveCfg = Release|x86 + {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|x86.Build.0 = Release|x86 + {F54007A4-3967-489D-A917-440B0D163D96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F54007A4-3967-489D-A917-440B0D163D96}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F54007A4-3967-489D-A917-440B0D163D96}.Debug|x64.ActiveCfg = Debug|x64 + {F54007A4-3967-489D-A917-440B0D163D96}.Debug|x64.Build.0 = Debug|x64 + {F54007A4-3967-489D-A917-440B0D163D96}.Debug|x86.ActiveCfg = Debug|x86 + {F54007A4-3967-489D-A917-440B0D163D96}.Debug|x86.Build.0 = Debug|x86 + {F54007A4-3967-489D-A917-440B0D163D96}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F54007A4-3967-489D-A917-440B0D163D96}.Release|Any CPU.Build.0 = Release|Any CPU + {F54007A4-3967-489D-A917-440B0D163D96}.Release|x64.ActiveCfg = Release|x64 + {F54007A4-3967-489D-A917-440B0D163D96}.Release|x64.Build.0 = Release|x64 + {F54007A4-3967-489D-A917-440B0D163D96}.Release|x86.ActiveCfg = Release|x86 + {F54007A4-3967-489D-A917-440B0D163D96}.Release|x86.Build.0 = Release|x86 + {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|Any CPU.Build.0 = Debug|Any CPU + {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|x64.ActiveCfg = Debug|x64 + {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|x64.Build.0 = Debug|x64 + {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|x86.ActiveCfg = Debug|x86 + {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|x86.Build.0 = Debug|x86 + {657F9623-3E01-4ED5-A400-58547D34E579}.Release|Any CPU.ActiveCfg = Release|Any CPU + {657F9623-3E01-4ED5-A400-58547D34E579}.Release|Any CPU.Build.0 = Release|Any CPU + {657F9623-3E01-4ED5-A400-58547D34E579}.Release|x64.ActiveCfg = Release|x64 + {657F9623-3E01-4ED5-A400-58547D34E579}.Release|x64.Build.0 = Release|x64 + {657F9623-3E01-4ED5-A400-58547D34E579}.Release|x86.ActiveCfg = Release|x86 + {657F9623-3E01-4ED5-A400-58547D34E579}.Release|x86.Build.0 = Release|x86 + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|x64.ActiveCfg = Debug|x64 + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|x64.Build.0 = Debug|x64 + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|x86.ActiveCfg = Debug|x86 + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|x86.Build.0 = Debug|x86 + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|Any CPU.Build.0 = Release|Any CPU + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|x64.ActiveCfg = Release|x64 + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|x64.Build.0 = Release|x64 + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|x86.ActiveCfg = Release|x86 + {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|x86.Build.0 = Release|x86 + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|x64.ActiveCfg = Debug|x64 + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|x64.Build.0 = Debug|x64 + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|x86.ActiveCfg = Debug|x86 + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|x86.Build.0 = Debug|x86 + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|Any CPU.Build.0 = Release|Any CPU + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|x64.ActiveCfg = Release|x64 + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|x64.Build.0 = Release|x64 + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|x86.ActiveCfg = Release|x86 + {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|x86.Build.0 = Release|x86 + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|x64.ActiveCfg = Debug|x64 + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|x64.Build.0 = Debug|x64 + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|x86.ActiveCfg = Debug|x86 + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|x86.Build.0 = Debug|x86 + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|Any CPU.Build.0 = Release|Any CPU + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|x64.ActiveCfg = Release|x64 + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|x64.Build.0 = Release|x64 + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|x86.ActiveCfg = Release|x86 + {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|x86.Build.0 = Release|x86 + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|x64.ActiveCfg = Debug|x64 + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|x64.Build.0 = Debug|x64 + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|x86.ActiveCfg = Debug|x86 + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|x86.Build.0 = Debug|x86 + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|Any CPU.Build.0 = Release|Any CPU + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|x64.ActiveCfg = Release|x64 + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|x64.Build.0 = Release|x64 + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|x86.ActiveCfg = Release|x86 + {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|x86.Build.0 = Release|x86 + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|x64.ActiveCfg = Debug|x64 + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|x64.Build.0 = Debug|x64 + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|x86.ActiveCfg = Debug|x86 + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|x86.Build.0 = Debug|x86 + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|Any CPU.Build.0 = Release|Any CPU + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|x64.ActiveCfg = Release|x64 + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|x64.Build.0 = Release|x64 + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|x86.ActiveCfg = Release|x86 + {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|x86.Build.0 = Release|x86 + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|x64.ActiveCfg = Debug|x64 + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|x64.Build.0 = Debug|x64 + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|x86.ActiveCfg = Debug|x86 + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|x86.Build.0 = Debug|x86 + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|Any CPU.Build.0 = Release|Any CPU + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|x64.ActiveCfg = Release|x64 + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|x64.Build.0 = Release|x64 + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|x86.ActiveCfg = Release|x86 + {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|x86.Build.0 = Release|x86 + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|x64.ActiveCfg = Debug|x64 + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|x64.Build.0 = Debug|x64 + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|x86.ActiveCfg = Debug|x86 + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|x86.Build.0 = Debug|x86 + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|Any CPU.Build.0 = Release|Any CPU + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|x64.ActiveCfg = Release|x64 + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|x64.Build.0 = Release|x64 + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|x86.ActiveCfg = Release|x86 + {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|x86.Build.0 = Release|x86 + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|x64.ActiveCfg = Debug|x64 + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|x64.Build.0 = Debug|x64 + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|x86.ActiveCfg = Debug|x86 + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|x86.Build.0 = Debug|x86 + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|Any CPU.Build.0 = Release|Any CPU + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|x64.ActiveCfg = Release|x64 + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|x64.Build.0 = Release|x64 + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|x86.ActiveCfg = Release|x86 + {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|x86.Build.0 = Release|x86 + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|x64.ActiveCfg = Debug|x64 + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|x64.Build.0 = Debug|x64 + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|x86.ActiveCfg = Debug|x86 + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|x86.Build.0 = Debug|x86 + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|Any CPU.Build.0 = Release|Any CPU + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|x64.ActiveCfg = Release|x64 + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|x64.Build.0 = Release|x64 + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|x86.ActiveCfg = Release|x86 + {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|x86.Build.0 = Release|x86 + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|x64.ActiveCfg = Debug|x64 + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|x64.Build.0 = Debug|x64 + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|x86.ActiveCfg = Debug|x86 + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|x86.Build.0 = Debug|x86 + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|Any CPU.Build.0 = Release|Any CPU + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|x64.ActiveCfg = Release|x64 + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|x64.Build.0 = Release|x64 + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|x86.ActiveCfg = Release|x86 + {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|x86.Build.0 = Release|x86 + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|x64.ActiveCfg = Debug|x64 + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|x64.Build.0 = Debug|x64 + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|x86.ActiveCfg = Debug|x86 + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|x86.Build.0 = Debug|x86 + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|Any CPU.Build.0 = Release|Any CPU + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|x64.ActiveCfg = Release|x64 + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|x64.Build.0 = Release|x64 + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|x86.ActiveCfg = Release|x86 + {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|x86.Build.0 = Release|x86 + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|x64.ActiveCfg = Debug|x64 + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|x64.Build.0 = Debug|x64 + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|x86.ActiveCfg = Debug|x86 + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|x86.Build.0 = Debug|x86 + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|Any CPU.Build.0 = Release|Any CPU + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|x64.ActiveCfg = Release|x64 + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|x64.Build.0 = Release|x64 + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|x86.ActiveCfg = Release|x86 + {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|x86.Build.0 = Release|x86 + {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|x64.ActiveCfg = Debug|x64 + {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|x64.Build.0 = Debug|x64 + {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|x86.ActiveCfg = Debug|x86 + {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|x86.Build.0 = Debug|x86 + {246719B1-0179-4A81-A372-3290AAA5699E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {246719B1-0179-4A81-A372-3290AAA5699E}.Release|Any CPU.Build.0 = Release|Any CPU + {246719B1-0179-4A81-A372-3290AAA5699E}.Release|x64.ActiveCfg = Release|x64 + {246719B1-0179-4A81-A372-3290AAA5699E}.Release|x64.Build.0 = Release|x64 + {246719B1-0179-4A81-A372-3290AAA5699E}.Release|x86.ActiveCfg = Release|x86 + {246719B1-0179-4A81-A372-3290AAA5699E}.Release|x86.Build.0 = Release|x86 + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|Any CPU.Build.0 = Debug|Any CPU + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|x64.ActiveCfg = Debug|x64 + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|x64.Build.0 = Debug|x64 + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|x86.ActiveCfg = Debug|x86 + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|x86.Build.0 = Debug|x86 + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|Any CPU.ActiveCfg = Release|Any CPU + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|Any CPU.Build.0 = Release|Any CPU + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|x64.ActiveCfg = Release|x64 + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|x64.Build.0 = Release|x64 + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|x86.ActiveCfg = Release|x86 + {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|x86.Build.0 = Release|x86 + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|x64.ActiveCfg = Debug|x64 + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|x64.Build.0 = Debug|x64 + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|x86.ActiveCfg = Debug|x86 + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|x86.Build.0 = Debug|x86 + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|Any CPU.Build.0 = Release|Any CPU + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|x64.ActiveCfg = Release|x64 + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|x64.Build.0 = Release|x64 + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|x86.ActiveCfg = Release|x86 + {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|x86.Build.0 = Release|x86 + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|x64.ActiveCfg = Debug|x64 + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|x64.Build.0 = Debug|x64 + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|x86.ActiveCfg = Debug|x86 + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|x86.Build.0 = Debug|x86 + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|Any CPU.Build.0 = Release|Any CPU + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|x64.ActiveCfg = Release|x64 + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|x64.Build.0 = Release|x64 + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|x86.ActiveCfg = Release|x86 + {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|x86.Build.0 = Release|x86 + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|x64.ActiveCfg = Debug|x64 + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|x64.Build.0 = Debug|x64 + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|x86.ActiveCfg = Debug|x86 + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|x86.Build.0 = Debug|x86 + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|Any CPU.Build.0 = Release|Any CPU + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|x64.ActiveCfg = Release|x64 + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|x64.Build.0 = Release|x64 + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|x86.ActiveCfg = Release|x86 + {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|x86.Build.0 = Release|x86 + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|x64.ActiveCfg = Debug|x64 + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|x64.Build.0 = Debug|x64 + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|x86.ActiveCfg = Debug|x86 + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|x86.Build.0 = Debug|x86 + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|Any CPU.Build.0 = Release|Any CPU + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|x64.ActiveCfg = Release|x64 + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|x64.Build.0 = Release|x64 + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|x86.ActiveCfg = Release|x86 + {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|x86.Build.0 = Release|x86 + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|x64.ActiveCfg = Debug|x64 + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|x64.Build.0 = Debug|x64 + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|x86.ActiveCfg = Debug|x86 + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|x86.Build.0 = Debug|x86 + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|Any CPU.Build.0 = Release|Any CPU + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|x64.ActiveCfg = Release|x64 + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|x64.Build.0 = Release|x64 + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|x86.ActiveCfg = Release|x86 + {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|x86.Build.0 = Release|x86 + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|x64.ActiveCfg = Debug|x64 + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|x64.Build.0 = Debug|x64 + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|x86.ActiveCfg = Debug|x86 + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|x86.Build.0 = Debug|x86 + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|Any CPU.Build.0 = Release|Any CPU + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|x64.ActiveCfg = Release|x64 + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|x64.Build.0 = Release|x64 + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|x86.ActiveCfg = Release|x86 + {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|x86.Build.0 = Release|x86 + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|x64.ActiveCfg = Debug|x64 + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|x64.Build.0 = Debug|x64 + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|x86.ActiveCfg = Debug|x86 + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|x86.Build.0 = Debug|x86 + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|Any CPU.Build.0 = Release|Any CPU + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|x64.ActiveCfg = Release|x64 + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|x64.Build.0 = Release|x64 + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|x86.ActiveCfg = Release|x86 + {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|x86.Build.0 = Release|x86 + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|x64.ActiveCfg = Debug|x64 + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|x64.Build.0 = Debug|x64 + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|x86.ActiveCfg = Debug|x86 + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|x86.Build.0 = Debug|x86 + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|Any CPU.Build.0 = Release|Any CPU + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|x64.ActiveCfg = Release|x64 + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|x64.Build.0 = Release|x64 + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|x86.ActiveCfg = Release|x86 + {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|x86.Build.0 = Release|x86 + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|x64.ActiveCfg = Debug|x64 + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|x64.Build.0 = Debug|x64 + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|x86.ActiveCfg = Debug|x86 + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|x86.Build.0 = Debug|x86 + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|Any CPU.Build.0 = Release|Any CPU + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|x64.ActiveCfg = Release|x64 + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|x64.Build.0 = Release|x64 + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|x86.ActiveCfg = Release|x86 + {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|x86.Build.0 = Release|x86 + {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|x64.ActiveCfg = Debug|x64 + {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|x64.Build.0 = Debug|x64 + {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|x86.ActiveCfg = Debug|x86 + {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|x86.Build.0 = Debug|x86 + {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|Any CPU.Build.0 = Release|Any CPU + {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|x64.ActiveCfg = Release|x64 + {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|x64.Build.0 = Release|x64 + {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|x86.ActiveCfg = Release|x86 + {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|x86.Build.0 = Release|x86 + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|x64.ActiveCfg = Debug|x64 + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|x64.Build.0 = Debug|x64 + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|x86.ActiveCfg = Debug|x86 + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|x86.Build.0 = Debug|x86 + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|Any CPU.Build.0 = Release|Any CPU + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|x64.ActiveCfg = Release|x64 + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|x64.Build.0 = Release|x64 + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|x86.ActiveCfg = Release|x86 + {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|x86.Build.0 = Release|x86 + {13AA981F-53F0-4159-9D08-44710A338491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {13AA981F-53F0-4159-9D08-44710A338491}.Debug|Any CPU.Build.0 = Debug|Any CPU + {13AA981F-53F0-4159-9D08-44710A338491}.Debug|x64.ActiveCfg = Debug|x64 + {13AA981F-53F0-4159-9D08-44710A338491}.Debug|x64.Build.0 = Debug|x64 + {13AA981F-53F0-4159-9D08-44710A338491}.Debug|x86.ActiveCfg = Debug|x86 + {13AA981F-53F0-4159-9D08-44710A338491}.Debug|x86.Build.0 = Debug|x86 + {13AA981F-53F0-4159-9D08-44710A338491}.Release|Any CPU.ActiveCfg = Release|Any CPU + {13AA981F-53F0-4159-9D08-44710A338491}.Release|Any CPU.Build.0 = Release|Any CPU + {13AA981F-53F0-4159-9D08-44710A338491}.Release|x64.ActiveCfg = Release|x64 + {13AA981F-53F0-4159-9D08-44710A338491}.Release|x64.Build.0 = Release|x64 + {13AA981F-53F0-4159-9D08-44710A338491}.Release|x86.ActiveCfg = Release|x86 + {13AA981F-53F0-4159-9D08-44710A338491}.Release|x86.Build.0 = Release|x86 + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|x64.ActiveCfg = Debug|x64 + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|x64.Build.0 = Debug|x64 + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|x86.ActiveCfg = Debug|x86 + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|x86.Build.0 = Debug|x86 + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|Any CPU.Build.0 = Release|Any CPU + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|x64.ActiveCfg = Release|x64 + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|x64.Build.0 = Release|x64 + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|x86.ActiveCfg = Release|x86 + {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|x86.Build.0 = Release|x86 + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|x64.ActiveCfg = Debug|x64 + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|x64.Build.0 = Debug|x64 + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|x86.ActiveCfg = Debug|x86 + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|x86.Build.0 = Debug|x86 + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|Any CPU.Build.0 = Release|Any CPU + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|x64.ActiveCfg = Release|x64 + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|x64.Build.0 = Release|x64 + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|x86.ActiveCfg = Release|x86 + {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|x86.Build.0 = Release|x86 + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|x64.ActiveCfg = Debug|x64 + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|x64.Build.0 = Debug|x64 + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|x86.ActiveCfg = Debug|x86 + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|x86.Build.0 = Debug|x86 + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|Any CPU.Build.0 = Release|Any CPU + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|x64.ActiveCfg = Release|x64 + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|x64.Build.0 = Release|x64 + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|x86.ActiveCfg = Release|x86 + {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|x86.Build.0 = Release|x86 + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|x64.ActiveCfg = Debug|x64 + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|x64.Build.0 = Debug|x64 + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|x86.ActiveCfg = Debug|x86 + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|x86.Build.0 = Debug|x86 + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|Any CPU.Build.0 = Release|Any CPU + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|x64.ActiveCfg = Release|x64 + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|x64.Build.0 = Release|x64 + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|x86.ActiveCfg = Release|x86 + {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|x86.Build.0 = Release|x86 + {D001CFA9-58D9-4C59-A127-020178622959}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D001CFA9-58D9-4C59-A127-020178622959}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D001CFA9-58D9-4C59-A127-020178622959}.Debug|x64.ActiveCfg = Debug|x64 + {D001CFA9-58D9-4C59-A127-020178622959}.Debug|x64.Build.0 = Debug|x64 + {D001CFA9-58D9-4C59-A127-020178622959}.Debug|x86.ActiveCfg = Debug|x86 + {D001CFA9-58D9-4C59-A127-020178622959}.Debug|x86.Build.0 = Debug|x86 + {D001CFA9-58D9-4C59-A127-020178622959}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D001CFA9-58D9-4C59-A127-020178622959}.Release|Any CPU.Build.0 = Release|Any CPU + {D001CFA9-58D9-4C59-A127-020178622959}.Release|x64.ActiveCfg = Release|x64 + {D001CFA9-58D9-4C59-A127-020178622959}.Release|x64.Build.0 = Release|x64 + {D001CFA9-58D9-4C59-A127-020178622959}.Release|x86.ActiveCfg = Release|x86 + {D001CFA9-58D9-4C59-A127-020178622959}.Release|x86.Build.0 = Release|x86 + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|x64.ActiveCfg = Debug|x64 + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|x64.Build.0 = Debug|x64 + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|x86.ActiveCfg = Debug|x86 + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|x86.Build.0 = Debug|x86 + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|Any CPU.Build.0 = Release|Any CPU + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|x64.ActiveCfg = Release|x64 + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|x64.Build.0 = Release|x64 + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|x86.ActiveCfg = Release|x86 + {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|x86.Build.0 = Release|x86 + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|x64.ActiveCfg = Debug|x64 + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|x64.Build.0 = Debug|x64 + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|x86.ActiveCfg = Debug|x86 + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|x86.Build.0 = Debug|x86 + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|Any CPU.Build.0 = Release|Any CPU + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|x64.ActiveCfg = Release|x64 + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|x64.Build.0 = Release|x64 + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|x86.ActiveCfg = Release|x86 + {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|x86.Build.0 = Release|x86 + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|x64.ActiveCfg = Debug|x64 + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|x64.Build.0 = Debug|x64 + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|x86.ActiveCfg = Debug|x86 + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|x86.Build.0 = Debug|x86 + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|Any CPU.Build.0 = Release|Any CPU + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|x64.ActiveCfg = Release|x64 + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|x64.Build.0 = Release|x64 + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|x86.ActiveCfg = Release|x86 + {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|x86.Build.0 = Release|x86 + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|x64.ActiveCfg = Debug|x64 + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|x64.Build.0 = Debug|x64 + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|x86.ActiveCfg = Debug|x86 + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|x86.Build.0 = Debug|x86 + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|Any CPU.Build.0 = Release|Any CPU + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|x64.ActiveCfg = Release|x64 + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|x64.Build.0 = Release|x64 + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|x86.ActiveCfg = Release|x86 + {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|x86.Build.0 = Release|x86 + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|x64.ActiveCfg = Debug|x64 + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|x64.Build.0 = Debug|x64 + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|x86.ActiveCfg = Debug|x86 + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|x86.Build.0 = Debug|x86 + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|Any CPU.Build.0 = Release|Any CPU + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|x64.ActiveCfg = Release|x64 + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|x64.Build.0 = Release|x64 + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|x86.ActiveCfg = Release|x86 + {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|x86.Build.0 = Release|x86 + {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|x64.ActiveCfg = Debug|x64 + {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|x64.Build.0 = Debug|x64 + {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|x86.ActiveCfg = Debug|x86 + {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|x86.Build.0 = Debug|x86 + {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|Any CPU.Build.0 = Release|Any CPU + {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|x64.ActiveCfg = Release|x64 + {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|x64.Build.0 = Release|x64 + {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|x86.ActiveCfg = Release|x86 + {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|x86.Build.0 = Release|x86 + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|x64.ActiveCfg = Debug|x64 + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|x64.Build.0 = Debug|x64 + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|x86.ActiveCfg = Debug|x86 + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|x86.Build.0 = Debug|x86 + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|Any CPU.Build.0 = Release|Any CPU + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|x64.ActiveCfg = Release|x64 + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|x64.Build.0 = Release|x64 + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|x86.ActiveCfg = Release|x86 + {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|x86.Build.0 = Release|x86 + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|x64.ActiveCfg = Debug|x64 + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|x64.Build.0 = Debug|x64 + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|x86.ActiveCfg = Debug|x86 + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|x86.Build.0 = Debug|x86 + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|Any CPU.Build.0 = Release|Any CPU + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|x64.ActiveCfg = Release|x64 + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|x64.Build.0 = Release|x64 + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|x86.ActiveCfg = Release|x86 + {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|x86.Build.0 = Release|x86 + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|x64.ActiveCfg = Debug|x64 + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|x64.Build.0 = Debug|x64 + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|x86.ActiveCfg = Debug|x86 + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|x86.Build.0 = Debug|x86 + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|Any CPU.Build.0 = Release|Any CPU + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|x64.ActiveCfg = Release|x64 + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|x64.Build.0 = Release|x64 + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|x86.ActiveCfg = Release|x86 + {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|x86.Build.0 = Release|x86 + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|x64.ActiveCfg = Debug|x64 + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|x64.Build.0 = Debug|x64 + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|x86.ActiveCfg = Debug|x86 + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|x86.Build.0 = Debug|x86 + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|Any CPU.Build.0 = Release|Any CPU + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|x64.ActiveCfg = Release|x64 + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|x64.Build.0 = Release|x64 + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|x86.ActiveCfg = Release|x86 + {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|x86.Build.0 = Release|x86 + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|Any CPU.Build.0 = Debug|Any CPU + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|x64.ActiveCfg = Debug|x64 + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|x64.Build.0 = Debug|x64 + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|x86.ActiveCfg = Debug|x86 + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|x86.Build.0 = Debug|x86 + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|Any CPU.ActiveCfg = Release|Any CPU + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|Any CPU.Build.0 = Release|Any CPU + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|x64.ActiveCfg = Release|x64 + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|x64.Build.0 = Release|x64 + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|x86.ActiveCfg = Release|x86 + {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|x86.Build.0 = Release|x86 + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|x64.ActiveCfg = Debug|x64 + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|x64.Build.0 = Debug|x64 + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|x86.ActiveCfg = Debug|x86 + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|x86.Build.0 = Debug|x86 + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|Any CPU.Build.0 = Release|Any CPU + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|x64.ActiveCfg = Release|x64 + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|x64.Build.0 = Release|x64 + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|x86.ActiveCfg = Release|x86 + {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|x86.Build.0 = Release|x86 + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|x64.ActiveCfg = Debug|x64 + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|x64.Build.0 = Debug|x64 + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|x86.ActiveCfg = Debug|x86 + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|x86.Build.0 = Debug|x86 + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|Any CPU.Build.0 = Release|Any CPU + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|x64.ActiveCfg = Release|x64 + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|x64.Build.0 = Release|x64 + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|x86.ActiveCfg = Release|x86 + {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|x86.Build.0 = Release|x86 + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|x64.ActiveCfg = Debug|x64 + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|x64.Build.0 = Debug|x64 + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|x86.ActiveCfg = Debug|x86 + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|x86.Build.0 = Debug|x86 + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|Any CPU.Build.0 = Release|Any CPU + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|x64.ActiveCfg = Release|x64 + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|x64.Build.0 = Release|x64 + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|x86.ActiveCfg = Release|x86 + {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|x86.Build.0 = Release|x86 + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|x64.ActiveCfg = Debug|x64 + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|x64.Build.0 = Debug|x64 + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|x86.ActiveCfg = Debug|x86 + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|x86.Build.0 = Debug|x86 + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|Any CPU.Build.0 = Release|Any CPU + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|x64.ActiveCfg = Release|x64 + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|x64.Build.0 = Release|x64 + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|x86.ActiveCfg = Release|x86 + {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|x86.Build.0 = Release|x86 + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|x64.ActiveCfg = Debug|x64 + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|x64.Build.0 = Debug|x64 + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|x86.ActiveCfg = Debug|x86 + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|x86.Build.0 = Debug|x86 + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|Any CPU.Build.0 = Release|Any CPU + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|x64.ActiveCfg = Release|x64 + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|x64.Build.0 = Release|x64 + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|x86.ActiveCfg = Release|x86 + {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|x86.Build.0 = Release|x86 + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|x64.ActiveCfg = Debug|x64 + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|x64.Build.0 = Debug|x64 + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|x86.ActiveCfg = Debug|x86 + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|x86.Build.0 = Debug|x86 + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|Any CPU.Build.0 = Release|Any CPU + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|x64.ActiveCfg = Release|x64 + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|x64.Build.0 = Release|x64 + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|x86.ActiveCfg = Release|x86 + {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|x86.Build.0 = Release|x86 + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|x64.ActiveCfg = Debug|x64 + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|x64.Build.0 = Debug|x64 + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|x86.ActiveCfg = Debug|x86 + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|x86.Build.0 = Debug|x86 + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|Any CPU.Build.0 = Release|Any CPU + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|x64.ActiveCfg = Release|x64 + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|x64.Build.0 = Release|x64 + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|x86.ActiveCfg = Release|x86 + {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|x86.Build.0 = Release|x86 + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|x64.ActiveCfg = Debug|x64 + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|x64.Build.0 = Debug|x64 + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|x86.ActiveCfg = Debug|x86 + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|x86.Build.0 = Debug|x86 + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|Any CPU.Build.0 = Release|Any CPU + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|x64.ActiveCfg = Release|x64 + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|x64.Build.0 = Release|x64 + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|x86.ActiveCfg = Release|x86 + {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|x86.Build.0 = Release|x86 + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|x64.ActiveCfg = Debug|x64 + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|x64.Build.0 = Debug|x64 + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|x86.ActiveCfg = Debug|x86 + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|x86.Build.0 = Debug|x86 + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|Any CPU.Build.0 = Release|Any CPU + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|x64.ActiveCfg = Release|x64 + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|x64.Build.0 = Release|x64 + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|x86.ActiveCfg = Release|x86 + {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|x86.Build.0 = Release|x86 + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|x64.ActiveCfg = Debug|x64 + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|x64.Build.0 = Debug|x64 + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|x86.ActiveCfg = Debug|x86 + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|x86.Build.0 = Debug|x86 + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|Any CPU.Build.0 = Release|Any CPU + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|x64.ActiveCfg = Release|x64 + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|x64.Build.0 = Release|x64 + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|x86.ActiveCfg = Release|x86 + {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|x86.Build.0 = Release|x86 + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|x64.ActiveCfg = Debug|x64 + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|x64.Build.0 = Debug|x64 + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|x86.ActiveCfg = Debug|x86 + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|x86.Build.0 = Debug|x86 + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|Any CPU.Build.0 = Release|Any CPU + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|x64.ActiveCfg = Release|x64 + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|x64.Build.0 = Release|x64 + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|x86.ActiveCfg = Release|x86 + {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|x86.Build.0 = Release|x86 + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|x64.ActiveCfg = Debug|x64 + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|x64.Build.0 = Debug|x64 + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|x86.ActiveCfg = Debug|x86 + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|x86.Build.0 = Debug|x86 + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|Any CPU.Build.0 = Release|Any CPU + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|x64.ActiveCfg = Release|x64 + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|x64.Build.0 = Release|x64 + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|x86.ActiveCfg = Release|x86 + {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|x86.Build.0 = Release|x86 + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|x64.ActiveCfg = Debug|x64 + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|x64.Build.0 = Debug|x64 + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|x86.ActiveCfg = Debug|x86 + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|x86.Build.0 = Debug|x86 + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|Any CPU.Build.0 = Release|Any CPU + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|x64.ActiveCfg = Release|x64 + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|x64.Build.0 = Release|x64 + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|x86.ActiveCfg = Release|x86 + {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|x86.Build.0 = Release|x86 + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|x64.ActiveCfg = Debug|x64 + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|x64.Build.0 = Debug|x64 + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|x86.ActiveCfg = Debug|x86 + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|x86.Build.0 = Debug|x86 + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|Any CPU.Build.0 = Release|Any CPU + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|x64.ActiveCfg = Release|x64 + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|x64.Build.0 = Release|x64 + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|x86.ActiveCfg = Release|x86 + {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|x86.Build.0 = Release|x86 + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|x64.ActiveCfg = Debug|x64 + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|x64.Build.0 = Debug|x64 + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|x86.ActiveCfg = Debug|x86 + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|x86.Build.0 = Debug|x86 + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|Any CPU.Build.0 = Release|Any CPU + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|x64.ActiveCfg = Release|x64 + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|x64.Build.0 = Release|x64 + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|x86.ActiveCfg = Release|x86 + {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|x86.Build.0 = Release|x86 + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|x64.ActiveCfg = Debug|x64 + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|x64.Build.0 = Debug|x64 + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|x86.ActiveCfg = Debug|x86 + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|x86.Build.0 = Debug|x86 + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|Any CPU.Build.0 = Release|Any CPU + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|x64.ActiveCfg = Release|x64 + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|x64.Build.0 = Release|x64 + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|x86.ActiveCfg = Release|x86 + {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|x86.Build.0 = Release|x86 + {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|x64.ActiveCfg = Debug|x64 + {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|x64.Build.0 = Debug|x64 + {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|x86.ActiveCfg = Debug|x86 + {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|x86.Build.0 = Debug|x86 + {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|Any CPU.Build.0 = Release|Any CPU + {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|x64.ActiveCfg = Release|x64 + {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|x64.Build.0 = Release|x64 + {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|x86.ActiveCfg = Release|x86 + {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|x86.Build.0 = Release|x86 + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|x64.ActiveCfg = Debug|x64 + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|x64.Build.0 = Debug|x64 + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|x86.ActiveCfg = Debug|x86 + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|x86.Build.0 = Debug|x86 + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|Any CPU.Build.0 = Release|Any CPU + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|x64.ActiveCfg = Release|x64 + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|x64.Build.0 = Release|x64 + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|x86.ActiveCfg = Release|x86 + {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|x86.Build.0 = Release|x86 + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|x64.ActiveCfg = Debug|x64 + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|x64.Build.0 = Debug|x64 + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|x86.ActiveCfg = Debug|x86 + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|x86.Build.0 = Debug|x86 + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|Any CPU.Build.0 = Release|Any CPU + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|x64.ActiveCfg = Release|x64 + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|x64.Build.0 = Release|x64 + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|x86.ActiveCfg = Release|x86 + {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|x86.Build.0 = Release|x86 + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|x64.ActiveCfg = Debug|x64 + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|x64.Build.0 = Debug|x64 + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|x86.ActiveCfg = Debug|x86 + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|x86.Build.0 = Debug|x86 + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|Any CPU.Build.0 = Release|Any CPU + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|x64.ActiveCfg = Release|x64 + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|x64.Build.0 = Release|x64 + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|x86.ActiveCfg = Release|x86 + {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|x86.Build.0 = Release|x86 + {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|x64.ActiveCfg = Debug|x64 + {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|x64.Build.0 = Debug|x64 + {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|x86.ActiveCfg = Debug|x86 + {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|x86.Build.0 = Debug|x86 + {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|Any CPU.Build.0 = Release|Any CPU + {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|x64.ActiveCfg = Release|x64 + {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|x64.Build.0 = Release|x64 + {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|x86.ActiveCfg = Release|x86 + {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|x86.Build.0 = Release|x86 + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|Any CPU.Build.0 = Debug|Any CPU + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|x64.ActiveCfg = Debug|x64 + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|x64.Build.0 = Debug|x64 + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|x86.ActiveCfg = Debug|x86 + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|x86.Build.0 = Debug|x86 + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|Any CPU.ActiveCfg = Release|Any CPU + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|Any CPU.Build.0 = Release|Any CPU + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|x64.ActiveCfg = Release|x64 + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|x64.Build.0 = Release|x64 + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|x86.ActiveCfg = Release|x86 + {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|x86.Build.0 = Release|x86 + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|x64.ActiveCfg = Debug|x64 + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|x64.Build.0 = Debug|x64 + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|x86.ActiveCfg = Debug|x86 + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|x86.Build.0 = Debug|x86 + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|Any CPU.Build.0 = Release|Any CPU + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|x64.ActiveCfg = Release|x64 + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|x64.Build.0 = Release|x64 + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|x86.ActiveCfg = Release|x86 + {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|x86.Build.0 = Release|x86 + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|x64.ActiveCfg = Debug|x64 + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|x64.Build.0 = Debug|x64 + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|x86.ActiveCfg = Debug|x86 + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|x86.Build.0 = Debug|x86 + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|Any CPU.Build.0 = Release|Any CPU + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|x64.ActiveCfg = Release|x64 + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|x64.Build.0 = Release|x64 + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|x86.ActiveCfg = Release|x86 + {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|x86.Build.0 = Release|x86 + {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|x64.ActiveCfg = Debug|x64 + {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|x64.Build.0 = Debug|x64 + {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|x86.ActiveCfg = Debug|x86 + {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|x86.Build.0 = Debug|x86 + {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|Any CPU.Build.0 = Release|Any CPU + {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|x64.ActiveCfg = Release|x64 + {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|x64.Build.0 = Release|x64 + {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|x86.ActiveCfg = Release|x86 + {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|x86.Build.0 = Release|x86 + {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|x64.ActiveCfg = Debug|x64 + {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|x64.Build.0 = Debug|x64 + {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|x86.ActiveCfg = Debug|x86 + {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|x86.Build.0 = Debug|x86 + {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|Any CPU.Build.0 = Release|Any CPU + {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|x64.ActiveCfg = Release|x64 + {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|x64.Build.0 = Release|x64 + {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|x86.ActiveCfg = Release|x86 + {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|x86.Build.0 = Release|x86 + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|x64.ActiveCfg = Debug|x64 + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|x64.Build.0 = Debug|x64 + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|x86.ActiveCfg = Debug|x86 + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|x86.Build.0 = Debug|x86 + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|Any CPU.Build.0 = Release|Any CPU + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|x64.ActiveCfg = Release|x64 + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|x64.Build.0 = Release|x64 + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|x86.ActiveCfg = Release|x86 + {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|x86.Build.0 = Release|x86 + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|x64.ActiveCfg = Debug|x64 + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|x64.Build.0 = Debug|x64 + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|x86.ActiveCfg = Debug|x86 + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|x86.Build.0 = Debug|x86 + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|Any CPU.Build.0 = Release|Any CPU + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|x64.ActiveCfg = Release|x64 + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|x64.Build.0 = Release|x64 + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|x86.ActiveCfg = Release|x86 + {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|x86.Build.0 = Release|x86 + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|x64.ActiveCfg = Debug|x64 + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|x64.Build.0 = Debug|x64 + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|x86.ActiveCfg = Debug|x86 + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|x86.Build.0 = Debug|x86 + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|Any CPU.Build.0 = Release|Any CPU + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|x64.ActiveCfg = Release|x64 + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|x64.Build.0 = Release|x64 + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|x86.ActiveCfg = Release|x86 + {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|x86.Build.0 = Release|x86 + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|x64.ActiveCfg = Debug|x64 + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|x64.Build.0 = Debug|x64 + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|x86.ActiveCfg = Debug|x86 + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|x86.Build.0 = Debug|x86 + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|Any CPU.Build.0 = Release|Any CPU + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|x64.ActiveCfg = Release|x64 + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|x64.Build.0 = Release|x64 + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|x86.ActiveCfg = Release|x86 + {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|x86.Build.0 = Release|x86 + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|x64.ActiveCfg = Debug|x64 + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|x64.Build.0 = Debug|x64 + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|x86.ActiveCfg = Debug|x86 + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|x86.Build.0 = Debug|x86 + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|Any CPU.Build.0 = Release|Any CPU + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|x64.ActiveCfg = Release|x64 + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|x64.Build.0 = Release|x64 + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|x86.ActiveCfg = Release|x86 + {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|x86.Build.0 = Release|x86 + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|x64.ActiveCfg = Debug|x64 + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|x64.Build.0 = Debug|x64 + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|x86.ActiveCfg = Debug|x86 + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|x86.Build.0 = Debug|x86 + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|Any CPU.Build.0 = Release|Any CPU + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|x64.ActiveCfg = Release|x64 + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|x64.Build.0 = Release|x64 + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|x86.ActiveCfg = Release|x86 + {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|x86.Build.0 = Release|x86 + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|x64.ActiveCfg = Debug|x64 + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|x64.Build.0 = Debug|x64 + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|x86.ActiveCfg = Debug|x86 + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|x86.Build.0 = Debug|x86 + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|Any CPU.Build.0 = Release|Any CPU + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|x64.ActiveCfg = Release|x64 + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|x64.Build.0 = Release|x64 + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|x86.ActiveCfg = Release|x86 + {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|x86.Build.0 = Release|x86 + {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|Any CPU.Build.0 = Debug|Any CPU + {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|x64.ActiveCfg = Debug|x64 + {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|x64.Build.0 = Debug|x64 + {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|x86.ActiveCfg = Debug|x86 + {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|x86.Build.0 = Debug|x86 + {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|Any CPU.ActiveCfg = Release|Any CPU + {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|Any CPU.Build.0 = Release|Any CPU + {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|x64.ActiveCfg = Release|x64 + {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|x64.Build.0 = Release|x64 + {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|x86.ActiveCfg = Release|x86 + {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|x86.Build.0 = Release|x86 + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|x64.ActiveCfg = Debug|x64 + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|x64.Build.0 = Debug|x64 + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|x86.ActiveCfg = Debug|x86 + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|x86.Build.0 = Debug|x86 + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|Any CPU.Build.0 = Release|Any CPU + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|x64.ActiveCfg = Release|x64 + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|x64.Build.0 = Release|x64 + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|x86.ActiveCfg = Release|x86 + {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|x86.Build.0 = Release|x86 + {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|Any CPU.Build.0 = Debug|Any CPU + {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|x64.ActiveCfg = Debug|x64 + {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|x64.Build.0 = Debug|x64 + {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|x86.ActiveCfg = Debug|x86 + {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|x86.Build.0 = Debug|x86 + {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|Any CPU.ActiveCfg = Release|Any CPU + {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|Any CPU.Build.0 = Release|Any CPU + {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|x64.ActiveCfg = Release|x64 + {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|x64.Build.0 = Release|x64 + {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|x86.ActiveCfg = Release|x86 + {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|x86.Build.0 = Release|x86 + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|x64.ActiveCfg = Debug|x64 + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|x64.Build.0 = Debug|x64 + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|x86.ActiveCfg = Debug|x86 + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|x86.Build.0 = Debug|x86 + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|Any CPU.Build.0 = Release|Any CPU + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|x64.ActiveCfg = Release|x64 + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|x64.Build.0 = Release|x64 + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|x86.ActiveCfg = Release|x86 + {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|x86.Build.0 = Release|x86 + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|x64.ActiveCfg = Debug|x64 + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|x64.Build.0 = Debug|x64 + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|x86.ActiveCfg = Debug|x86 + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|x86.Build.0 = Debug|x86 + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|Any CPU.Build.0 = Release|Any CPU + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|x64.ActiveCfg = Release|x64 + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|x64.Build.0 = Release|x64 + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|x86.ActiveCfg = Release|x86 + {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|x86.Build.0 = Release|x86 + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|x64.ActiveCfg = Debug|x64 + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|x64.Build.0 = Debug|x64 + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|x86.ActiveCfg = Debug|x86 + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|x86.Build.0 = Debug|x86 + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|Any CPU.Build.0 = Release|Any CPU + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|x64.ActiveCfg = Release|x64 + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|x64.Build.0 = Release|x64 + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|x86.ActiveCfg = Release|x86 + {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|x86.Build.0 = Release|x86 + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|x64.ActiveCfg = Debug|x64 + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|x64.Build.0 = Debug|x64 + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|x86.ActiveCfg = Debug|x86 + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|x86.Build.0 = Debug|x86 + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|Any CPU.Build.0 = Release|Any CPU + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|x64.ActiveCfg = Release|x64 + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|x64.Build.0 = Release|x64 + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|x86.ActiveCfg = Release|x86 + {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|x86.Build.0 = Release|x86 EndGlobalSection EndGlobal From 48d567fffda359d9bb5f15cbc51768912da01aa7 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Tue, 7 Mar 2017 18:03:24 +0100 Subject: [PATCH 17/19] Update docs with latest CLI and VS download link --- docs/INSTALLATION.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 5368fb4ecd..2091c35d1b 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -1,18 +1,18 @@ ### Installing .NET Core -The C# track is built on top of the [.NET Core](https://www.microsoft.com/net/core/platform) platform, which runs on Windows, Linux and macOS. To build .NET Core projects, you can use the [.NET Core Command Line Interface](https://docs.microsoft.com/en-us/dotnet/articles/core/preview3/tools/index) (CLI). This CLI is part of the .NET Core SDK, which you can install by following the [installation instructions](https://www.microsoft.com/net/core). After completing the installation, you can verify if the CLI was installed succesfully by running this command in a terminal: +The C# track is built on top of the [.NET Core](https://www.microsoft.com/net/core/platform) platform, which runs on Windows, Linux and macOS. To build .NET Core projects, you can use the .NET Core Command Line Interface (CLI). This CLI is part of the .NET Core SDK, which you can install by following the [installation instructions](https://www.microsoft.com/net/download/core). After completing the installation, you can verify if the CLI was installed succesfully by running this command in a terminal: ```bash dotnet --version ``` -It the output is a version greater than or equal to `1.0.0`, the .NET Core SDK has been installed succesfully. +It the output is a version greater than or equal to `1.0.1`, the .NET Core SDK has been installed succesfully. ### Using an IDE If you want a more full-featured editing experience, you probably want to to use an IDE. These are the most popular IDE's that support building .NET Core projects: -* [Visual Studio 2017](https://www.visualstudio.com/vs/visual-studio-2017-rc/) +* [Visual Studio 2017](https://www.visualstudio.com/downloads/) * [Visual Studio Code](https://code.visualstudio.com/download) with the [C# extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp) * [Visual Studio for Mac](https://www.visualstudio.com/vs/visual-studio-mac/) (still in beta) * [Project Rider](https://www.jetbrains.com/rider/download/) (still in EAP) From 746aa1bad66667ab790b75899223151c512df8fe Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Tue, 7 Mar 2017 19:34:32 +0100 Subject: [PATCH 18/19] Revert back to version 1.0.0 CLI message --- docs/INSTALLATION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 2091c35d1b..d43ea4f0cd 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -6,7 +6,7 @@ The C# track is built on top of the [.NET Core](https://www.microsoft.com/net/co dotnet --version ``` -It the output is a version greater than or equal to `1.0.1`, the .NET Core SDK has been installed succesfully. +It the output is a version greater than or equal to `1.0.0`, the .NET Core SDK has been installed succesfully. ### Using an IDE From d0ba8013a37f27225d9860fd39b89e9d3f8575b9 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Tue, 7 Mar 2017 19:59:54 +0100 Subject: [PATCH 19/19] Use correct project configuration in solution file --- exercises/exercises.sln | 2710 ++++++++++++++++++++------------------- 1 file changed, 1356 insertions(+), 1354 deletions(-) diff --git a/exercises/exercises.sln b/exercises/exercises.sln index 99187592f2..f85d9cfb40 100644 --- a/exercises/exercises.sln +++ b/exercises/exercises.sln @@ -1,215 +1,214 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 +VisualStudioVersion = 15.0.26228.4 MinimumVisualStudioVersion = 15.0.26124.0 -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Accumulate", "accumulate\Accumulate.csproj", "{373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Accumulate", "accumulate\Accumulate.csproj", "{F16C0EE1-6923-4328-B015-363CF24FF867}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Acronym", "acronym\Acronym.csproj", "{32096AEE-EB88-473F-AA6E-8DEF1092A273}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Acronym", "acronym\Acronym.csproj", "{0B8FF29D-6707-4112-8398-6F383A31524D}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "AllYourBase", "all-your-base\AllYourBase.csproj", "{AC1FB94A-4FC6-4981-AE6E-E9868223C53D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AllYourBase", "all-your-base\AllYourBase.csproj", "{CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Allergies", "allergies\Allergies.csproj", "{33500D09-72CD-43EB-A7EF-B08E307610A5}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Allergies", "allergies\Allergies.csproj", "{C9372234-0F42-4E0E-BD55-EAC351D9256C}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Alphametics", "alphametics\Alphametics.csproj", "{59EED89F-22FF-4932-8A6E-3FDF3760EB43}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Alphametics", "alphametics\Alphametics.csproj", "{BA7E7612-8AE8-4246-8E09-190445DF9900}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Anagram", "anagram\Anagram.csproj", "{47842EF9-20C4-4283-8F70-8618DCAD6546}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Anagram", "anagram\Anagram.csproj", "{815C764D-CC32-4BD9-8F32-78A2D030C71E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "AtbashCipher", "atbash-cipher\AtbashCipher.csproj", "{ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtbashCipher", "atbash-cipher\AtbashCipher.csproj", "{4CEF0893-7AE3-455E-98C1-89BB822AC1C2}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BankAccount", "bank-account\BankAccount.csproj", "{89932A4D-7A93-4F69-93C9-7BD42614141A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BankAccount", "bank-account\BankAccount.csproj", "{12BF4BEE-261C-42B8-B2DC-D80262744AC2}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BeerSong", "beer-song\BeerSong.csproj", "{0761B5CE-3177-4A64-A61C-BCD0CA691C5C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeerSong", "beer-song\BeerSong.csproj", "{BE87F8A4-E216-40A7-86CF-153A15BAFEF8}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BinarySearch", "binary-search\BinarySearch.csproj", "{70B93253-E2A4-4C5F-9068-1BD9A5074865}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BinarySearch", "binary-search\BinarySearch.csproj", "{1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BinarySearchTree", "binary-search-tree\BinarySearchTree.csproj", "{60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BinarySearchTree", "binary-search-tree\BinarySearchTree.csproj", "{6FBC562A-7721-4846-81B6-D79D5AF576C5}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Bob", "bob\Bob.csproj", "{879C94ED-7E65-4313-8716-1671B7C14361}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bob", "bob\Bob.csproj", "{C8D01AEE-9AD9-4134-9721-3442C59702B2}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BookStore", "book-store\BookStore.csproj", "{6D8999BC-C3CD-4333-AE7C-03687F55AF31}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BookStore", "book-store\BookStore.csproj", "{F9175D9F-7602-4BE1-B565-EA723D0CDF0A}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Bowling", "bowling\Bowling.csproj", "{8116AB75-6EC0-4205-B7C8-8850B6FB7A88}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bowling", "bowling\Bowling.csproj", "{CE0CA302-A594-422D-A215-E78F2F3AF0CE}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "BracketPush", "bracket-push\BracketPush.csproj", "{9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BracketPush", "bracket-push\BracketPush.csproj", "{A9584773-6FD0-42CB-B94E-A61125C5C1E7}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Change", "change\Change.csproj", "{7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Change", "change\Change.csproj", "{31595C04-4C0E-4A72-90A1-054EE5C47BFC}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "CircularBuffer", "circular-buffer\CircularBuffer.csproj", "{E1A1694E-C809-412B-A10B-D556AEEA2E1F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CircularBuffer", "circular-buffer\CircularBuffer.csproj", "{A3016178-CED9-4DDD-8FF4-03C420AD77B9}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Clock", "clock\Clock.csproj", "{D2FA5E1D-399A-4786-88C7-14BB2B6A8162}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Clock", "clock\Clock.csproj", "{D498F024-BA85-4543-88F9-1DCF239470C7}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Connect", "connect\Connect.csproj", "{81620641-C50D-4AB8-A68D-54708270D2E4}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Connect", "connect\Connect.csproj", "{2C9B22CE-770A-400B-BD9B-287030CF12BB}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "CryptoSquare", "crypto-square\CryptoSquare.csproj", "{1428B313-1C8C-4700-892F-B4D1F0C1B92F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CryptoSquare", "crypto-square\CryptoSquare.csproj", "{A6151CB7-713E-43B0-A403-9C73F9936D4B}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "CustomSet", "custom-set\CustomSet.csproj", "{F54007A4-3967-489D-A917-440B0D163D96}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomSet", "custom-set\CustomSet.csproj", "{3ED88500-2825-4F24-81E6-C816FF89A5B5}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Diamond", "diamond\Diamond.csproj", "{657F9623-3E01-4ED5-A400-58547D34E579}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diamond", "diamond\Diamond.csproj", "{93092B18-7447-4F06-AD46-FC7B39EC9E89}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "DifferenceOfSquares", "difference-of-squares\DifferenceOfSquares.csproj", "{3D4DAEED-3579-4F74-8A49-D1464083AFB0}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DifferenceOfSquares", "difference-of-squares\DifferenceOfSquares.csproj", "{07DA1459-6101-43E1-A1AF-48ABD8D62ADD}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "DiffieHellman", "diffie-hellman\DiffieHellman.csproj", "{BD4E4301-18DB-4DA9-84FF-AE187C5120F1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiffieHellman", "diffie-hellman\DiffieHellman.csproj", "{58000112-543C-401E-9D1C-EBABC5A67A14}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Dominoes", "dominoes\Dominoes.csproj", "{83DEEC98-CBC0-49BE-9014-886B481595F0}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dominoes", "dominoes\Dominoes.csproj", "{99CCDA48-1CA3-46B9-89B8-0B45106304FC}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "DotDsl", "dot-dsl\DotDsl.csproj", "{96666549-F0B6-4DF3-B0BA-754E650C54DF}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotDsl", "dot-dsl\DotDsl.csproj", "{45A818E0-8CDF-44A5-B948-63D8DEB9982E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ErrorHandling", "error-handling\ErrorHandling.csproj", "{C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ErrorHandling", "error-handling\ErrorHandling.csproj", "{B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Etl", "etl\Etl.csproj", "{3712944B-0B6B-4465-816C-D88BA2CE2D7D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Etl", "etl\Etl.csproj", "{B7E811DB-8575-4C77-9AF9-49DA840557C2}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "FlattenArray", "flatten-array\FlattenArray.csproj", "{34A3BBDB-3205-421D-A773-B7AD42EAACE6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlattenArray", "flatten-array\FlattenArray.csproj", "{FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "FoodChain", "food-chain\FoodChain.csproj", "{75FF023B-1698-482E-90CE-AFAC23458ED9}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FoodChain", "food-chain\FoodChain.csproj", "{FED33EF6-AC47-4E9A-B615-66B16B846E94}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Forth", "forth\Forth.csproj", "{D0B4E886-3142-4D36-9DCE-12CE77E71161}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Forth", "forth\Forth.csproj", "{ACB24C7C-C92D-43F9-B1B1-9444696DAD36}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Gigasecond", "gigasecond\Gigasecond.csproj", "{F0C639E6-3318-4FF6-993D-A8E3EE439E09}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gigasecond", "gigasecond\Gigasecond.csproj", "{2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "GoCounting", "go-counting\GoCounting.csproj", "{23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GoCounting", "go-counting\GoCounting.csproj", "{A5417213-F20A-4C06-9D8B-8688B0C4EE61}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "GradeSchool", "grade-school\GradeSchool.csproj", "{91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GradeSchool", "grade-school\GradeSchool.csproj", "{A03A743F-C645-45CB-80A0-BE10D2FC1A13}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Grains", "grains\Grains.csproj", "{246719B1-0179-4A81-A372-3290AAA5699E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grains", "grains\Grains.csproj", "{29C6234D-5562-4495-A014-92388EE4518E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Grep", "grep\Grep.csproj", "{63AEC01A-53F5-44DB-8D44-733E30E79853}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grep", "grep\Grep.csproj", "{4427F391-652B-4804-BED4-7CD0D218FE28}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Hamming", "hamming\Hamming.csproj", "{9442849E-6A05-4496-BE3D-C10F3461BDA8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hamming", "hamming\Hamming.csproj", "{61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Hangman", "hangman\Hangman.csproj", "{6657D50B-BD81-43E9-A0FC-E6851182CB32}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hangman", "hangman\Hangman.csproj", "{DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "HelloWorld", "hello-world\HelloWorld.csproj", "{9C808610-CA3A-49D3-A73A-679CE86C7346}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld", "hello-world\HelloWorld.csproj", "{0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "House", "house\House.csproj", "{33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "House", "house\House.csproj", "{4D68748B-6DEF-4E05-830C-43AF09B2CE8A}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Isogram", "isogram\Isogram.csproj", "{1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Isogram", "isogram\Isogram.csproj", "{91CF9FC4-105B-4E21-8692-1D5E539E42E9}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "KindergartenGarden", "kindergarten-garden\KindergartenGarden.csproj", "{C8562C85-5C76-488E-ABCE-C61F2B90D914}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KindergartenGarden", "kindergarten-garden\KindergartenGarden.csproj", "{D504C93E-AE1A-4852-9727-6E565632D38E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "LargestSeriesProduct", "largest-series-product\LargestSeriesProduct.csproj", "{5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LargestSeriesProduct", "largest-series-product\LargestSeriesProduct.csproj", "{1632128F-A60B-49B8-A5DB-05F3F1A3B84C}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Leap", "leap\Leap.csproj", "{CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Leap", "leap\Leap.csproj", "{8CA92DF0-3C60-4F23-9890-806744E1F514}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Ledger", "ledger\Ledger.csproj", "{2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ledger", "ledger\Ledger.csproj", "{507ED1D4-F905-4AAD-897D-AD403FA56663}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "LinkedList", "linked-list\LinkedList.csproj", "{EF592579-C359-4A98-A550-EEE8F0373E12}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LinkedList", "linked-list\LinkedList.csproj", "{C9ADF8BA-8239-4514-8906-A8E09A1A874C}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ListOps", "list-ops\ListOps.csproj", "{0AAB6052-071D-4B0E-A58C-266CA4D0591A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ListOps", "list-ops\ListOps.csproj", "{7370EDAC-0F7C-4008-A8C6-8C6240EE518E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Luhn", "luhn\Luhn.csproj", "{13AA981F-53F0-4159-9D08-44710A338491}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Luhn", "luhn\Luhn.csproj", "{6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Markdown", "markdown\Markdown.csproj", "{3908302C-778F-4CC0-9938-C3D6C21EECEF}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Markdown", "markdown\Markdown.csproj", "{AFA39C3B-C0A0-445C-8129-4DFD3009B56E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Matrix", "matrix\Matrix.csproj", "{4B5D0AF8-825F-4442-B3A9-0B2418E207E5}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Matrix", "matrix\Matrix.csproj", "{BCC05EA8-DB49-4684-9888-1B8688BE3FA6}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Meetup", "meetup\Meetup.csproj", "{5B572FDA-BD61-4656-9547-179C243B3CBA}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Meetup", "meetup\Meetup.csproj", "{87FCABD0-2762-464E-9489-415E95D12427}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Minesweeper", "minesweeper\Minesweeper.csproj", "{DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Minesweeper", "minesweeper\Minesweeper.csproj", "{C84E079F-9790-425A-9C86-C69122811E6F}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "NthPrime", "nth-prime\NthPrime.csproj", "{D001CFA9-58D9-4C59-A127-020178622959}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NthPrime", "nth-prime\NthPrime.csproj", "{F437861F-4FF8-418E-B205-FB04D23E0312}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "NucleotideCount", "nucleotide-count\NucleotideCount.csproj", "{C37D8291-33C1-4189-9678-5377EE4D9A91}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NucleotideCount", "nucleotide-count\NucleotideCount.csproj", "{6A9E4125-03D1-4DAF-8333-336C49360621}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "OcrNumbers", "ocr-numbers\OcrNumbers.csproj", "{4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OcrNumbers", "ocr-numbers\OcrNumbers.csproj", "{1BA7884A-3D6F-4479-A0F9-44385662FE24}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PalindromeProducts", "palindrome-products\PalindromeProducts.csproj", "{3026B0F5-BEF6-4A10-A49A-8047CCB43C50}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PalindromeProducts", "palindrome-products\PalindromeProducts.csproj", "{FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Pangram", "pangram\Pangram.csproj", "{54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pangram", "pangram\Pangram.csproj", "{7E047279-FD70-440F-8FB9-B47E88747EF4}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ParallelLetterFrequency", "parallel-letter-frequency\ParallelLetterFrequency.csproj", "{BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ParallelLetterFrequency", "parallel-letter-frequency\ParallelLetterFrequency.csproj", "{A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PascalsTriangle", "pascals-triangle\PascalsTriangle.csproj", "{5271A1BB-8952-43B5-A274-60A264EFE877}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PascalsTriangle", "pascals-triangle\PascalsTriangle.csproj", "{427A9EFA-5E06-4176-A287-0DC0E0CD3E86}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PerfectNumbers", "perfect-numbers\PerfectNumbers.csproj", "{ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerfectNumbers", "perfect-numbers\PerfectNumbers.csproj", "{4B864ACE-495C-46FB-870F-4D794C02C8F9}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PhoneNumber", "phone-number\PhoneNumber.csproj", "{9B0659B1-4248-4A4E-A33C-64B019863AFE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PhoneNumber", "phone-number\PhoneNumber.csproj", "{17419CBD-2AC6-479F-ACA7-D478F9FBF397}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PigLatin", "pig-latin\PigLatin.csproj", "{118B000E-9C65-4D2F-B7A2-5F834F3F624F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PigLatin", "pig-latin\PigLatin.csproj", "{03856292-CE47-45EE-91D4-6ACF27E1925F}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Poker", "poker\Poker.csproj", "{92A2D17A-F0B4-42B4-82D4-322C2B8106B4}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Poker", "poker\Poker.csproj", "{762A1A84-4B1E-49A1-BC58-4988BB489F7C}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Pov", "pov\Pov.csproj", "{450474BD-ED3E-4403-A6FB-91A518A66D87}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pov", "pov\Pov.csproj", "{3B42D204-BFB1-456F-B5F5-9421EECE465A}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PrimeFactors", "prime-factors\PrimeFactors.csproj", "{1FB5D78C-C981-4F0E-A160-7A12DFA6280D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PrimeFactors", "prime-factors\PrimeFactors.csproj", "{F8BC96E4-15E2-4F64-9D25-E167EC207404}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ProteinTranslation", "protein-translation\ProteinTranslation.csproj", "{1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProteinTranslation", "protein-translation\ProteinTranslation.csproj", "{A2EB7FD7-7660-4297-B431-9833CB65A848}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Proverb", "proverb\Proverb.csproj", "{FB25CF38-0E05-44F2-8A38-31195E06175A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Proverb", "proverb\Proverb.csproj", "{086D5907-AAF8-4488-A2AD-4A3430D74FAB}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "PythagoreanTriplet", "pythagorean-triplet\PythagoreanTriplet.csproj", "{25C3281E-C5CA-45DF-BBD1-2502230BD0E2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythagoreanTriplet", "pythagorean-triplet\PythagoreanTriplet.csproj", "{6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "QueenAttack", "queen-attack\QueenAttack.csproj", "{3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QueenAttack", "queen-attack\QueenAttack.csproj", "{50FB388F-6D68-400C-A919-0414B87466A7}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RailFenceCipher", "rail-fence-cipher\RailFenceCipher.csproj", "{FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RailFenceCipher", "rail-fence-cipher\RailFenceCipher.csproj", "{F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Raindrops", "raindrops\Raindrops.csproj", "{2C566FD1-CA8A-4026-AB2A-148ED99805DE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Raindrops", "raindrops\Raindrops.csproj", "{F2077E7E-7305-4FC7-8D67-D90037B3F370}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "React", "react\React.csproj", "{00940258-A8D1-4203-A46E-20F3B4AF92D6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "React", "react\React.csproj", "{3A3D27B8-10FE-4E72-A3CE-183EBC11503B}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Rectangles", "rectangles\Rectangles.csproj", "{C51A14DF-4E90-40C5-85C8-6410F25CEB8A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rectangles", "rectangles\Rectangles.csproj", "{A8777E05-E344-4673-915B-E9224002C423}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RnaTranscription", "rna-transcription\RnaTranscription.csproj", "{A0D5347A-235B-4B42-8943-1C82F5EC79ED}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RnaTranscription", "rna-transcription\RnaTranscription.csproj", "{05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RobotName", "robot-name\RobotName.csproj", "{2C9B739E-16B3-4E46-8EF2-F69D5D112D96}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RobotName", "robot-name\RobotName.csproj", "{C9CFE66E-6921-4CCE-83A7-D5B54812122F}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RobotSimulator", "robot-simulator\RobotSimulator.csproj", "{7C666F7D-DF1A-495B-998E-D71C49C7B601}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RobotSimulator", "robot-simulator\RobotSimulator.csproj", "{A0FD4472-99E5-4FBC-A6A7-20786EA167DF}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RomanNumerals", "roman-numerals\RomanNumerals.csproj", "{72FA0C78-7A1C-417E-9EAD-6CB394941AD2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RomanNumerals", "roman-numerals\RomanNumerals.csproj", "{86272012-C994-41F7-BFAF-4BED50797B22}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "RunLengthEncoding", "run-length-encoding\RunLengthEncoding.csproj", "{ED5A94A2-DE4A-4014-B0E5-789713A6C53F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RunLengthEncoding", "run-length-encoding\RunLengthEncoding.csproj", "{94B89563-1E74-42F9-96A5-19CD800AFECB}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SaddlePoints", "saddle-points\SaddlePoints.csproj", "{75B099FA-BEB4-47D0-9AE9-B30C06DEC877}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaddlePoints", "saddle-points\SaddlePoints.csproj", "{E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Say", "say\Say.csproj", "{F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Say", "say\Say.csproj", "{C92F8E81-6FB1-46FF-9B68-2D126F8903E6}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ScaleGenerator", "scale-generator\ScaleGenerator.csproj", "{22012921-789F-48A5-8CFC-C685CB71A80D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ScaleGenerator", "scale-generator\ScaleGenerator.csproj", "{B9207BE6-2577-4C49-AF5F-130A17BBEA73}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ScrabbleScore", "scrabble-score\ScrabbleScore.csproj", "{12428FEF-C4E4-4062-A810-A1BF3634472A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ScrabbleScore", "scrabble-score\ScrabbleScore.csproj", "{40C19FFA-E1E1-4589-86E4-B7BEF336CE79}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SecretHandshake", "secret-handshake\SecretHandshake.csproj", "{A51411C6-3466-4246-AF38-4FF74BE333B4}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SecretHandshake", "secret-handshake\SecretHandshake.csproj", "{64324C38-03F7-4624-8F00-B85183DDBF99}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Series", "series\Series.csproj", "{59397B60-FA26-412E-80A1-92D4F4B3167C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Series", "series\Series.csproj", "{14C24193-D5E0-4D29-B270-C27B43CC1925}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SgfParsing", "sgf-parsing\SgfParsing.csproj", "{D500CE42-142F-43CA-A992-9D46D530E09E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SgfParsing", "sgf-parsing\SgfParsing.csproj", "{B25208A4-3C80-411E-A36A-7BC4AA506DC7}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Sieve", "sieve\Sieve.csproj", "{11F62571-6733-47E6-B2C8-D9DDDA500583}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sieve", "sieve\Sieve.csproj", "{2A56B16C-3980-4380-84E8-B20DEEEFB5D6}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SimpleCipher", "simple-cipher\SimpleCipher.csproj", "{E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleCipher", "simple-cipher\SimpleCipher.csproj", "{269971FF-B748-4B95-8507-534C229A60B9}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SimpleLinkedList", "simple-linked-list\SimpleLinkedList.csproj", "{F63A20A1-405E-44E5-86B5-400304B9BD79}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleLinkedList", "simple-linked-list\SimpleLinkedList.csproj", "{F6244150-1AD9-470E-B0F0-72389B10639E}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SpaceAge", "space-age\SpaceAge.csproj", "{00484484-C185-41FB-9455-A8EA8680AD4E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpaceAge", "space-age\SpaceAge.csproj", "{D1102F23-265A-4CA8-975C-75564DFFAA04}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Strain", "strain\Strain.csproj", "{DF82974A-9442-4545-B97A-351B8F9BD726}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Strain", "strain\Strain.csproj", "{F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Sublist", "sublist\Sublist.csproj", "{2FA82303-4540-4C6F-8895-071CCFD4992B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sublist", "sublist\Sublist.csproj", "{B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "SumOfMultiples", "sum-of-multiples\SumOfMultiples.csproj", "{F9B797F7-52CD-4BA7-9683-96905A07951F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SumOfMultiples", "sum-of-multiples\SumOfMultiples.csproj", "{6CE987BF-9677-476C-8BB9-1BE7CC16F932}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Tournament", "tournament\Tournament.csproj", "{46262700-25A8-4A13-9E46-43B6923A8FDD}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tournament", "tournament\Tournament.csproj", "{BD63E691-0A53-46CE-B687-E3CD95F1D4B1}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Transpose", "transpose\Transpose.csproj", "{0B5B82E7-BFEC-4567-8649-B7E92AA1B466}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Transpose", "transpose\Transpose.csproj", "{FCF9AB0E-4310-4BCB-8682-833450658B97}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "TreeBuilding", "tree-building\TreeBuilding.csproj", "{27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TreeBuilding", "tree-building\TreeBuilding.csproj", "{607AB17F-1305-4002-A980-DB60699688F1}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Triangle", "triangle\Triangle.csproj", "{2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Triangle", "triangle\Triangle.csproj", "{128B3A5D-E28C-4C7F-8B16-3202D0F73A00}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "TwelveDays", "twelve-days\TwelveDays.csproj", "{C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TwelveDays", "twelve-days\TwelveDays.csproj", "{B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "TwoBucket", "two-bucket\TwoBucket.csproj", "{35DC825C-BBDA-4709-BA21-8AE018848610}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TwoBucket", "two-bucket\TwoBucket.csproj", "{62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "VariableLengthQuantity", "variable-length-quantity\VariableLengthQuantity.csproj", "{B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VariableLengthQuantity", "variable-length-quantity\VariableLengthQuantity.csproj", "{DFE95B37-24F5-417A-8C3F-788255CE8A04}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "WordCount", "word-count\WordCount.csproj", "{99C2269B-7E12-43C0-981F-EAB994D35829}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WordCount", "word-count\WordCount.csproj", "{77E253C3-5FCE-45A4-B285-BE24945E0D70}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "WordSearch", "word-search\WordSearch.csproj", "{EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WordSearch", "word-search\WordSearch.csproj", "{32ECF281-6D99-42D4-AD00-C8B56A8270F8}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Wordy", "wordy\Wordy.csproj", "{85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wordy", "wordy\Wordy.csproj", "{2EBD1C45-9D80-413A-9BE8-4ECB43C06843}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "ZebraPuzzle", "zebra-puzzle\ZebraPuzzle.csproj", "{74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZebraPuzzle", "zebra-puzzle\ZebraPuzzle.csproj", "{79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}" EndProject -Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Zipper", "zipper\Zipper.csproj", "{AF8A15C2-18F6-4F29-8DBD-47745954790E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Zipper", "zipper\Zipper.csproj", "{83504141-FF2A-427E-8A51-9FA0E9037A78}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -221,1253 +220,1256 @@ Global Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|x64.ActiveCfg = Debug|x64 - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|x64.Build.0 = Debug|x64 - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|x86.ActiveCfg = Debug|x86 - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Debug|x86.Build.0 = Debug|x86 - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|Any CPU.Build.0 = Release|Any CPU - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|x64.ActiveCfg = Release|x64 - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|x64.Build.0 = Release|x64 - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|x86.ActiveCfg = Release|x86 - {373D030B-5C2D-4C9D-9FBE-A29944E1B4F6}.Release|x86.Build.0 = Release|x86 - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|Any CPU.Build.0 = Debug|Any CPU - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|x64.ActiveCfg = Debug|x64 - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|x64.Build.0 = Debug|x64 - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|x86.ActiveCfg = Debug|x86 - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Debug|x86.Build.0 = Debug|x86 - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|Any CPU.ActiveCfg = Release|Any CPU - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|Any CPU.Build.0 = Release|Any CPU - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|x64.ActiveCfg = Release|x64 - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|x64.Build.0 = Release|x64 - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|x86.ActiveCfg = Release|x86 - {32096AEE-EB88-473F-AA6E-8DEF1092A273}.Release|x86.Build.0 = Release|x86 - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|x64.ActiveCfg = Debug|x64 - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|x64.Build.0 = Debug|x64 - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|x86.ActiveCfg = Debug|x86 - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Debug|x86.Build.0 = Debug|x86 - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|Any CPU.Build.0 = Release|Any CPU - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|x64.ActiveCfg = Release|x64 - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|x64.Build.0 = Release|x64 - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|x86.ActiveCfg = Release|x86 - {AC1FB94A-4FC6-4981-AE6E-E9868223C53D}.Release|x86.Build.0 = Release|x86 - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|x64.ActiveCfg = Debug|x64 - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|x64.Build.0 = Debug|x64 - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|x86.ActiveCfg = Debug|x86 - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Debug|x86.Build.0 = Debug|x86 - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|Any CPU.Build.0 = Release|Any CPU - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|x64.ActiveCfg = Release|x64 - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|x64.Build.0 = Release|x64 - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|x86.ActiveCfg = Release|x86 - {33500D09-72CD-43EB-A7EF-B08E307610A5}.Release|x86.Build.0 = Release|x86 - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|Any CPU.Build.0 = Debug|Any CPU - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|x64.ActiveCfg = Debug|x64 - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|x64.Build.0 = Debug|x64 - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|x86.ActiveCfg = Debug|x86 - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Debug|x86.Build.0 = Debug|x86 - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|Any CPU.ActiveCfg = Release|Any CPU - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|Any CPU.Build.0 = Release|Any CPU - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|x64.ActiveCfg = Release|x64 - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|x64.Build.0 = Release|x64 - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|x86.ActiveCfg = Release|x86 - {59EED89F-22FF-4932-8A6E-3FDF3760EB43}.Release|x86.Build.0 = Release|x86 - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|Any CPU.Build.0 = Debug|Any CPU - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|x64.ActiveCfg = Debug|x64 - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|x64.Build.0 = Debug|x64 - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|x86.ActiveCfg = Debug|x86 - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Debug|x86.Build.0 = Debug|x86 - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|Any CPU.ActiveCfg = Release|Any CPU - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|Any CPU.Build.0 = Release|Any CPU - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|x64.ActiveCfg = Release|x64 - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|x64.Build.0 = Release|x64 - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|x86.ActiveCfg = Release|x86 - {47842EF9-20C4-4283-8F70-8618DCAD6546}.Release|x86.Build.0 = Release|x86 - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|x64.ActiveCfg = Debug|x64 - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|x64.Build.0 = Debug|x64 - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|x86.ActiveCfg = Debug|x86 - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Debug|x86.Build.0 = Debug|x86 - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|Any CPU.Build.0 = Release|Any CPU - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|x64.ActiveCfg = Release|x64 - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|x64.Build.0 = Release|x64 - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|x86.ActiveCfg = Release|x86 - {ECE3BD7D-3E05-41D4-A042-11C23BB0BBA5}.Release|x86.Build.0 = Release|x86 - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|x64.ActiveCfg = Debug|x64 - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|x64.Build.0 = Debug|x64 - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|x86.ActiveCfg = Debug|x86 - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Debug|x86.Build.0 = Debug|x86 - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|Any CPU.Build.0 = Release|Any CPU - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|x64.ActiveCfg = Release|x64 - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|x64.Build.0 = Release|x64 - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|x86.ActiveCfg = Release|x86 - {89932A4D-7A93-4F69-93C9-7BD42614141A}.Release|x86.Build.0 = Release|x86 - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|x64.ActiveCfg = Debug|x64 - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|x64.Build.0 = Debug|x64 - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|x86.ActiveCfg = Debug|x86 - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Debug|x86.Build.0 = Debug|x86 - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|Any CPU.Build.0 = Release|Any CPU - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|x64.ActiveCfg = Release|x64 - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|x64.Build.0 = Release|x64 - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|x86.ActiveCfg = Release|x86 - {0761B5CE-3177-4A64-A61C-BCD0CA691C5C}.Release|x86.Build.0 = Release|x86 - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|Any CPU.Build.0 = Debug|Any CPU - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|x64.ActiveCfg = Debug|x64 - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|x64.Build.0 = Debug|x64 - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|x86.ActiveCfg = Debug|x86 - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Debug|x86.Build.0 = Debug|x86 - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|Any CPU.ActiveCfg = Release|Any CPU - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|Any CPU.Build.0 = Release|Any CPU - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|x64.ActiveCfg = Release|x64 - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|x64.Build.0 = Release|x64 - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|x86.ActiveCfg = Release|x86 - {70B93253-E2A4-4C5F-9068-1BD9A5074865}.Release|x86.Build.0 = Release|x86 - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|Any CPU.Build.0 = Debug|Any CPU - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|x64.ActiveCfg = Debug|x64 - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|x64.Build.0 = Debug|x64 - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|x86.ActiveCfg = Debug|x86 - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Debug|x86.Build.0 = Debug|x86 - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|Any CPU.ActiveCfg = Release|Any CPU - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|Any CPU.Build.0 = Release|Any CPU - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|x64.ActiveCfg = Release|x64 - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|x64.Build.0 = Release|x64 - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|x86.ActiveCfg = Release|x86 - {60920A5F-830D-4C2C-9D9E-8E8FA7FCBA57}.Release|x86.Build.0 = Release|x86 - {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|Any CPU.Build.0 = Debug|Any CPU - {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|x64.ActiveCfg = Debug|x64 - {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|x64.Build.0 = Debug|x64 - {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|x86.ActiveCfg = Debug|x86 - {879C94ED-7E65-4313-8716-1671B7C14361}.Debug|x86.Build.0 = Debug|x86 - {879C94ED-7E65-4313-8716-1671B7C14361}.Release|Any CPU.ActiveCfg = Release|Any CPU - {879C94ED-7E65-4313-8716-1671B7C14361}.Release|Any CPU.Build.0 = Release|Any CPU - {879C94ED-7E65-4313-8716-1671B7C14361}.Release|x64.ActiveCfg = Release|x64 - {879C94ED-7E65-4313-8716-1671B7C14361}.Release|x64.Build.0 = Release|x64 - {879C94ED-7E65-4313-8716-1671B7C14361}.Release|x86.ActiveCfg = Release|x86 - {879C94ED-7E65-4313-8716-1671B7C14361}.Release|x86.Build.0 = Release|x86 - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|x64.ActiveCfg = Debug|x64 - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|x64.Build.0 = Debug|x64 - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|x86.ActiveCfg = Debug|x86 - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Debug|x86.Build.0 = Debug|x86 - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|Any CPU.Build.0 = Release|Any CPU - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|x64.ActiveCfg = Release|x64 - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|x64.Build.0 = Release|x64 - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|x86.ActiveCfg = Release|x86 - {6D8999BC-C3CD-4333-AE7C-03687F55AF31}.Release|x86.Build.0 = Release|x86 - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|x64.ActiveCfg = Debug|x64 - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|x64.Build.0 = Debug|x64 - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|x86.ActiveCfg = Debug|x86 - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Debug|x86.Build.0 = Debug|x86 - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|Any CPU.Build.0 = Release|Any CPU - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|x64.ActiveCfg = Release|x64 - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|x64.Build.0 = Release|x64 - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|x86.ActiveCfg = Release|x86 - {8116AB75-6EC0-4205-B7C8-8850B6FB7A88}.Release|x86.Build.0 = Release|x86 - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|x64.ActiveCfg = Debug|x64 - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|x64.Build.0 = Debug|x64 - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|x86.ActiveCfg = Debug|x86 - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Debug|x86.Build.0 = Debug|x86 - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|Any CPU.Build.0 = Release|Any CPU - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|x64.ActiveCfg = Release|x64 - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|x64.Build.0 = Release|x64 - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|x86.ActiveCfg = Release|x86 - {9E3EDCC6-6A6D-4983-9ABE-C7214BB5F84C}.Release|x86.Build.0 = Release|x86 - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|x64.ActiveCfg = Debug|x64 - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|x64.Build.0 = Debug|x64 - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|x86.ActiveCfg = Debug|x86 - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Debug|x86.Build.0 = Debug|x86 - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|Any CPU.Build.0 = Release|Any CPU - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|x64.ActiveCfg = Release|x64 - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|x64.Build.0 = Release|x64 - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|x86.ActiveCfg = Release|x86 - {7C5A6E9C-507E-4EB8-A1E5-12E1B0274B42}.Release|x86.Build.0 = Release|x86 - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|x64.ActiveCfg = Debug|x64 - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|x64.Build.0 = Debug|x64 - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|x86.ActiveCfg = Debug|x86 - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Debug|x86.Build.0 = Debug|x86 - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|Any CPU.Build.0 = Release|Any CPU - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|x64.ActiveCfg = Release|x64 - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|x64.Build.0 = Release|x64 - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|x86.ActiveCfg = Release|x86 - {E1A1694E-C809-412B-A10B-D556AEEA2E1F}.Release|x86.Build.0 = Release|x86 - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|x64.ActiveCfg = Debug|x64 - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|x64.Build.0 = Debug|x64 - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|x86.ActiveCfg = Debug|x86 - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Debug|x86.Build.0 = Debug|x86 - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|Any CPU.Build.0 = Release|Any CPU - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|x64.ActiveCfg = Release|x64 - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|x64.Build.0 = Release|x64 - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|x86.ActiveCfg = Release|x86 - {D2FA5E1D-399A-4786-88C7-14BB2B6A8162}.Release|x86.Build.0 = Release|x86 - {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|x64.ActiveCfg = Debug|x64 - {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|x64.Build.0 = Debug|x64 - {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|x86.ActiveCfg = Debug|x86 - {81620641-C50D-4AB8-A68D-54708270D2E4}.Debug|x86.Build.0 = Debug|x86 - {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|Any CPU.Build.0 = Release|Any CPU - {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|x64.ActiveCfg = Release|x64 - {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|x64.Build.0 = Release|x64 - {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|x86.ActiveCfg = Release|x86 - {81620641-C50D-4AB8-A68D-54708270D2E4}.Release|x86.Build.0 = Release|x86 - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|x64.ActiveCfg = Debug|x64 - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|x64.Build.0 = Debug|x64 - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|x86.ActiveCfg = Debug|x86 - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Debug|x86.Build.0 = Debug|x86 - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|Any CPU.Build.0 = Release|Any CPU - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|x64.ActiveCfg = Release|x64 - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|x64.Build.0 = Release|x64 - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|x86.ActiveCfg = Release|x86 - {1428B313-1C8C-4700-892F-B4D1F0C1B92F}.Release|x86.Build.0 = Release|x86 - {F54007A4-3967-489D-A917-440B0D163D96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F54007A4-3967-489D-A917-440B0D163D96}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F54007A4-3967-489D-A917-440B0D163D96}.Debug|x64.ActiveCfg = Debug|x64 - {F54007A4-3967-489D-A917-440B0D163D96}.Debug|x64.Build.0 = Debug|x64 - {F54007A4-3967-489D-A917-440B0D163D96}.Debug|x86.ActiveCfg = Debug|x86 - {F54007A4-3967-489D-A917-440B0D163D96}.Debug|x86.Build.0 = Debug|x86 - {F54007A4-3967-489D-A917-440B0D163D96}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F54007A4-3967-489D-A917-440B0D163D96}.Release|Any CPU.Build.0 = Release|Any CPU - {F54007A4-3967-489D-A917-440B0D163D96}.Release|x64.ActiveCfg = Release|x64 - {F54007A4-3967-489D-A917-440B0D163D96}.Release|x64.Build.0 = Release|x64 - {F54007A4-3967-489D-A917-440B0D163D96}.Release|x86.ActiveCfg = Release|x86 - {F54007A4-3967-489D-A917-440B0D163D96}.Release|x86.Build.0 = Release|x86 - {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|Any CPU.Build.0 = Debug|Any CPU - {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|x64.ActiveCfg = Debug|x64 - {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|x64.Build.0 = Debug|x64 - {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|x86.ActiveCfg = Debug|x86 - {657F9623-3E01-4ED5-A400-58547D34E579}.Debug|x86.Build.0 = Debug|x86 - {657F9623-3E01-4ED5-A400-58547D34E579}.Release|Any CPU.ActiveCfg = Release|Any CPU - {657F9623-3E01-4ED5-A400-58547D34E579}.Release|Any CPU.Build.0 = Release|Any CPU - {657F9623-3E01-4ED5-A400-58547D34E579}.Release|x64.ActiveCfg = Release|x64 - {657F9623-3E01-4ED5-A400-58547D34E579}.Release|x64.Build.0 = Release|x64 - {657F9623-3E01-4ED5-A400-58547D34E579}.Release|x86.ActiveCfg = Release|x86 - {657F9623-3E01-4ED5-A400-58547D34E579}.Release|x86.Build.0 = Release|x86 - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|x64.ActiveCfg = Debug|x64 - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|x64.Build.0 = Debug|x64 - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|x86.ActiveCfg = Debug|x86 - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Debug|x86.Build.0 = Debug|x86 - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|Any CPU.Build.0 = Release|Any CPU - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|x64.ActiveCfg = Release|x64 - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|x64.Build.0 = Release|x64 - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|x86.ActiveCfg = Release|x86 - {3D4DAEED-3579-4F74-8A49-D1464083AFB0}.Release|x86.Build.0 = Release|x86 - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|x64.ActiveCfg = Debug|x64 - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|x64.Build.0 = Debug|x64 - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|x86.ActiveCfg = Debug|x86 - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Debug|x86.Build.0 = Debug|x86 - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|Any CPU.Build.0 = Release|Any CPU - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|x64.ActiveCfg = Release|x64 - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|x64.Build.0 = Release|x64 - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|x86.ActiveCfg = Release|x86 - {BD4E4301-18DB-4DA9-84FF-AE187C5120F1}.Release|x86.Build.0 = Release|x86 - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|x64.ActiveCfg = Debug|x64 - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|x64.Build.0 = Debug|x64 - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|x86.ActiveCfg = Debug|x86 - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Debug|x86.Build.0 = Debug|x86 - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|Any CPU.Build.0 = Release|Any CPU - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|x64.ActiveCfg = Release|x64 - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|x64.Build.0 = Release|x64 - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|x86.ActiveCfg = Release|x86 - {83DEEC98-CBC0-49BE-9014-886B481595F0}.Release|x86.Build.0 = Release|x86 - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|x64.ActiveCfg = Debug|x64 - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|x64.Build.0 = Debug|x64 - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|x86.ActiveCfg = Debug|x86 - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Debug|x86.Build.0 = Debug|x86 - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|Any CPU.Build.0 = Release|Any CPU - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|x64.ActiveCfg = Release|x64 - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|x64.Build.0 = Release|x64 - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|x86.ActiveCfg = Release|x86 - {96666549-F0B6-4DF3-B0BA-754E650C54DF}.Release|x86.Build.0 = Release|x86 - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|x64.ActiveCfg = Debug|x64 - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|x64.Build.0 = Debug|x64 - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|x86.ActiveCfg = Debug|x86 - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Debug|x86.Build.0 = Debug|x86 - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|Any CPU.Build.0 = Release|Any CPU - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|x64.ActiveCfg = Release|x64 - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|x64.Build.0 = Release|x64 - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|x86.ActiveCfg = Release|x86 - {C28D4CCC-13A1-48CB-984F-17DD4D3AD32C}.Release|x86.Build.0 = Release|x86 - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|x64.ActiveCfg = Debug|x64 - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|x64.Build.0 = Debug|x64 - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|x86.ActiveCfg = Debug|x86 - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Debug|x86.Build.0 = Debug|x86 - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|Any CPU.Build.0 = Release|Any CPU - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|x64.ActiveCfg = Release|x64 - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|x64.Build.0 = Release|x64 - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|x86.ActiveCfg = Release|x86 - {3712944B-0B6B-4465-816C-D88BA2CE2D7D}.Release|x86.Build.0 = Release|x86 - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|x64.ActiveCfg = Debug|x64 - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|x64.Build.0 = Debug|x64 - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|x86.ActiveCfg = Debug|x86 - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Debug|x86.Build.0 = Debug|x86 - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|Any CPU.Build.0 = Release|Any CPU - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|x64.ActiveCfg = Release|x64 - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|x64.Build.0 = Release|x64 - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|x86.ActiveCfg = Release|x86 - {34A3BBDB-3205-421D-A773-B7AD42EAACE6}.Release|x86.Build.0 = Release|x86 - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|x64.ActiveCfg = Debug|x64 - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|x64.Build.0 = Debug|x64 - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|x86.ActiveCfg = Debug|x86 - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Debug|x86.Build.0 = Debug|x86 - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|Any CPU.Build.0 = Release|Any CPU - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|x64.ActiveCfg = Release|x64 - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|x64.Build.0 = Release|x64 - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|x86.ActiveCfg = Release|x86 - {75FF023B-1698-482E-90CE-AFAC23458ED9}.Release|x86.Build.0 = Release|x86 - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|x64.ActiveCfg = Debug|x64 - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|x64.Build.0 = Debug|x64 - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|x86.ActiveCfg = Debug|x86 - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Debug|x86.Build.0 = Debug|x86 - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|Any CPU.Build.0 = Release|Any CPU - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|x64.ActiveCfg = Release|x64 - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|x64.Build.0 = Release|x64 - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|x86.ActiveCfg = Release|x86 - {D0B4E886-3142-4D36-9DCE-12CE77E71161}.Release|x86.Build.0 = Release|x86 - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|x64.ActiveCfg = Debug|x64 - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|x64.Build.0 = Debug|x64 - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|x86.ActiveCfg = Debug|x86 - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Debug|x86.Build.0 = Debug|x86 - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|Any CPU.Build.0 = Release|Any CPU - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|x64.ActiveCfg = Release|x64 - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|x64.Build.0 = Release|x64 - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|x86.ActiveCfg = Release|x86 - {F0C639E6-3318-4FF6-993D-A8E3EE439E09}.Release|x86.Build.0 = Release|x86 - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|x64.ActiveCfg = Debug|x64 - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|x64.Build.0 = Debug|x64 - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|x86.ActiveCfg = Debug|x86 - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Debug|x86.Build.0 = Debug|x86 - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|Any CPU.Build.0 = Release|Any CPU - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|x64.ActiveCfg = Release|x64 - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|x64.Build.0 = Release|x64 - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|x86.ActiveCfg = Release|x86 - {23A6E0D3-A47A-44F1-A522-3ACD92BBE0B8}.Release|x86.Build.0 = Release|x86 - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|Any CPU.Build.0 = Debug|Any CPU - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|x64.ActiveCfg = Debug|x64 - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|x64.Build.0 = Debug|x64 - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|x86.ActiveCfg = Debug|x86 - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Debug|x86.Build.0 = Debug|x86 - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|Any CPU.ActiveCfg = Release|Any CPU - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|Any CPU.Build.0 = Release|Any CPU - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|x64.ActiveCfg = Release|x64 - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|x64.Build.0 = Release|x64 - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|x86.ActiveCfg = Release|x86 - {91814456-B9B7-4C36-B3BB-0E2CEBB2FA15}.Release|x86.Build.0 = Release|x86 - {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|x64.ActiveCfg = Debug|x64 - {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|x64.Build.0 = Debug|x64 - {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|x86.ActiveCfg = Debug|x86 - {246719B1-0179-4A81-A372-3290AAA5699E}.Debug|x86.Build.0 = Debug|x86 - {246719B1-0179-4A81-A372-3290AAA5699E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {246719B1-0179-4A81-A372-3290AAA5699E}.Release|Any CPU.Build.0 = Release|Any CPU - {246719B1-0179-4A81-A372-3290AAA5699E}.Release|x64.ActiveCfg = Release|x64 - {246719B1-0179-4A81-A372-3290AAA5699E}.Release|x64.Build.0 = Release|x64 - {246719B1-0179-4A81-A372-3290AAA5699E}.Release|x86.ActiveCfg = Release|x86 - {246719B1-0179-4A81-A372-3290AAA5699E}.Release|x86.Build.0 = Release|x86 - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|Any CPU.Build.0 = Debug|Any CPU - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|x64.ActiveCfg = Debug|x64 - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|x64.Build.0 = Debug|x64 - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|x86.ActiveCfg = Debug|x86 - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Debug|x86.Build.0 = Debug|x86 - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|Any CPU.ActiveCfg = Release|Any CPU - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|Any CPU.Build.0 = Release|Any CPU - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|x64.ActiveCfg = Release|x64 - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|x64.Build.0 = Release|x64 - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|x86.ActiveCfg = Release|x86 - {63AEC01A-53F5-44DB-8D44-733E30E79853}.Release|x86.Build.0 = Release|x86 - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|x64.ActiveCfg = Debug|x64 - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|x64.Build.0 = Debug|x64 - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|x86.ActiveCfg = Debug|x86 - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Debug|x86.Build.0 = Debug|x86 - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|Any CPU.Build.0 = Release|Any CPU - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|x64.ActiveCfg = Release|x64 - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|x64.Build.0 = Release|x64 - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|x86.ActiveCfg = Release|x86 - {9442849E-6A05-4496-BE3D-C10F3461BDA8}.Release|x86.Build.0 = Release|x86 - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|x64.ActiveCfg = Debug|x64 - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|x64.Build.0 = Debug|x64 - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|x86.ActiveCfg = Debug|x86 - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Debug|x86.Build.0 = Debug|x86 - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|Any CPU.Build.0 = Release|Any CPU - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|x64.ActiveCfg = Release|x64 - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|x64.Build.0 = Release|x64 - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|x86.ActiveCfg = Release|x86 - {6657D50B-BD81-43E9-A0FC-E6851182CB32}.Release|x86.Build.0 = Release|x86 - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|x64.ActiveCfg = Debug|x64 - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|x64.Build.0 = Debug|x64 - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|x86.ActiveCfg = Debug|x86 - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Debug|x86.Build.0 = Debug|x86 - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|Any CPU.Build.0 = Release|Any CPU - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|x64.ActiveCfg = Release|x64 - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|x64.Build.0 = Release|x64 - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|x86.ActiveCfg = Release|x86 - {9C808610-CA3A-49D3-A73A-679CE86C7346}.Release|x86.Build.0 = Release|x86 - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|x64.ActiveCfg = Debug|x64 - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|x64.Build.0 = Debug|x64 - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|x86.ActiveCfg = Debug|x86 - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Debug|x86.Build.0 = Debug|x86 - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|Any CPU.Build.0 = Release|Any CPU - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|x64.ActiveCfg = Release|x64 - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|x64.Build.0 = Release|x64 - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|x86.ActiveCfg = Release|x86 - {33B9B6C3-BDAD-42FE-94FC-E7D2DC61F28F}.Release|x86.Build.0 = Release|x86 - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|x64.ActiveCfg = Debug|x64 - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|x64.Build.0 = Debug|x64 - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|x86.ActiveCfg = Debug|x86 - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Debug|x86.Build.0 = Debug|x86 - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|Any CPU.Build.0 = Release|Any CPU - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|x64.ActiveCfg = Release|x64 - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|x64.Build.0 = Release|x64 - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|x86.ActiveCfg = Release|x86 - {1F50CBFF-4C2B-4C88-A69B-51A6F3E3DB1B}.Release|x86.Build.0 = Release|x86 - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|x64.ActiveCfg = Debug|x64 - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|x64.Build.0 = Debug|x64 - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|x86.ActiveCfg = Debug|x86 - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Debug|x86.Build.0 = Debug|x86 - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|Any CPU.Build.0 = Release|Any CPU - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|x64.ActiveCfg = Release|x64 - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|x64.Build.0 = Release|x64 - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|x86.ActiveCfg = Release|x86 - {C8562C85-5C76-488E-ABCE-C61F2B90D914}.Release|x86.Build.0 = Release|x86 - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|x64.ActiveCfg = Debug|x64 - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|x64.Build.0 = Debug|x64 - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|x86.ActiveCfg = Debug|x86 - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Debug|x86.Build.0 = Debug|x86 - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|Any CPU.Build.0 = Release|Any CPU - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|x64.ActiveCfg = Release|x64 - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|x64.Build.0 = Release|x64 - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|x86.ActiveCfg = Release|x86 - {5EBBBCE9-BD0E-4592-AAFB-12EFDDC97261}.Release|x86.Build.0 = Release|x86 - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|x64.ActiveCfg = Debug|x64 - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|x64.Build.0 = Debug|x64 - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|x86.ActiveCfg = Debug|x86 - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Debug|x86.Build.0 = Debug|x86 - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|Any CPU.Build.0 = Release|Any CPU - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|x64.ActiveCfg = Release|x64 - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|x64.Build.0 = Release|x64 - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|x86.ActiveCfg = Release|x86 - {CF5D841B-8E7D-4474-A185-DE7FD7BF31C2}.Release|x86.Build.0 = Release|x86 - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|x64.ActiveCfg = Debug|x64 - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|x64.Build.0 = Debug|x64 - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|x86.ActiveCfg = Debug|x86 - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Debug|x86.Build.0 = Debug|x86 - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|Any CPU.Build.0 = Release|Any CPU - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|x64.ActiveCfg = Release|x64 - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|x64.Build.0 = Release|x64 - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|x86.ActiveCfg = Release|x86 - {2A37BD8B-BE19-4E9D-B09A-E29D5FEDF7D2}.Release|x86.Build.0 = Release|x86 - {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|x64.ActiveCfg = Debug|x64 - {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|x64.Build.0 = Debug|x64 - {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|x86.ActiveCfg = Debug|x86 - {EF592579-C359-4A98-A550-EEE8F0373E12}.Debug|x86.Build.0 = Debug|x86 - {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|Any CPU.Build.0 = Release|Any CPU - {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|x64.ActiveCfg = Release|x64 - {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|x64.Build.0 = Release|x64 - {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|x86.ActiveCfg = Release|x86 - {EF592579-C359-4A98-A550-EEE8F0373E12}.Release|x86.Build.0 = Release|x86 - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|x64.ActiveCfg = Debug|x64 - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|x64.Build.0 = Debug|x64 - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|x86.ActiveCfg = Debug|x86 - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Debug|x86.Build.0 = Debug|x86 - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|Any CPU.Build.0 = Release|Any CPU - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|x64.ActiveCfg = Release|x64 - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|x64.Build.0 = Release|x64 - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|x86.ActiveCfg = Release|x86 - {0AAB6052-071D-4B0E-A58C-266CA4D0591A}.Release|x86.Build.0 = Release|x86 - {13AA981F-53F0-4159-9D08-44710A338491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {13AA981F-53F0-4159-9D08-44710A338491}.Debug|Any CPU.Build.0 = Debug|Any CPU - {13AA981F-53F0-4159-9D08-44710A338491}.Debug|x64.ActiveCfg = Debug|x64 - {13AA981F-53F0-4159-9D08-44710A338491}.Debug|x64.Build.0 = Debug|x64 - {13AA981F-53F0-4159-9D08-44710A338491}.Debug|x86.ActiveCfg = Debug|x86 - {13AA981F-53F0-4159-9D08-44710A338491}.Debug|x86.Build.0 = Debug|x86 - {13AA981F-53F0-4159-9D08-44710A338491}.Release|Any CPU.ActiveCfg = Release|Any CPU - {13AA981F-53F0-4159-9D08-44710A338491}.Release|Any CPU.Build.0 = Release|Any CPU - {13AA981F-53F0-4159-9D08-44710A338491}.Release|x64.ActiveCfg = Release|x64 - {13AA981F-53F0-4159-9D08-44710A338491}.Release|x64.Build.0 = Release|x64 - {13AA981F-53F0-4159-9D08-44710A338491}.Release|x86.ActiveCfg = Release|x86 - {13AA981F-53F0-4159-9D08-44710A338491}.Release|x86.Build.0 = Release|x86 - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|x64.ActiveCfg = Debug|x64 - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|x64.Build.0 = Debug|x64 - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|x86.ActiveCfg = Debug|x86 - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Debug|x86.Build.0 = Debug|x86 - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|Any CPU.Build.0 = Release|Any CPU - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|x64.ActiveCfg = Release|x64 - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|x64.Build.0 = Release|x64 - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|x86.ActiveCfg = Release|x86 - {3908302C-778F-4CC0-9938-C3D6C21EECEF}.Release|x86.Build.0 = Release|x86 - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|x64.ActiveCfg = Debug|x64 - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|x64.Build.0 = Debug|x64 - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|x86.ActiveCfg = Debug|x86 - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Debug|x86.Build.0 = Debug|x86 - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|Any CPU.Build.0 = Release|Any CPU - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|x64.ActiveCfg = Release|x64 - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|x64.Build.0 = Release|x64 - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|x86.ActiveCfg = Release|x86 - {4B5D0AF8-825F-4442-B3A9-0B2418E207E5}.Release|x86.Build.0 = Release|x86 - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|x64.ActiveCfg = Debug|x64 - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|x64.Build.0 = Debug|x64 - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|x86.ActiveCfg = Debug|x86 - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Debug|x86.Build.0 = Debug|x86 - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|Any CPU.Build.0 = Release|Any CPU - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|x64.ActiveCfg = Release|x64 - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|x64.Build.0 = Release|x64 - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|x86.ActiveCfg = Release|x86 - {5B572FDA-BD61-4656-9547-179C243B3CBA}.Release|x86.Build.0 = Release|x86 - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|x64.ActiveCfg = Debug|x64 - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|x64.Build.0 = Debug|x64 - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|x86.ActiveCfg = Debug|x86 - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Debug|x86.Build.0 = Debug|x86 - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|Any CPU.Build.0 = Release|Any CPU - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|x64.ActiveCfg = Release|x64 - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|x64.Build.0 = Release|x64 - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|x86.ActiveCfg = Release|x86 - {DA5FD4BD-1FEB-4BD9-A128-0FB8FFFE7E63}.Release|x86.Build.0 = Release|x86 - {D001CFA9-58D9-4C59-A127-020178622959}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D001CFA9-58D9-4C59-A127-020178622959}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D001CFA9-58D9-4C59-A127-020178622959}.Debug|x64.ActiveCfg = Debug|x64 - {D001CFA9-58D9-4C59-A127-020178622959}.Debug|x64.Build.0 = Debug|x64 - {D001CFA9-58D9-4C59-A127-020178622959}.Debug|x86.ActiveCfg = Debug|x86 - {D001CFA9-58D9-4C59-A127-020178622959}.Debug|x86.Build.0 = Debug|x86 - {D001CFA9-58D9-4C59-A127-020178622959}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D001CFA9-58D9-4C59-A127-020178622959}.Release|Any CPU.Build.0 = Release|Any CPU - {D001CFA9-58D9-4C59-A127-020178622959}.Release|x64.ActiveCfg = Release|x64 - {D001CFA9-58D9-4C59-A127-020178622959}.Release|x64.Build.0 = Release|x64 - {D001CFA9-58D9-4C59-A127-020178622959}.Release|x86.ActiveCfg = Release|x86 - {D001CFA9-58D9-4C59-A127-020178622959}.Release|x86.Build.0 = Release|x86 - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|x64.ActiveCfg = Debug|x64 - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|x64.Build.0 = Debug|x64 - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|x86.ActiveCfg = Debug|x86 - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Debug|x86.Build.0 = Debug|x86 - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|Any CPU.Build.0 = Release|Any CPU - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|x64.ActiveCfg = Release|x64 - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|x64.Build.0 = Release|x64 - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|x86.ActiveCfg = Release|x86 - {C37D8291-33C1-4189-9678-5377EE4D9A91}.Release|x86.Build.0 = Release|x86 - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|x64.ActiveCfg = Debug|x64 - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|x64.Build.0 = Debug|x64 - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|x86.ActiveCfg = Debug|x86 - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Debug|x86.Build.0 = Debug|x86 - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|Any CPU.Build.0 = Release|Any CPU - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|x64.ActiveCfg = Release|x64 - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|x64.Build.0 = Release|x64 - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|x86.ActiveCfg = Release|x86 - {4A50BCBE-078B-4944-A3AC-6211A1FE4EC7}.Release|x86.Build.0 = Release|x86 - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|x64.ActiveCfg = Debug|x64 - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|x64.Build.0 = Debug|x64 - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|x86.ActiveCfg = Debug|x86 - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Debug|x86.Build.0 = Debug|x86 - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|Any CPU.Build.0 = Release|Any CPU - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|x64.ActiveCfg = Release|x64 - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|x64.Build.0 = Release|x64 - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|x86.ActiveCfg = Release|x86 - {3026B0F5-BEF6-4A10-A49A-8047CCB43C50}.Release|x86.Build.0 = Release|x86 - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|x64.ActiveCfg = Debug|x64 - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|x64.Build.0 = Debug|x64 - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|x86.ActiveCfg = Debug|x86 - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Debug|x86.Build.0 = Debug|x86 - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|Any CPU.Build.0 = Release|Any CPU - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|x64.ActiveCfg = Release|x64 - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|x64.Build.0 = Release|x64 - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|x86.ActiveCfg = Release|x86 - {54940CB7-D9DF-4241-9444-7CCE0C8C5E7C}.Release|x86.Build.0 = Release|x86 - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|x64.ActiveCfg = Debug|x64 - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|x64.Build.0 = Debug|x64 - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|x86.ActiveCfg = Debug|x86 - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Debug|x86.Build.0 = Debug|x86 - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|Any CPU.Build.0 = Release|Any CPU - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|x64.ActiveCfg = Release|x64 - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|x64.Build.0 = Release|x64 - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|x86.ActiveCfg = Release|x86 - {BA89D969-3375-4C8B-83B6-C1B3D38F9E1F}.Release|x86.Build.0 = Release|x86 - {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|x64.ActiveCfg = Debug|x64 - {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|x64.Build.0 = Debug|x64 - {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|x86.ActiveCfg = Debug|x86 - {5271A1BB-8952-43B5-A274-60A264EFE877}.Debug|x86.Build.0 = Debug|x86 - {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|Any CPU.Build.0 = Release|Any CPU - {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|x64.ActiveCfg = Release|x64 - {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|x64.Build.0 = Release|x64 - {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|x86.ActiveCfg = Release|x86 - {5271A1BB-8952-43B5-A274-60A264EFE877}.Release|x86.Build.0 = Release|x86 - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|x64.ActiveCfg = Debug|x64 - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|x64.Build.0 = Debug|x64 - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|x86.ActiveCfg = Debug|x86 - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Debug|x86.Build.0 = Debug|x86 - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|Any CPU.Build.0 = Release|Any CPU - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|x64.ActiveCfg = Release|x64 - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|x64.Build.0 = Release|x64 - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|x86.ActiveCfg = Release|x86 - {ED2BB5C5-FDE1-45FF-9BA8-7443F3A47155}.Release|x86.Build.0 = Release|x86 - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|x64.ActiveCfg = Debug|x64 - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|x64.Build.0 = Debug|x64 - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|x86.ActiveCfg = Debug|x86 - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Debug|x86.Build.0 = Debug|x86 - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|Any CPU.Build.0 = Release|Any CPU - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|x64.ActiveCfg = Release|x64 - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|x64.Build.0 = Release|x64 - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|x86.ActiveCfg = Release|x86 - {9B0659B1-4248-4A4E-A33C-64B019863AFE}.Release|x86.Build.0 = Release|x86 - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|x64.ActiveCfg = Debug|x64 - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|x64.Build.0 = Debug|x64 - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|x86.ActiveCfg = Debug|x86 - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Debug|x86.Build.0 = Debug|x86 - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|Any CPU.Build.0 = Release|Any CPU - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|x64.ActiveCfg = Release|x64 - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|x64.Build.0 = Release|x64 - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|x86.ActiveCfg = Release|x86 - {118B000E-9C65-4D2F-B7A2-5F834F3F624F}.Release|x86.Build.0 = Release|x86 - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|x64.ActiveCfg = Debug|x64 - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|x64.Build.0 = Debug|x64 - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|x86.ActiveCfg = Debug|x86 - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Debug|x86.Build.0 = Debug|x86 - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|Any CPU.Build.0 = Release|Any CPU - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|x64.ActiveCfg = Release|x64 - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|x64.Build.0 = Release|x64 - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|x86.ActiveCfg = Release|x86 - {92A2D17A-F0B4-42B4-82D4-322C2B8106B4}.Release|x86.Build.0 = Release|x86 - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|Any CPU.Build.0 = Debug|Any CPU - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|x64.ActiveCfg = Debug|x64 - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|x64.Build.0 = Debug|x64 - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|x86.ActiveCfg = Debug|x86 - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Debug|x86.Build.0 = Debug|x86 - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|Any CPU.ActiveCfg = Release|Any CPU - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|Any CPU.Build.0 = Release|Any CPU - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|x64.ActiveCfg = Release|x64 - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|x64.Build.0 = Release|x64 - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|x86.ActiveCfg = Release|x86 - {450474BD-ED3E-4403-A6FB-91A518A66D87}.Release|x86.Build.0 = Release|x86 - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|x64.ActiveCfg = Debug|x64 - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|x64.Build.0 = Debug|x64 - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|x86.ActiveCfg = Debug|x86 - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Debug|x86.Build.0 = Debug|x86 - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|Any CPU.Build.0 = Release|Any CPU - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|x64.ActiveCfg = Release|x64 - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|x64.Build.0 = Release|x64 - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|x86.ActiveCfg = Release|x86 - {1FB5D78C-C981-4F0E-A160-7A12DFA6280D}.Release|x86.Build.0 = Release|x86 - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|x64.ActiveCfg = Debug|x64 - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|x64.Build.0 = Debug|x64 - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|x86.ActiveCfg = Debug|x86 - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Debug|x86.Build.0 = Debug|x86 - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|Any CPU.Build.0 = Release|Any CPU - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|x64.ActiveCfg = Release|x64 - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|x64.Build.0 = Release|x64 - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|x86.ActiveCfg = Release|x86 - {1C4DA1A0-AA5D-4F1D-BB65-E78933201D2B}.Release|x86.Build.0 = Release|x86 - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|x64.ActiveCfg = Debug|x64 - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|x64.Build.0 = Debug|x64 - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|x86.ActiveCfg = Debug|x86 - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Debug|x86.Build.0 = Debug|x86 - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|Any CPU.Build.0 = Release|Any CPU - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|x64.ActiveCfg = Release|x64 - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|x64.Build.0 = Release|x64 - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|x86.ActiveCfg = Release|x86 - {FB25CF38-0E05-44F2-8A38-31195E06175A}.Release|x86.Build.0 = Release|x86 - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|x64.ActiveCfg = Debug|x64 - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|x64.Build.0 = Debug|x64 - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|x86.ActiveCfg = Debug|x86 - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Debug|x86.Build.0 = Debug|x86 - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|Any CPU.Build.0 = Release|Any CPU - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|x64.ActiveCfg = Release|x64 - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|x64.Build.0 = Release|x64 - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|x86.ActiveCfg = Release|x86 - {25C3281E-C5CA-45DF-BBD1-2502230BD0E2}.Release|x86.Build.0 = Release|x86 - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|x64.ActiveCfg = Debug|x64 - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|x64.Build.0 = Debug|x64 - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|x86.ActiveCfg = Debug|x86 - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Debug|x86.Build.0 = Debug|x86 - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|Any CPU.Build.0 = Release|Any CPU - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|x64.ActiveCfg = Release|x64 - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|x64.Build.0 = Release|x64 - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|x86.ActiveCfg = Release|x86 - {3C9154F6-CD7C-4FDC-B6F6-7B06414D3E46}.Release|x86.Build.0 = Release|x86 - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|x64.ActiveCfg = Debug|x64 - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|x64.Build.0 = Debug|x64 - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|x86.ActiveCfg = Debug|x86 - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Debug|x86.Build.0 = Debug|x86 - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|Any CPU.Build.0 = Release|Any CPU - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|x64.ActiveCfg = Release|x64 - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|x64.Build.0 = Release|x64 - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|x86.ActiveCfg = Release|x86 - {FF287D3F-7DBF-4012-B34F-C2B1EF69FD50}.Release|x86.Build.0 = Release|x86 - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|x64.ActiveCfg = Debug|x64 - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|x64.Build.0 = Debug|x64 - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|x86.ActiveCfg = Debug|x86 - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Debug|x86.Build.0 = Debug|x86 - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|Any CPU.Build.0 = Release|Any CPU - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|x64.ActiveCfg = Release|x64 - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|x64.Build.0 = Release|x64 - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|x86.ActiveCfg = Release|x86 - {2C566FD1-CA8A-4026-AB2A-148ED99805DE}.Release|x86.Build.0 = Release|x86 - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|x64.ActiveCfg = Debug|x64 - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|x64.Build.0 = Debug|x64 - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|x86.ActiveCfg = Debug|x86 - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Debug|x86.Build.0 = Debug|x86 - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|Any CPU.Build.0 = Release|Any CPU - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|x64.ActiveCfg = Release|x64 - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|x64.Build.0 = Release|x64 - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|x86.ActiveCfg = Release|x86 - {00940258-A8D1-4203-A46E-20F3B4AF92D6}.Release|x86.Build.0 = Release|x86 - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|x64.ActiveCfg = Debug|x64 - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|x64.Build.0 = Debug|x64 - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|x86.ActiveCfg = Debug|x86 - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Debug|x86.Build.0 = Debug|x86 - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|Any CPU.Build.0 = Release|Any CPU - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|x64.ActiveCfg = Release|x64 - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|x64.Build.0 = Release|x64 - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|x86.ActiveCfg = Release|x86 - {C51A14DF-4E90-40C5-85C8-6410F25CEB8A}.Release|x86.Build.0 = Release|x86 - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|x64.ActiveCfg = Debug|x64 - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|x64.Build.0 = Debug|x64 - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|x86.ActiveCfg = Debug|x86 - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Debug|x86.Build.0 = Debug|x86 - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|Any CPU.Build.0 = Release|Any CPU - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|x64.ActiveCfg = Release|x64 - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|x64.Build.0 = Release|x64 - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|x86.ActiveCfg = Release|x86 - {A0D5347A-235B-4B42-8943-1C82F5EC79ED}.Release|x86.Build.0 = Release|x86 - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|x64.ActiveCfg = Debug|x64 - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|x64.Build.0 = Debug|x64 - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|x86.ActiveCfg = Debug|x86 - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Debug|x86.Build.0 = Debug|x86 - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|Any CPU.Build.0 = Release|Any CPU - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|x64.ActiveCfg = Release|x64 - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|x64.Build.0 = Release|x64 - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|x86.ActiveCfg = Release|x86 - {2C9B739E-16B3-4E46-8EF2-F69D5D112D96}.Release|x86.Build.0 = Release|x86 - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|x64.ActiveCfg = Debug|x64 - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|x64.Build.0 = Debug|x64 - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|x86.ActiveCfg = Debug|x86 - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Debug|x86.Build.0 = Debug|x86 - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|Any CPU.Build.0 = Release|Any CPU - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|x64.ActiveCfg = Release|x64 - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|x64.Build.0 = Release|x64 - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|x86.ActiveCfg = Release|x86 - {7C666F7D-DF1A-495B-998E-D71C49C7B601}.Release|x86.Build.0 = Release|x86 - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|x64.ActiveCfg = Debug|x64 - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|x64.Build.0 = Debug|x64 - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|x86.ActiveCfg = Debug|x86 - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Debug|x86.Build.0 = Debug|x86 - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|Any CPU.Build.0 = Release|Any CPU - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|x64.ActiveCfg = Release|x64 - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|x64.Build.0 = Release|x64 - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|x86.ActiveCfg = Release|x86 - {72FA0C78-7A1C-417E-9EAD-6CB394941AD2}.Release|x86.Build.0 = Release|x86 - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|x64.ActiveCfg = Debug|x64 - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|x64.Build.0 = Debug|x64 - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|x86.ActiveCfg = Debug|x86 - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Debug|x86.Build.0 = Debug|x86 - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|Any CPU.Build.0 = Release|Any CPU - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|x64.ActiveCfg = Release|x64 - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|x64.Build.0 = Release|x64 - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|x86.ActiveCfg = Release|x86 - {ED5A94A2-DE4A-4014-B0E5-789713A6C53F}.Release|x86.Build.0 = Release|x86 - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|Any CPU.Build.0 = Debug|Any CPU - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|x64.ActiveCfg = Debug|x64 - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|x64.Build.0 = Debug|x64 - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|x86.ActiveCfg = Debug|x86 - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Debug|x86.Build.0 = Debug|x86 - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|Any CPU.ActiveCfg = Release|Any CPU - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|Any CPU.Build.0 = Release|Any CPU - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|x64.ActiveCfg = Release|x64 - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|x64.Build.0 = Release|x64 - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|x86.ActiveCfg = Release|x86 - {75B099FA-BEB4-47D0-9AE9-B30C06DEC877}.Release|x86.Build.0 = Release|x86 - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|x64.ActiveCfg = Debug|x64 - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|x64.Build.0 = Debug|x64 - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|x86.ActiveCfg = Debug|x86 - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Debug|x86.Build.0 = Debug|x86 - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|Any CPU.Build.0 = Release|Any CPU - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|x64.ActiveCfg = Release|x64 - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|x64.Build.0 = Release|x64 - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|x86.ActiveCfg = Release|x86 - {F8D5A7CC-10F7-4A92-AE16-71ED1A151E15}.Release|x86.Build.0 = Release|x86 - {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|x64.ActiveCfg = Debug|x64 - {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|x64.Build.0 = Debug|x64 - {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|x86.ActiveCfg = Debug|x86 - {22012921-789F-48A5-8CFC-C685CB71A80D}.Debug|x86.Build.0 = Debug|x86 - {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|Any CPU.Build.0 = Release|Any CPU - {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|x64.ActiveCfg = Release|x64 - {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|x64.Build.0 = Release|x64 - {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|x86.ActiveCfg = Release|x86 - {22012921-789F-48A5-8CFC-C685CB71A80D}.Release|x86.Build.0 = Release|x86 - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|x64.ActiveCfg = Debug|x64 - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|x64.Build.0 = Debug|x64 - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|x86.ActiveCfg = Debug|x86 - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Debug|x86.Build.0 = Debug|x86 - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|Any CPU.Build.0 = Release|Any CPU - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|x64.ActiveCfg = Release|x64 - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|x64.Build.0 = Release|x64 - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|x86.ActiveCfg = Release|x86 - {12428FEF-C4E4-4062-A810-A1BF3634472A}.Release|x86.Build.0 = Release|x86 - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|x64.ActiveCfg = Debug|x64 - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|x64.Build.0 = Debug|x64 - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|x86.ActiveCfg = Debug|x86 - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Debug|x86.Build.0 = Debug|x86 - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|Any CPU.Build.0 = Release|Any CPU - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|x64.ActiveCfg = Release|x64 - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|x64.Build.0 = Release|x64 - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|x86.ActiveCfg = Release|x86 - {A51411C6-3466-4246-AF38-4FF74BE333B4}.Release|x86.Build.0 = Release|x86 - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|x64.ActiveCfg = Debug|x64 - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|x64.Build.0 = Debug|x64 - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|x86.ActiveCfg = Debug|x86 - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Debug|x86.Build.0 = Debug|x86 - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|Any CPU.Build.0 = Release|Any CPU - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|x64.ActiveCfg = Release|x64 - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|x64.Build.0 = Release|x64 - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|x86.ActiveCfg = Release|x86 - {59397B60-FA26-412E-80A1-92D4F4B3167C}.Release|x86.Build.0 = Release|x86 - {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|x64.ActiveCfg = Debug|x64 - {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|x64.Build.0 = Debug|x64 - {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|x86.ActiveCfg = Debug|x86 - {D500CE42-142F-43CA-A992-9D46D530E09E}.Debug|x86.Build.0 = Debug|x86 - {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|Any CPU.Build.0 = Release|Any CPU - {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|x64.ActiveCfg = Release|x64 - {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|x64.Build.0 = Release|x64 - {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|x86.ActiveCfg = Release|x86 - {D500CE42-142F-43CA-A992-9D46D530E09E}.Release|x86.Build.0 = Release|x86 - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|Any CPU.Build.0 = Debug|Any CPU - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|x64.ActiveCfg = Debug|x64 - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|x64.Build.0 = Debug|x64 - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|x86.ActiveCfg = Debug|x86 - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Debug|x86.Build.0 = Debug|x86 - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|Any CPU.ActiveCfg = Release|Any CPU - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|Any CPU.Build.0 = Release|Any CPU - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|x64.ActiveCfg = Release|x64 - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|x64.Build.0 = Release|x64 - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|x86.ActiveCfg = Release|x86 - {11F62571-6733-47E6-B2C8-D9DDDA500583}.Release|x86.Build.0 = Release|x86 - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|x64.ActiveCfg = Debug|x64 - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|x64.Build.0 = Debug|x64 - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|x86.ActiveCfg = Debug|x86 - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Debug|x86.Build.0 = Debug|x86 - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|Any CPU.Build.0 = Release|Any CPU - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|x64.ActiveCfg = Release|x64 - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|x64.Build.0 = Release|x64 - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|x86.ActiveCfg = Release|x86 - {E94D9A96-C3C6-47F1-8D9F-0414BBA8C22D}.Release|x86.Build.0 = Release|x86 - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|x64.ActiveCfg = Debug|x64 - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|x64.Build.0 = Debug|x64 - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|x86.ActiveCfg = Debug|x86 - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Debug|x86.Build.0 = Debug|x86 - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|Any CPU.Build.0 = Release|Any CPU - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|x64.ActiveCfg = Release|x64 - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|x64.Build.0 = Release|x64 - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|x86.ActiveCfg = Release|x86 - {F63A20A1-405E-44E5-86B5-400304B9BD79}.Release|x86.Build.0 = Release|x86 - {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|x64.ActiveCfg = Debug|x64 - {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|x64.Build.0 = Debug|x64 - {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|x86.ActiveCfg = Debug|x86 - {00484484-C185-41FB-9455-A8EA8680AD4E}.Debug|x86.Build.0 = Debug|x86 - {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|Any CPU.Build.0 = Release|Any CPU - {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|x64.ActiveCfg = Release|x64 - {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|x64.Build.0 = Release|x64 - {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|x86.ActiveCfg = Release|x86 - {00484484-C185-41FB-9455-A8EA8680AD4E}.Release|x86.Build.0 = Release|x86 - {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|x64.ActiveCfg = Debug|x64 - {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|x64.Build.0 = Debug|x64 - {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|x86.ActiveCfg = Debug|x86 - {DF82974A-9442-4545-B97A-351B8F9BD726}.Debug|x86.Build.0 = Debug|x86 - {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|Any CPU.Build.0 = Release|Any CPU - {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|x64.ActiveCfg = Release|x64 - {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|x64.Build.0 = Release|x64 - {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|x86.ActiveCfg = Release|x86 - {DF82974A-9442-4545-B97A-351B8F9BD726}.Release|x86.Build.0 = Release|x86 - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|x64.ActiveCfg = Debug|x64 - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|x64.Build.0 = Debug|x64 - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|x86.ActiveCfg = Debug|x86 - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Debug|x86.Build.0 = Debug|x86 - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|Any CPU.Build.0 = Release|Any CPU - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|x64.ActiveCfg = Release|x64 - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|x64.Build.0 = Release|x64 - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|x86.ActiveCfg = Release|x86 - {2FA82303-4540-4C6F-8895-071CCFD4992B}.Release|x86.Build.0 = Release|x86 - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|x64.ActiveCfg = Debug|x64 - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|x64.Build.0 = Debug|x64 - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|x86.ActiveCfg = Debug|x86 - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Debug|x86.Build.0 = Debug|x86 - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|Any CPU.Build.0 = Release|Any CPU - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|x64.ActiveCfg = Release|x64 - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|x64.Build.0 = Release|x64 - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|x86.ActiveCfg = Release|x86 - {F9B797F7-52CD-4BA7-9683-96905A07951F}.Release|x86.Build.0 = Release|x86 - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|x64.ActiveCfg = Debug|x64 - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|x64.Build.0 = Debug|x64 - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|x86.ActiveCfg = Debug|x86 - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Debug|x86.Build.0 = Debug|x86 - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|Any CPU.Build.0 = Release|Any CPU - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|x64.ActiveCfg = Release|x64 - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|x64.Build.0 = Release|x64 - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|x86.ActiveCfg = Release|x86 - {46262700-25A8-4A13-9E46-43B6923A8FDD}.Release|x86.Build.0 = Release|x86 - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|x64.ActiveCfg = Debug|x64 - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|x64.Build.0 = Debug|x64 - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|x86.ActiveCfg = Debug|x86 - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Debug|x86.Build.0 = Debug|x86 - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|Any CPU.Build.0 = Release|Any CPU - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|x64.ActiveCfg = Release|x64 - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|x64.Build.0 = Release|x64 - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|x86.ActiveCfg = Release|x86 - {0B5B82E7-BFEC-4567-8649-B7E92AA1B466}.Release|x86.Build.0 = Release|x86 - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|x64.ActiveCfg = Debug|x64 - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|x64.Build.0 = Debug|x64 - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|x86.ActiveCfg = Debug|x86 - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Debug|x86.Build.0 = Debug|x86 - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|Any CPU.Build.0 = Release|Any CPU - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|x64.ActiveCfg = Release|x64 - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|x64.Build.0 = Release|x64 - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|x86.ActiveCfg = Release|x86 - {27E069A0-A9A2-4DC0-AC42-14C77EE6B1B3}.Release|x86.Build.0 = Release|x86 - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|x64.ActiveCfg = Debug|x64 - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|x64.Build.0 = Debug|x64 - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|x86.ActiveCfg = Debug|x86 - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Debug|x86.Build.0 = Debug|x86 - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|Any CPU.Build.0 = Release|Any CPU - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|x64.ActiveCfg = Release|x64 - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|x64.Build.0 = Release|x64 - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|x86.ActiveCfg = Release|x86 - {2ABC1AFF-BC2C-4D26-8C46-DFD8A1641DAA}.Release|x86.Build.0 = Release|x86 - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|x64.ActiveCfg = Debug|x64 - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|x64.Build.0 = Debug|x64 - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|x86.ActiveCfg = Debug|x86 - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Debug|x86.Build.0 = Debug|x86 - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|Any CPU.Build.0 = Release|Any CPU - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|x64.ActiveCfg = Release|x64 - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|x64.Build.0 = Release|x64 - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|x86.ActiveCfg = Release|x86 - {C9588DB6-D1E0-4CBA-AA5C-F19106A192E3}.Release|x86.Build.0 = Release|x86 - {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|x64.ActiveCfg = Debug|x64 - {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|x64.Build.0 = Debug|x64 - {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|x86.ActiveCfg = Debug|x86 - {35DC825C-BBDA-4709-BA21-8AE018848610}.Debug|x86.Build.0 = Debug|x86 - {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|Any CPU.Build.0 = Release|Any CPU - {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|x64.ActiveCfg = Release|x64 - {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|x64.Build.0 = Release|x64 - {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|x86.ActiveCfg = Release|x86 - {35DC825C-BBDA-4709-BA21-8AE018848610}.Release|x86.Build.0 = Release|x86 - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|x64.ActiveCfg = Debug|x64 - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|x64.Build.0 = Debug|x64 - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|x86.ActiveCfg = Debug|x86 - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Debug|x86.Build.0 = Debug|x86 - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|Any CPU.Build.0 = Release|Any CPU - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|x64.ActiveCfg = Release|x64 - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|x64.Build.0 = Release|x64 - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|x86.ActiveCfg = Release|x86 - {B7656F1C-F7D1-4997-9EB1-E6FE5F29CCA3}.Release|x86.Build.0 = Release|x86 - {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|Any CPU.Build.0 = Debug|Any CPU - {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|x64.ActiveCfg = Debug|x64 - {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|x64.Build.0 = Debug|x64 - {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|x86.ActiveCfg = Debug|x86 - {99C2269B-7E12-43C0-981F-EAB994D35829}.Debug|x86.Build.0 = Debug|x86 - {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|Any CPU.ActiveCfg = Release|Any CPU - {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|Any CPU.Build.0 = Release|Any CPU - {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|x64.ActiveCfg = Release|x64 - {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|x64.Build.0 = Release|x64 - {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|x86.ActiveCfg = Release|x86 - {99C2269B-7E12-43C0-981F-EAB994D35829}.Release|x86.Build.0 = Release|x86 - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|x64.ActiveCfg = Debug|x64 - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|x64.Build.0 = Debug|x64 - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|x86.ActiveCfg = Debug|x86 - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Debug|x86.Build.0 = Debug|x86 - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|Any CPU.Build.0 = Release|Any CPU - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|x64.ActiveCfg = Release|x64 - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|x64.Build.0 = Release|x64 - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|x86.ActiveCfg = Release|x86 - {EF2AFBCB-26CB-47EF-8C75-3D76A1A538C1}.Release|x86.Build.0 = Release|x86 - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|x64.ActiveCfg = Debug|x64 - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|x64.Build.0 = Debug|x64 - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|x86.ActiveCfg = Debug|x86 - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Debug|x86.Build.0 = Debug|x86 - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|Any CPU.Build.0 = Release|Any CPU - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|x64.ActiveCfg = Release|x64 - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|x64.Build.0 = Release|x64 - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|x86.ActiveCfg = Release|x86 - {85213FEA-AEA5-46E6-8D1B-B2738D1FD8F3}.Release|x86.Build.0 = Release|x86 - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|x64.ActiveCfg = Debug|x64 - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|x64.Build.0 = Debug|x64 - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|x86.ActiveCfg = Debug|x86 - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Debug|x86.Build.0 = Debug|x86 - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|Any CPU.Build.0 = Release|Any CPU - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|x64.ActiveCfg = Release|x64 - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|x64.Build.0 = Release|x64 - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|x86.ActiveCfg = Release|x86 - {74CE77FB-53E6-4DDB-91CE-302B3CEC50B9}.Release|x86.Build.0 = Release|x86 - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|x64.ActiveCfg = Debug|x64 - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|x64.Build.0 = Debug|x64 - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|x86.ActiveCfg = Debug|x86 - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Debug|x86.Build.0 = Debug|x86 - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|Any CPU.Build.0 = Release|Any CPU - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|x64.ActiveCfg = Release|x64 - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|x64.Build.0 = Release|x64 - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|x86.ActiveCfg = Release|x86 - {AF8A15C2-18F6-4F29-8DBD-47745954790E}.Release|x86.Build.0 = Release|x86 + {F16C0EE1-6923-4328-B015-363CF24FF867}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F16C0EE1-6923-4328-B015-363CF24FF867}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F16C0EE1-6923-4328-B015-363CF24FF867}.Debug|x64.ActiveCfg = Debug|Any CPU + {F16C0EE1-6923-4328-B015-363CF24FF867}.Debug|x64.Build.0 = Debug|Any CPU + {F16C0EE1-6923-4328-B015-363CF24FF867}.Debug|x86.ActiveCfg = Debug|Any CPU + {F16C0EE1-6923-4328-B015-363CF24FF867}.Debug|x86.Build.0 = Debug|Any CPU + {F16C0EE1-6923-4328-B015-363CF24FF867}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F16C0EE1-6923-4328-B015-363CF24FF867}.Release|Any CPU.Build.0 = Release|Any CPU + {F16C0EE1-6923-4328-B015-363CF24FF867}.Release|x64.ActiveCfg = Release|Any CPU + {F16C0EE1-6923-4328-B015-363CF24FF867}.Release|x64.Build.0 = Release|Any CPU + {F16C0EE1-6923-4328-B015-363CF24FF867}.Release|x86.ActiveCfg = Release|Any CPU + {F16C0EE1-6923-4328-B015-363CF24FF867}.Release|x86.Build.0 = Release|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Debug|x64.ActiveCfg = Debug|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Debug|x64.Build.0 = Debug|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Debug|x86.ActiveCfg = Debug|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Debug|x86.Build.0 = Debug|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Release|Any CPU.Build.0 = Release|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Release|x64.ActiveCfg = Release|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Release|x64.Build.0 = Release|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Release|x86.ActiveCfg = Release|Any CPU + {0B8FF29D-6707-4112-8398-6F383A31524D}.Release|x86.Build.0 = Release|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Debug|x64.ActiveCfg = Debug|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Debug|x64.Build.0 = Debug|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Debug|x86.ActiveCfg = Debug|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Debug|x86.Build.0 = Debug|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Release|Any CPU.Build.0 = Release|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Release|x64.ActiveCfg = Release|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Release|x64.Build.0 = Release|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Release|x86.ActiveCfg = Release|Any CPU + {CFA7CC8D-C585-4AE6-BAD0-840D3DC62A43}.Release|x86.Build.0 = Release|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Debug|x64.ActiveCfg = Debug|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Debug|x64.Build.0 = Debug|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Debug|x86.ActiveCfg = Debug|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Debug|x86.Build.0 = Debug|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Release|Any CPU.Build.0 = Release|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Release|x64.ActiveCfg = Release|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Release|x64.Build.0 = Release|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Release|x86.ActiveCfg = Release|Any CPU + {C9372234-0F42-4E0E-BD55-EAC351D9256C}.Release|x86.Build.0 = Release|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Debug|x64.ActiveCfg = Debug|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Debug|x64.Build.0 = Debug|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Debug|x86.ActiveCfg = Debug|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Debug|x86.Build.0 = Debug|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Release|Any CPU.Build.0 = Release|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Release|x64.ActiveCfg = Release|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Release|x64.Build.0 = Release|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Release|x86.ActiveCfg = Release|Any CPU + {BA7E7612-8AE8-4246-8E09-190445DF9900}.Release|x86.Build.0 = Release|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Debug|x64.ActiveCfg = Debug|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Debug|x64.Build.0 = Debug|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Debug|x86.ActiveCfg = Debug|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Debug|x86.Build.0 = Debug|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Release|Any CPU.Build.0 = Release|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Release|x64.ActiveCfg = Release|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Release|x64.Build.0 = Release|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Release|x86.ActiveCfg = Release|Any CPU + {815C764D-CC32-4BD9-8F32-78A2D030C71E}.Release|x86.Build.0 = Release|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Debug|x64.ActiveCfg = Debug|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Debug|x64.Build.0 = Debug|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Debug|x86.ActiveCfg = Debug|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Debug|x86.Build.0 = Debug|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Release|Any CPU.Build.0 = Release|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Release|x64.ActiveCfg = Release|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Release|x64.Build.0 = Release|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Release|x86.ActiveCfg = Release|Any CPU + {4CEF0893-7AE3-455E-98C1-89BB822AC1C2}.Release|x86.Build.0 = Release|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Debug|x64.ActiveCfg = Debug|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Debug|x64.Build.0 = Debug|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Debug|x86.ActiveCfg = Debug|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Debug|x86.Build.0 = Debug|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Release|Any CPU.Build.0 = Release|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Release|x64.ActiveCfg = Release|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Release|x64.Build.0 = Release|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Release|x86.ActiveCfg = Release|Any CPU + {12BF4BEE-261C-42B8-B2DC-D80262744AC2}.Release|x86.Build.0 = Release|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Debug|x64.ActiveCfg = Debug|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Debug|x64.Build.0 = Debug|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Debug|x86.ActiveCfg = Debug|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Debug|x86.Build.0 = Debug|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Release|Any CPU.Build.0 = Release|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Release|x64.ActiveCfg = Release|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Release|x64.Build.0 = Release|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Release|x86.ActiveCfg = Release|Any CPU + {BE87F8A4-E216-40A7-86CF-153A15BAFEF8}.Release|x86.Build.0 = Release|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Debug|x64.ActiveCfg = Debug|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Debug|x64.Build.0 = Debug|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Debug|x86.Build.0 = Debug|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Release|Any CPU.Build.0 = Release|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Release|x64.ActiveCfg = Release|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Release|x64.Build.0 = Release|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Release|x86.ActiveCfg = Release|Any CPU + {1F8B6B66-7A58-4F84-9D3A-FB454D2CC3E2}.Release|x86.Build.0 = Release|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Debug|x64.ActiveCfg = Debug|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Debug|x64.Build.0 = Debug|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Debug|x86.ActiveCfg = Debug|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Debug|x86.Build.0 = Debug|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Release|Any CPU.Build.0 = Release|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Release|x64.ActiveCfg = Release|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Release|x64.Build.0 = Release|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Release|x86.ActiveCfg = Release|Any CPU + {6FBC562A-7721-4846-81B6-D79D5AF576C5}.Release|x86.Build.0 = Release|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Debug|x64.ActiveCfg = Debug|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Debug|x64.Build.0 = Debug|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Debug|x86.ActiveCfg = Debug|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Debug|x86.Build.0 = Debug|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Release|Any CPU.Build.0 = Release|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Release|x64.ActiveCfg = Release|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Release|x64.Build.0 = Release|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Release|x86.ActiveCfg = Release|Any CPU + {C8D01AEE-9AD9-4134-9721-3442C59702B2}.Release|x86.Build.0 = Release|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Debug|x64.ActiveCfg = Debug|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Debug|x64.Build.0 = Debug|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Debug|x86.ActiveCfg = Debug|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Debug|x86.Build.0 = Debug|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Release|Any CPU.Build.0 = Release|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Release|x64.ActiveCfg = Release|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Release|x64.Build.0 = Release|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Release|x86.ActiveCfg = Release|Any CPU + {F9175D9F-7602-4BE1-B565-EA723D0CDF0A}.Release|x86.Build.0 = Release|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Debug|x64.ActiveCfg = Debug|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Debug|x64.Build.0 = Debug|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Debug|x86.ActiveCfg = Debug|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Debug|x86.Build.0 = Debug|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Release|Any CPU.Build.0 = Release|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Release|x64.ActiveCfg = Release|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Release|x64.Build.0 = Release|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Release|x86.ActiveCfg = Release|Any CPU + {CE0CA302-A594-422D-A215-E78F2F3AF0CE}.Release|x86.Build.0 = Release|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Debug|x64.ActiveCfg = Debug|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Debug|x64.Build.0 = Debug|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Debug|x86.ActiveCfg = Debug|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Debug|x86.Build.0 = Debug|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Release|Any CPU.Build.0 = Release|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Release|x64.ActiveCfg = Release|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Release|x64.Build.0 = Release|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Release|x86.ActiveCfg = Release|Any CPU + {A9584773-6FD0-42CB-B94E-A61125C5C1E7}.Release|x86.Build.0 = Release|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Debug|x64.ActiveCfg = Debug|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Debug|x64.Build.0 = Debug|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Debug|x86.ActiveCfg = Debug|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Debug|x86.Build.0 = Debug|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Release|Any CPU.Build.0 = Release|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Release|x64.ActiveCfg = Release|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Release|x64.Build.0 = Release|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Release|x86.ActiveCfg = Release|Any CPU + {31595C04-4C0E-4A72-90A1-054EE5C47BFC}.Release|x86.Build.0 = Release|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Debug|x64.ActiveCfg = Debug|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Debug|x64.Build.0 = Debug|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Debug|x86.ActiveCfg = Debug|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Debug|x86.Build.0 = Debug|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Release|Any CPU.Build.0 = Release|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Release|x64.ActiveCfg = Release|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Release|x64.Build.0 = Release|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Release|x86.ActiveCfg = Release|Any CPU + {A3016178-CED9-4DDD-8FF4-03C420AD77B9}.Release|x86.Build.0 = Release|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Debug|x64.ActiveCfg = Debug|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Debug|x64.Build.0 = Debug|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Debug|x86.ActiveCfg = Debug|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Debug|x86.Build.0 = Debug|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Release|Any CPU.Build.0 = Release|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Release|x64.ActiveCfg = Release|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Release|x64.Build.0 = Release|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Release|x86.ActiveCfg = Release|Any CPU + {D498F024-BA85-4543-88F9-1DCF239470C7}.Release|x86.Build.0 = Release|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Debug|x64.ActiveCfg = Debug|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Debug|x64.Build.0 = Debug|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Debug|x86.ActiveCfg = Debug|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Debug|x86.Build.0 = Debug|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Release|Any CPU.Build.0 = Release|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Release|x64.ActiveCfg = Release|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Release|x64.Build.0 = Release|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Release|x86.ActiveCfg = Release|Any CPU + {2C9B22CE-770A-400B-BD9B-287030CF12BB}.Release|x86.Build.0 = Release|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Debug|x64.ActiveCfg = Debug|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Debug|x64.Build.0 = Debug|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Debug|x86.ActiveCfg = Debug|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Debug|x86.Build.0 = Debug|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Release|Any CPU.Build.0 = Release|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Release|x64.ActiveCfg = Release|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Release|x64.Build.0 = Release|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Release|x86.ActiveCfg = Release|Any CPU + {A6151CB7-713E-43B0-A403-9C73F9936D4B}.Release|x86.Build.0 = Release|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Debug|x64.ActiveCfg = Debug|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Debug|x64.Build.0 = Debug|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Debug|x86.ActiveCfg = Debug|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Debug|x86.Build.0 = Debug|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Release|Any CPU.Build.0 = Release|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Release|x64.ActiveCfg = Release|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Release|x64.Build.0 = Release|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Release|x86.ActiveCfg = Release|Any CPU + {3ED88500-2825-4F24-81E6-C816FF89A5B5}.Release|x86.Build.0 = Release|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Debug|Any CPU.Build.0 = Debug|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Debug|x64.ActiveCfg = Debug|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Debug|x64.Build.0 = Debug|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Debug|x86.ActiveCfg = Debug|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Debug|x86.Build.0 = Debug|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Release|Any CPU.ActiveCfg = Release|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Release|Any CPU.Build.0 = Release|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Release|x64.ActiveCfg = Release|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Release|x64.Build.0 = Release|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Release|x86.ActiveCfg = Release|Any CPU + {93092B18-7447-4F06-AD46-FC7B39EC9E89}.Release|x86.Build.0 = Release|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Debug|x64.ActiveCfg = Debug|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Debug|x64.Build.0 = Debug|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Debug|x86.ActiveCfg = Debug|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Debug|x86.Build.0 = Debug|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Release|Any CPU.Build.0 = Release|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Release|x64.ActiveCfg = Release|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Release|x64.Build.0 = Release|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Release|x86.ActiveCfg = Release|Any CPU + {07DA1459-6101-43E1-A1AF-48ABD8D62ADD}.Release|x86.Build.0 = Release|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Debug|Any CPU.Build.0 = Debug|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Debug|x64.ActiveCfg = Debug|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Debug|x64.Build.0 = Debug|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Debug|x86.ActiveCfg = Debug|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Debug|x86.Build.0 = Debug|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Release|Any CPU.ActiveCfg = Release|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Release|Any CPU.Build.0 = Release|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Release|x64.ActiveCfg = Release|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Release|x64.Build.0 = Release|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Release|x86.ActiveCfg = Release|Any CPU + {58000112-543C-401E-9D1C-EBABC5A67A14}.Release|x86.Build.0 = Release|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Debug|x64.ActiveCfg = Debug|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Debug|x64.Build.0 = Debug|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Debug|x86.ActiveCfg = Debug|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Debug|x86.Build.0 = Debug|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Release|Any CPU.Build.0 = Release|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Release|x64.ActiveCfg = Release|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Release|x64.Build.0 = Release|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Release|x86.ActiveCfg = Release|Any CPU + {99CCDA48-1CA3-46B9-89B8-0B45106304FC}.Release|x86.Build.0 = Release|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Debug|x64.ActiveCfg = Debug|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Debug|x64.Build.0 = Debug|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Debug|x86.ActiveCfg = Debug|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Debug|x86.Build.0 = Debug|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Release|Any CPU.Build.0 = Release|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Release|x64.ActiveCfg = Release|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Release|x64.Build.0 = Release|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Release|x86.ActiveCfg = Release|Any CPU + {45A818E0-8CDF-44A5-B948-63D8DEB9982E}.Release|x86.Build.0 = Release|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Debug|x64.ActiveCfg = Debug|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Debug|x64.Build.0 = Debug|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Debug|x86.ActiveCfg = Debug|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Debug|x86.Build.0 = Debug|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Release|Any CPU.Build.0 = Release|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Release|x64.ActiveCfg = Release|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Release|x64.Build.0 = Release|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Release|x86.ActiveCfg = Release|Any CPU + {B341FE12-9233-4E34-8C1C-4E62AC2F8AE1}.Release|x86.Build.0 = Release|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Debug|x64.ActiveCfg = Debug|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Debug|x64.Build.0 = Debug|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Debug|x86.ActiveCfg = Debug|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Debug|x86.Build.0 = Debug|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Release|Any CPU.Build.0 = Release|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Release|x64.ActiveCfg = Release|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Release|x64.Build.0 = Release|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Release|x86.ActiveCfg = Release|Any CPU + {B7E811DB-8575-4C77-9AF9-49DA840557C2}.Release|x86.Build.0 = Release|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Debug|x64.ActiveCfg = Debug|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Debug|x64.Build.0 = Debug|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Debug|x86.ActiveCfg = Debug|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Debug|x86.Build.0 = Debug|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Release|Any CPU.Build.0 = Release|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Release|x64.ActiveCfg = Release|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Release|x64.Build.0 = Release|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Release|x86.ActiveCfg = Release|Any CPU + {FD52020A-6F1E-42FA-81CE-1F6A8E7C9737}.Release|x86.Build.0 = Release|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Debug|x64.ActiveCfg = Debug|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Debug|x64.Build.0 = Debug|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Debug|x86.ActiveCfg = Debug|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Debug|x86.Build.0 = Debug|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Release|Any CPU.Build.0 = Release|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Release|x64.ActiveCfg = Release|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Release|x64.Build.0 = Release|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Release|x86.ActiveCfg = Release|Any CPU + {FED33EF6-AC47-4E9A-B615-66B16B846E94}.Release|x86.Build.0 = Release|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Debug|x64.ActiveCfg = Debug|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Debug|x64.Build.0 = Debug|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Debug|x86.ActiveCfg = Debug|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Debug|x86.Build.0 = Debug|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Release|Any CPU.Build.0 = Release|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Release|x64.ActiveCfg = Release|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Release|x64.Build.0 = Release|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Release|x86.ActiveCfg = Release|Any CPU + {ACB24C7C-C92D-43F9-B1B1-9444696DAD36}.Release|x86.Build.0 = Release|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Debug|x64.ActiveCfg = Debug|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Debug|x64.Build.0 = Debug|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Debug|x86.ActiveCfg = Debug|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Debug|x86.Build.0 = Debug|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Release|Any CPU.Build.0 = Release|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Release|x64.ActiveCfg = Release|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Release|x64.Build.0 = Release|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Release|x86.ActiveCfg = Release|Any CPU + {2C8C5AE3-D04F-48F4-8AF5-D7535277B7A0}.Release|x86.Build.0 = Release|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Debug|x64.ActiveCfg = Debug|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Debug|x64.Build.0 = Debug|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Debug|x86.ActiveCfg = Debug|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Debug|x86.Build.0 = Debug|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Release|Any CPU.Build.0 = Release|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Release|x64.ActiveCfg = Release|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Release|x64.Build.0 = Release|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Release|x86.ActiveCfg = Release|Any CPU + {A5417213-F20A-4C06-9D8B-8688B0C4EE61}.Release|x86.Build.0 = Release|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Debug|x64.ActiveCfg = Debug|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Debug|x64.Build.0 = Debug|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Debug|x86.ActiveCfg = Debug|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Debug|x86.Build.0 = Debug|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Release|Any CPU.Build.0 = Release|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Release|x64.ActiveCfg = Release|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Release|x64.Build.0 = Release|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Release|x86.ActiveCfg = Release|Any CPU + {A03A743F-C645-45CB-80A0-BE10D2FC1A13}.Release|x86.Build.0 = Release|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Debug|x64.ActiveCfg = Debug|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Debug|x64.Build.0 = Debug|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Debug|x86.ActiveCfg = Debug|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Debug|x86.Build.0 = Debug|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Release|Any CPU.Build.0 = Release|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Release|x64.ActiveCfg = Release|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Release|x64.Build.0 = Release|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Release|x86.ActiveCfg = Release|Any CPU + {29C6234D-5562-4495-A014-92388EE4518E}.Release|x86.Build.0 = Release|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Debug|x64.ActiveCfg = Debug|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Debug|x64.Build.0 = Debug|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Debug|x86.ActiveCfg = Debug|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Debug|x86.Build.0 = Debug|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Release|Any CPU.Build.0 = Release|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Release|x64.ActiveCfg = Release|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Release|x64.Build.0 = Release|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Release|x86.ActiveCfg = Release|Any CPU + {4427F391-652B-4804-BED4-7CD0D218FE28}.Release|x86.Build.0 = Release|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Debug|x64.ActiveCfg = Debug|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Debug|x64.Build.0 = Debug|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Debug|x86.ActiveCfg = Debug|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Debug|x86.Build.0 = Debug|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Release|Any CPU.Build.0 = Release|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Release|x64.ActiveCfg = Release|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Release|x64.Build.0 = Release|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Release|x86.ActiveCfg = Release|Any CPU + {61BAD6B6-3A48-4E9B-8333-F1884F68A0A5}.Release|x86.Build.0 = Release|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Debug|x64.ActiveCfg = Debug|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Debug|x64.Build.0 = Debug|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Debug|x86.ActiveCfg = Debug|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Debug|x86.Build.0 = Debug|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Release|Any CPU.Build.0 = Release|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Release|x64.ActiveCfg = Release|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Release|x64.Build.0 = Release|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Release|x86.ActiveCfg = Release|Any CPU + {DE23A75D-E816-4988-BB2C-7EBEB5BEB6F1}.Release|x86.Build.0 = Release|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Debug|x64.ActiveCfg = Debug|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Debug|x64.Build.0 = Debug|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Debug|x86.ActiveCfg = Debug|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Debug|x86.Build.0 = Debug|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Release|Any CPU.Build.0 = Release|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Release|x64.ActiveCfg = Release|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Release|x64.Build.0 = Release|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Release|x86.ActiveCfg = Release|Any CPU + {0CC90F16-9B6C-4C87-A49B-600DB3DF0D2A}.Release|x86.Build.0 = Release|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Debug|x64.ActiveCfg = Debug|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Debug|x64.Build.0 = Debug|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Debug|x86.ActiveCfg = Debug|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Debug|x86.Build.0 = Debug|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Release|Any CPU.Build.0 = Release|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Release|x64.ActiveCfg = Release|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Release|x64.Build.0 = Release|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Release|x86.ActiveCfg = Release|Any CPU + {4D68748B-6DEF-4E05-830C-43AF09B2CE8A}.Release|x86.Build.0 = Release|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Debug|x64.ActiveCfg = Debug|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Debug|x64.Build.0 = Debug|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Debug|x86.ActiveCfg = Debug|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Debug|x86.Build.0 = Debug|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Release|Any CPU.Build.0 = Release|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Release|x64.ActiveCfg = Release|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Release|x64.Build.0 = Release|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Release|x86.ActiveCfg = Release|Any CPU + {91CF9FC4-105B-4E21-8692-1D5E539E42E9}.Release|x86.Build.0 = Release|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Debug|x64.ActiveCfg = Debug|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Debug|x64.Build.0 = Debug|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Debug|x86.ActiveCfg = Debug|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Debug|x86.Build.0 = Debug|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Release|Any CPU.Build.0 = Release|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Release|x64.ActiveCfg = Release|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Release|x64.Build.0 = Release|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Release|x86.ActiveCfg = Release|Any CPU + {D504C93E-AE1A-4852-9727-6E565632D38E}.Release|x86.Build.0 = Release|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Debug|x64.ActiveCfg = Debug|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Debug|x64.Build.0 = Debug|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Debug|x86.ActiveCfg = Debug|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Debug|x86.Build.0 = Debug|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Release|Any CPU.Build.0 = Release|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Release|x64.ActiveCfg = Release|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Release|x64.Build.0 = Release|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Release|x86.ActiveCfg = Release|Any CPU + {1632128F-A60B-49B8-A5DB-05F3F1A3B84C}.Release|x86.Build.0 = Release|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Debug|x64.ActiveCfg = Debug|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Debug|x64.Build.0 = Debug|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Debug|x86.ActiveCfg = Debug|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Debug|x86.Build.0 = Debug|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Release|Any CPU.Build.0 = Release|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Release|x64.ActiveCfg = Release|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Release|x64.Build.0 = Release|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Release|x86.ActiveCfg = Release|Any CPU + {8CA92DF0-3C60-4F23-9890-806744E1F514}.Release|x86.Build.0 = Release|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Debug|Any CPU.Build.0 = Debug|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Debug|x64.ActiveCfg = Debug|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Debug|x64.Build.0 = Debug|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Debug|x86.ActiveCfg = Debug|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Debug|x86.Build.0 = Debug|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Release|Any CPU.ActiveCfg = Release|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Release|Any CPU.Build.0 = Release|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Release|x64.ActiveCfg = Release|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Release|x64.Build.0 = Release|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Release|x86.ActiveCfg = Release|Any CPU + {507ED1D4-F905-4AAD-897D-AD403FA56663}.Release|x86.Build.0 = Release|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Debug|x64.ActiveCfg = Debug|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Debug|x64.Build.0 = Debug|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Debug|x86.ActiveCfg = Debug|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Debug|x86.Build.0 = Debug|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Release|Any CPU.Build.0 = Release|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Release|x64.ActiveCfg = Release|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Release|x64.Build.0 = Release|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Release|x86.ActiveCfg = Release|Any CPU + {C9ADF8BA-8239-4514-8906-A8E09A1A874C}.Release|x86.Build.0 = Release|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Debug|x64.ActiveCfg = Debug|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Debug|x64.Build.0 = Debug|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Debug|x86.ActiveCfg = Debug|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Debug|x86.Build.0 = Debug|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Release|Any CPU.Build.0 = Release|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Release|x64.ActiveCfg = Release|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Release|x64.Build.0 = Release|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Release|x86.ActiveCfg = Release|Any CPU + {7370EDAC-0F7C-4008-A8C6-8C6240EE518E}.Release|x86.Build.0 = Release|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Debug|x64.ActiveCfg = Debug|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Debug|x64.Build.0 = Debug|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Debug|x86.ActiveCfg = Debug|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Debug|x86.Build.0 = Debug|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Release|Any CPU.Build.0 = Release|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Release|x64.ActiveCfg = Release|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Release|x64.Build.0 = Release|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Release|x86.ActiveCfg = Release|Any CPU + {6B934B23-6A75-42FC-9B6C-B3F4CFA6673F}.Release|x86.Build.0 = Release|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Debug|x64.ActiveCfg = Debug|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Debug|x64.Build.0 = Debug|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Debug|x86.ActiveCfg = Debug|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Debug|x86.Build.0 = Debug|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Release|Any CPU.Build.0 = Release|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Release|x64.ActiveCfg = Release|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Release|x64.Build.0 = Release|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Release|x86.ActiveCfg = Release|Any CPU + {AFA39C3B-C0A0-445C-8129-4DFD3009B56E}.Release|x86.Build.0 = Release|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Debug|x64.ActiveCfg = Debug|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Debug|x64.Build.0 = Debug|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Debug|x86.ActiveCfg = Debug|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Debug|x86.Build.0 = Debug|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Release|Any CPU.Build.0 = Release|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Release|x64.ActiveCfg = Release|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Release|x64.Build.0 = Release|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Release|x86.ActiveCfg = Release|Any CPU + {BCC05EA8-DB49-4684-9888-1B8688BE3FA6}.Release|x86.Build.0 = Release|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Debug|Any CPU.Build.0 = Debug|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Debug|x64.ActiveCfg = Debug|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Debug|x64.Build.0 = Debug|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Debug|x86.ActiveCfg = Debug|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Debug|x86.Build.0 = Debug|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Release|Any CPU.ActiveCfg = Release|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Release|Any CPU.Build.0 = Release|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Release|x64.ActiveCfg = Release|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Release|x64.Build.0 = Release|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Release|x86.ActiveCfg = Release|Any CPU + {87FCABD0-2762-464E-9489-415E95D12427}.Release|x86.Build.0 = Release|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Debug|x64.ActiveCfg = Debug|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Debug|x64.Build.0 = Debug|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Debug|x86.ActiveCfg = Debug|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Debug|x86.Build.0 = Debug|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Release|Any CPU.Build.0 = Release|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Release|x64.ActiveCfg = Release|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Release|x64.Build.0 = Release|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Release|x86.ActiveCfg = Release|Any CPU + {C84E079F-9790-425A-9C86-C69122811E6F}.Release|x86.Build.0 = Release|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Debug|x64.ActiveCfg = Debug|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Debug|x64.Build.0 = Debug|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Debug|x86.ActiveCfg = Debug|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Debug|x86.Build.0 = Debug|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Release|Any CPU.Build.0 = Release|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Release|x64.ActiveCfg = Release|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Release|x64.Build.0 = Release|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Release|x86.ActiveCfg = Release|Any CPU + {F437861F-4FF8-418E-B205-FB04D23E0312}.Release|x86.Build.0 = Release|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Debug|x64.ActiveCfg = Debug|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Debug|x64.Build.0 = Debug|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Debug|x86.ActiveCfg = Debug|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Debug|x86.Build.0 = Debug|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Release|Any CPU.Build.0 = Release|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Release|x64.ActiveCfg = Release|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Release|x64.Build.0 = Release|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Release|x86.ActiveCfg = Release|Any CPU + {6A9E4125-03D1-4DAF-8333-336C49360621}.Release|x86.Build.0 = Release|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Debug|x64.ActiveCfg = Debug|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Debug|x64.Build.0 = Debug|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Debug|x86.ActiveCfg = Debug|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Debug|x86.Build.0 = Debug|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Release|Any CPU.Build.0 = Release|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Release|x64.ActiveCfg = Release|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Release|x64.Build.0 = Release|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Release|x86.ActiveCfg = Release|Any CPU + {1BA7884A-3D6F-4479-A0F9-44385662FE24}.Release|x86.Build.0 = Release|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Debug|x64.ActiveCfg = Debug|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Debug|x64.Build.0 = Debug|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Debug|x86.ActiveCfg = Debug|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Debug|x86.Build.0 = Debug|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Release|Any CPU.Build.0 = Release|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Release|x64.ActiveCfg = Release|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Release|x64.Build.0 = Release|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Release|x86.ActiveCfg = Release|Any CPU + {FBE7E7D4-EBF1-4B0C-B63E-540DA1C9CEAA}.Release|x86.Build.0 = Release|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Debug|x64.ActiveCfg = Debug|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Debug|x64.Build.0 = Debug|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Debug|x86.ActiveCfg = Debug|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Debug|x86.Build.0 = Debug|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Release|Any CPU.Build.0 = Release|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Release|x64.ActiveCfg = Release|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Release|x64.Build.0 = Release|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Release|x86.ActiveCfg = Release|Any CPU + {7E047279-FD70-440F-8FB9-B47E88747EF4}.Release|x86.Build.0 = Release|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Debug|x64.ActiveCfg = Debug|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Debug|x64.Build.0 = Debug|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Debug|x86.ActiveCfg = Debug|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Debug|x86.Build.0 = Debug|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Release|Any CPU.Build.0 = Release|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Release|x64.ActiveCfg = Release|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Release|x64.Build.0 = Release|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Release|x86.ActiveCfg = Release|Any CPU + {A60E1C9A-6E52-42F7-ACA2-BB58DA64361E}.Release|x86.Build.0 = Release|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Debug|Any CPU.Build.0 = Debug|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Debug|x64.ActiveCfg = Debug|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Debug|x64.Build.0 = Debug|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Debug|x86.ActiveCfg = Debug|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Debug|x86.Build.0 = Debug|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Release|Any CPU.ActiveCfg = Release|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Release|Any CPU.Build.0 = Release|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Release|x64.ActiveCfg = Release|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Release|x64.Build.0 = Release|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Release|x86.ActiveCfg = Release|Any CPU + {427A9EFA-5E06-4176-A287-0DC0E0CD3E86}.Release|x86.Build.0 = Release|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Debug|x64.ActiveCfg = Debug|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Debug|x64.Build.0 = Debug|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Debug|x86.ActiveCfg = Debug|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Debug|x86.Build.0 = Debug|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Release|Any CPU.Build.0 = Release|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Release|x64.ActiveCfg = Release|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Release|x64.Build.0 = Release|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Release|x86.ActiveCfg = Release|Any CPU + {4B864ACE-495C-46FB-870F-4D794C02C8F9}.Release|x86.Build.0 = Release|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Debug|Any CPU.Build.0 = Debug|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Debug|x64.ActiveCfg = Debug|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Debug|x64.Build.0 = Debug|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Debug|x86.ActiveCfg = Debug|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Debug|x86.Build.0 = Debug|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Release|Any CPU.ActiveCfg = Release|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Release|Any CPU.Build.0 = Release|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Release|x64.ActiveCfg = Release|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Release|x64.Build.0 = Release|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Release|x86.ActiveCfg = Release|Any CPU + {17419CBD-2AC6-479F-ACA7-D478F9FBF397}.Release|x86.Build.0 = Release|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Debug|x64.ActiveCfg = Debug|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Debug|x64.Build.0 = Debug|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Debug|x86.ActiveCfg = Debug|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Debug|x86.Build.0 = Debug|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Release|Any CPU.Build.0 = Release|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Release|x64.ActiveCfg = Release|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Release|x64.Build.0 = Release|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Release|x86.ActiveCfg = Release|Any CPU + {03856292-CE47-45EE-91D4-6ACF27E1925F}.Release|x86.Build.0 = Release|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Debug|x64.ActiveCfg = Debug|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Debug|x64.Build.0 = Debug|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Debug|x86.ActiveCfg = Debug|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Debug|x86.Build.0 = Debug|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Release|Any CPU.Build.0 = Release|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Release|x64.ActiveCfg = Release|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Release|x64.Build.0 = Release|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Release|x86.ActiveCfg = Release|Any CPU + {762A1A84-4B1E-49A1-BC58-4988BB489F7C}.Release|x86.Build.0 = Release|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Debug|x64.ActiveCfg = Debug|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Debug|x64.Build.0 = Debug|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Debug|x86.ActiveCfg = Debug|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Debug|x86.Build.0 = Debug|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Release|Any CPU.Build.0 = Release|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Release|x64.ActiveCfg = Release|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Release|x64.Build.0 = Release|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Release|x86.ActiveCfg = Release|Any CPU + {3B42D204-BFB1-456F-B5F5-9421EECE465A}.Release|x86.Build.0 = Release|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Debug|x64.ActiveCfg = Debug|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Debug|x64.Build.0 = Debug|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Debug|x86.ActiveCfg = Debug|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Debug|x86.Build.0 = Debug|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Release|Any CPU.Build.0 = Release|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Release|x64.ActiveCfg = Release|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Release|x64.Build.0 = Release|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Release|x86.ActiveCfg = Release|Any CPU + {F8BC96E4-15E2-4F64-9D25-E167EC207404}.Release|x86.Build.0 = Release|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Debug|x64.ActiveCfg = Debug|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Debug|x64.Build.0 = Debug|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Debug|x86.ActiveCfg = Debug|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Debug|x86.Build.0 = Debug|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Release|Any CPU.Build.0 = Release|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Release|x64.ActiveCfg = Release|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Release|x64.Build.0 = Release|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Release|x86.ActiveCfg = Release|Any CPU + {A2EB7FD7-7660-4297-B431-9833CB65A848}.Release|x86.Build.0 = Release|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Debug|x64.ActiveCfg = Debug|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Debug|x64.Build.0 = Debug|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Debug|x86.ActiveCfg = Debug|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Debug|x86.Build.0 = Debug|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Release|Any CPU.Build.0 = Release|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Release|x64.ActiveCfg = Release|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Release|x64.Build.0 = Release|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Release|x86.ActiveCfg = Release|Any CPU + {086D5907-AAF8-4488-A2AD-4A3430D74FAB}.Release|x86.Build.0 = Release|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Debug|x64.ActiveCfg = Debug|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Debug|x64.Build.0 = Debug|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Debug|x86.ActiveCfg = Debug|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Debug|x86.Build.0 = Debug|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Release|Any CPU.Build.0 = Release|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Release|x64.ActiveCfg = Release|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Release|x64.Build.0 = Release|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Release|x86.ActiveCfg = Release|Any CPU + {6ACF8F5B-B1E1-439B-AFFF-42D6B143760E}.Release|x86.Build.0 = Release|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Debug|x64.ActiveCfg = Debug|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Debug|x64.Build.0 = Debug|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Debug|x86.ActiveCfg = Debug|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Debug|x86.Build.0 = Debug|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Release|Any CPU.Build.0 = Release|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Release|x64.ActiveCfg = Release|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Release|x64.Build.0 = Release|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Release|x86.ActiveCfg = Release|Any CPU + {50FB388F-6D68-400C-A919-0414B87466A7}.Release|x86.Build.0 = Release|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Debug|x64.ActiveCfg = Debug|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Debug|x64.Build.0 = Debug|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Debug|x86.ActiveCfg = Debug|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Debug|x86.Build.0 = Debug|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Release|Any CPU.Build.0 = Release|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Release|x64.ActiveCfg = Release|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Release|x64.Build.0 = Release|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Release|x86.ActiveCfg = Release|Any CPU + {F1957BE5-4CA4-494B-A62B-AA4F5E4D460A}.Release|x86.Build.0 = Release|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Debug|x64.ActiveCfg = Debug|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Debug|x64.Build.0 = Debug|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Debug|x86.ActiveCfg = Debug|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Debug|x86.Build.0 = Debug|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Release|Any CPU.Build.0 = Release|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Release|x64.ActiveCfg = Release|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Release|x64.Build.0 = Release|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Release|x86.ActiveCfg = Release|Any CPU + {F2077E7E-7305-4FC7-8D67-D90037B3F370}.Release|x86.Build.0 = Release|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Debug|x64.ActiveCfg = Debug|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Debug|x64.Build.0 = Debug|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Debug|x86.ActiveCfg = Debug|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Debug|x86.Build.0 = Debug|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Release|Any CPU.Build.0 = Release|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Release|x64.ActiveCfg = Release|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Release|x64.Build.0 = Release|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Release|x86.ActiveCfg = Release|Any CPU + {3A3D27B8-10FE-4E72-A3CE-183EBC11503B}.Release|x86.Build.0 = Release|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Debug|x64.ActiveCfg = Debug|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Debug|x64.Build.0 = Debug|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Debug|x86.ActiveCfg = Debug|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Debug|x86.Build.0 = Debug|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Release|Any CPU.Build.0 = Release|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Release|x64.ActiveCfg = Release|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Release|x64.Build.0 = Release|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Release|x86.ActiveCfg = Release|Any CPU + {A8777E05-E344-4673-915B-E9224002C423}.Release|x86.Build.0 = Release|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Debug|x64.ActiveCfg = Debug|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Debug|x64.Build.0 = Debug|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Debug|x86.ActiveCfg = Debug|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Debug|x86.Build.0 = Debug|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Release|Any CPU.Build.0 = Release|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Release|x64.ActiveCfg = Release|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Release|x64.Build.0 = Release|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Release|x86.ActiveCfg = Release|Any CPU + {05B08A0C-5BCA-4FF6-9C42-9DFF5E7DCDEA}.Release|x86.Build.0 = Release|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Debug|x64.ActiveCfg = Debug|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Debug|x64.Build.0 = Debug|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Debug|x86.ActiveCfg = Debug|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Debug|x86.Build.0 = Debug|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Release|Any CPU.Build.0 = Release|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Release|x64.ActiveCfg = Release|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Release|x64.Build.0 = Release|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Release|x86.ActiveCfg = Release|Any CPU + {C9CFE66E-6921-4CCE-83A7-D5B54812122F}.Release|x86.Build.0 = Release|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Debug|x64.ActiveCfg = Debug|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Debug|x64.Build.0 = Debug|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Debug|x86.ActiveCfg = Debug|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Debug|x86.Build.0 = Debug|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Release|Any CPU.Build.0 = Release|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Release|x64.ActiveCfg = Release|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Release|x64.Build.0 = Release|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Release|x86.ActiveCfg = Release|Any CPU + {A0FD4472-99E5-4FBC-A6A7-20786EA167DF}.Release|x86.Build.0 = Release|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Debug|Any CPU.Build.0 = Debug|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Debug|x64.ActiveCfg = Debug|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Debug|x64.Build.0 = Debug|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Debug|x86.ActiveCfg = Debug|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Debug|x86.Build.0 = Debug|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Release|Any CPU.ActiveCfg = Release|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Release|Any CPU.Build.0 = Release|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Release|x64.ActiveCfg = Release|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Release|x64.Build.0 = Release|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Release|x86.ActiveCfg = Release|Any CPU + {86272012-C994-41F7-BFAF-4BED50797B22}.Release|x86.Build.0 = Release|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Debug|x64.ActiveCfg = Debug|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Debug|x64.Build.0 = Debug|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Debug|x86.ActiveCfg = Debug|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Debug|x86.Build.0 = Debug|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Release|Any CPU.Build.0 = Release|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Release|x64.ActiveCfg = Release|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Release|x64.Build.0 = Release|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Release|x86.ActiveCfg = Release|Any CPU + {94B89563-1E74-42F9-96A5-19CD800AFECB}.Release|x86.Build.0 = Release|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Debug|x64.ActiveCfg = Debug|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Debug|x64.Build.0 = Debug|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Debug|x86.ActiveCfg = Debug|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Debug|x86.Build.0 = Debug|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Release|Any CPU.Build.0 = Release|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Release|x64.ActiveCfg = Release|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Release|x64.Build.0 = Release|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Release|x86.ActiveCfg = Release|Any CPU + {E5D2964E-CFE9-4DE6-99B5-1F54F9984F65}.Release|x86.Build.0 = Release|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Debug|x64.ActiveCfg = Debug|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Debug|x64.Build.0 = Debug|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Debug|x86.ActiveCfg = Debug|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Debug|x86.Build.0 = Debug|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Release|Any CPU.Build.0 = Release|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Release|x64.ActiveCfg = Release|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Release|x64.Build.0 = Release|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Release|x86.ActiveCfg = Release|Any CPU + {C92F8E81-6FB1-46FF-9B68-2D126F8903E6}.Release|x86.Build.0 = Release|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Debug|x64.ActiveCfg = Debug|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Debug|x64.Build.0 = Debug|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Debug|x86.ActiveCfg = Debug|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Debug|x86.Build.0 = Debug|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Release|Any CPU.Build.0 = Release|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Release|x64.ActiveCfg = Release|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Release|x64.Build.0 = Release|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Release|x86.ActiveCfg = Release|Any CPU + {B9207BE6-2577-4C49-AF5F-130A17BBEA73}.Release|x86.Build.0 = Release|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Debug|Any CPU.Build.0 = Debug|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Debug|x64.ActiveCfg = Debug|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Debug|x64.Build.0 = Debug|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Debug|x86.ActiveCfg = Debug|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Debug|x86.Build.0 = Debug|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Release|Any CPU.ActiveCfg = Release|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Release|Any CPU.Build.0 = Release|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Release|x64.ActiveCfg = Release|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Release|x64.Build.0 = Release|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Release|x86.ActiveCfg = Release|Any CPU + {40C19FFA-E1E1-4589-86E4-B7BEF336CE79}.Release|x86.Build.0 = Release|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Debug|Any CPU.Build.0 = Debug|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Debug|x64.ActiveCfg = Debug|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Debug|x64.Build.0 = Debug|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Debug|x86.ActiveCfg = Debug|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Debug|x86.Build.0 = Debug|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Release|Any CPU.ActiveCfg = Release|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Release|Any CPU.Build.0 = Release|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Release|x64.ActiveCfg = Release|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Release|x64.Build.0 = Release|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Release|x86.ActiveCfg = Release|Any CPU + {64324C38-03F7-4624-8F00-B85183DDBF99}.Release|x86.Build.0 = Release|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Debug|x64.ActiveCfg = Debug|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Debug|x64.Build.0 = Debug|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Debug|x86.ActiveCfg = Debug|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Debug|x86.Build.0 = Debug|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Release|Any CPU.Build.0 = Release|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Release|x64.ActiveCfg = Release|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Release|x64.Build.0 = Release|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Release|x86.ActiveCfg = Release|Any CPU + {14C24193-D5E0-4D29-B270-C27B43CC1925}.Release|x86.Build.0 = Release|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Debug|x64.ActiveCfg = Debug|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Debug|x64.Build.0 = Debug|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Debug|x86.ActiveCfg = Debug|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Debug|x86.Build.0 = Debug|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Release|Any CPU.Build.0 = Release|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Release|x64.ActiveCfg = Release|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Release|x64.Build.0 = Release|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Release|x86.ActiveCfg = Release|Any CPU + {B25208A4-3C80-411E-A36A-7BC4AA506DC7}.Release|x86.Build.0 = Release|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Debug|x64.ActiveCfg = Debug|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Debug|x64.Build.0 = Debug|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Debug|x86.ActiveCfg = Debug|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Debug|x86.Build.0 = Debug|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Release|Any CPU.Build.0 = Release|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Release|x64.ActiveCfg = Release|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Release|x64.Build.0 = Release|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Release|x86.ActiveCfg = Release|Any CPU + {2A56B16C-3980-4380-84E8-B20DEEEFB5D6}.Release|x86.Build.0 = Release|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Debug|x64.ActiveCfg = Debug|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Debug|x64.Build.0 = Debug|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Debug|x86.ActiveCfg = Debug|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Debug|x86.Build.0 = Debug|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Release|Any CPU.Build.0 = Release|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Release|x64.ActiveCfg = Release|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Release|x64.Build.0 = Release|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Release|x86.ActiveCfg = Release|Any CPU + {269971FF-B748-4B95-8507-534C229A60B9}.Release|x86.Build.0 = Release|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Debug|x64.ActiveCfg = Debug|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Debug|x64.Build.0 = Debug|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Debug|x86.ActiveCfg = Debug|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Debug|x86.Build.0 = Debug|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Release|Any CPU.Build.0 = Release|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Release|x64.ActiveCfg = Release|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Release|x64.Build.0 = Release|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Release|x86.ActiveCfg = Release|Any CPU + {F6244150-1AD9-470E-B0F0-72389B10639E}.Release|x86.Build.0 = Release|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Debug|x64.ActiveCfg = Debug|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Debug|x64.Build.0 = Debug|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Debug|x86.ActiveCfg = Debug|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Debug|x86.Build.0 = Debug|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Release|Any CPU.Build.0 = Release|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Release|x64.ActiveCfg = Release|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Release|x64.Build.0 = Release|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Release|x86.ActiveCfg = Release|Any CPU + {D1102F23-265A-4CA8-975C-75564DFFAA04}.Release|x86.Build.0 = Release|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Debug|x64.ActiveCfg = Debug|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Debug|x64.Build.0 = Debug|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Debug|x86.ActiveCfg = Debug|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Debug|x86.Build.0 = Debug|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Release|Any CPU.Build.0 = Release|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Release|x64.ActiveCfg = Release|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Release|x64.Build.0 = Release|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Release|x86.ActiveCfg = Release|Any CPU + {F4C5ECB6-2C17-4BC9-BF8F-BA9117BD2843}.Release|x86.Build.0 = Release|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Debug|x64.ActiveCfg = Debug|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Debug|x64.Build.0 = Debug|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Debug|x86.ActiveCfg = Debug|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Debug|x86.Build.0 = Debug|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Release|Any CPU.Build.0 = Release|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Release|x64.ActiveCfg = Release|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Release|x64.Build.0 = Release|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Release|x86.ActiveCfg = Release|Any CPU + {B9C4BF5F-2D56-4B06-A1EE-1E1CC642D14B}.Release|x86.Build.0 = Release|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Debug|x64.ActiveCfg = Debug|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Debug|x64.Build.0 = Debug|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Debug|x86.ActiveCfg = Debug|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Debug|x86.Build.0 = Debug|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Release|Any CPU.Build.0 = Release|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Release|x64.ActiveCfg = Release|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Release|x64.Build.0 = Release|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Release|x86.ActiveCfg = Release|Any CPU + {6CE987BF-9677-476C-8BB9-1BE7CC16F932}.Release|x86.Build.0 = Release|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Debug|x64.ActiveCfg = Debug|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Debug|x64.Build.0 = Debug|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Debug|x86.ActiveCfg = Debug|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Debug|x86.Build.0 = Debug|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Release|Any CPU.Build.0 = Release|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Release|x64.ActiveCfg = Release|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Release|x64.Build.0 = Release|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Release|x86.ActiveCfg = Release|Any CPU + {BD63E691-0A53-46CE-B687-E3CD95F1D4B1}.Release|x86.Build.0 = Release|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Debug|x64.ActiveCfg = Debug|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Debug|x64.Build.0 = Debug|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Debug|x86.ActiveCfg = Debug|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Debug|x86.Build.0 = Debug|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Release|Any CPU.Build.0 = Release|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Release|x64.ActiveCfg = Release|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Release|x64.Build.0 = Release|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Release|x86.ActiveCfg = Release|Any CPU + {FCF9AB0E-4310-4BCB-8682-833450658B97}.Release|x86.Build.0 = Release|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Debug|x64.ActiveCfg = Debug|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Debug|x64.Build.0 = Debug|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Debug|x86.ActiveCfg = Debug|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Debug|x86.Build.0 = Debug|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Release|Any CPU.Build.0 = Release|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Release|x64.ActiveCfg = Release|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Release|x64.Build.0 = Release|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Release|x86.ActiveCfg = Release|Any CPU + {607AB17F-1305-4002-A980-DB60699688F1}.Release|x86.Build.0 = Release|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Debug|Any CPU.Build.0 = Debug|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Debug|x64.ActiveCfg = Debug|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Debug|x64.Build.0 = Debug|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Debug|x86.ActiveCfg = Debug|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Debug|x86.Build.0 = Debug|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Release|Any CPU.ActiveCfg = Release|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Release|Any CPU.Build.0 = Release|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Release|x64.ActiveCfg = Release|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Release|x64.Build.0 = Release|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Release|x86.ActiveCfg = Release|Any CPU + {128B3A5D-E28C-4C7F-8B16-3202D0F73A00}.Release|x86.Build.0 = Release|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Debug|x64.ActiveCfg = Debug|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Debug|x64.Build.0 = Debug|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Debug|x86.ActiveCfg = Debug|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Debug|x86.Build.0 = Debug|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Release|Any CPU.Build.0 = Release|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Release|x64.ActiveCfg = Release|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Release|x64.Build.0 = Release|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Release|x86.ActiveCfg = Release|Any CPU + {B98F63AB-F0C8-4594-98BD-0BBBAEA4C4E9}.Release|x86.Build.0 = Release|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Debug|x64.ActiveCfg = Debug|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Debug|x64.Build.0 = Debug|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Debug|x86.ActiveCfg = Debug|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Debug|x86.Build.0 = Debug|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Release|Any CPU.Build.0 = Release|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Release|x64.ActiveCfg = Release|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Release|x64.Build.0 = Release|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Release|x86.ActiveCfg = Release|Any CPU + {62EBA4E5-BD13-4F7C-85E6-65D633B3FB6C}.Release|x86.Build.0 = Release|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Debug|x64.ActiveCfg = Debug|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Debug|x64.Build.0 = Debug|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Debug|x86.ActiveCfg = Debug|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Debug|x86.Build.0 = Debug|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Release|Any CPU.Build.0 = Release|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Release|x64.ActiveCfg = Release|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Release|x64.Build.0 = Release|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Release|x86.ActiveCfg = Release|Any CPU + {DFE95B37-24F5-417A-8C3F-788255CE8A04}.Release|x86.Build.0 = Release|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Debug|Any CPU.Build.0 = Debug|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Debug|x64.ActiveCfg = Debug|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Debug|x64.Build.0 = Debug|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Debug|x86.ActiveCfg = Debug|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Debug|x86.Build.0 = Debug|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Release|Any CPU.ActiveCfg = Release|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Release|Any CPU.Build.0 = Release|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Release|x64.ActiveCfg = Release|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Release|x64.Build.0 = Release|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Release|x86.ActiveCfg = Release|Any CPU + {77E253C3-5FCE-45A4-B285-BE24945E0D70}.Release|x86.Build.0 = Release|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Debug|x64.ActiveCfg = Debug|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Debug|x64.Build.0 = Debug|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Debug|x86.ActiveCfg = Debug|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Debug|x86.Build.0 = Debug|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Release|Any CPU.Build.0 = Release|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Release|x64.ActiveCfg = Release|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Release|x64.Build.0 = Release|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Release|x86.ActiveCfg = Release|Any CPU + {32ECF281-6D99-42D4-AD00-C8B56A8270F8}.Release|x86.Build.0 = Release|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Debug|x64.ActiveCfg = Debug|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Debug|x64.Build.0 = Debug|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Debug|x86.ActiveCfg = Debug|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Debug|x86.Build.0 = Debug|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Release|Any CPU.Build.0 = Release|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Release|x64.ActiveCfg = Release|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Release|x64.Build.0 = Release|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Release|x86.ActiveCfg = Release|Any CPU + {2EBD1C45-9D80-413A-9BE8-4ECB43C06843}.Release|x86.Build.0 = Release|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Debug|x64.ActiveCfg = Debug|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Debug|x64.Build.0 = Debug|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Debug|x86.ActiveCfg = Debug|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Debug|x86.Build.0 = Debug|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Release|Any CPU.Build.0 = Release|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Release|x64.ActiveCfg = Release|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Release|x64.Build.0 = Release|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Release|x86.ActiveCfg = Release|Any CPU + {79198D56-C3F2-49D6-B8BF-5BB674B6F7A2}.Release|x86.Build.0 = Release|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Debug|Any CPU.Build.0 = Debug|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Debug|x64.ActiveCfg = Debug|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Debug|x64.Build.0 = Debug|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Debug|x86.ActiveCfg = Debug|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Debug|x86.Build.0 = Debug|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Release|Any CPU.Build.0 = Release|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Release|x64.ActiveCfg = Release|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Release|x64.Build.0 = Release|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Release|x86.ActiveCfg = Release|Any CPU + {83504141-FF2A-427E-8A51-9FA0E9037A78}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection EndGlobal

=ilQh4R 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 diff --git a/docs/img/xamarin-add-reference.png b/docs/img/xamarin-add-reference.png deleted file mode 100644 index 86939e86c1656784f151808f8b771128f2ee5c24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55124 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¥M`{cdfVVKi0$G$ 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