Mercurial > repos > IBBoard.WarFoundry.API.Tests
changeset 170:3a626ea2604a
* Merge Clutch's unit test work
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Tue, 13 Sep 2011 20:29:40 +0100 |
parents | 6dce5122caca (diff) e29650db551f (current diff) |
children | 14d0450f295d |
files | IBBoard.WarFoundry.API.Tests.csproj |
diffstat | 7 files changed, 412 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Tue Sep 13 20:29:40 2011 +0100 @@ -0,0 +1,5 @@ +obj/* +bin/* +test-results/* +IBBoard.WarFoundry.API.Tests.suo +IBBoard.WarFoundry.API.Tests.pidb \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/API/Commands/EditArmyCommandTest.cs Tue Sep 13 20:29:40 2011 +0100 @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.Text; +using NUnit.Framework; +using IBBoard.WarFoundry.API.Objects; +using IBBoard.WarFoundry.API.Objects.Mock; +using NUnit.Framework.SyntaxHelpers; + +namespace IBBoard.WarFoundry.API.Commands +{ + [TestFixture] + public class EditArmyCommandTest + { + [Test] + public void TestChangingNameOnlyChangesName() + { + Army army = CreateArmy(); + EditArmyCommand cmd = new EditArmyCommand(army); + string newName = "Something New"; + int maxSize = army.MaxPoints; + cmd.NewName = newName; + cmd.Execute(); + Assert.That(army.Name, Is.EqualTo(newName)); + Assert.That(army.MaxPoints, Is.EqualTo(maxSize)); + } + + [Test] + public void TestUndoNameChangeGivesOldName() + { + Army army = CreateArmy(); + EditArmyCommand cmd = new EditArmyCommand(army); + string oldName = army.Name; + cmd.NewName = "Something New"; + cmd.Execute(); + cmd.Undo(); + Assert.That(army.Name, Is.EqualTo(oldName)); + } + + [Test] + public void TestChangingSizeOnlyChangesSize() + { + Army army = CreateArmy(); + EditArmyCommand cmd = new EditArmyCommand(army); + string oldName = army.Name; + int maxSize = 1337; + cmd.NewSize = maxSize; + cmd.Execute(); + Assert.That(army.MaxPoints, Is.EqualTo(maxSize)); + Assert.That(army.Name, Is.EqualTo(oldName)); + } + + [Test] + public void TestUndoSizeChangeGivesOldSize() + { + Army army = CreateArmy(); + EditArmyCommand cmd = new EditArmyCommand(army); + int oldSize = army.MaxPoints; + cmd.NewSize = 1337; + cmd.Execute(); + cmd.Undo(); + Assert.That(army.MaxPoints, Is.EqualTo(oldSize)); + } + + [Test] + public void TestChangingBothChangesBoth() + { + Army army = CreateArmy(); + EditArmyCommand cmd = new EditArmyCommand(army); + string newName = "Something New"; + cmd.NewName = newName; + int maxSize = 1337; + cmd.NewSize = maxSize; + cmd.Execute(); + Assert.That(army.MaxPoints, Is.EqualTo(maxSize)); + Assert.That(army.Name, Is.EqualTo(newName)); + } + + [Test] + public void TestUndoChangeBothGivesOldValues() + { + Army army = CreateArmy(); + EditArmyCommand cmd = new EditArmyCommand(army); + int oldSize = army.MaxPoints; + string oldName = army.Name; + cmd.NewName = "Something New"; + cmd.NewSize = 1337; + cmd.Execute(); + cmd.Undo(); + Assert.That(army.MaxPoints, Is.EqualTo(oldSize)); + Assert.That(army.Name, Is.EqualTo(oldName)); + } + + [Test] + public void TestCanExecuteRequiresArmyAndAtLeastOneValue() + { + EditArmyCommand cmd = new EditArmyCommand(null); + Assert.That(cmd.CanExecute(), Is.False); + Army army = CreateArmy(); + cmd = new EditArmyCommand(army); + Assert.That(cmd.CanExecute(), Is.False); + cmd.NewName = "NonNull"; + Assert.That(cmd.CanExecute(), Is.True); + cmd.NewName = null; + Assert.That(cmd.CanExecute(), Is.False); + cmd.NewSize = 1000; + Assert.That(cmd.CanExecute(), Is.True); + cmd.NewSize = 0; + Assert.That(cmd.CanExecute(), Is.False); + cmd.NewSize = -1; + Assert.That(cmd.CanExecute(), Is.False); + cmd.NewSize = 1; + Assert.That(cmd.CanExecute(), Is.True); + } + + + static Army CreateArmy() + { + return new Army(new MockRace(), "default name", 1000); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/API/Factories/AbstractNativeWarFoundryFactoryTest.cs Tue Sep 13 20:29:40 2011 +0100 @@ -0,0 +1,44 @@ +// This file (AbstractNativeWarFoundryFactoryTest.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2011 IBBoard +// +// The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. +using System; +using NUnit.Framework; +using IBBoard.WarFoundry.API.Factories.Mock; +using System.Diagnostics; +using NUnit.Framework.SyntaxHelpers; +using System.IO; + +namespace IBBoard.WarFoundry.API.Factories +{ + [TestFixture] + public class AbstractNativeWarFoundryFactoryTest + { + [Test] + public void Bug94TestLoadingTimesForNonZipFiles() + { + MockNativeWarFoundryFactory factory = new MockNativeWarFoundryFactory(); + Stopwatch sw = Stopwatch.StartNew(); + factory.CreateObjectsFromFile(new FileInfo("testdata/Test.race")); + sw.Stop(); + long successElapsed = sw.ElapsedMilliseconds; + sw.Reset(); + sw.Start(); + factory.CreateObjectsFromFile(new FileInfo("testdata/NotARaceFile.txt")); + sw.Stop(); + long failedElapsed = sw.ElapsedMilliseconds; + long timeRatio = failedElapsed / successElapsed; + Assert.That(timeRatio, Is.LessThan(10)); + } + + [Test] + public void Bug358TestLoadingOfFailedFiles() + { + MockNativeWarFoundryFactory factory = new MockNativeWarFoundryFactory(); + //This will also be triggered by Bug94TestLoadingTimesForNonZipFiles, but this makes it separate and explicit + FileInfo nonRaceFile = new FileInfo("testdata/NotARaceFile.txt"); + Assert.That(nonRaceFile.Exists, Is.True); + Assert.That(factory.CanHandleFileFormat(nonRaceFile), Is.False); + } + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/API/Factories/Mock/MockNativeWarFoundryFactory.cs Tue Sep 13 20:29:40 2011 +0100 @@ -0,0 +1,65 @@ +// This file (MockNativeWarFoundryFactory.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2011 IBBoard +// +// The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. +using System; +using ICSharpCode.SharpZipLib.Zip; +using System.Collections.Generic; +using IBBoard.WarFoundry.API.Objects; +using System.IO; + +namespace IBBoard.WarFoundry.API.Factories.Mock +{ + public class MockNativeWarFoundryFactory : AbstractNativeWarFoundryFactory + { + public MockNativeWarFoundryFactory() + { + //Do nothing special + } + + protected override bool CheckCanFindSystemFileContent(ZipFile file) + { + return false; + } + + protected override bool CheckCanFindRaceFileContent(ZipFile file) + { + return false; + } + + protected override bool CheckCanFindArmyFileContent(ZipFile file) + { + return false; + } + + protected override ICollection<ZipEntry> GetArmyZipEntries(ZipFile file) + { + return new List<ZipEntry>().AsReadOnly(); + } + + protected override Army CreateArmyFromStream(ZipFile file, Stream dataStream) + { + return null; + } + + protected override ICollection<ZipEntry> GetRaceZipEntries(ZipFile file) + { + return new List<ZipEntry>().AsReadOnly(); + } + + protected override Race CreateRaceFromStream(ZipFile file, Stream dataStream) + { + return null; + } + + protected override ICollection<ZipEntry> GetGameSystemZipEntries(ZipFile file) + { + return new List<ZipEntry>().AsReadOnly(); + } + + protected override GameSystem CreateGameSystemFromStream(ZipFile file, Stream dataStream) + { + return null; + } + } +} +
--- a/API/Savers/Xml/WarFoundryXmlFileSaverTests.cs Thu Sep 08 17:34:11 2011 -0600 +++ b/API/Savers/Xml/WarFoundryXmlFileSaverTests.cs Tue Sep 13 20:29:40 2011 +0100 @@ -41,12 +41,12 @@ protected override byte[] GetGameSystemContentBytes() { - return StringManipulation.StringToBytes(@"<?xml version=""1.0"" encoding=""UTF-8""?><system xmlns=""http://ibboard.co.uk/warfoundry/system"" xmlns:cats=""http://ibboard.co.uk/warfoundry/cats"" id=""mocksystem"" name=""Mock Game System"" defaultArmySize=""0"" warn=""false"" allowAllies=""false""><categories /><sysStatsList defaultStats=""default""><sysStats id=""default"" /></sysStatsList></system>"); + return StringManipulation.StringToBytes(@"<?xml version=""1.0"" encoding=""UTF-8""?><system xmlns=""http://ibboard.co.uk/warfoundry/system"" xmlns:cats=""http://ibboard.co.uk/warfoundry/cats"" id=""mocksystem"" name=""Mock Game System"" defaultArmySize=""1000"" warn=""true"" allowAllies=""false""><categories /><sysStatsList defaultStats=""default""><sysStats id=""default"" /></sysStatsList></system>"); } protected override byte[] GetOtherGameSystemContentBytes() { - return StringManipulation.StringToBytes(@"<?xml version=""1.0"" encoding=""UTF-8""?><system xmlns=""http://ibboard.co.uk/warfoundry/system"" xmlns:cats=""http://ibboard.co.uk/warfoundry/cats"" id=""otherSystem"" name=""Other System"" defaultArmySize=""0"" warn=""false"" allowAllies=""false""><categories /><sysStatsList defaultStats=""_"" /></system>"); + return StringManipulation.StringToBytes(@"<?xml version=""1.0"" encoding=""UTF-8""?><system xmlns=""http://ibboard.co.uk/warfoundry/system"" xmlns:cats=""http://ibboard.co.uk/warfoundry/cats"" id=""otherSystem"" name=""Other System"" defaultArmySize=""1000"" warn=""true"" allowAllies=""false""><categories /><sysStatsList defaultStats=""_"" /></system>"); } protected override byte[] GetArmyContentBytes ()
--- a/IBBoard.WarFoundry.API.Tests.csproj Thu Sep 08 17:34:11 2011 -0600 +++ b/IBBoard.WarFoundry.API.Tests.csproj Tue Sep 13 20:29:40 2011 +0100 @@ -106,6 +106,10 @@ <Compile Include="API\Factories\Mock\MockRaceFactory.cs" /> <Compile Include="API\MockRequirementFactory.cs" /> <Compile Include="API\Factories\Requirement\Mock\MockRequirement.cs" /> + <Compile Include="API\Savers\Xml\WarFoundryXmlFileSaverTests.cs" /> + <Compile Include="API\Commands\EditArmyCommandTest.cs" /> + <Compile Include="API\Factories\AbstractNativeWarFoundryFactoryTest.cs" /> + <Compile Include="API\Factories\Mock\MockNativeWarFoundryFactory.cs" /> </ItemGroup> <ItemGroup> <None Include="app.config" /> @@ -184,7 +188,6 @@ </None> <None Include="WarFoundryTests.nunit"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - <SubType>Designer</SubType> </None> <None Include="testdata\xml-race-factory\different-extra-data-key.racex"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> @@ -298,8 +301,12 @@ <None Include="testdata\xml-race-factory\extended-requirements.racex"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> + <Content Include="testdata\NotARaceFile.txt"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> </ItemGroup> <ItemGroup> + <Reference Include="System" /> <Reference Include="System.Xml" /> <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77"> <SpecificVersion>False</SpecificVersion>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testdata/NotARaceFile.txt Tue Sep 13 20:29:40 2011 +0100 @@ -0,0 +1,167 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas et tincidunt odio. Sed at lacus sit amet mauris fringilla mollis sit amet bibendum nisl. Suspendisse potenti. Donec lacinia lacinia mollis. Etiam nec orci et nisi tempus scelerisque. Curabitur eget elementum nisi. Quisque eget magna orci, fringilla viverra turpis. + +Nam vel mauris tincidunt lorem rhoncus scelerisque posuere in odio. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc eget lacus sit amet sapien tristique adipiscing sed vel mauris. Maecenas ornare sapien at sem cursus adipiscing. Integer placerat, dolor vel elementum suscipit, libero nulla fermentum sapien, faucibus ultricies diam nisi eget lacus. Donec vestibulum ligula vel quam luctus id mattis magna dictum. Ut id massa orci. Suspendisse dictum massa quis nunc placerat id interdum lorem aliquet. Nulla facilisi. Aliquam non sem a ipsum consectetur faucibus quis nec ipsum. Proin pellentesque accumsan nulla, sit amet lacinia quam iaculis ac. + +Curabitur consequat erat eget est ullamcorper suscipit. In hac habitasse platea dictumst. Pellentesque semper eros vitae felis vehicula quis condimentum nulla placerat. In et felis diam. Sed nec mi ac urna malesuada congue et ut ligula. Nullam convallis semper adipiscing. Sed in velit quis metus imperdiet laoreet quis sed purus. Integer tempor ante ac felis cursus ut commodo risus posuere. Quisque in velit in magna venenatis aliquam non eu tortor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Morbi sagittis ornare ornare. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce id nibh sapien, et condimentum neque. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent metus orci, iaculis eu consectetur ac, dapibus a libero. Nulla ligula est, rhoncus varius sollicitudin ornare, volutpat at nisi. Nullam sapien augue, aliquet viverra porttitor ac, rhoncus sed diam. Aenean vel risus eros, id hendrerit dolor. Pellentesque a tortor vitae magna ultricies vulputate. Proin et ligula nibh. Nulla dictum est quis metus commodo at porta tortor cursus. Nam vitae quam sit amet mauris faucibus ultrices. + +Fusce tristique ultrices lorem, vitae facilisis risus venenatis nec. Vivamus adipiscing cursus dui sit amet consectetur. Phasellus nunc mi, pretium et facilisis nec, eleifend a mauris. Maecenas imperdiet cursus dapibus. Mauris euismod dui in neque venenatis non suscipit lacus scelerisque. Aenean tincidunt, lorem id scelerisque ullamcorper, neque ligula rutrum tellus, sit amet luctus nisi odio in arcu. Nunc a nisl quis erat ornare commodo ut vitae justo. Integer iaculis sem nec purus ultrices quis congue justo pulvinar. Fusce semper urna sit amet felis porttitor quis condimentum enim consequat. Nam ligula nisi, ultricies eu posuere eu, cursus id ante. Etiam lacinia, massa ut tincidunt fermentum, eros magna facilisis quam, sit amet semper purus lorem non lorem. Vestibulum consequat lobortis facilisis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. + +Proin et massa nibh. Sed eget nulla ut ipsum interdum viverra sed quis enim. Duis congue tristique diam in sagittis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam tincidunt pretium nisl nec pretium. Ut quis purus quis sapien condimentum pellentesque eget sed tellus. Sed nec consequat nunc. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam leo ligula, lacinia luctus porta eget, porta sed mi. + +Sed iaculis suscipit ante eget eleifend. Proin purus mi, aliquam vel pharetra quis, cursus ut libero. Curabitur id leo dui. Aenean turpis nisl, venenatis eget mollis ut, consequat ut felis. Aenean convallis justo sed neque dapibus semper. Ut vitae sapien diam. Mauris auctor arcu eu augue sollicitudin consequat. Phasellus erat est, rutrum in laoreet non, varius id eros. Integer interdum rutrum erat eu ultricies. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +Maecenas odio mauris, fermentum sit amet sodales ut, pulvinar in est. Nunc sit amet dolor turpis. Integer sed augue mi, et sagittis mauris. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum ipsum libero, ultrices at imperdiet sit amet, vehicula tempus orci. Nulla libero neque, interdum vel aliquam sollicitudin, commodo nec tellus. Nulla tincidunt urna vel diam euismod tempus. Duis vitae turpis purus. Donec purus odio, placerat sit amet faucibus eu, feugiat vitae mi. Nunc at lacinia velit. Aliquam vitae orci vitae justo commodo dictum a sollicitudin tortor. Quisque justo elit, porta in tempor ac, laoreet in nisl. Nam lectus sapien, dapibus a pellentesque non, dictum id est. + +Donec eleifend erat a quam aliquam tempor. Vivamus faucibus mattis mi, et bibendum metus pretium id. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla sed placerat felis. Fusce at euismod lorem. Vestibulum eu orci nec lectus vehicula vestibulum. Aliquam mi quam, rutrum id pharetra vel, volutpat nec nisl. Suspendisse tempor urna condimentum odio gravida ullamcorper sed sed ligula. Nunc porta, quam id iaculis interdum, risus erat rutrum ante, sed scelerisque erat mi ac urna. Fusce porta adipiscing nibh quis gravida. + +Nullam fringilla adipiscing felis et bibendum. Integer malesuada interdum enim vitae imperdiet. Maecenas ullamcorper nunc nec ipsum consectetur vitae dapibus justo luctus. Nulla facilisi. Nam euismod ipsum eget mauris elementum euismod. Aenean euismod diam rutrum nisl pretium sed tempus arcu eleifend. Nulla volutpat, magna vitae iaculis feugiat, felis mauris lacinia ligula, at luctus sapien elit placerat mi. Morbi ac felis turpis, eget viverra libero. Praesent eget dui tortor. Ut eu est felis, a imperdiet quam. Vestibulum at est lacus, eget adipiscing quam. Duis dapibus, lorem eu tempus sollicitudin, lacus dolor tempor nisi, eu consequat tortor mi eget lectus. Fusce iaculis convallis neque, quis dignissim lorem elementum nec. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +Mauris ac justo nunc, vel facilisis tortor. Ut elit est, sodales in rhoncus vel, porta quis ipsum. Pellentesque nisi risus, lacinia rutrum sollicitudin nec, luctus sit amet lorem. Sed sodales risus sed arcu egestas suscipit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc neque odio, consequat vehicula egestas blandit, ultricies vitae metus. Sed congue placerat elit, ac sollicitudin lacus lacinia sit amet. + +Maecenas congue lorem sit amet magna malesuada at tincidunt eros bibendum. Pellentesque eu velit ac lacus fermentum ultricies. Etiam quis sem diam. Donec risus turpis, pulvinar gravida auctor et, venenatis ut orci. Phasellus varius, erat sit amet consectetur tempus, nulla velit interdum dolor, vitae suscipit leo urna eleifend dolor. Quisque vel commodo sapien. Sed quis elit sed metus porta viverra nec sed dolor. Pellentesque nisi eros, accumsan ac sollicitudin sit amet, sagittis id lorem. Phasellus porttitor, lorem vitae convallis molestie, urna sapien commodo nibh, nec vehicula leo quam scelerisque ante. Maecenas id dolor nisl. Sed convallis mauris eget massa tempus scelerisque in non felis. Curabitur tempus justo non justo pulvinar venenatis. Phasellus consequat erat a justo aliquam a viverra velit eleifend. Praesent aliquet nisi id urna malesuada posuere. Vestibulum auctor, turpis quis faucibus tincidunt, nisl diam tempus enim, nec fermentum urna urna sed nisl. + +Curabitur eros tortor, imperdiet sed fermentum vitae, consequat in enim. Nulla et lacus lorem, a dictum purus. Nullam a dolor vitae neque dictum auctor ac in nunc. Praesent non orci elit. Ut adipiscing metus id erat tempus elementum. Nam ornare lacus id est pellentesque placerat. Phasellus at pulvinar massa. + +Sed tempus ultrices euismod. Suspendisse volutpat gravida tellus, congue pharetra erat rutrum vel. Curabitur vitae velit sit amet sem faucibus rhoncus ut a mauris. Donec mattis lobortis risus, vel commodo augue sagittis sit amet. Aliquam erat volutpat. Suspendisse potenti. In ullamcorper nisi sed ante lobortis pharetra. Aliquam porta ligula ac nisl accumsan id tincidunt est volutpat. Vivamus tincidunt dui nec massa aliquet vel convallis urna sodales. Praesent condimentum volutpat aliquam. Suspendisse non eros leo. + +Sed vulputate blandit odio quis pharetra. Curabitur nec tempor sem. Sed in ante sed ipsum pellentesque dictum. Donec quis ligula purus. Fusce a felis eu mi viverra egestas. Maecenas aliquam auctor ante vel posuere. Phasellus vel neque ut nisi aliquam viverra sed eget tortor. Etiam non metus odio. Sed velit justo, tincidunt at sollicitudin vel, vulputate eu neque. + +In hac habitasse platea dictumst. Pellentesque id ante quam, vitae condimentum urna. Sed orci mauris, euismod eu vestibulum nec, fermentum et dui. Proin bibendum aliquam feugiat. Aliquam ornare tincidunt scelerisque. Maecenas euismod congue tortor consequat dictum. Nam tristique tortor quis urna porttitor accumsan. + +Morbi quis purus tellus. Nulla dapibus, sem et semper tristique, lectus ipsum scelerisque mi, vel ornare justo neque vel magna. Nunc lobortis metus lectus. Nunc feugiat neque sed lectus dictum non mattis justo ornare. Donec eleifend ornare urna, nec molestie ante facilisis quis. Morbi congue pellentesque rutrum. In sed lectus eget augue adipiscing vehicula. Donec pellentesque aliquam volutpat. Duis sed felis odio. Sed nisl dolor, laoreet a ornare et, mattis at orci. Praesent imperdiet eros ac ipsum gravida eget luctus lorem condimentum. Morbi pretium diam eget arcu sagittis varius. Fusce sagittis sodales purus et laoreet. Ut sed velit odio. Aenean facilisis nisi condimentum lectus interdum ac hendrerit elit suscipit. Aenean purus leo, viverra sed suscipit in, molestie non dui. + +Mauris vel tortor est. Etiam aliquet, metus in sodales consequat, diam dui molestie nunc, ac vehicula ipsum felis ut nisl. Proin nisl dui, accumsan vitae euismod accumsan, elementum non magna. Nulla vehicula, velit tincidunt pharetra cursus, lacus velit sodales magna, sed condimentum eros neque vel mauris. In posuere felis id odio iaculis fermentum. Phasellus iaculis quam vel sapien interdum pretium. Integer imperdiet, dolor sed porttitor commodo, orci ante condimentum magna, nec pulvinar nibh mauris non dolor. Nunc eleifend faucibus molestie. + +Sed congue quam justo, ac rutrum turpis. Nullam quis tincidunt arcu. Nam ullamcorper sollicitudin massa, sit amet consectetur velit viverra sed. Integer purus ipsum, vulputate ac porta et, convallis non turpis. Ut dapibus velit vitae mauris porttitor sodales. Curabitur eu pulvinar turpis. Suspendisse turpis mauris, varius sed mattis sed, varius ut elit. + +Ut urna urna, egestas ut posuere ut, gravida non neque. Aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur dictum massa dictum quam euismod a commodo ipsum feugiat. Vivamus scelerisque commodo lacus posuere consequat. Cras interdum, est a eleifend varius, mauris risus accumsan diam, a pharetra est nibh at sem. Fusce ligula turpis, mattis et euismod a, fermentum at nisi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin sit amet diam vel nunc porttitor scelerisque eleifend non urna. Etiam nisl elit, dictum quis dictum tincidunt, dignissim quis ipsum. Donec dapibus, libero eget vulputate ullamcorper, turpis est vestibulum leo, nec bibendum arcu massa at mauris. + +Nullam felis eros, posuere ac mattis nec, ornare ac sapien. Proin faucibus mattis feugiat. Suspendisse nunc dui, commodo a scelerisque non, gravida et lectus. Pellentesque luctus lorem eget lectus aliquet imperdiet. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean semper lorem non lectus eleifend consequat. Maecenas elementum pellentesque ligula vitae ullamcorper. + +Donec felis sem, adipiscing a vestibulum sit amet, bibendum vitae odio. Sed rutrum elementum lectus sit amet viverra. Nullam tristique viverra consequat. Praesent porttitor erat sed dolor dignissim quis molestie odio rutrum. Sed libero leo, bibendum vitae egestas ut, faucibus sit amet sapien. Morbi lacinia posuere elementum. Nunc eu tristique nulla. + +Vestibulum diam erat, feugiat sed venenatis sed, convallis vitae nunc. Aenean imperdiet ante vel sapien pulvinar iaculis. Quisque mauris velit, euismod at feugiat nec, egestas consectetur arcu. Sed eu nibh justo, scelerisque tempus tortor. Quisque non lorem vel mauris aliquam sollicitudin vitae sed nisi. Phasellus sed elit mi, ac pharetra nisi. Suspendisse dictum sodales urna ac ultricies. Sed bibendum placerat mi, a hendrerit dolor condimentum ut. Donec rhoncus dignissim sem ut ornare. Phasellus sodales risus neque, sed mattis turpis. Suspendisse sapien nisl, porttitor a venenatis sit amet, imperdiet a erat. Donec sem eros, vulputate a sodales vitae, ornare sed ante. + +Sed rhoncus pretium semper. Nulla facilisi. Vestibulum in facilisis sapien. Nam egestas pharetra mauris, ut gravida sem lacinia quis. Suspendisse accumsan ligula non mi imperdiet volutpat. Fusce ac arcu vel quam porttitor malesuada. Nulla eget sapien quis turpis aliquam rutrum in id lacus. Nunc vestibulum pharetra velit vel interdum. Donec scelerisque arcu ut sem sollicitudin vestibulum. Nam vel lectus nulla, eget sollicitudin sapien. Aliquam erat volutpat. Nullam non orci eget purus aliquam facilisis. Sed risus nunc, lobortis sit amet viverra et, hendrerit nec lectus. + +Praesent et interdum neque. Sed dignissim, erat vitae tempus vulputate, odio nibh sollicitudin tortor, sit amet venenatis ipsum lectus vitae quam. Proin in nisi sem, id pretium velit. Curabitur tempor quam ut mauris rhoncus non cursus odio ornare. In id arcu ullamcorper nunc feugiat vehicula sed bibendum sapien. Praesent sed elit lacus. Aliquam gravida placerat odio in ultricies. Aliquam erat volutpat. + +Donec lorem dolor, rutrum a accumsan congue, sodales vel lacus. Donec accumsan sodales cursus. Integer blandit pretium malesuada. Fusce ut tortor mi, ut pharetra ante. Nulla tincidunt velit nec felis commodo aliquet porta ligula bibendum. In eleifend pellentesque orci. Quisque nisi ligula, pulvinar id sodales quis, ultrices ac justo. + +Curabitur ac porta lectus. Proin eget purus ac enim luctus rutrum. Phasellus porta velit nec erat volutpat condimentum porta leo consequat. Pellentesque eros risus, dictum in consectetur in, scelerisque sed turpis. Aliquam nisi dolor, vulputate vel tempor sed, fringilla dapibus tellus. In pulvinar iaculis nisi nec tincidunt. Duis lobortis, enim nec porta sodales, lacus enim fermentum enim, a tincidunt neque enim et tortor. + +Quisque ut ipsum id neque semper convallis euismod sed nunc. Proin luctus consequat magna, ut varius ante pharetra id. Donec ac enim nisl, a aliquam urna. Ut ac est velit, molestie auctor urna. Sed posuere varius orci, in feugiat arcu vehicula vel. Cras eget facilisis arcu. Suspendisse blandit urna sit amet eros pretium iaculis. Maecenas lobortis magna sit amet eros consequat ac feugiat erat pulvinar. Aliquam laoreet imperdiet libero, nec fringilla quam viverra in. + +Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin sed quam lectus. Nulla nec elit nibh. Donec convallis erat ut lacus placerat porttitor. Cras tempor mollis ultricies. Nullam felis est, viverra vehicula suscipit sed, posuere eu elit. Proin a vulputate est. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam lorem purus, pharetra vitae iaculis ac, viverra vel turpis. Pellentesque tempor, odio vel feugiat scelerisque, ante lorem molestie lorem, vel aliquet mauris nisi et diam. In non orci ac tellus posuere vestibulum sed vel ipsum. Fusce quis odio sapien, eu viverra est. Phasellus malesuada lacus eget ipsum convallis viverra. + +Donec sed leo augue, sollicitudin posuere justo. Suspendisse justo quam, tempus ac rhoncus sit amet, laoreet eget nunc. Proin vulputate luctus elit, non ullamcorper quam ultrices fringilla. Phasellus felis augue, scelerisque eu porttitor et, auctor ut metus. Nunc scelerisque felis eu sem ultrices vitae congue ligula accumsan. Vivamus et enim eget enim adipiscing ultricies a et erat. Pellentesque id sapien lorem. Etiam vehicula dictum sapien sed adipiscing. + +Duis vitae lectus tempor justo adipiscing pellentesque vel vel orci. Aenean mattis mauris at urna sagittis ut blandit neque consequat. Nullam ullamcorper urna mauris, sed venenatis urna. Duis risus arcu, ultricies pellentesque fringilla non, cursus id sem. Integer viverra tempor tortor quis ultrices. Nulla eget euismod nunc. Aenean nibh lacus, imperdiet accumsan feugiat vel, tempor nec felis. Nullam aliquet, tellus vitae feugiat rhoncus, est metus suscipit justo, eget sagittis odio mauris id enim. Aenean ultricies tristique justo ac adipiscing. Nam vulputate posuere pretium. Duis nec pretium massa. Proin consectetur ultrices iaculis. + +Sed accumsan adipiscing nibh. Nunc in massa et nisl vehicula vestibulum id eget ligula. Donec dictum dictum neque pellentesque dapibus. Cras odio ligula, placerat id dignissim quis, pulvinar sit amet lorem. Suspendisse non nunc sed dolor condimentum facilisis nec in eros. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam sagittis vehicula velit, quis varius turpis porttitor eu. + +Mauris eget malesuada neque. Quisque viverra commodo lacus at egestas. Pellentesque sed urna ultricies nisl sodales ultrices nec eu ipsum. Mauris nulla ipsum, porta sit amet molestie at, molestie vitae felis. Praesent pulvinar nisi at nibh tincidunt porttitor. Nulla facilisi. Sed rutrum, lorem ut commodo auctor, nunc nibh placerat eros, eget placerat purus nulla sed mauris. In nec orci id sapien condimentum tristique. Nullam quis nunc augue, ac ultrices est. Proin nibh erat, bibendum a commodo elementum, imperdiet nec enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +Curabitur nisl purus, egestas sed laoreet nec, auctor vel felis. Integer metus nisi, hendrerit vitae laoreet elementum, ultricies sit amet ipsum. Nam vitae lectus mi, et dictum odio. Proin id mi a sapien commodo malesuada vitae id lacus. Aenean erat enim, posuere eu fringilla eu, condimentum in nulla. Sed varius elit non libero tincidunt tristique sed et libero. Phasellus volutpat rhoncus nibh, ac tincidunt neque ullamcorper ut. Aenean felis quam, pulvinar nec viverra eu, cursus ac felis. Praesent tincidunt, eros ut interdum feugiat, arcu nulla rutrum massa, nec semper turpis augue sit amet felis. Aliquam posuere sollicitudin diam, vel semper leo mollis vel. In hac habitasse platea dictumst. + +Aliquam eros erat, varius ut fermentum id, tempus et turpis. Sed a velit tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce mattis quam vitae velit euismod vitae consectetur justo vulputate. Sed a quam quam, eu iaculis lacus. Nam varius pretium tellus, nec lacinia nulla pellentesque a. Sed fermentum tempor imperdiet. Nulla eget eros erat. In hac habitasse platea dictumst. Etiam quis neque eget felis blandit varius bibendum eu justo. Fusce eros est, consectetur in convallis non, tincidunt at est. Vestibulum vehicula, orci quis facilisis hendrerit, lorem justo eleifend nisi, in fermentum dui est sed nulla. Nulla mollis commodo sapien nec molestie. + +Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla facilisi. Donec vel justo nulla, vitae ullamcorper odio. Proin nisi metus, pulvinar non aliquet sed, dapibus porta sem. Vestibulum eu lectus et odio aliquam accumsan non quis nulla. Curabitur sapien tortor, pulvinar at venenatis et, pharetra sed purus. Quisque lobortis est eu tellus fringilla lobortis. Mauris lorem massa, aliquam non tincidunt id, scelerisque ac dolor. Sed eu odio vel nulla sollicitudin viverra id vel metus. Aenean convallis pellentesque consequat. Suspendisse potenti. Phasellus tincidunt euismod congue. Mauris quis mauris vel turpis eleifend lacinia non in sapien. Nam in interdum quam. Aliquam congue metus sit amet sapien eleifend tincidunt. + +Vivamus ac rhoncus tellus. Fusce elementum condimentum lorem quis dictum. Morbi nec urna in mauris hendrerit congue ut ac est. Aenean lacus erat, adipiscing eu dapibus in, interdum ornare metus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in neque eu enim mollis posuere a id lacus. Etiam sit amet metus felis. Sed elementum libero ac lorem molestie varius sodales ligula accumsan. Morbi eget tempus libero. Proin lobortis feugiat molestie. + +Maecenas sollicitudin, lorem ac molestie ultrices, massa nunc ultricies tortor, ac adipiscing dolor quam a enim. Proin sagittis consectetur sem at aliquam. Duis sit amet ipsum metus. Mauris condimentum turpis vel nunc pulvinar sed dictum ipsum blandit. Etiam egestas arcu sed est egestas id gravida eros fringilla. Duis ornare enim non lacus adipiscing lobortis. Praesent sed magna quis tortor ultrices porttitor. Curabitur in libero sed arcu scelerisque congue nec at ante. Fusce congue enim vehicula enim fermentum gravida ultrices magna sodales. Mauris mollis metus non lacus ornare convallis. + +Duis ultrices mollis tincidunt. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed sed posuere eros. Nulla ligula nulla, porta eu aliquam eu, commodo quis nulla. Vestibulum suscipit ultricies metus, a tristique tellus sodales vel. Vestibulum non tellus nunc, id mollis ipsum. Vivamus aliquam feugiat massa, in dignissim magna condimentum vel. Praesent facilisis lacinia libero vitae aliquet. Sed sit amet lacus augue, ac fringilla diam. Nullam vehicula, mi sit amet euismod rutrum, eros libero suscipit eros, mollis aliquam dolor lectus sit amet quam. Proin viverra urna facilisis sapien sollicitudin ut semper felis accumsan. + +Nam at tincidunt odio. Donec accumsan risus in tellus fermentum adipiscing. Curabitur id velit eu magna hendrerit dictum vitae quis magna. Donec mollis tellus id elit sodales nec iaculis lacus tincidunt. Vivamus quis arcu sit amet nunc suscipit eleifend eu in erat. Nulla facilisi. Nulla dolor justo, ornare ut molestie quis, commodo ac dolor. Praesent malesuada tellus a turpis eleifend vel luctus elit aliquam. Quisque non arcu justo, eget suscipit augue. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean condimentum, purus sit amet fermentum porta, mauris eros mattis ipsum, at elementum sapien libero vitae risus. Vestibulum fringilla tellus vitae nunc congue at feugiat diam euismod. + +Sed nibh felis, interdum eget auctor eget, mattis et quam. Sed enim nisi, vehicula ut aliquam et, volutpat quis est. Maecenas risus mauris, congue vel facilisis a, suscipit sed orci. Sed non turpis dui, ac sodales est. Maecenas tincidunt auctor elementum. Cras euismod eros ut enim scelerisque dignissim. Etiam dui purus, posuere ac venenatis at, vehicula vel magna. Aenean nulla lorem, pharetra vitae tincidunt vel, sollicitudin ut eros. Duis ultricies orci id massa condimentum bibendum blandit elit condimentum. Morbi eget augue ipsum. Ut aliquet tristique velit, eu varius eros molestie ut. Cras fringilla tellus a justo posuere porta. Donec quis mi purus. Nunc faucibus rhoncus nunc, sed luctus augue tempus non. Donec lobortis porta quam, in tempor risus accumsan id. Mauris in mi eu nisl imperdiet laoreet. + +Donec augue elit, dictum non iaculis et, gravida non urna. Sed sapien mi, gravida sit amet bibendum nec, elementum at lorem. Sed tortor nisi, volutpat vitae pretium pulvinar, aliquam ut lorem. Morbi pharetra congue risus sed laoreet. Donec at ipsum ut enim interdum malesuada vel id metus. Praesent lobortis tellus diam. Mauris auctor lacus nec augue egestas congue ut vitae diam. Sed ac vestibulum metus. + +Integer at quam eu augue mattis fringilla. Mauris ullamcorper ornare eleifend. Phasellus rhoncus lacus quis lorem interdum lobortis. Suspendisse odio turpis, porta sit amet pretium ac, ultrices in nisi. Cras tempor laoreet sapien ultrices ullamcorper. Nulla id felis non leo laoreet molestie nec nec erat. In ac quam eu nibh lacinia pretium ac eu sapien. Quisque tincidunt scelerisque sem nec ultrices. Fusce nec nulla velit. Donec sapien leo, mollis sed pulvinar eget, sagittis nec mi. Ut condimentum lacinia neque, nec tincidunt dui venenatis sit amet. Sed non metus gravida diam sodales tincidunt. Quisque adipiscing lobortis elit, et congue metus aliquam sed. + +Integer tempor lobortis purus, sit amet laoreet mi feugiat non. Nam quis urna vitae felis molestie pharetra sed vel dolor. Suspendisse ut suscipit neque. Nunc volutpat justo sed felis ullamcorper sodales. Vivamus tortor nulla, scelerisque imperdiet fringilla pellentesque, consectetur et mauris. Nullam tincidunt scelerisque nunc, in aliquet turpis malesuada sed. Duis id diam vulputate nibh viverra blandit vel id leo. Etiam fringilla auctor faucibus. Proin faucibus consectetur dui at euismod. Fusce at orci at sem feugiat venenatis. In dui velit, cursus id tincidunt sed, ultricies vitae nisi. Duis tortor tortor, molestie ac vulputate eget, eleifend quis neque. Vestibulum sagittis malesuada ipsum a eleifend. Vestibulum fringilla pellentesque urna, faucibus porttitor sem posuere ac. Vestibulum in lectus ante, ac aliquam mauris. + +Praesent cursus diam et arcu volutpat interdum. Curabitur eleifend felis vitae velit eleifend eget faucibus ligula lobortis. Aenean sodales nibh ac elit congue imperdiet. Aenean porttitor est id velit consectetur in posuere ligula vehicula. Nam convallis odio mattis urna vulputate et imperdiet leo tincidunt. Quisque mauris neque, tristique ut accumsan eu, varius ac mauris. Donec non sapien eget arcu posuere porta vitae vel mi. Quisque faucibus commodo bibendum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin porta condimentum odio, euismod aliquet elit luctus sed. In hac habitasse platea dictumst. Cras rhoncus eros vel massa elementum hendrerit. Nulla facilisi. Donec auctor, lacus eget blandit scelerisque, turpis lectus sodales ligula, eget ullamcorper mauris purus vel augue. Praesent sit amet dui velit. Praesent ut neque non nisi dignissim commodo dictum eget diam. + +Maecenas porttitor ligula ut ipsum fermentum ut gravida ante tincidunt. Proin et diam ac massa volutpat viverra nec sit amet augue. Donec vitae risus eget tellus hendrerit aliquet at id nulla. Aliquam augue lacus, varius et vestibulum in, fermentum quis enim. Maecenas commodo sapien vel turpis adipiscing pharetra. Vestibulum id dolor in mi blandit rutrum eget at tortor. Etiam lacinia est ac nulla ultrices a convallis leo pharetra. Vestibulum sed lorem tortor, eu pulvinar enim. Sed vel nisi nunc, id tincidunt quam. Etiam risus ligula, dignissim eu sodales vitae, porttitor ac est. Sed laoreet, lorem dapibus sodales euismod, mauris purus semper est, a euismod tellus mi id mi. Sed vestibulum faucibus tortor non facilisis. Nam a diam orci, cursus imperdiet nisi. Quisque cursus, diam eu mollis fermentum, ligula velit laoreet elit, eleifend tempor risus velit at turpis. Sed pretium commodo interdum. In sit amet sapien non sapien iaculis tincidunt. + +Curabitur euismod, elit sed convallis auctor, augue est accumsan eros, in facilisis massa ipsum eu risus. Nullam vulputate nisl sed nibh varius gravida suscipit dolor mollis. Sed ut lacus quis lorem interdum dignissim. Praesent scelerisque nunc at eros pretium eu ultrices orci hendrerit. Nulla laoreet lobortis lectus sagittis auctor. Donec nec tincidunt nulla. Phasellus adipiscing sodales nunc, ac hendrerit est malesuada a. Nullam molestie euismod massa vel varius. Nam elit lacus, vestibulum nec volutpat sit amet, commodo et lacus. Maecenas fringilla, risus sit amet dictum venenatis, ligula felis varius odio, id vestibulum metus quam ac ipsum. Duis dictum suscipit dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +Integer nec libero at metus imperdiet lobortis. Etiam elementum, enim vel tempor rhoncus, massa metus faucibus libero, in aliquam tellus tellus sodales orci. Nunc nec turpis eros, rutrum aliquam sapien. Nullam sit amet urna nulla. Mauris semper bibendum eros, scelerisque tempus enim fringilla eget. Ut laoreet varius purus, vel convallis lorem laoreet sit amet. Nulla vitae est in elit lacinia pretium. Nunc sed eros ligula. Cras quis dui nisi, in facilisis odio. + +Curabitur vitae risus ultrices purus mollis ornare. Pellentesque felis tortor, interdum eget consequat a, interdum vitae libero. Aenean in lectus arcu, aliquet convallis metus. In vitae dictum nisi. Aliquam at ornare libero. Sed blandit dictum magna. Pellentesque felis nisi, ultricies nec accumsan id, viverra vel dui. + +Fusce sollicitudin ultricies quam, nec tincidunt purus faucibus a. Maecenas ultricies dictum viverra. Aliquam at placerat nisl. Quisque ultrices ornare sodales. Vivamus turpis ante, porttitor eu mollis non, tempor vel nisl. Sed elit quam, dapibus vitae malesuada eu, porta non ligula. Etiam a diam vitae tortor porttitor volutpat ac ut nunc. Quisque ultrices pellentesque nibh at euismod. Vivamus sit amet dolor nunc. Phasellus sed nisi turpis. Nunc elit magna, molestie ut adipiscing malesuada, vestibulum egestas tortor. Aenean commodo viverra feugiat. + +Proin sodales porta sapien eu semper. Sed nunc justo, bibendum vel rhoncus nec, varius vitae metus. Duis diam lectus, luctus quis porttitor venenatis, viverra ut eros. Nulla porta tempus ipsum adipiscing ornare. Curabitur non posuere nunc. Etiam dolor nisi, gravida ullamcorper vestibulum at, feugiat at libero. Suspendisse potenti. Praesent eleifend ornare tortor eu lacinia. Duis dolor augue, pharetra eu vulputate in, euismod sed orci. Donec vehicula dignissim lacinia. Sed vulputate, lorem dictum condimentum consectetur, risus dui molestie eros, nec porttitor turpis dolor vitae metus. Etiam luctus libero eget leo consectetur nec pretium magna bibendum. Quisque adipiscing tempus fringilla. Pellentesque auctor dignissim risus vel viverra. + +Duis blandit dui et nibh malesuada accumsan. Quisque pharetra mollis dapibus. Etiam porttitor nunc sit amet erat feugiat faucibus. Sed congue elementum sem eu mattis. Nam dui purus, imperdiet fermentum rhoncus sed, eleifend in urna. Aenean tincidunt, orci commodo dapibus blandit, ipsum eros mollis mauris, eget interdum sem quam sit amet quam. Fusce suscipit nisi et dui pulvinar nec interdum urna semper. Suspendisse suscipit malesuada orci quis consequat. Phasellus porta nisi sit amet lorem consequat feugiat. + +Nulla a nisl libero, vel pulvinar magna. Morbi eros dolor, sodales in viverra mattis, semper sit amet metus. Sed lobortis pharetra eleifend. Nunc luctus quam sit amet mi egestas vel ultrices odio vehicula. Curabitur venenatis vulputate tincidunt. Morbi volutpat risus sed tellus ornare a aliquam nisl dictum. Phasellus sit amet enim tellus, a tristique sapien. Pellentesque gravida fermentum velit, in interdum purus mollis eget. In massa justo, feugiat vitae vehicula at, faucibus sed nulla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu erat mi. + +Etiam consectetur purus nec erat varius vel pulvinar neque fermentum. Nam et elit nunc, et vestibulum dolor. Donec libero diam, eleifend at fermentum eget, tincidunt ac justo. Mauris non risus sapien, ac condimentum nunc. Donec eget felis vitae magna tempus molestie. Vivamus urna orci, ultrices a dapibus ac, tempor vitae tortor. Mauris fermentum, augue a malesuada varius, sem tellus sagittis mi, nec tempus tellus nisi vel diam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas nec vestibulum augue. Cras pharetra commodo imperdiet. Pellentesque commodo vehicula faucibus. + +Praesent vel massa orci, quis viverra elit. Aenean ornare vehicula gravida. Maecenas velit elit, tempor quis laoreet interdum, hendrerit at ipsum. Proin non sagittis mi. Suspendisse orci diam, commodo non eleifend a, consequat et tortor. Sed blandit condimentum est eget pharetra. Sed felis turpis, facilisis nec mollis vitae, viverra et turpis. Aenean ut enim nisi. + +Vivamus vitae mi et arcu vulputate faucibus. Sed iaculis facilisis orci, sit amet rhoncus dui blandit non. Maecenas id condimentum orci. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum imperdiet mi in lacus commodo bibendum id in tellus. Fusce eget ligula ac elit feugiat vestibulum vitae sed risus. Aliquam sodales porttitor nunc, eget sollicitudin est ullamcorper eu. Mauris a nisi in turpis dictum lacinia nec sit amet libero. Vestibulum non nisi in purus tempus tempor. Fusce accumsan mattis egestas. Pellentesque eu justo tortor, ut condimentum sem. Aliquam erat volutpat. Aliquam molestie erat mauris. Proin scelerisque fermentum leo, sed fermentum velit placerat pharetra. Aliquam erat volutpat. Vivamus eu sapien neque, a euismod ligula. + +In velit urna, accumsan nec rhoncus non, scelerisque sit amet arcu. Proin vulputate enim quis lectus dignissim sagittis. Sed tincidunt porttitor ligula sed tristique. Integer nec nulla urna. Pellentesque sed tincidunt nunc. Pellentesque euismod, urna non condimentum blandit, libero arcu semper nisi, sed mattis metus dolor id neque. Nunc consectetur, nibh ut ultrices interdum, mi turpis auctor dolor, non auctor nibh mi a arcu. Vestibulum non neque tellus, a tincidunt diam. Curabitur mollis tempor mauris nec pellentesque. Duis quis diam quis elit volutpat gravida. Quisque sed libero mi, sed suscipit purus. Vestibulum id metus quis mi lacinia gravida nec at lacus. Phasellus hendrerit pretium feugiat. Nam venenatis lacus et erat hendrerit a ultrices dui blandit. + +Vivamus sit amet lorem urna. Aenean imperdiet consequat arcu, eget sollicitudin mi semper vel. Nullam suscipit, elit a fringilla viverra, lectus metus facilisis sem, nec tempor lacus neque non tortor. Morbi eget massa enim. Curabitur volutpat dui quis elit molestie congue. Sed mollis volutpat velit, gravida dapibus elit semper consequat. Integer ullamcorper volutpat adipiscing. Nulla molestie ultricies diam vitae gravida. Phasellus dignissim consectetur hendrerit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus facilisis justo in quam pulvinar consequat. Sed dignissim, dui non dapibus ultricies, justo tortor blandit ipsum, imperdiet consequat dui nisi at libero. Donec blandit, risus et egestas ullamcorper, nibh ante commodo nunc, in ultricies erat ipsum non lorem. + +Donec magna arcu, luctus vitae lobortis at, tristique nec ipsum. Cras vehicula elementum lacus et feugiat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus eget commodo lectus. Praesent egestas mattis purus id tempus. Sed rutrum imperdiet elit id scelerisque. Ut nec nunc id velit malesuada gravida et ut sem. Sed tincidunt molestie consequat. + +Quisque porta odio nec sapien condimentum fringilla. Mauris posuere mi in elit congue et faucibus arcu pellentesque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer non elit enim, vel posuere nisi. Aenean eget convallis tortor. Proin tincidunt facilisis arcu, id eleifend massa rutrum sed. Integer libero tellus, auctor sed pulvinar elementum, lacinia ut nisl. Sed mattis congue vestibulum. + +Donec vel nulla vitae enim hendrerit condimentum. Duis sem augue, varius at egestas auctor, ullamcorper id odio. Nullam nec arcu eu risus consectetur convallis. Nulla vitae nunc magna, ac adipiscing nibh. Sed et magna metus. Morbi nibh lorem, malesuada at sagittis nec, molestie sed eros. Fusce at nulla nisi, id consequat lectus. + +Curabitur luctus, arcu non tristique pharetra, lectus nulla ornare dui, eu placerat augue mi quis purus. Morbi nec ante molestie enim feugiat consectetur. Suspendisse tortor diam, venenatis vitae tincidunt id, iaculis at enim. Vestibulum elementum posuere sapien, sed convallis dolor condimentum in. Phasellus scelerisque nisi eu dolor posuere eu eleifend est fringilla. Aenean et porta metus. Cras eu massa mattis massa semper luctus. Proin eget posuere nunc. Fusce imperdiet tortor vitae sem pretium non tempor sapien aliquam. Maecenas orci arcu, convallis nec vestibulum et, varius suscipit ante. Quisque tempus, mauris non varius pulvinar, erat turpis adipiscing magna, vitae laoreet odio lectus in sapien. Suspendisse dignissim hendrerit turpis quis rhoncus. Ut ultrices vestibulum volutpat. Suspendisse rutrum, neque a consequat ultrices, magna ante cursus risus, quis ultricies sem ligula sit amet nisl. Donec quis arcu lobortis nibh lobortis condimentum. + +Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In blandit lorem ut dui porta eleifend consectetur neque malesuada. Cras hendrerit sem vitae nunc dapibus scelerisque. Maecenas non orci tortor. Ut id massa elit, vitae eleifend nulla. Donec vulputate gravida orci eu adipiscing. Mauris massa tellus, adipiscing placerat rutrum ac, aliquet ut sapien. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +Sed suscipit nibh ut urna porttitor semper. Donec molestie velit quis sem mollis ac egestas odio tincidunt. Etiam dui mauris, fringilla sed tempus eu, pharetra vel dolor. Vestibulum ante turpis, volutpat quis varius non, rhoncus quis erat. Vivamus purus justo, varius nec euismod ut, molestie et sapien. Nunc in dui sed libero adipiscing accumsan. Phasellus eros velit, auctor ut sodales sit amet, hendrerit ac urna. Cras vitae mi id erat consectetur euismod. Pellentesque a lorem sed massa ultrices aliquam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In sagittis volutpat erat, vitae convallis justo egestas id. In consequat massa faucibus velit accumsan sed pellentesque purus facilisis. Mauris rhoncus laoreet neque, et interdum risus ultricies non. + +Aliquam at elit eu lectus sollicitudin scelerisque sit amet vitae mauris. Praesent mattis gravida urna, vel facilisis nulla elementum non. Phasellus ligula metus, semper eu consequat dignissim, elementum vitae sapien. Proin vulputate egestas rhoncus. Nunc in tortor mauris, ut lacinia quam. Ut feugiat, dolor ac semper viverra, purus augue posuere lorem, non pellentesque tortor eros in diam. Cras vel scelerisque nibh. Nunc vitae orci eget ipsum molestie accumsan vitae eget lacus. Mauris in enim eu ligula vehicula consectetur. Aenean turpis leo, tempor pulvinar tempus sed, dignissim eu augue. Nam non odio felis, vel tempus dolor. + +Phasellus non erat risus, rutrum lobortis massa. Nam id massa non risus interdum lacinia a eu purus. Aenean bibendum porta massa. Aenean molestie lacinia nisi, sed hendrerit neque dictum sagittis. Donec id nibh eget arcu ultrices tempus ac nec mi. Ut tristique varius dapibus. Morbi nec arcu eu urna hendrerit scelerisque. Nam dictum felis in lorem luctus placerat. Sed sit amet quam nunc. Cras vitae massa dolor. Cras feugiat tristique metus ut lobortis. Suspendisse venenatis, arcu sed bibendum vestibulum, felis justo placerat neque, id elementum quam ipsum sed urna. + +Curabitur et elit elit. Morbi in metus eu arcu lobortis sodales porttitor aliquet lorem. Curabitur lobortis nibh ac ipsum sagittis facilisis. Suspendisse non malesuada lacus. Pellentesque varius lobortis mauris et ornare. Phasellus a nunc nec nulla tempor volutpat. Fusce elementum vestibulum massa ut consectetur. Aliquam ac nunc sit amet lacus placerat volutpat. Sed malesuada vehicula mi ut aliquet. Vestibulum dignissim velit eget massa ultrices accumsan. Integer a enim tortor, sed sodales quam. Praesent sapien sem, placerat ac fringilla eu, tincidunt non quam. + +Nullam dictum facilisis tortor in luctus. Phasellus commodo pretium neque, a volutpat nulla facilisis et. Suspendisse nulla purus, pellentesque ac lacinia a, ullamcorper at diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In at sem tortor. Donec sed massa id leo pellentesque venenatis vel euismod justo. Nam eget sapien sed libero condimentum dictum id in tortor. Nam facilisis pellentesque dignissim. Aliquam semper arcu id odio condimentum ut varius nulla hendrerit. + +Vivamus viverra pretium eros, et eleifend massa varius a. Fusce aliquam accumsan orci condimentum lobortis. Phasellus nec felis lectus. Fusce placerat eros vel leo bibendum tempor. Cras quis nulla nisi. Curabitur et sapien nunc. Proin in elit risus, vel facilisis ligula. Suspendisse elementum molestie augue sollicitudin lacinia. Integer dapibus lacus non eros cursus vitae pharetra enim faucibus. Morbi quis risus felis, non sagittis felis. Aliquam erat volutpat. + +Aliquam turpis urna, lobortis quis convallis vitae, suscipit et nunc. Pellentesque commodo odio quis mauris rhoncus non dapibus felis volutpat. Phasellus pretium, neque nec sollicitudin tincidunt, est enim lobortis dui, sit amet dignissim tortor magna et nunc. Nunc sed augue vel quam porta iaculis vehicula quis nulla. Integer semper mollis mi id sollicitudin. Etiam ullamcorper aliquet sem non accumsan. Etiam velit quam, interdum ac congue non, volutpat ut sapien. Duis vel velit eros. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi aliquet condimentum purus, vel faucibus lacus feugiat aliquet. Ut hendrerit, risus in sollicitudin egestas, mi mi euismod purus, sit amet vehicula ante quam et orci. Nulla leo quam, porta sit amet sodales non, elementum ac turpis. + +Aliquam volutpat tempus leo, sit amet viverra metus luctus ut. Aenean egestas, ante eu pellentesque lacinia, neque nibh bibendum quam, a mollis ipsum mi laoreet mi. Nulla facilisi. Quisque venenatis, odio nec euismod porta, nunc lectus vehicula orci, non ultrices ligula nisi sed neque. Phasellus dolor ligula, lacinia nec auctor condimentum, eleifend id neque. Nunc libero est, ultrices id consectetur a, condimentum a ante. Aliquam cursus tristique dui ac interdum. + +Aenean volutpat auctor elit ut pellentesque. Sed commodo mauris ut est tristique id varius erat vestibulum. Aenean vulputate odio in erat interdum molestie. Nullam mollis blandit gravida. Morbi lacinia congue purus sed elementum. Nulla tortor turpis, tempus vel lobortis non, aliquam vitae metus. In vehicula semper quam, ultrices tristique dolor venenatis eu. Morbi ut risus quis ipsum blandit feugiat. Fusce pharetra tristique condimentum. Sed sed arcu eu erat faucibus cursus aliquam et erat. Nam faucibus mauris sed arcu tincidunt lobortis. Vestibulum dignissim luctus libero, eget hendrerit libero hendrerit quis. Vestibulum congue, felis id tristique dictum, justo sem euismod metus, ac porttitor ante lectus eu purus. Duis eu orci lacus, vitae volutpat risus. + +In aliquam viverra ipsum nec pretium. Suspendisse in quam lectus. Cras egestas aliquam mi, eu rutrum dui condimentum vel. Praesent blandit aliquet venenatis. Aliquam non eros lectus. Maecenas nec orci neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur non ipsum sapien, id convallis leo. Fusce orci justo, vestibulum non porta vel, cursus a erat. Fusce magna diam, elementum quis fringilla non, aliquam non diam. Mauris ultricies porttitor urna sit amet commodo. Donec lacus neque, iaculis at imperdiet in, semper vitae lorem. Suspendisse mi lorem, viverra ac ultricies at, fringilla vel lacus. Sed nisi leo, sodales at iaculis sit amet, accumsan at ipsum. + +Sed iaculis imperdiet purus non pretium. Cras in nulla metus, sit amet porttitor felis. Aenean viverra arcu at sapien varius nec iaculis velit porttitor. Curabitur sapien metus, pulvinar vitae iaculis at, consequat non justo. Morbi eget pellentesque dui. Etiam pretium urna non erat cursus vulputate. Aenean sollicitudin vestibulum augue, a venenatis tortor dictum eu. Pellentesque lorem massa, tempus eget iaculis et, dignissim in neque. + +Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus feugiat congue arcu, non ultricies felis molestie eget. Aenean varius sodales cursus. Praesent eu felis justo. Fusce sed mauris quis est blandit congue nec quis lorem. Donec ac est at enim tincidunt ornare. Vivamus id arcu eros, et semper libero. + +Pellentesque ornare diam ultricies magna ultrices id fermentum sapien tempus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aliquam eu cursus lorem. Nulla sed risus augue. Duis ultricies ullamcorper mi, iaculis mattis turpis interdum mollis. Sed non mattis lectus. Sed bibendum aliquet massa, ut gravida purus ornare tempus. Proin ut nunc in libero interdum blandit. Integer rhoncus nisi sit amet nibh tincidunt consequat. Nulla scelerisque feugiat turpis sodales cursus. Maecenas eros turpis, luctus non faucibus sed, rhoncus eget elit. Mauris sit amet quam vel nisi porta porttitor sed quis nulla. Phasellus eget nisl sed lorem dapibus pellentesque ut at arcu. + +Quisque et mi ante, a interdum lorem. Curabitur venenatis placerat erat, sed auctor erat fringilla sed. Quisque dapibus aliquam egestas. Integer in risus nec arcu pulvinar feugiat. Proin vitae massa vitae velit venenatis auctor eu a diam. Aliquam purus nulla, feugiat ut iaculis eu, consequat non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec mi quam, gravida a euismod venenatis, placerat ac nunc. Fusce interdum aliquet lorem in consectetur. Aenean eu viverra libero. Nam tincidunt magna at tortor vulputate scelerisque. Nulla facilisi. Sed eros ante, pellentesque non porttitor a, fringilla non nisl. Suspendisse elit erat, facilisis in fermentum a, vestibulum et lorem. Morbi in augue at metus tincidunt varius non at metus. Phasellus iaculis ante et nisi consectetur consectetur. + +Nunc viverra semper urna vitae pretium. Nam mattis nisi ac elit commodo ut lobortis ante ornare. Suspendisse potenti. Vivamus eu tortor nec arcu lacinia cursus eu quis ipsum. Quisque facilisis ultricies eleifend. In ac enim lacus. Nulla vel dolor ipsum. Sed et dolor nisl, eu pellentesque elit. Duis tristique tincidunt lacinia. + +Proin at tincidunt nunc. Fusce convallis enim ac massa volutpat non consectetur ligula pulvinar. Etiam faucibus suscipit nulla et tempor. Donec et gravida est. Nulla ut dolor vel tellus cursus tincidunt. Nulla malesuada, leo sed ultrices adipiscing, sapien leo fringilla purus, eu placerat risus quam non nisi. Aenean commodo massa in odio aliquam a tincidunt neque molestie. Sed ut felis lacus. Etiam in dapibus arcu. Quisque id diam sit amet est auctor feugiat. Pellentesque ut viverra sapien. Quisque ultrices commodo euismod. Quisque in eros dui, eleifend eleifend nibh. + +Nulla risus purus, sollicitudin at laoreet et, pellentesque id magna. Vivamus et massa sed odio condimentum viverra. Phasellus blandit est quis nunc sodales mollis. Cras eleifend vehicula lacus, sed luctus quam feugiat sed. Aliquam dapibus purus eget massa elementum egestas. Maecenas porta, dui eget condimentum consectetur, erat mi iaculis elit, eget sollicitudin nunc nunc id eros. Donec pellentesque purus rhoncus erat volutpat id venenatis erat pretium. Donec porta ligula quis risus luctus gravida. Donec feugiat, enim egestas gravida interdum, mauris diam adipiscing odio, sed porttitor mi orci in quam. + +Integer eget rhoncus mauris. Vivamus at velit in lectus rhoncus tincidunt. Suspendisse dignissim, magna et vehicula accumsan, quam ipsum eleifend odio, et congue est ante sed ante. Donec posuere mi eget eros viverra volutpat. Nam vitae justo est, at viverra tortor. Curabitur sollicitudin luctus bibendum. Nullam at aliquam felis. Aenean ac lectus vitae nisi placerat ornare. Suspendisse sodales mi feugiat est aliquam fermentum. Cras eget ante et justo laoreet iaculis aliquet sit amet massa. Morbi lacinia facilisis augue vel hendrerit. Curabitur sollicitudin ornare nibh, a congue elit posuere eget. Praesent sollicitudin nisi vitae nisl tincidunt tempor. Fusce condimentum, elit vel consectetur blandit, risus nunc fermentum risus, id ultrices sapien elit vitae leo. Curabitur blandit purus id urna aliquam vehicula. + +Aenean aliquam egestas sem euismod tristique. Praesent ultricies luctus auctor. Aenean varius orci sit amet ipsum condimentum tincidunt. Aenean lectus nisl, dapibus pulvinar interdum sed, condimentum in neque. Sed interdum leo et enim faucibus faucibus. Integer luctus neque et odio hendrerit quis gravida orci consequat. Suspendisse vehicula aliquam elit vel hendrerit. Morbi fermentum aliquet neque, id vehicula enim sollicitudin ac. Maecenas euismod lacus eget quam eleifend convallis. Etiam nunc nisi, tempus vel auctor a, vestibulum ut felis. Sed vitae nisl a sapien scelerisque dapibus. Phasellus mauris dui, auctor id ultricies ut, aliquet rutrum velit. Curabitur nisl eros, fermentum quis luctus eu, porttitor at turpis. Etiam posuere dui et eros gravida sit amet euismod dolor dictum. In consequat dapibus velit, id tempor libero congue nec. + +In vehicula est nec turpis pulvinar auctor. Proin ut diam euismod lorem suscipit facilisis et vel lorem. Nullam molestie sem sit amet est feugiat eget pulvinar enim gravida. Fusce molestie cursus diam et volutpat. Integer ipsum orci, elementum et bibendum suscipit, ultricies eget erat. Vestibulum sollicitudin accumsan tincidunt. Fusce eu dui augue. Nam id enim metus, eu dictum augue. Suspendisse at nisi odio, vel cursus urna. + +Aliquam gravida laoreet facilisis. Phasellus elit mi, suscipit ac euismod eget, auctor in neque. Vivamus hendrerit diam vel quam cursus convallis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Quisque vitae velit non felis convallis ornare ut eu orci. Sed cursus bibendum ligula, sed auctor nisi cursus nec. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac nisi quam, eu ullamcorper urna. Nullam cursus venenatis tincidunt. Nunc blandit volutpat convallis. Cum sed.