using System;
using System.Collections.Generic;
using System.Drawing;

namespace AnyConsole.Runner
{
    class Program
    {
        static void Main(string[] args)
        {
            var console = new ExtendedConsole(new ConsoleOptions(RenderOptions.HideCursor, InputOptions.UseBuiltInKeyOperations));
            var context = new ConsoleDataContext();
            console.Configure(config =>
            {
                config.SetDataContext(context);
                // use a custom color palette for drawing
                config.SetColorPalette(new Dictionary<Enum, Color>{
                    { Style.Foreground, Color.White },
                    { Style.Background, Color.Black },
                    { Style.HeaderBackground, Color.DarkRed },
                    { Style.SubHeaderBackground, Color.FromArgb(30, 30, 30) },
                    { Style.SubHeaderForeground, Color.FromArgb(60, 60, 60) },
                    { Style.FooterBackground, Color.DarkBlue },
                    { Style.LogHistoryPrependForeground, Color.FromArgb(0, 200, 0) },
                    { Style.LogHistoryForeground, Color.FromArgb(100, 100, 100) },
                    { Style.LogHistoryBackground, Color.FromArgb(20, 20, 20) },
                    { Style.Highlight, Color.Yellow },
                });
                config.SetStaticRow("Header", RowLocation.Top, Style.Foreground, Style.HeaderBackground);
                config.SetStaticRow("SubHeader", RowLocation.Top, 1, Style.Foreground, Style.SubHeaderBackground);
                config.SetStaticRow("Footer", RowLocation.Bottom, Style.Foreground, Style.FooterBackground);
                config.SetLogHistoryContainer(RowLocation.Top, 2, Style.LogHistoryPrependForeground, Style.LogHistoryForeground, Style.LogHistoryBackground);
                config.RegisterComponent<RandomNumberComponent>("TestComponent");
                config.SetUpdateInterval(TimeSpan.FromMilliseconds(100));
                config.SetMaxHistoryLines(1000);
                config.SetHelpScreen(Style.Foreground, Style.FooterBackground);
                config.SetLogPrependString("| ");
                config.SetQuitHandler((consoleInstance) =>
                {
                    Console.WriteLine("Quitting!");
                });
                // todo: build frame dimensions into static rows
                //config.SetWindowFrame(Color.FromArgb(200, 200, 30), 1);
            });
            console.OnKeyPress += Console_OnKeyPress;
            console.WriteRow("Header", "Test Console", ColumnLocation.Left, Style.Highlight);
            console.WriteRow("Header", Component.DateTimeUtc, ColumnLocation.Right, componentParameter: "MMMM dd yyyy hh:mm tt");
            console.WriteRow("Header", "Version: ", Component.Version, ColumnLocation.Right, componentParameter: "Major.Minor.Revision.Build");
            console.WriteRow("SubHeader", "This is a test application console", ColumnLocation.Left, Style.SubHeaderForeground);
            console.WriteRow("SubHeader", Component.Custom, "TestComponent", ColumnLocation.Right);
            console.WriteRow("SubHeader", "Mem Used: ", Component.MemoryUsed, ColumnLocation.Right);
            console.WriteRow("SubHeader", "C: (Free) ", Component.DiskFree, ColumnLocation.Right, componentParameter: @"C:\");
            console.WriteRow("Footer", "C: (Used) ", Component.DiskUsed, ColumnLocation.Left, componentParameter: @"C:\");
            console.WriteRow("Footer", "IP: ", Component.IP, ColumnLocation.Left, componentParameter: 2);
            console.WriteRow("Footer", Component.LogSearch, ColumnLocation.Left);
            console.WriteRow("Footer", Component.CapsLock, ColumnLocation.Left);
            console.WriteRow("Footer", Component.ScrollLock, ColumnLocation.Left);
            console.WriteRow("Footer", Component.NumLock, ColumnLocation.Left);
            console.WriteRow("Footer", "of ", Component.TotalPagesBuffered, ColumnLocation.Right);
            console.WriteRow("Footer", Component.CurrentBufferPage, ColumnLocation.Right);
            console.WriteRow("Footer", Component.ScrollbackPaused, ColumnLocation.Right);
            console.Start();

            // you can use either the console instance, or the regular Console to perform writes
            console.WriteAscii("FIRST LINE");
            // here we will use the instance
            console.WriteLine("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
            console.WriteLine("Pellentesque hendrerit dui sit amet ultricies iaculis.");
            console.WriteLine("Nunc et elit non nibh hendrerit tristique.");
            console.WriteLine("Proin vehicula enim et bibendum scelerisque.");
            console.WriteLine("Mauris vel quam sodales, sollicitudin est eget, condimentum ipsum.");
            console.WriteLine("Vivamus ac justo non elit sollicitudin tincidunt.");
            console.WriteLine("Integer non felis sodales, faucibus diam sit amet, mollis ex.");
            console.WriteLine("Quisque at neque nec est commodo fermentum nec vitae libero.");
            console.WriteLine("Suspendisse rhoncus neque et sapien ornare, eget cursus quam aliquet.");
            console.WriteLine("Suspendisse ut dolor pellentesque, condimentum mi sodales, finibus erat.");
            console.WriteLine("Nam luctus arcu iaculis fringilla maximus.");
            console.WriteLine("Praesent vitae ex viverra, porta justo non, porta nisl.");
            console.WriteLine("Sed vel nisl vel est interdum mollis eget in tortor.");
            console.WriteLine("Nullam quis mauris at mi ultricies tristique.");
            console.WriteLine("Nam ultricies eros a euismod imperdiet.");
            console.WriteLine("Etiam nec lacus quis nisl vestibulum iaculis non vel elit.");
            console.WriteLine("Vestibulum nec diam sed magna posuere venenatis non eu arcu.");
            console.WriteLine("Phasellus ac sem interdum orci tincidunt bibendum eu et massa.");
            console.WriteLine("Mauris pulvinar metus a quam varius, vitae facilisis dolor consectetur.");
            console.WriteLine("Pellentesque id tellus ut orci euismod pretium id commodo elit.");
            console.WriteLine("Donec eu augue varius, laoreet mauris id, viverra ex.");
            console.WriteLine("Nunc aliquam velit at mollis imperdiet.");
            console.WriteLine("Donec tincidunt dui id viverra pretium.");
            console.WriteLine("Phasellus eget nisi non enim viverra lacinia.");
            console.WriteLine("Vivamus id sapien at neque sodales malesuada.");
            console.WriteLine("Vestibulum consequat mauris in sapien finibus, at condimentum justo dignissim.");
            console.WriteLine("Nam sit amet metus ac dolor fringilla sagittis nec in turpis.");
            console.WriteLine("Cras laoreet ex sed consectetur interdum.");
            console.WriteLine("Fusce sed ligula in nisi ornare pharetra.");
            console.WriteLine("Phasellus fermentum mauris sed risus pretium porta.");
            console.WriteLine("Vestibulum dapibus quam bibendum, sagittis felis ut, iaculis sem.");
            console.WriteLine("Integer sit amet massa rhoncus, iaculis arcu vel, rhoncus ipsum.");
            console.WriteLine("Morbi hendrerit ligula vitae magna efficitur, vitae congue lacus fringilla.");
            console.WriteLine("Maecenas ultricies diam eget neque consequat, quis gravida nibh pulvinar.");
            console.WriteLine("Aenean auctor ex sit amet lacus feugiat rutrum.");
            console.WriteLine("In pharetra justo nec rhoncus euismod.");
            console.WriteLine("Etiam sed magna vulputate, ullamcorper nibh vel, dictum magna.");
            console.WriteLine("Praesent porta nisi ut nisi fermentum eleifend.");
            console.WriteLine("Aenean ullamcorper mi eget egestas lobortis.");
            console.WriteLine("Proin tincidunt diam scelerisque felis venenatis, a tristique mi hendrerit.");
            console.WriteLine("Etiam vitae nisi tempus, vehicula felis id, porttitor nisi.");
            console.WriteLine("Sed ullamcorper orci vel fermentum feugiat.");
            console.WriteLine("Aliquam vel turpis sit amet velit lobortis porta.");
            console.WriteLine("Ut maximus neque vel elementum lacinia.");
            console.WriteLine("Fusce ornare lacus ac velit egestas iaculis.");
            console.WriteLine("Praesent mollis tortor ac ante pretium lobortis.");
            console.WriteLine("Nulla sed justo cursus, sodales metus vitae, iaculis est.");
            console.WriteLine("Integer eget mi eget nulla scelerisque suscipit eget vel ante.");
            console.WriteLine("Donec viverra odio a elementum maximus.");
            console.WriteLine("Nulla molestie lorem in urna consequat, in venenatis libero sollicitudin.");
            console.WriteLine("Vestibulum volutpat tellus id erat feugiat tincidunt.");
            console.WriteLine("Phasellus blandit dolor et massa tempus, id commodo ex vehicula.");
            console.WriteLine("Donec convallis dolor aliquam massa mollis consectetur.");
            console.WriteLine("Praesent eu risus ut enim condimentum tincidunt at et risus.");
            console.WriteLine("Duis vehicula lectus vitae nisl pulvinar, quis consequat ante tempus.");
            console.WriteLine("Sed dapibus velit aliquet mauris porta convallis non et neque.");
            console.WriteLine("Donec quis metus at nisi scelerisque volutpat nec facilisis tortor.");
            console.WriteLine("Integer facilisis magna in urna dignissim pellentesque.");
            console.WriteLine("Nam vitae ante ut dui malesuada iaculis.");
            console.WriteLine("Pellentesque varius quam quis libero pellentesque, eu tincidunt eros iaculis.");
            console.WriteLine("Curabitur laoreet ex ut diam lacinia sodales.");
            console.WriteLine("Nam molestie leo et sapien gravida, a commodo tellus blandit.");
            console.WriteLine("Ut placerat dolor ut libero euismod, tincidunt tristique purus hendrerit.");
            console.WriteLine("Suspendisse dignissim lacus eget libero fermentum bibendum.");
            console.WriteLine("Donec tempor ex id commodo mollis.");
            console.WriteLine("Vivamus vitae risus ac felis vulputate porta.");
            console.WriteLine("Mauris finibus mi quis magna posuere sodales.");
            console.WriteLine("Aenean nec risus ac massa vehicula gravida vitae in enim.");
            console.WriteLine("Duis suscipit nunc mollis, consequat libero id, gravida enim.");
            console.WriteLine("Donec imperdiet est id odio tempor, eget dictum risus egestas.");
            console.WriteLine("In pharetra nisi ut viverra accumsan.");
            console.WriteLine("Morbi eu est vehicula, molestie risus quis, consectetur risus.");
            console.WriteLine("Cras fermentum dolor ut quam ultrices ultricies nec eget augue.");
            console.WriteLine("Ut auctor lorem vitae ante pellentesque egestas.");
            console.WriteLine("Suspendisse sagittis ex sit amet eros finibus, eu ultrices tortor venenatis.");
            console.WriteLine("Aliquam finibus libero et malesuada vulputate.");
            console.WriteLine("Sed ac risus a urna aliquet rutrum.");
            console.WriteLine("Fusce eget quam dapibus, dictum nulla a, dignissim mi.");
            console.WriteLine("Donec facilisis metus eget leo dapibus iaculis.");
            console.WriteLine("Integer ultrices lorem at cursus fermentum.");
            console.WriteLine("Nam sed lacus quis erat gravida ultrices vitae eu diam.");
            console.WriteLine("Mauris sit amet velit venenatis orci ultrices feugiat.");
            console.WriteLine("Pellentesque id leo vel nisi congue efficitur.");
            console.WriteLine("Suspendisse sit amet nisi posuere, sodales lorem in, laoreet quam.");
            console.WriteLine("Nullam convallis lacus et justo dapibus ultricies.");
            console.WriteLine("Vestibulum gravida lorem vel mauris tempor tempus.");
            console.WriteLine("Aenean ut orci malesuada, consectetur tellus ut, efficitur turpis.");
            console.WriteLine("In condimentum lorem eget ultricies varius.");
            console.WriteLine("Morbi ut elit ut sem laoreet lacinia.");
            console.WriteLine("Nulla in nibh at purus tempus tristique.");
            console.WriteLine("Vestibulum tincidunt justo sit amet dui cursus scelerisque.");
            console.WriteLine("Suspendisse non eros tempor, cursus felis sit amet, convallis diam.");
            console.WriteLine("Praesent hendrerit risus sed nisi maximus, eget imperdiet odio tristique.");
            console.WriteLine("Proin eu ipsum sed nibh malesuada semper.");
            console.WriteLine("Vivamus sollicitudin felis sit amet aliquet scelerisque.");
            console.WriteLine("Nullam ornare metus at massa dictum, ut tincidunt libero convallis.");
            console.WriteLine("Sed blandit risus non urna posuere convallis.");
            console.WriteLine("Ut faucibus eros eu risus consectetur porta.");
            console.WriteLine("Aliquam maximus est eget sapien tincidunt, ut malesuada diam lobortis.");
            console.WriteLine("Vivamus porttitor orci eu ante ornare, vel tincidunt augue iaculis.");
            console.WriteLine("Nullam vehicula massa non magna tincidunt, ac aliquam quam lacinia.");
            console.WriteLine("Mauris tempus dui a nisi tristique, et malesuada neque pulvinar.");
            console.WriteLine("Fusce fermentum tortor at tortor hendrerit, id accumsan est ornare.");
            console.WriteLine("In quis nibh vitae orci consectetur rutrum.");
            console.WriteLine("Praesent blandit leo ut convallis tristique.");
            console.WriteLine("Morbi a nisi id diam faucibus interdum non a dolor.");
            console.WriteLine("Pellentesque ornare arcu sodales mauris semper interdum.");
            console.WriteLine("Maecenas hendrerit mauris a ligula pretium, at sodales massa pharetra.");
            console.WriteLine("Maecenas condimentum felis at elit volutpat, non luctus erat sodales.");
            console.WriteLine("Aliquam at lectus eget risus blandit cursus ut sed mauris.");
            console.WriteLine("Donec sed lorem vel nisi lobortis finibus at vel arcu.");
            console.WriteLine("Ut a elit sed nulla ultrices vehicula.");
            console.WriteLine("Sed tempus ligula ac velit tristique gravida.");
            console.WriteLine("Fusce hendrerit nunc non est lobortis, et pellentesque sem mattis.");
            console.WriteLine("Sed accumsan est sed sem varius, quis mattis eros interdum.");
            console.WriteLine("Maecenas volutpat nisi et velit rhoncus, vitae ornare ligula suscipit.");
            console.WriteLine("Nam egestas justo sed gravida ultrices.");
            console.WriteLine("Nullam feugiat ante tempor fermentum finibus.");
            console.WriteLine("Ut molestie ex sit amet finibus maximus.");
            console.WriteLine("In ullamcorper nisi a augue cursus, nec mattis metus accumsan.");
            console.WriteLine("Nam ac mi at purus dictum malesuada id a felis.");
            console.WriteLine("Integer eget tellus vel felis posuere feugiat.");
            console.WriteLine("Vivamus quis nulla non dui egestas bibendum vitae at tellus.");
            console.WriteLine("Maecenas nec ipsum a risus sollicitudin vehicula.");
            console.WriteLine("Etiam facilisis urna vel metus maximus euismod.");
            console.WriteLine("Ut eget mauris pharetra, ullamcorper quam a, congue lacus.");
            console.WriteLine("Integer placerat nisi nec purus gravida, id vulputate quam iaculis.");
            console.WriteLine("Donec tincidunt velit vel nulla condimentum tincidunt.");
            console.WriteLine("Donec porttitor purus id neque sodales finibus.");
            console.WriteLine("Sed aliquam sapien a nisi tincidunt faucibus.");
            console.WriteLine("Proin semper ante sed orci semper, sit amet semper lacus fermentum.");
            console.WriteLine("In nec elit vitae felis sodales vulputate.");
            console.WriteLine("Mauris sagittis erat feugiat est laoreet, at semper diam tempus.");
            console.WriteLine("Proin non mi vitae nulla efficitur imperdiet quis ac tortor.");
            console.WriteLine("Proin at neque luctus augue consequat volutpat.");
            console.WriteLine("Duis fringilla justo tincidunt, mollis orci a, placerat risus.");
            console.WriteLine("Vivamus accumsan nisl ac erat dignissim, nec hendrerit nulla semper.");
            console.WriteLine("Curabitur sagittis augue eget velit porttitor, a tincidunt ligula dignissim.");
            console.WriteLine("Mauris ultricies nisl id enim tincidunt, posuere consectetur dui lacinia.");
            console.WriteLine("Nullam et magna feugiat, imperdiet erat nec, commodo nulla.");
            console.WriteLine("Nam in eros quis libero suscipit ultrices a sed turpis.");
            console.WriteLine("Curabitur tempus tortor et sem auctor, sed lacinia magna mattis.");
            console.WriteLine("Sed a urna ullamcorper, fermentum felis non, commodo turpis.");
            console.WriteLine("Aliquam ac neque at justo ullamcorper convallis in nec orci.");
            console.WriteLine("Sed eu tellus at mi mollis dignissim at non nisl.");
            console.WriteLine("Phasellus ut nisl et ante suscipit pellentesque vel convallis urna.");
            console.WriteLine("Curabitur ut magna eget risus vehicula venenatis at et sapien.");
            console.WriteLine("Cras ultricies mauris in ante consectetur vestibulum.");
            console.WriteLine("Nunc ut lectus porta, efficitur odio non, ornare lectus.");
            console.WriteLine("Cras porttitor est eget pharetra posuere.");
            console.WriteLine("Praesent fermentum purus vitae mauris iaculis, in mattis arcu viverra.");
            console.WriteLine("Maecenas dictum nisl id urna efficitur vestibulum.");
            console.WriteLine("Phasellus vel leo eu nulla sodales convallis.");
            console.WriteLine("Duis tempor ipsum vitae sagittis convallis.");
            console.WriteLine("Sed dapibus erat in magna vestibulum suscipit.");
            console.WriteLine("Donec sed lacus eget sem lobortis congue.");
            console.WriteLine("Sed accumsan diam eget libero condimentum luctus in vel ligula.");
            console.WriteLine("Proin in dolor quis lorem varius pretium.");
            console.WriteLine("Maecenas congue turpis vel lacus cursus, vel condimentum sapien gravida.");
            console.WriteLine("In non libero non risus rutrum accumsan.");
            console.WriteLine("Sed semper elit eu nisi laoreet, quis feugiat nisl tempus.");
            console.WriteLine("Nunc suscipit sem non pulvinar malesuada.");
            console.WriteLine("Nam sit amet quam vel quam rhoncus maximus facilisis eleifend turpis.");
            console.WriteLine("Mauris bibendum magna a sagittis placerat.");
            console.WriteLine("Sed id ipsum egestas, volutpat velit ac, suscipit leo.");
            console.WriteLine("Nam ornare sem eu nunc pharetra, at blandit purus tempus.");
            console.WriteLine("Sed interdum ante eu libero rutrum, quis porttitor nunc vehicula.");
            console.WriteLine("Quisque vel mi in purus varius porttitor ac finibus arcu.");
            console.WriteLine("Suspendisse id purus ut ipsum dignissim consequat.");
            console.WriteLine("Aliquam elementum odio id ligula malesuada euismod.");
            console.WriteLine("Duis id ex sed neque iaculis efficitur.");
            console.WriteLine("Sed et urna viverra, rhoncus nulla vitae, ornare nisl.");
            console.WriteLine("Nulla in sapien et metus gravida consequat.");
            console.WriteLine("Praesent varius lorem eget mauris feugiat fringilla.");
            console.WriteLine("Donec egestas leo nec ex facilisis, vitae blandit neque interdum.");
            console.WriteLine("Nam eu lorem porta, cursus tortor eget, tempus elit.");
            console.WriteLine("Aliquam auctor est sit amet nunc tincidunt ornare.");
            console.WriteLine("Nunc ullamcorper libero in dictum semper.");
            console.WriteLine("Sed egestas urna vel tellus egestas elementum.");
            console.WriteLine("Fusce at dui aliquet, commodo libero et, feugiat justo.");
            console.WriteLine("Suspendisse in odio in nisl convallis faucibus eget non risus.");
            console.WriteLine("Cras vestibulum nulla in ante cursus, vel tempor purus malesuada.");
            console.WriteLine("Proin vestibulum erat vitae orci auctor, non euismod nibh sagittis.");
            console.WriteLine("Suspendisse rutrum nisi quis mauris mattis bibendum.");
            console.WriteLine("Pellentesque sollicitudin lorem id orci aliquam vehicula.");
            console.WriteLine("Donec vulputate orci ac feugiat ultrices.");
            console.WriteLine("Ut tincidunt dolor quis eros lobortis lacinia.");
            console.WriteLine("Donec id tellus ac lorem blandit eleifend vel eu risus.");
            console.WriteLine("Sed feugiat nibh id justo egestas bibendum.");
            console.WriteLine("Duis ornare nibh sed ex mollis, a accumsan dui ornare.");
            console.WriteLine("Donec ut ex eget arcu porttitor ornare.");
            console.WriteLine("Vestibulum pharetra quam ut mauris scelerisque mattis.");
            console.WriteLine("Sed fermentum lacus nec accumsan sagittis.");
            console.WriteLine("Phasellus ut orci pellentesque, aliquam diam non, rutrum ex.");
            console.WriteLine("Donec accumsan tellus non mollis efficitur.");
            console.WriteLine("Curabitur at tellus tempus, ultrices lacus in, pellentesque arcu.");
            console.WriteLine("Quisque hendrerit purus consectetur volutpat tristique.");
            console.WriteLine("Nulla vel lorem vitae purus vestibulum ornare.");
            console.WriteLine("Mauris mattis metus id nisl porttitor, nec pretium libero tincidunt.");
            console.WriteLine("Proin volutpat nisi vitae pharetra sodales.");
            console.WriteLine("Nulla et nibh vel leo malesuada luctus.");
            console.WriteLine("Aliquam venenatis ligula sit amet quam suscipit, venenatis semper lacus finibus.");
            console.WriteLine("Proin mattis tellus vitae massa dictum rhoncus.");
            console.WriteLine("Proin nec ante convallis, hendrerit nisl at, tristique lacus.");
            console.WriteLine("Aenean eget tortor elementum, tincidunt odio a, egestas lacus.");
            console.WriteLine("Morbi aliquet lacus in quam volutpat fermentum.");
            console.WriteLine("Nunc sed nibh a velit pulvinar imperdiet.");
            console.WriteLine("Maecenas volutpat neque sed eros pretium, nec hendrerit lacus accumsan.");
            console.WriteLine("Vivamus in urna sit amet quam bibendum molestie.");
            console.WriteLine("Donec posuere lacus sed bibendum fringilla.");
            console.WriteLine("Ut et metus ac magna pretium posuere.");
            console.WriteLine("Curabitur vitae odio quis quam finibus sollicitudin ac et sapien.");
            console.WriteLine("Ut id lectus volutpat, suscipit magna et, vulputate dui.");
            console.WriteLine("Praesent a urna id lectus pellentesque scelerisque.");
            console.WriteLine("Maecenas cursus dolor ut quam tincidunt consectetur.");
            console.WriteLine("Aliquam id ante et tortor condimentum ornare.");
            console.WriteLine("Vivamus viverra lacus dignissim eleifend sollicitudin.");
            console.WriteLine("Donec id lacus quis turpis eleifend ultricies a sed odio.");
            console.WriteLine("Donec maximus velit eget orci euismod faucibus.");
            console.WriteLine("Aliquam nec mauris eget nisi consequat euismod.");
            console.WriteLine("In aliquam mi at diam suscipit, eu blandit urna suscipit.");
            console.WriteLine("Mauris pulvinar odio ac dolor suscipit, ac mattis lorem vestibulum.");
            console.WriteLine("Aenean cursus dui id mauris vestibulum pellentesque.");
            console.WriteLine("Praesent mattis eros at odio euismod, quis tincidunt felis ultrices.");
            console.WriteLine("Aenean aliquet sapien non neque porta sodales.");
            console.WriteLine("Nam in orci sit amet felis fermentum accumsan at ut tellus.");
            console.WriteLine("Nunc commodo ex ac aliquet hendrerit.");
            console.WriteLine("Sed eleifend libero et ex gravida, non vestibulum nisl consectetur.");
            console.WriteLine("Quisque sit amet erat porttitor, euismod est hendrerit, euismod ligula.");
            console.WriteLine("Vestibulum dapibus dui non metus elementum luctus.");
            console.WriteLine("Nunc a tellus et orci ultricies imperdiet.");
            console.WriteLine("Curabitur et magna bibendum massa fringilla dapibus.");
            console.WriteLine("Sed molestie elit at condimentum malesuada.");
            console.WriteLine("Nullam luctus leo et dui venenatis maximus at facilisis turpis.");
            console.WriteLine("Etiam eu libero et ipsum placerat eleifend.");
            console.WriteLine("Maecenas quis orci at diam imperdiet porta fermentum a ex.");
            console.WriteLine("Fusce facilisis massa et massa commodo, ut volutpat lectus iaculis.");
            console.WriteLine("Maecenas vitae massa ac arcu iaculis porta eget vel risus.");
            console.WriteLine("Vivamus consequat justo vel elit tempor, id tincidunt neque ullamcorper.");
            console.WriteLine("Nullam id metus ac nunc viverra sodales vel a lorem.");
            console.WriteLine("Morbi consectetur ipsum sit amet elementum pulvinar.");
            console.WriteLine("Fusce ac nibh efficitur ipsum consectetur bibendum id ut turpis.");
            console.WriteLine("Maecenas maximus eros sagittis pharetra molestie.");
            console.WriteLine("In eget orci vitae quam cursus posuere ut in augue.");
            console.WriteLine("Aenean iaculis sapien quis metus aliquet, sit amet dapibus est lobortis.");
            console.WriteLine("Proin at nulla dapibus odio pulvinar eleifend.");
            console.WriteLine("Etiam fringilla lorem pulvinar odio porttitor, eu posuere ligula congue.");
            console.WriteLine("Duis condimentum justo in sem gravida congue.");
            console.WriteLine("Duis ultricies lorem a tortor cursus molestie.");
            console.WriteLine("Mauris quis lacus vitae libero consectetur tristique id gravida arcu.");
            console.WriteLine("Morbi dictum risus at venenatis blandit.");
            console.WriteLine("Morbi id lorem in dui euismod consectetur in id lectus.");
            console.WriteLine("Integer eu turpis ac sem suscipit consequat.");
            console.WriteLine("Phasellus eu dui luctus, efficitur ante non, pulvinar felis.");
            console.WriteLine("Proin eget ante nec risus feugiat consectetur.");
            console.WriteLine("Donec vel ipsum sed diam eleifend tristique.");
            console.WriteLine("Maecenas sed enim sed nibh pharetra sagittis.");
            console.WriteLine("Aliquam lobortis lorem sit amet felis malesuada iaculis.");
            console.WriteLine("Sed ultrices nisl eu cursus tempus.");
            console.WriteLine("Integer at erat fringilla, tristique odio vitae, luctus nulla.");
            console.WriteLine("Pellentesque porttitor eros vel odio pharetra efficitur.");
            console.WriteLine("Ut in orci pharetra, dictum eros quis, auctor sapien.");
            console.WriteLine("Ut fermentum erat ornare tellus congue, eget ornare quam blandit.");
            console.WriteLine("Nunc sit amet tortor vitae ligula efficitur ultricies.");
            console.WriteLine("Integer fringilla velit a consectetur convallis.");
            console.WriteLine("Maecenas vel quam et justo pellentesque semper.");
            console.WriteLine("Suspendisse et dolor pretium, laoreet mi ut, congue tellus.");
            console.WriteLine("Nam et augue ut urna rhoncus pellentesque.");
            console.WriteLine("Sed quis nibh vel ligula tincidunt blandit.");
            console.WriteLine("Ut semper elit nec lectus porttitor, pretium elementum justo laoreet.");
            console.WriteLine("Quisque et sapien tempus tortor congue molestie in non turpis.");
            console.WriteLine("Phasellus at felis vitae odio rutrum auctor.");
            console.WriteLine("Donec ornare diam nec aliquet tempor.");
            console.WriteLine("Phasellus nec lectus ullamcorper, mattis quam eu, imperdiet libero.");
            console.WriteLine("Phasellus lobortis ligula vel metus placerat, nec facilisis odio porta.");
            console.WriteLine("Donec malesuada dui ut feugiat suscipit.");
            console.WriteLine("Cras vel lacus egestas, condimentum sapien non, dignissim ante.");
            console.WriteLine("Sed nec sem at ex commodo molestie id at erat.");
            console.WriteLine("Morbi eleifend mi vitae est consectetur, in rhoncus lorem aliquet.");
            console.WriteLine("Sed tincidunt augue a leo tincidunt, sit amet accumsan ex rhoncus.");
            console.WriteLine("Duis vel lectus tempus, cursus libero id, viverra purus.");
            console.WriteLine("Donec fringilla nibh et purus convallis scelerisque.");
            console.WriteLine("Maecenas sit amet metus at magna tincidunt gravida non in urna.");
            console.WriteLine("Aenean sagittis orci nec velit luctus, nec consequat augue lacinia.");
            console.WriteLine("Phasellus laoreet purus at blandit ornare.");
            console.WriteLine("Aliquam posuere nisl eget volutpat viverra.");
            console.WriteLine("Morbi eu justo sit amet elit ultricies ullamcorper non eu dolor.");
            console.WriteLine("Suspendisse pellentesque urna at arcu semper, vel gravida orci mollis.");
            console.WriteLine("Vestibulum sit amet velit scelerisque, interdum quam sed, vehicula nunc.");
            console.WriteLine("Nulla vel ipsum tempus, porttitor urna at, consectetur est.");
            console.WriteLine("Cras mattis arcu id lectus consequat pellentesque.");
            console.WriteLine("Vivamus eleifend justo eget nunc rutrum, vitae rhoncus ex varius.");
            console.WriteLine("Vivamus non purus a ante lacinia euismod sit amet vitae augue.");
            console.WriteLine("Curabitur in magna cursus, tempus ligula eget, maximus felis.");
            console.WriteLine("Nullam vitae odio quis arcu cursus scelerisque.");
            console.WriteLine("Quisque aliquam erat et sodales dignissim.");
            console.WriteLine("Cras dictum risus et neque finibus laoreet.");
            console.WriteLine("Cras nec arcu at tortor blandit pellentesque.");
            console.WriteLine("Nullam eget leo id est semper consequat eu sed mauris.");
            console.WriteLine("Donec non erat dictum, volutpat diam sed, rhoncus ante.");
            console.WriteLine("Etiam feugiat dolor id urna vulputate, in blandit eros rutrum.");
            console.WriteLine("Etiam vel sapien non nisi vehicula bibendum.");
            console.WriteLine("Vestibulum pulvinar diam maximus turpis venenatis eleifend.");
            console.WriteLine("In quis nulla tristique, tempus libero ac, mollis sapien.");
            console.WriteLine("Etiam sagittis magna sit amet venenatis iaculis.");
            console.WriteLine("Sed pharetra leo non hendrerit semper.");
            console.WriteLine("Integer finibus quam eu nibh tempor gravida.");
            console.WriteLine("Vivamus ut odio porta, vulputate ipsum auctor, sodales risus.");
            console.WriteLine("Proin sed elit pretium, finibus nisl in, consequat urna.");
            console.WriteLine("Morbi eu dolor et lacus placerat condimentum non vel justo.");
            console.WriteLine("Nulla rhoncus nulla nec orci dictum, id vulputate nibh hendrerit.");
            console.WriteLine("Nunc ac ligula et elit blandit porta tincidunt ac nibh.");
            console.WriteLine("Aenean dictum sapien in elit tincidunt viverra.");
            console.WriteLine("Nunc luctus ante vel augue congue, non rhoncus nibh finibus.");
            console.WriteLine("Fusce sagittis nisi in ipsum facilisis eleifend.");
            console.WriteLine("Sed id lacus ut metus sollicitudin laoreet a vel libero.");
            console.WriteLine("Nam consequat erat vitae facilisis laoreet.");
            console.WriteLine("Nullam imperdiet arcu nec condimentum rutrum.");
            console.WriteLine("Nam fringilla leo non ultricies venenatis.");
            console.WriteLine("Cras ut elit euismod, hendrerit nulla ac, consectetur tellus.");
            console.WriteLine("Maecenas rhoncus turpis lobortis, malesuada sapien vel, aliquet massa.");
            console.WriteLine("Suspendisse convallis metus in sollicitudin sagittis.");
            console.WriteLine("Duis nec felis condimentum, consectetur dolor non, varius sapien.");
            console.WriteLine("Etiam ultrices diam at sollicitudin eleifend.");
            console.WriteLine("Fusce convallis lacus ut tincidunt pretium.");
            console.WriteLine("Ut fermentum elit vel urna fermentum tempor.");
            console.WriteLine("Donec ac quam sit amet urna vestibulum tincidunt.");
            console.WriteLine("Fusce tempor mauris non odio mattis, ut hendrerit orci malesuada.");
            console.WriteLine("Phasellus efficitur felis sed neque commodo, ut ultricies ipsum scelerisque.");
            console.WriteLine("Donec quis nisl eu leo luctus eleifend.");
            console.WriteLine("Suspendisse et urna ac diam aliquet aliquam at sit amet risus.");
            console.WriteLine("Proin vulputate felis in dolor volutpat, vitae dignissim metus sollicitudin.");
            console.WriteLine("Proin ac nisi vulputate, finibus turpis at, consequat urna.");
            console.WriteLine("Quisque interdum felis eu velit elementum pretium.");
            console.WriteLine("Mauris ut augue facilisis, euismod magna non, vulputate dui.");
            console.WriteLine("Vivamus at magna sed libero sollicitudin iaculis sit amet quis mauris.");
            console.WriteLine("Mauris convallis ex id enim facilisis interdum.");
            console.WriteLine("Vivamus interdum nisl sed velit fringilla, non commodo dolor scelerisque.");
            console.WriteLine("Aenean porta tellus sit amet porta iaculis.");
            console.WriteLine("Aenean non augue non elit pharetra tincidunt.");
            console.WriteLine("Sed quis mauris posuere, porttitor nisl sed, finibus ipsum.");
            console.WriteLine("Aliquam sed augue placerat quam viverra venenatis.");
            console.WriteLine("Etiam convallis mauris ac dui pretium dapibus.");
            console.WriteLine("Aenean ut tellus quis lacus convallis porta.");
            console.WriteLine("Phasellus eget lorem venenatis, vehicula odio a, lobortis sapien.");
            console.WriteLine("Vestibulum sollicitudin ipsum vel neque vestibulum lacinia.");
            console.WriteLine("Cras sed urna venenatis, sollicitudin est sit amet, fermentum nibh.");

            console.WriteAscii("LAST LINE");

            console.WriteAt("XXXXXXXXXXX This will overwrite on the screen!", 10, 20, DirectOutputMode.Static, Color.Red);
            // console.ClearAt(10, 20);
            console.WaitForClose();
        }

        private static void Console_OnKeyPress(KeyPressEventArgs e)
        {
            System.Console.WriteLine($"KEY PRESSED {e.Key}");
        }
    }
}
