Index: DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/TestData/IntegrationTests/PipingWti/live.ParametersFile.xml =================================================================== diff -u -r4857 -r6074 --- DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/TestData/IntegrationTests/PipingWti/live.ParametersFile.xml (.../live.ParametersFile.xml) (revision 4857) +++ DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/TestData/IntegrationTests/PipingWti/live.ParametersFile.xml (.../live.ParametersFile.xml) (revision 6074) @@ -1,15 +1,13 @@  - + 0 0 - 0 - 0 1 + 0 - + Bishop Grid - 2 - - \ No newline at end of file + + \ No newline at end of file Index: DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/PipingWtiInsideTest.cs =================================================================== diff -u -r5844 -r6074 --- DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/PipingWtiInsideTest.cs (.../PipingWtiInsideTest.cs) (revision 5844) +++ DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/PipingWtiInsideTest.cs (.../PipingWtiInsideTest.cs) (revision 6074) @@ -29,6 +29,8 @@ namespace Deltares.DamLive.Tests; +[TestFixture] +[Category("Integration")] public class PipingWtiInsideTest { const string projectIntegrationFilename = @"DAMLive.damx"; @@ -41,46 +43,48 @@ private List locations; private DamEngineRunner runner; + private int maxCores; [SetUp] public void SetupFixture() { - IoHelper.RemoveTestWorkingDirectory(testWorkingFolder + GeneralHelper.CMinCores); // to be sure no test directory exist from previous tests - IoHelper.RemoveTestWorkingDirectory(testWorkingFolder + GeneralHelper.CMaxCores); + // ToDo: "Fails when run with multicore, so for now set to 1 core"] + //maxCores = Math.Min(GeneralHelper.CMaxCores, Environment.ProcessorCount); + maxCores = 1; + IoHelper.RemoveTestWorkingDirectory(testWorkingFolder + maxCores); } [TearDown] public void TearDownFixture() { - IoHelper.RemoveTestWorkingDirectory(testWorkingFolder + GeneralHelper.CMinCores); - IoHelper.RemoveTestWorkingDirectory(testWorkingFolder + GeneralHelper.CMaxCores); + IoHelper.RemoveTestWorkingDirectory(testWorkingFolder + maxCores); } [SetUp] public void SetupTest() {} - [Test, Ignore("To be looked at in DAM Live sprint")] + [Test] [Category("Integration")] - [Category("Work_In_Progress")] - [TestCase(GeneralHelper.CMinCores)] - [TestCase(GeneralHelper.CMaxCores)] - public void CalculatePipingInsideWt1ModelUsingTestFilesHasExpectedResultsInOutputFile(int maxCores) + [Category("Work_In_Progress")] // "Fails when run with multicore" + public void CalculatePipingInsideWt1ModelUsingTestFilesHasExpectedResultsInOutputFile() { const double cTolerance = 0.0005; - string testFileName = "CalculatePipingInsideWt1Model"+ maxCores; + string testFileName = "CalculatePipingInsideWt1Model" + maxCores; GeneralHelper.SetupIntegrationProject(maxCores, testWorkingFolder, testIntegrationDataFolder, input1AFilename, output1AFilename, testFileName, calculationParametersIntegrationFilename, projectIntegrationFilename, out runner, out locations); - //SetupPipingProject(maxCores); runner.Initialize(); runner.MaxCalculationCores = maxCores; Assert.That(runner, Is.Not.Null); - Assert.That(runner.DamProjectData, Is.Not.Null); - Assert.That(runner.CalculationParameters, Is.Not.Null); + Assert.Multiple(() => + { + Assert.That(runner.DamProjectData, Is.Not.Null); + Assert.That(runner.CalculationParameters, Is.Not.Null); + }); Assert.That(runner.CalculationParameters.CalculationModules, Is.Not.Null); runner.Run(); - //runner.WriteResultsToFile(outputFile); + runner.OutputTimeSeriesCollection.Save("WtiPipingOutputFile" + maxCores); GeneralHelper.AssertNoErrors(runner); @@ -94,9 +98,12 @@ string[] validParameterIDs = Enum.GetNames(typeof(TimeSerieParameters)); foreach (TimeSerie timeSeries in series) { - Assert.That(validParameterIDs.Any(n => n == timeSeries.ParameterId), Is.True); - Assert.That(locations.Any(l => l.Name == timeSeries.LocationId), Is.True); - // StabilityInside check + Assert.Multiple(() => + { + Assert.That(validParameterIDs.Any(n => n == timeSeries.ParameterId), Is.True); + Assert.That(locations.Any(l => l.Name == timeSeries.LocationId), Is.True); + }); + // Piping WTI check if (timeSeries.ParameterId == TimeSerieParameters.PipingFactor.ToString()) { resultsCount += timeSeries.Entries.Count; @@ -119,17 +126,20 @@ if (timeSeries.LocationId == "Purmer_PU0110+20_R") { TimeSerieEntry firstEntry = timeSeries.Entries.First(); - Assert.That(firstEntry.Value, Is.EqualTo(90).Within(cTolerance), "The computed safety factory is not correct"); + Assert.That(firstEntry.Value, Is.NaN, "The computed safety factory is not correct"); TimeSerieEntry lastEntry = timeSeries.Entries.Last(); - Assert.That(lastEntry.Value, Is.EqualTo(90).Within(cTolerance), "The computed safety factory is not correct"); + Assert.That(lastEntry.Value, Is.NaN, "The computed safety factory is not correct"); } } seriesCount++; } - Assert.That(seriesCount > 0, Is.True, "No output time series"); - Assert.That(resultsCount, Is.EqualTo(16), "Incorrect number of results"); + Assert.Multiple(() => + { + Assert.That(seriesCount, Is.GreaterThan(0), "No output time series"); + Assert.That(resultsCount, Is.EqualTo(16), "Incorrect number of results"); + }); } } \ No newline at end of file Index: DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/TestData/IntegrationTests/PipingWti/DAMLive.damx =================================================================== diff -u -r4862 -r6074 --- DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/TestData/IntegrationTests/PipingWti/DAMLive.damx (.../DAMLive.damx) (revision 4862) +++ DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/TestData/IntegrationTests/PipingWti/DAMLive.damx (.../DAMLive.damx) (revision 6074) @@ -1,19 +1,19 @@  - - - - - - + + + + + + - + - + - + @@ -37,8 +37,8 @@ - - + + @@ -258,320 +258,328 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + - + - + - - - - + + + + - - + + - + - + @@ -585,18 +593,18 @@ - - - - + + + + - - - - + + + + @@ -627,989 +635,1109 @@ - + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - + + - - - + + + - - - + + + - - + + - - - + + + @@ -1622,189 +1750,125 @@ - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -1817,17 +1881,17 @@ - + - + - - + + @@ -1843,28 +1907,92 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - - + + + - - + + - - - + + + @@ -1877,189 +2005,125 @@ - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -2072,17 +2136,17 @@ - + - + - - + + @@ -2098,43 +2162,107 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - - - + + + + - - + + - - - + + + - - - + + + - - + + - - - + + + @@ -2147,189 +2275,125 @@ - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -2342,17 +2406,17 @@ - + - + - - + + @@ -2368,1002 +2432,1075 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - - - - - + + + + + + + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - - - - - + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - - - - - + + + + + + + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - - - - - + + + + + + + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - - - - - + + + + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - - - - - + + + + + + + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - - - - - - + + + + + + + - - - + + + - - - + + + - - + + - - + + + + + + + + + + + + + - - - - - - - + + + + + + + - - + + + - - - - - + + + + + - - - - + + + + - - + + - - - - - - - + + + + - + @@ -3372,1486 +3509,1909 @@ - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - + - + - + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - + + - - + + - + - + - + - - + + - + - + - + - + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - + + - - + + - + - + - + - - + + - + - + - + - + - - + + - - - - + + + + - - + + - + - + - + - - + + - + - + - + - + - - + + - - - - + + + + - - + + - + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - + + + - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - + + + + + + + - + + + + + + - - + + - - + + - - - + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + + + + - - + + + - - - + - - + + + + - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - - - - - - - - - + - - - - - - - - - - - - + + + + - - - + + - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + - - + + - + + + + - - - - - - + + + + - + - + + - - - - - - - - - - - - - + + + + + + + + + + + - + + + + + + + + + + + - - - - - - - + + + + - - + - - - - - - - - + + - + + + + + + + + + + - - + + + + + + + + + + + - - - - + - - - - - - - - - + - - + + + - - - - + + + + + - - - - - + + + - - + + - + + + + + + + + + - - - - - - - - - - - - - - + + + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file