Beispiel #1
0
        public void ClientReaderTest()
        {
            var frames = new List <IHttp2Frame>();
            var reader = new Http2FrameReader(EndPointType.Client);

            reader.FrameReceived += frame => frames.Add(frame);

            reader.HandleReceive("UFJJICogSFRUUC8yLjANCg0KU00NCg0KAAASBAAAAAAAAAEAAQAAAAQAAgAAAAUAAEAAAAAECAAAAAAAAL8AAQAABQIAAAAAAwAAAADIAAAFAgAAAAAFAAAAAGQAAAUCAAAAAAcAAAAAAAAABQIAAAAACQAAAAcAAAAFAgAAAAALAAAAAwAAAAUCAAAAAA0AAAAA8A==");
            reader.HandleReceive("AAEcASUAAAAPAAAADSmCBaBjxWsQ9SS1JYtroOORDAgBeYAFiGhOgtVuRCLSr11Tf0GM8ePC5BpWKOxC9RU/h3q70H9mooGw2uBT+uRqpD+EKad6gQLg+1ORqnGvtTy419qWd7jjK4P7UxFJ1OwIAQACAKmE1hZT+WHGVwdTsEl8pYnTTR9DrroMQaTHqY8zppo/35po+h110GINJj1MeaaPvtABd/6+WPn77QAXe1GT6D+i1LcN332gAu79Fq++0AF2f1CNm9mr+lJCy0DSX6Ujs3OSnSmtFxhjx48LkGlYo7EL1FSxQIOSpP+BD0CStrmsHIVY1SCktsKtYXtaVCUfgQ9Aha7BzUj/hqjrEGScv1iGqOsQZJy/QIJJf4ZNgzUFsR8AAAQIAAAAAA8AvgAA");
            reader.HandleReceive("AAAABAEAAAAA");
            reader.HandleReceive("AAAbASUAAAARAAAACxWCBYliUfcxD1LmIf/Ih8fGxcTCwL++AAAECAAAAAARAL4AAA==");

            frames.Count.Is(13);
            frames[0].ToString().Is(@"ID: 0, Type: Settings, Length:18, IsACK: False, Settings: { 
HeaderTableSize: 65536
InitialWindowSize: 131072
MaxFrameSize: 16384 }");
            frames[1].ToString().Is(@"ID: 0, Type: WindowUpdate, Length:4, Increment: 12517377");
            frames[2].ToString().Is(@"ID: 3, Type: Priority, Length:5, E: False, Dependency: 0, Weight: 200");
            frames[3].ToString().Is(@"ID: 5, Type: Priority, Length:5, E: False, Dependency: 0, Weight: 100");
            frames[4].ToString().Is(@"ID: 7, Type: Priority, Length:5, E: False, Dependency: 0, Weight: 0");
            frames[5].ToString().Is(@"ID: 9, Type: Priority, Length:5, E: False, Dependency: 7, Weight: 0");
            frames[6].ToString().Is(@"ID: 11, Type: Priority, Length:5, E: False, Dependency: 3, Weight: 0");
            frames[7].ToString().Is(@"ID: 13, Type: Priority, Length:5, E: False, Dependency: 0, Weight: 240");
            frames[8].ToString().Is(@"ID: 15, Type: Headers, Length:284, IsEndStream: True, IsEndHeaders: True");
            frames[9].ToString().Is(@"ID: 15, Type: WindowUpdate, Length:4, Increment: 12451840");
            frames[10].ToString().Is(@"ID: 0, Type: Settings, Length:0, IsACK: True, Settings: {  }");
            frames[11].ToString().Is(@"ID: 17, Type: Headers, Length:27, IsEndStream: True, IsEndHeaders: True");
            frames[12].ToString().Is(@"ID: 17, Type: WindowUpdate, Length:4, Increment: 12451840");
        }
Beispiel #2
0
        private async Task <Http2Frame> ReceiveFrameAsync(PipeReader reader)
        {
            var frame = new Http2Frame();

            while (true)
            {
                var result = await reader.ReadAsync();

                var buffer   = result.Buffer;
                var consumed = buffer.Start;
                var examined = buffer.Start;

                try
                {
                    if (Http2FrameReader.ReadFrame(buffer, frame, 16_384, out var framePayload))
                    {
                        consumed = examined = framePayload.End;
                        return(frame);
                    }
                    else
                    {
                        examined = buffer.End;
                    }

                    if (result.IsCompleted)
                    {
                        throw new IOException("The reader completed without returning a frame.");
                    }
                }
        protected async Task <Http2Frame> ReceiveFrameAsync(uint maxFrameSize = Http2PeerSettings.DefaultMaxFrameSize)
        {
            var frame = new Http2Frame(maxFrameSize);

            while (true)
            {
                var result = await _pair.Application.Input.ReadAsync().AsTask().DefaultTimeout();

                var buffer   = result.Buffer;
                var consumed = buffer.Start;
                var examined = buffer.End;

                try
                {
                    Assert.True(buffer.Length > 0);

                    if (Http2FrameReader.ReadFrame(buffer, frame, maxFrameSize, out consumed, out examined))
                    {
                        return(frame);
                    }

                    if (result.IsCompleted)
                    {
                        throw new IOException("The reader completed without returning a frame.");
                    }
                }
                finally
                {
                    _pair.Application.Input.AdvanceTo(consumed, examined);
                }
            }
        }
        private async Task <Http2Frame> ReceiveFrameAsync(PipeReader reader)
        {
            var frame = new Http2Frame();

            while (true)
            {
                var result = await reader.ReadAsync();

                var buffer   = result.Buffer;
                var consumed = buffer.Start;
                var examined = buffer.End;

                if (buffer.IsEmpty && result.IsCompleted)
                {
                    throw new IOException("The reader completed without returning a frame.");
                }

                try
                {
                    // Assert.True(buffer.Length > 0);

                    if (Http2FrameReader.ReadFrame(buffer, frame, 16_384, out consumed, out examined))
                    {
                        return(frame);
                    }
                }
                finally
                {
                    reader.AdvanceTo(consumed, examined);
                }
            }
        }
Beispiel #5
0
        private async Task <Http2Frame> ReceiveFrameAsync(PipeReader reader)
        {
            var frame = new Http2Frame(Http2PeerSettings.MinAllowedMaxFrameSize);

            while (true)
            {
                var result = await reader.ReadAsync();

                var buffer   = result.Buffer;
                var consumed = buffer.Start;
                var examined = buffer.End;

                try
                {
                    if (Http2FrameReader.ReadFrame(buffer, frame, 16_384, out consumed, out examined))
                    {
                        return(frame);
                    }

                    if (result.IsCompleted)
                    {
                        throw new IOException("The reader completed without returning a frame.");
                    }
                }
                finally
                {
                    reader.AdvanceTo(consumed, examined);
                }
            }
        }
Beispiel #6
0
        public void ServerReaderTest()
        {
            var frames = new List <IHttp2Frame>();
            var reader = new Http2FrameReader(EndPointType.Server);

            reader.FrameReceived += frame => frames.Add(frame);

            reader.HandleReceive("AAASBAAAAAAAAAMAAACAAAQAAQAAAAUA////AAAECAAAAAAAf/8AAA==");
            reader.HandleReceive("AAAABAEAAAAA");
            reader.HandleReceive("AAB2AQQAAAAPIIh2hKpjVedhluRZPpQTymk/dQQAvKAauNguBeUxaN9fhzUjmKxXVN9cBDgyMjYAiaBoStSeQ0piyZbfPb9KBCplHUoIAXlAPXANXACUxaN/AIMqRzeP/kQBCWbcE7G+604ADwP5AIkZCFrStYOqYqOEj9JKjwAgAAAAAAAAD4lQTkcNChoKAAAADUlIRFIAAADCAAAAxAgGAAAAzbj+LAAAAAFzUkdCAK7OHOkAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAft0lEQVR4Xu2dXawjR5XHLzwAEi8IIY3QSsnyAGGBCN7uU3QJyuIsm10/EGSUsHgRSF5gwWRDZIYww9dDCxLoyYjggVHGDyHrbD5wxARMoiFOIGBCPgyE5BKSwSgRcQIoFhmCUSCc7X+7z51yufrz2t1l3/OTzr12d3V1ddX510d3V3mDLOKRRx6hN539Ft/+8Ic/BFtn+eY3O/7+j370kmBLPM0jX6MDBz5NDzwwCLakB+fFORFXVh5//HE/HTB8zkJcHH/+8599Qzpvu+32YOsU5CmuA/mAMCbuvvuHfhj8t4UwX1gkvhBwIlw4HDHMkKn4H0VcHCgAZHIYCAMnf89/VIMt87AQ4Ahh6BmHsDgG8QM4ED4jvddee52/LQ44FuJIGt4EX5+alrRExYHv5//LBX4+45rxWXV49dgw5+LrjMpfFcQD3/jiF6/0j4HhM/I2TGyMmp44Q7xx8YWhXlPYdftCSJqgKCcGOJHpON3CQIZiPzKS0S9eFQL2Ie16zZg0HWxJQGuAsMhUiAH/ATIWaTChpx0OyudkEaYVVlwcuHZUJMgT/FfTxnm324qGQViIjdOjG86D9IaRVghxIL91R2eR6p91fCFwc2tKABv2I+OjQIHg4k3Hw7Av6oK4EPCf0eMwmRoecA1gMpyfDcchc0xgv+l4Nr4ODof/uiCSFDTHE0baOBAe12+qPVE+CK86g+44XAYcJ3zDFBdfN4fl7yhj5KnqB1FiiIIrRpietzpIJ4tSLVPV+dXPOlaNETgzVcFxRoQZjokTKIdjEB7f1QzT4bSohsKFM+E4dhA4jlorIqPZcfBfPZ4N8cBZcSziiSIqDpwrSRwMXxOOYfR4TaY7IQuKu2GAKx/OZ6Qb6eNwnCdJQXgWk1p2JhBWb5m4xQZq2iK7RrbABRWlfr3GigMXjvDIKI6fDd2duJoGcIGogkPm41gYPrNzRKWLz8vOg/j0AoSphajDYbLEwdevXod+nG64dlVouF7ep+Yddx1VkakOGlXpmOByhkUJHefgc+NcXFawqHzUsUoIfEFhqgVphICCUjMGn/kcqkVlGBc8MhmZzqBw+HiGRWECjsvhOYxa2KqFXZvqhJxHaeJgp1QdWCcuf7l2VbsYuB4+r94N4vBJyotR8xYVTBQcP4yvS92G64mCw1klBE5UFEmFgBqI44NxhqjHI+PYOdRaUoWFZMrQ22+/Xcxi47IPK1vAYXwhQHUo6KiaOA7UBIgj6qRxcKIQl16zMIgfYaKEwLUvnJwFwden14ocH1oKHRaN3howyGzBTlA2ausf1gqijGEb3IeGhTXrSeDmKK4pi4LTASdnx0T6EDc7sGqm9GIbh0UTy80smnLOGLVZRwZxfCo4juNBRgGkBdeH9MFECPaCsoEvcIuOskSZhrGhOsJuhADHQByLEAIMNbnq1HBinEPt82OfPgjj1gDiYTg8DMer18ktBrarsGg4PLccqokQ7IXLRh1vwF/Cej0zLQIczdSEIAy2wxl0x2O4RWDnNJ0QccBQw5rUyU4Pw/HspGE1OJvq9NydYUGq4RG/el611lfjADg/tuF4wALk70CEYC9q2aiVGCo4U4XvjxHYiZMYxGJCdaokpjoUw60K187s1BACJx6fsQ3ngrPzZ95vqrnZuIuDtOIzp1c9PgyOg9ON84gQ7AVl8+yzz/rl+vzzz9NXm0d2ytpUCe/cNYJjcK0XZtgf1fXBCdhRowwOb0oMH8stgNpa6cY1OBwSpqIKBHEhLGoChNPTh7SYWi8djlM1EYK9oGxQaT3xxBP0xz/+0RcD+4AJ4+1TRKBaEkfRwTF6PHFwC8A1N2Bxce3NYoyrwcPAcXB+xJEkTSpIF48dkB4Rgr2gbG699Vbq9/u+GJ577jn605/+FOydx6rnCKuGCMFeUDZHjx71xYAKD92kF154Idg7jwhhF4gQ7AVlc+jQIbrpppvooYce8rtHf/vb34K984gQdsHqC2FI7bpD/Unw1aPvbJDT9z+RU27TyN+6eqBsvvzlL9ONN95Iv/jFL0QIyyRXIfQd2tjYMNrUcdMy8aLcpE1n4H06ja1CaDabwadkiBByxIYW4bTjpmPYrtCZlbbXJsxiqxAuuugi2r9/f+SAV0WEkCPFC2FCvXqZ2r63eo5raC02Nnj/aYbdGm1uNWk7+K5isxBgH/jAB+g3v/lNsDUcEUKOFC8Er49fbnguG8aA3JLr/WUmtN2q0FnVKpVDnLzv7COvt4RPVgqB7a677gr2mBEh5EjhQhh3qWZwVq7VJ964ouQGMhhvU6t6lv99HOHkfUdpYdQwww611FF1zhQqBH7AhYdaeJAV9p7RXqVoIYw7VSq19F4+1+pj6ih3hPpOhdz+ePolVAhj6tYq1JkTAgbWJWJNFQEL4P3vf3/+XSMWAp7GQgR4mgpBmF6P2CuoT7YLFcLEc9StOvXmKml13BBGmBCG1Co5QVdKCTNsUbnW9WRSHBDBJz7xiWIGy6oQAF6bwCsGy24Z4GhhL/cBPV0m8H4R4ogKkxY8ocR5+V2o4oTgjQ0qW173x9BVmfSofqbXEgRfzYQIAQ7f6AW3U4MwvuBq1C1SBR5Zbp/iLtORI0eSCQHOgsJNaxDEsuA0hTlxnBCwnd+oXWQLxu8ZoSKAKIoQwni7TfVSiRo9g2eOeuSUzqRKe767NItJCGhJtpTuz1QAtXKVWtvFjQ2ygrJ59av/gc444x/pta99PbmHrqKnn3462DuPLwQUMApWN54PwAWv27LYrRAYvGmIcLC49Ma9WMjnVC1vIQxbZSrV27QdUjsPW1Wqt7eDGj2KeSFMeg2qzQgId5xq1InTlKWwEI4dO+b1ML5BlXdfRG9805tDK8UdIZiAc6DA1fnDyxQAsyghAKSX31wNmweNMGg5wuBZb0iXes4iWgQhGSibc87Zouuuu87vGj311FP0kY98zOg3EIcvBDgBnEE1riFxIPrsgIUB4SRxwqwsUggAFxr26ja24fohFlNtARFgH65ZbzVECPaCsnn720szg+VTp07N+DNA+aNsQ8cIHFj9rHaVlsmihRAFjyUQpw5fr0kEQIRgLyib973vfXN3jXCjQ239Uf6o6IxdIxQ+O7+6n2tOk1MskryEwGMIZI4eF+9DWsKuV4RgLyibgwcPzglB9x2ULXpAsUJgxSCwun2ZxAkBjos070YIcbU9QFcp6hwiBHtB2XzhC1+IFQLjCwGmojo8Hwgx5NEaANTGOG+YE6Jl0tOcFMTJ3aEoEcQBkYgQ7AVlY3qghjI3VaIbqtMDOAa28R0WbglgcE4dRIiIlz1uYLjLYkpLHLgmiAjHQwxZRYDjUCmIEOzFJISHH37YL3tTr8YXgupUfKuQhcCOBwdiFUEc/HQVTgEhIMyyxYBaOG3LhDTjGjiNOBbfs4JrRxyIS4RgL7oQ7r//fiqd/6++H5t8xxcCnJ4dBYbPCAyHYcfjcIC3szC4VUCYZYkB5+Z0xDkyBANxQ6x8TTgW25IKSAfXyF0qxAVBiBDsBWXz+c9/3vOBK+jSSz9Ob3jj2XTxe97rl5uJDdWhGXxH84FC5y4EwsHgZNgGx1dZhhgQJ+Li7gz+sxijULtzEAOEk1UAOB8LAKZ2qUQI9oKyef0/vcF/xeKCfyvTN75xXfQrFqb+EgaicHo4IYsEAmCHhJmcncOEqS4LcDzEifOlcWakQRd4FiAiFoB+XSIEe0HZ4PZp4pfuTM4FB4JTm4AzLNLRVxkRgr2gbBb2GrYQjQjBXkQIOZK/ECbUcxr+ZJxRu2yYqD+1mVUtJj1y3X7wRuqYuo47s47RuiJCyJHchTBsUwNTM4c96g6SeDMm8OwzioWtHD2VzRpkXSOLyVUIow5Vz6xTd+LV6v5c5BG1ywbn3plnMKSOU6VSTZl3MGqTsyKOr4OpmrKukaXk3SJMBi5Vy1Vy/b6NJwRHn2WmbPOEMhpjuReDWNj28fxk++HJ+7KukYXkLQRM2Ed/f9RrU3cc1yIATSwr3iKoJusaWUSeQpgMMFf5zVSuu9R0alRr9w0tgk6IWBRblTGCCMFicm8RPPoOVqiY0HDYp1azQY05545YymXQ9LpVwecVgwVQyLpGWcE7PTY8dMPrEWFPl7Edxq9wxD2FxjXhCbP6nlPeQpiMsdCWQ73RcLrMivfZcbyuUtvxnB/f+TNCe9/nRGKyuDWQ7AAiSLuuEQbXhw8f9n8sBC/d4e1TfiCsPzBeihDgMKZXN/IET8yRDrwqYno/iedhQAAIo6dXf+LOr52wgJCZ+QoBjj6YtgjDNrXbLXK6XYOzmxx7RD23Tk3X61I5LtXcXkyXyj6y3D5Vl3PBS3dYxQI+AdPflVtbIQA4K78fxU7PoEbAdoiE36ZVnR/hOdPCLFchDFxyetMWAb2bYcuhzlhtBfQWwWtBvO5T23P+Ki8B0/daEBw86pFbrVCt2aHBcD2frqFs9K4RhGDyS5R/rkKAY6IrAiczzRNeBjgH0oI06S0DXqTjdOgtAITCzSi/zo3j8Z3D5iqEycR/OuwLYTLwakiMFKbOP+53qT8eUtcTR21fsCqdF6bd6s6ugcRCCJiMBtRptSnRs7kVI6kQuFIzCoHf+NSBI+gOYwIRw3ng9IiLX89WDfEniSst7MA6YS8Rgqh0QCSmrhPIVQhCKlA2GCPECYH9xRcCamjV8eHAcFbdobANTq3W5PiMcBhMmpwecePkaH44HLarg85Fwl2apC0Od5HChMLxqdfFeSBCsBeUDcYIvMBXVNcI+EJg5+SuA2pIfIdjM+ww6jbA29lBsN8UDnDYMCdFOrKYWqMjXlwspwmiDgNh2cFNrQjixj6E4bxBOGxDxSFCsJc0QkBl5wuBHR8OyqDw1VaCncvkMNimOjbC6Sdkp0M3I6z2xXFZTO/7A5wD5wurAQDX9nB4HbRY2Icw6rXxwBr7RAj2kkkIgAeEXOgQB9e02IbChzBUpwgD8agnxDHsdMvqEqVBTQ9aLv2a1OtV84CPgUFkIgR7ySwEFHhYTc1dhKhuhgrC6idEHEmPXya4Tjgxp1EXAYO84NYPYbg1g5CRcSIEu8kshDC4X4/AYU6jYxKCDUCM3K1JI0pcC45jYYgQ7GehQoAI4ACwsNbChG1CQC2Obg7SBQc2jXOiwPWrg39cG76LEOwFZZP0gVqkEA==");
            reader.HandleReceive("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nsUgQlg/1lIIZ599Nn3oQx/yP7/1rW+l888/3/+8KEQI68faCeEnP/mJPzb40Y9+5H8/duwYvfjFL071g4FxiBDWj7UTwgc/+EF63eteF3ybLsH48pe/nD772c8GW3aPCGH9WCshYLGBV7ziFbR//37/Z6DYLrzwQnrNa17jr3GzCEQI68daCeHaa6/1u0Vhht9QWwQihPVjrYTwtre9jc455xz/Z2J1O+OMM+jiiy8OQu4OEcL6sTZC+PWvf+3fKsVS4CYuv/xyetnLXpbolzPjECGsHxvnnXceFW2LcKyDBw/SS1/60lBHx8rI6B595StfCbZkB+k1XYfY6toGfjO4aFuEEA4cOECO4wTfzGAQfcUVVwTfsoP0mq5jL9rnPvc5uuaaa/zxGX6T4JZbbqFvf/vbdNttt/ljsjvuuIN6vR7deeeddNddd9H3v/99YzxF28a9995LRduqdTWQXtN17EVD5QMR4On9t771Lep2u74A4Ph33323/zwHP9bx4x//mO655x7f8KzHFFeRtvGzn/2MirZVFILpOvaiXXnllXT99ddTp9PxRfC9733Pr/UhADj8fffd578J/MADD/g3LX76058a4ynaNra3t6loW0UhmK5jL5rrunTzzTfT8ePH/ZYAIkALgFoWjg8new==");
            reader.HandleReceive("8MEHfcOv2OAXhB5++GFjXEXaxqOPPkpF2yoKwXQde9EOHz7sjwvQGqA7hJaARcCOD0fDC5C4YfGrX/3KN1NcRdrGcDikom0VhWC6jr1oV199td8aIE8w6MQYACJACwABwPnhaJggdfLkSTr5nWtp35UZ8+++m+ndjZvpPtM+z45/6TB9+rvqtgAAIgAAAAAAD3vpSONrdOQ+dZvJhvT/2gemhXwKu1AAAAAASUVORK5CYII=");
            reader.HandleReceive("AAAAAAEAAAAP");
            reader.HandleReceive("AAB5AQQAAAARiHaEqmNV52GW5Fk+lBPKaT91BAC8oBq42C4F9TFo31+JNSOYrHlYxD1fXAUyMjM4MgCJoGhK1J5DSmLJlt9pfpQTSmW2hQQAiUC3cCC4y0pi0b8AgypHN5D+W3XCrNEbfaIy+2ArwP5/AIkZCFrStYOqYqOEj9JKjwAgAAAAAAAAEQAAAQADACAgAAABACAAqBAAADYAAABAQAAAAQAgAChCAADeEAAAEBAAAAEAIABoBAAABlMAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaHtygWl3coFqH3KBan9ygWszcoFrM3KBazNygWszcoFqf3KBah9ygWl3coFoeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ3KBactygWs/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFrM3KBabwAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaWtygWufcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa4dygWlEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9ygWpPcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWn4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFp+3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaNtygWvzcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa9tygWh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFqf3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBagQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdygWv3coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr0AAAAAAAAAAAAAAAAAAAAAAAAAADcoFpS3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFogAAAAAAAAAAAAAAAAAAAAANygWoXcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWlsAAAAAAAAAAAAAAAAAAAAA3KBaptygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBaggAAAAAAAAAAAAAAAAAAAADcoFrA3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFqiAAAAAAAAAAAAAAAAAAAAANygWuTepmT63KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWs8AAAAAAAAAAAAAAADcoFoM3KBa/+jBk/ncoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/ep2X33KBa8wAAAAAAAAAAAAAAANygWjDcoFr/+e/i/+Gtcf/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/5beD/+a8i/TcoFr/3KBaGwAAAAAAAAAA3KBaUd2iXvb//v3/9+nY/9yhXP/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/92jYP/68uj/79W1/tygWv/coFo8AAAAAAAAAADcoFpv4a5y6P//////////8tvB/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/do2D/9eTQ///////26Nb/3KBa/9ygWl0AAAAAAAAAAN6nZpjowJLn////////////////893F/96kYv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/36ho//bl0v////////////379//coFv936lphAAAAAAAAAAA4KpruO7Qru//////////////////////+vHn+d2iXfDcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/96lYuj89/H//////////////////////9+oaPPhrXGoAAAAAAAAAADgq23M9ODJ+f/////////////////////js3q73KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/+i/kLP/////////////////////47R98OKwdr8AAAAAAAAAAOCrbd347N7/////////////////5ryLuNygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFrm3KBam9ygWqHcoFru3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/+3PrLL////////////////nv4/z4rF40QAAAAAAAAAA4Kps6fv07P///////////+rHnrLcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFrz3KBabwAAAAAAAAAAAAAAAAAAAAncoFqH3KBa/NygWv/coFr/3KBa/9ygWv/coFr/3KBa+fLbwK7//////////+zLpffisnjdAAAAAAAAAADgq23t/fn1///////pxZmv3KBa/NygWv/coFr/3KBa/9ygWv/coFr/3KBatNygWh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFot3KBazNygWv/coFr/3KBa/9ygWv/coFr/3KBa9u7SsLD/////79W2++OyeuMAAAAAAAAAAOGtceLy3cPq4rB1u9ygWv/coFr/3KBa/9ygWv/coFr83KBapdygWjYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaRdygWrfcoFr/3KBa/9ygWv/coFr/3KBa/+KxeMLktoHr4rF30wAAAAAAAAAA3KBak9ygWv/coFr/3KBa/9ygWvbcoFq03KBaddygWhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWircoFp73KBavdygWvzcoFr/3KBa/9ygWv/coFp+AAAAAAAAAAAAAAAA3KBaLdygWjPcoFoeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWiTcoFoz3KBaJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==");
            reader.HandleReceive("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////wAP//wAA//wAAD/4AAAf8AAAD+AAAAfgAAAH4AAAB8AAAAPAAAADwAAAA8AAAAPAAAADgAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAA8ABgAfgAYAf+AGAf/4Bx///4////////////////ygAAABAAAAAgAAAAAEAIAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaJNygWlHcoFpm3KBaZtygWnvcoFqZ3KBamdygWpncoFqZ3KBae9ygWmbcoFpm3KBaTtygWiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFoV3KBaY9ygWpncoFrM3KBa9tygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa9tygWsncoFqZ3KBaXdygWhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaG9ygWnLcoFq93KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBat9ygWmncoFoYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFok3KBaotygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/NygWpncoFobAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWh7coFqc3KBa/NygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa9tygWpDcoFoSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWmncoFr23KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa7dygWk4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtygWqvcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBahwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdygWsDcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFqcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9ygWrHcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWg==");
            reader.HandleReceive("/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBahwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaftygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFpLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaLdygWvncoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa5NygWgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWrTcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFp+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWjDcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa6gAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFqQ3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFpUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBa69ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBaugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaK9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWvoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWnrcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBaJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFqq3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaztygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFqVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWurcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBaugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWgzcoFr93KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWt8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFo53KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr83KBaDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaZtygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWjkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWorcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFpdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFq33KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coA==");
            reader.HandleReceive("Wv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFqEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFre3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBaqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG3KBa/NygWv/hrG/73aNg/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/92jX//coFr/3KBa/9ygWtUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaKtygWv/coFr/6cSY/+nEmP/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/luYb/3KBa/9ygWv/coFr5AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWlTcoFr/3KBa//DXuf/68uj/3aJe/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/hrXH/897G/9ygWv/coFr/3KBa/9ygWiEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFp73KBa/9ygWv/469z//////+zNqP/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/9ePO//v17v/coFr/3KBa/9ygWv/coFpIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBamdygWv/doV39/vz5///////+/Pn/4rB1/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/6cOW////////////4Kpr/9ygWv/coFr/3KBaZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWrfcoFr/4rJ4+v////////////////jt4P/do2D/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/4a9z//379////////////+e+jv/coFr/3KBa/9ygWoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFrY3KBa/+nDl/7/////////////////////9OLN/9yhXP/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/36ho//ry6P/////////////////tz6z/3KBa/9ygWv/coFqfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBa9tygWv/v07P////////////////////////////x2r//3KFc/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3qdm//js3v//////////////////////9OHL/9ygWv/coFr/3KBavQAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaD9ygWv/coFr/9ePO//////////////////////////////////Thy//dol7/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/4Ktt//nv5P////////////////////////////ry6P/coFr/3KBa/9ygWtgAAAAAAAAAAAAAAAAAAAAAAAAAANygWi3coFr/3KBa//rz6v//////////////////////////////////////+e7i/+Kxd//coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/576O//z38f//////////////////////////////////////3qRh/tygWv/coFr2AAAAAAAAAAAAAAAAAAAAAAAAAADcoFpF3KBa/92jYPz//v3////////////////////////////////////////////+/fv/7c6q/9yhW/7coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/epWL9893F/////////////////////////////////////////////////+S1f//coFr/3KBa/9ygWhIAAAAAAAAAAAAAAAAAAAAA3KBaXdygWv/hr3T5//////////////////////////////////////////////////////37+Nrdol3Z3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/4axvr/////L////////////////////////////////////////////////pw5b/3KBa/9ygWv/coFoqAAAAAAAAAAAAAAAAAAAAANygWmzcoFr/5ruJ+////////////////////////////////////////////////////+bepmW+3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/mvIqU////+///////////////////////////////////////////7tGv/9ygWv/coFr/3KBaPAAAAAAAAAAAAAAAAAAAAADcoFp+3KBa/+rHnv////////////////////////////////////////////////fjsnmm3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/O/VtZP///////////////////////////////////////////Pdxf/coFr/3KBa/9ygWk4AAAAAAAAAAAAAAAAAAAAA3KBakNygWv/v0rH////////////////////////////////////////////nv5Cc3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coA==");
            reader.HandleReceive("Wv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWvD148+b//////////////////////////////////////fq2v/coFr/3KBa/9ygWmAAAAAXbgAAAAAAEQAAAAAAAAAAAAAAAAAA3KBaltygWv/z3cX//////////////////////////////////////+zKpJjcoFr83KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFrq3KBaX9ygWjPcoFo53KBaM9ygWjPcoFqF3KBa/NygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa5/fp2Z7////////////////////////////////89/H/3KBa/9ygWv/coFppAAAAAAAAAAAAAAAAAAAAANygWqLcoFr/9ubU/////////////////////////////////+3PrJXcoFr53KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFqu3KBaFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWjzcoFre3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFrh+e/jov///////////////////////////////9yhXP/coFr/3KBabwAAAAAAAAAAAAAAAAAAAADcoFql3KBa//js3v////////////////////////////DWuJrcoFr23KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWvDcoFpgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaDNygWpncoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWtj78+us///////////////////////////fqGj93KBa/9ygWngAAAAAAAAAAAAAAAAAAAAA3KBapdygWv/68uj//////////////////////+/Ts5vcoFr23KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWpzcoFoYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaNtygWszcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa2/fr26f/////////////////////4a1x/tygWv/coFp1AAAAAAAAAAAAAAAAAAAAANygWpncoFr//Pfx////////////////9+nDl5jcoFr83KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBaydygWjYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaY9ygWufcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFrn897GnP///////////////+Kxd//coFr/3KBaaQAAAAAAAAAAAAAAAAAAAADcoFqQ3KBa//v07P////////793OKwdaLcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFrG3KBaSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG3KBaYNygWs/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWvbnvYyc////5v79+//epWP+3KBa/9ygWmAAAAAAAAAAAAAAAAAAAAAA3KBae9ygWv/nvYzx6sWbt9yhW9TcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/NygWqvcoFo/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaP9ygWq7coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9yhW+bepWPx3KBa/9ygWv/coFpIAAAAAAAAAAAAAAAAAAAAANygWk7coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFrM3KBaddygWhUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaJNygWorcoFrb3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBaIQAAAAAAAAAAAAAAAAAAAADcoFob3KBa29ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFre3KBapdygWmPcoFoYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWhvcoFpa3KBapdygWuTcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBawwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAncoFoz3KBaYNygWmbcoFpm3KBaNtygWjMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3KBaD9ygWjPcoFpC3KBaZtygWmbcoFpX3KBaMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==");
            reader.HandleReceive("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////+AAf//////8AAAD/////+AAAAB/////gAAAAB////4AAAAAB////AAAAAAD///4AAAAAAH///AAAAAAAP//4AAAAAAAf//AAAAAAAA//4AAAAAAAB//gAAAAAAAH/8AAAAAAAAf/wAAAAAAAA//AAAAAAAAD/4AAAAAAAAP/gAAAAAAAAf+AAAAAAAAB/4AAAAAAAAH/gAAAAAAAAf8AAAAAAAAB/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAA/gAAAAAAAAD+AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB+AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB8AAAAAAAAAHwAAAAAAAAAfAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAH4AAAA8AAAB/wAAADwAAAP/wAAAPAAAD//wAAA8AAA///wAADwAAP///wAAPAAD////wAA8AB/////4AH8D//////+A///////////////////////////////////////////////////////////////////////////ygAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcoFoh3KBaM9ygWmPcoFpj3KBaM9ygWh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANygWkvcoFq93KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBautygWkgAAAAAAAAAAAAAAAAAAAAAAAAAANygWofcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBaeAAAAAAAAAAAAAAAANygWjPcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWvzcoFoqAAAAAAAAAADcoFrC3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBaswAAAAAAAAAA3KFb5tygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWtkAAAAAAAAAAN2kYencoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coVzuAAAAAOvHnxjktX/a3qZk/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/fqGj/3qZk6fDWuA7szahV7c+r3/Tizf/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coFr/3KBa/9ygWv/coVz/9ubU/+W3gt7v07NI7c6qh/Xl0u//////89/H/9yhXPjcoFr/3KBa/9ygWv/coFr/3KBa/9ygWv/dol329OLN///////tzqrj7tKxge7Qran68uj8/////+a6iLvcoFr/3KBa/9ygWv/coFrm3KBa6tygWv/coFr/3KBa/+jClLn/////9ODJ7+/Tsqfu0a/J/vz5/+nDlrjcoFr/3KBa/9ygWtXcoFpRAAAAAAAAAADcoFpd3KBa3tygWv/coFr/68ifuvjr3P/w1rjF7MymjOCrbdzcoFrz3KBawNygWmMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAbcoFps3KBaw9ygWvbepGLs7c+segAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAPgfAADgBwAAwAMAAIABAACAAQAAgAEAAIABAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAfgAAD//wAA//8AAA==");
            reader.HandleReceive("AAAAAAEAAAAR");

            frames.Count.Is(12);
            frames[0].ToString().Is(@"ID: 0, Type: Settings, Length:18, IsACK: False, Settings: { 
MaxConcurrentStream: 128
InitialWindowSize: 65536
MaxFrameSize: 16777215 }");
            frames[1].ToString().Is(@"ID: 0, Type: WindowUpdate, Length:4, Increment: 2147418112");
            frames[2].ToString().Is(@"ID: 0, Type: Settings, Length:0, IsACK: True, Settings: {  }");
            frames[3].ToString().Is(@"ID: 15, Type: Headers, Length:118, IsEndStream: False, IsEndHeaders: True");
            frames[4].ToString().Is(@"ID: 15, Type: Data, Length:8192, IsEndStream: False");
            frames[5].ToString().Is(@"ID: 15, Type: Data, Length:34, IsEndStream: False");
            frames[6].ToString().Is(@"ID: 15, Type: Data, Length:0, IsEndStream: True");
            frames[7].ToString().Is(@"ID: 17, Type: Headers, Length:121, IsEndStream: False, IsEndHeaders: True");
            frames[8].ToString().Is(@"ID: 17, Type: Data, Length:8192, IsEndStream: False");
            frames[9].ToString().Is(@"ID: 17, Type: Data, Length:8192, IsEndStream: False");
            frames[10].ToString().Is(@"ID: 17, Type: Data, Length:5998, IsEndStream: False");
            frames[11].ToString().Is(@"ID: 17, Type: Data, Length:0, IsEndStream: True");
        }
Beispiel #7
0
        public static void HandleReceive(this Http2FrameReader reader, string base64)
        {
            var value = base64.FromBase64();

            reader.HandleReceive(value, value.Length);
        }