Feel free to share demo-related thoughts here.
If you have technical questions, please create a support ticket in the DevExpress Support Center.
Thank you for the feedback!
If you have technical questions, please create a support ticket in the DevExpress Support Center.
Backend API
@model SpreadsheetDocumentContentFromStream
<div class="button-container">
<div id="button-save"></div>
</div>
<script type="text/javascript">
$("#button-save").dxButton({
icon: "save",
type: "normal",
text: "Save copy to a Stream",
onClick: function (e) {
var spreadsheetState = spreadsheet.getSpreadsheetState();
$.ajax({
type: 'POST',
url: '@Url.Action("SaveToStream")',
data: { spreadsheetState: spreadsheetState }
});
}
});
</script>
@(Html.DevExpress()
.Spreadsheet("spreadsheet")
.Height("500px")
.Width("100%")
.ConfirmOnLosingChanges(confirm => confirm.Enabled(false))
.DocumentRequestHandlerUrl(Url.Action("DxDocumentRequest"))
.Open(@Model.DocumentId, DocumentFormat.Xlsx, @Model.ContentAccessorByStream)
)
using System;
using System.IO;
using System.Linq;
using System.Text;
using DevExpress.AspNetCore.Spreadsheet;
using DevExpress.Spreadsheet;
using DevExpress.XtraSpreadsheet.Export;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
namespace AspNetCoreDemos.Spreadsheet {
[Route("[action]")]
public class SpreadsheetController : Controller {
public ActionResult FromStream() {
string documentName = "Invoice";
string documentId = Path.Combine(DirectoryManagmentUtils.GetDocumentSampleFolderPath(HttpContext), documentName);
Func<Stream> contentAccessorByStream = () => DocumentDatabaseMock.GetDocumentContentStream(documentName);
var viewmodel = new SpreadsheetDocumentContentFromStream(documentId, contentAccessorByStream);
return View(viewmodel);
}
[HttpPost]
public void SaveToStream(SpreadsheetClientState spreadsheetState) {
var spreadsheet = SpreadsheetRequestProcessor.GetSpreadsheetFromState(spreadsheetState);
string documentId = spreadsheet.DocumentId;
using(var stream = new MemoryStream()) {
spreadsheet.SaveCopy(stream, DocumentFormat.Xlsx);
DocumentDatabaseMock.SaveDocument(documentId, stream);
}
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
namespace AspNetCoreDemos.Spreadsheet {
public class DocumentDatabaseMock {
static readonly Dictionary<string, byte[]> docSamples = new Dictionary<string, byte[]>{
{ "SportResults", DocumentSamples.SportResults },
{ "Invoice", DocumentSamples.Invoice },
};
public static byte[] GetDocumentContentBytes(string documentId) {
return docSamples.ContainsKey(documentId) ? docSamples[documentId] : null;
}
public static Stream GetDocumentContentStream(string documentId) {
return new MemoryStream(GetDocumentContentBytes(documentId));
}
internal static void SaveDocument(string documentId, byte[] documentContent) {
// Put your implementation here
}
internal static void SaveDocument(string documentId, MemoryStream stream) {
// Put your implementation here
}
}
}
namespace AspNetCoreDemos.Spreadsheet {
public static class DocumentSamples {
public static readonly byte[] SportResults = new byte[] { 80, 75, 3, 4, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 102, 179, 189, 205, 155, 5, 0, 0, 252, 27, 0, 0, 19, 0, 0, 0, 120, 108, 47, 116, 104, 101, 109, 101, 47, 116, 104, 101, 109, 101, 49, 46, 120, 109, 108, 237, 89, 77, 111, 219, 54, 24, 254, 43, 132, 238, 173, 44, 91, 114, 157, 160, 110, 17, 59, 118, 187, 181, 105, 131, 196, 235, 208, 35, 45, 211, 18, 107, 74, 20, 72, 58, 169, 111, 67, 123, 28, 48, 96, 88, 55, 236, 50, 96, 183, 29, 134, 109, 5, 90, 96, 135, 117, 216, 143, 201, 214, 97, 235, 128, 252, 133, 189, 146, 101, 139, 178, 169, 38, 105, 179, 47, 44, 57, 216, 34, 245, 188, 223, 31, 124, 233, 28, 255, 240, 211, 213, 235, 15, 35, 134, 14, 136, 144, 148, 199, 109, 203, 185, 92, 179, 16, 137, 125, 62, 162, 113, 208, 182, 166, 106, 124, 169, 101, 93, 191, 118, 21, 111, 170, 144, 68, 4, 1, 56, 150, 155, 184, 109, 133, 74, 37, 155, 182, 45, 125, 216, 198, 242, 50, 79, 72, 12, 239, 198, 92, 68, 88, 193, 82, 4, 246, 72, 224, 67, 96, 18, 49, 187, 94, 171, 53, 237, 8, 211, 216, 66, 49, 142, 72, 219, 186, 59, 30, 83, 159, 160, 65, 202, 210, 90, 50, 239, 49, 248, 136, 149, 76, 55, 124, 38, 246, 253, 76, 162, 78, 145, 97, 71, 19, 39, 253, 146, 51, 217, 101, 2, 29, 96, 214, 182, 64, 206, 136, 31, 14, 200, 67, 101, 33, 251, 218, 85, 123, 9, 98, 170, 2, 187, 192, 229, 128, 209, 164, 158, 225, 68, 48, 92, 2, 157, 190, 187, 113, 101, 187, 96, 88, 159, 51, 92, 7, 246, 122, 189, 110, 207, 41, 56, 102, 8, 236, 251, 96, 139, 179, 6, 118, 251, 45, 167, 179, 228, 170, 161, 230, 143, 235, 220, 187, 53, 175, 230, 174, 16, 104, 18, 26, 107, 4, 27, 157, 78, 199, 219, 40, 19, 52, 10, 2, 119, 141, 160, 85, 107, 186, 91, 245, 50, 129, 91, 16, 120, 235, 54, 116, 182, 186, 221, 102, 153, 192, 43, 8, 154, 107, 4, 253, 43, 27, 77, 119, 133, 32, 67, 133, 140, 198, 147, 53, 120, 13, 254, 250, 253, 5, 124, 137, 25, 115, 118, 211, 136, 111, 1, 190, 85, 91, 224, 11, 152, 173, 229, 209, 156, 65, 172, 170, 178, 42, 194, 15, 184, 232, 3, 32, 139, 50, 86, 52, 70, 106, 150, 144, 49, 246, 1, 215, 197, 209, 80, 80, 156, 73, 192, 155, 4, 107, 175, 242, 61, 95, 174, 239, 165, 226, 144, 244, 5, 77, 84, 219, 122, 55, 193, 144, 254, 5, 230, 248, 197, 55, 199, 47, 158, 161, 227, 23, 79, 143, 30, 61, 63, 122, 244, 253, 209, 227, 199, 71, 143, 190, 51, 81, 222, 196, 113, 160, 83, 190, 250, 234, 227, 63, 190, 248, 0, 253, 254, 236, 203, 87, 79, 62, 173, 32, 144, 58, 193, 47, 223, 126, 248, 243, 143, 159, 84, 32, 149, 142, 124, 249, 217, 211, 95, 159, 63, 125, 249, 249, 71, 191, 125, 253, 196, 132, 223, 18, 120, 168, 227, 7, 52, 34, 18, 221, 33, 135, 104, 143, 71, 169, 125, 6, 17, 100, 40, 206, 72, 50, 8, 49, 45, 145, 224, 16, 160, 38, 100, 79, 133, 37, 228, 157, 25, 102, 70, 96, 135, 148, 125, 120, 79, 64, 23, 48, 34, 111, 76, 31, 148, 244, 221, 15, 197, 84, 81, 19, 242, 86, 24, 149, 144, 59, 156, 179, 14, 23, 102, 155, 110, 101, 226, 52, 155, 166, 113, 80, 33, 95, 76, 117, 224, 30, 198, 7, 70, 241, 221, 149, 40, 247, 166, 9, 100, 54, 53, 50, 237, 134, 164, 164, 234, 46, 131, 192, 227, 128, 196, 68, 161, 244, 29, 159, 16, 98, 162, 187, 79, 105, 201, 191, 59, 212, 23, 92, 242, 177, 66, 247, 41, 234, 96, 106, 118, 204, 128, 14, 149, 153, 234, 38, 141, 32, 64, 51, 163, 142, 16, 245, 146, 135, 118, 238, 161, 14, 103, 70, 1, 219, 228, 160, 12, 133, 10, 193, 204, 200, 148, 176, 146, 55, 111, 224, 169, 194, 145, 89, 107, 28, 49, 29, 122, 27, 171, 208, 168, 232, 254, 76, 248, 37, 199, 75, 5, 65, 15, 8, 227, 168, 55, 34, 82, 26, 137, 238, 138, 89, 73, 229, 91, 24, 90, 148, 57, 3, 118, 216, 44, 42, 67, 133, 162, 19, 35, 244, 54, 230, 92, 135, 110, 243, 73, 55, 196, 81, 98, 214, 155, 198, 161, 14, 126, 71, 78, 32, 99, 49, 218, 229, 202, 172, 7, 47, 215, 76, 186, 134, 128, 224, 184, 58, 242, 247, 40, 81, 103, 44, 246, 247, 104, 16, 154, 147, 37, 125, 51, 21, 198, 26, 33, 188, 92, 163, 51, 54, 198, 36, 94, 28, 0, 165, 86, 30, 209, 248, 117, 125, 157, 81, 104, 236, 23, 125, 125, 165, 175, 111, 193, 97, 103, 172, 167, 213, 110, 94, 9, 252, 143, 246, 240, 109, 60, 141, 119, 73, 90, 39, 23, 45, 252, 162, 133, 95, 180, 240, 215, 84, 248, 95, 209, 184, 139, 94, 109, 235, 211, 122, 198, 39, 170, 28, 221, 199, 148, 177, 125, 53, 99, 228, 182, 204, 186, 188, 4, 19, 71, 125, 216, 204, 22, 25, 209, 242, 170, 144, 132, 240, 184, 144, 87, 2, 6, 2, 103, 207, 72, 112, 245, 62, 85, 225, 126, 136, 19, 144, 227, 100, 34, 2, 153, 243, 14, 36, 74, 184, 132, 43, 138, 85, 201, 60, 187, 207, 82, 176, 58, 219, 243, 210, 203, 76, 238, 11, 137, 213, 14, 31, 205, 247, 27, 181, 229, 11, 91, 99, 148, 173, 2, 169, 139, 106, 164, 44, 78, 43, 174, 113, 229, 109, 197, 57, 115, 228, 41, 229, 57, 94, 133, 60, 239, 245, 242, 108, 205, 167, 80, 70, 8, 167, 191, 54, 56, 205, 122, 174, 166, 244, 49, 35, 163, 212, 251, 115, 214, 138, 50, 178, 71, 124, 149, 243, 91, 196, 234, 220, 227, 38, 67, 60, 34, 121, 224, 28, 179, 101, 78, 227, 180, 158, 108, 157, 236, 72, 77, 222, 70, 227, 109, 229, 157, 38, 114, 186, 64, 183, 74, 160, 119, 30, 161, 171, 157, 20, 58, 123, 189, 114, 89, 92, 94, 161, 67, 80, 211, 171, 123, 22, 242, 113, 210, 182, 198, 48, 191, 193, 99, 148, 0, 123, 153, 118, 54, 204, 130, 184, 109, 249, 42, 183, 237, 196, 186, 95, 245, 64, 69, 242, 58, 181, 106, 15, 148, 132, 36, 66, 170, 109, 44, 195, 57, 89, 246, 106, 249, 51, 80, 92, 152, 80, 247, 220, 148, 221, 249, 216, 96, 234, 93, 167, 212, 163, 209, 114, 254, 81, 61, 236, 213, 8, 147, 241, 24, 50, 163, 98, 167, 88, 230, 239, 248, 84, 17, 177, 31, 142, 14, 209, 144, 77, 197, 30, 6, 205, 221, 121, 206, 141, 168, 132, 211, 165, 190, 88, 8, 168, 94, 55, 79, 199, 114, 87, 200, 171, 99, 245, 199, 166, 188, 106, 48, 75, 66, 156, 247, 175, 150, 158, 1, 115, 124, 246, 188, 84, 34, 91, 105, 250, 217, 21, 202, 191, 161, 45, 141, 115, 180, 197, 251, 63, 219, 146, 166, 47, 76, 201, 141, 81, 118, 157, 131, 217, 65, 96, 148, 230, 105, 219, 226, 66, 133, 28, 250, 81, 18, 82, 191, 47, 96, 218, 200, 132, 129, 98, 8, 106, 35, 107, 96, 44, 253, 73, 60, 85, 150, 28, 44, 26, 154, 189, 96, 50, 111, 127, 65, 168, 246, 104, 128, 4, 133, 30, 168, 66, 65, 200, 174, 202, 45, 61, 129, 155, 179, 232, 151, 121, 121, 228, 156, 242, 142, 179, 84, 88, 38, 243, 239, 33, 57, 32, 108, 144, 22, 113, 51, 117, 129, 133, 194, 101, 91, 201, 125, 145, 1, 87, 3, 103, 155, 106, 108, 24, 244, 255, 205, 19, 147, 91, 53, 49, 157, 48, 82, 20, 162, 220, 179, 76, 48, 174, 126, 8, 104, 103, 195, 198, 219, 106, 113, 198, 227, 184, 94, 97, 118, 221, 59, 253, 113, 156, 192, 133, 7, 165, 31, 208, 200, 169, 240, 89, 49, 31, 15, 120, 118, 6, 23, 3, 41, 164, 228, 165, 86, 94, 138, 203, 205, 33, 104, 221, 210, 237, 75, 121, 253, 157, 243, 87, 17, 150, 86, 85, 22, 156, 235, 32, 171, 249, 191, 81, 229, 255, 19, 4, 190, 185, 255, 61, 131, 251, 189, 51, 121, 223, 94, 47, 102, 91, 187, 42, 101, 171, 149, 127, 173, 45, 118, 174, 253, 9, 80, 75, 3, 4, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 35, 59, 28, 117, 107, 2, 0, 0, 58, 13, 0, 0, 13, 0, 0, 0, 120, 108, 47, 115, 116, 121, 108, 101, 115, 46, 120, 109, 108, 205, 87, 221, 110, 155, 48, 20, 126, 21, 203, 247, 171, 3, 33, 85, 55, 1, 85, 213, 13, 105, 210, 212, 155, 238, 98, 183, 6, 12, 177, 228, 31, 100, 156, 42, 233, 171, 237, 98, 143, 180, 87, 152, 177, 157, 64, 218, 144, 53, 180, 89, 7, 23, 216, 135, 243, 125, 231, 199, 199, 199, 240, 251, 231, 175, 248, 122, 205, 25, 120, 32, 170, 165, 82, 36, 48, 184, 152, 65, 64, 68, 33, 75, 42, 234, 4, 174, 116, 245, 225, 10, 94, 167, 113, 171, 55, 140, 220, 47, 9, 209, 192, 232, 139, 54, 129, 75, 173, 155, 79, 8, 181, 197, 146, 112, 220, 94, 200, 134, 8, 243, 166, 146, 138, 99, 109, 166, 170, 70, 109, 163, 8, 46, 219, 14, 196, 25, 10, 103, 179, 75, 196, 49, 21, 48, 141, 43, 41, 116, 11, 10, 185, 18, 58, 129, 11, 47, 48, 70, 30, 193, 3, 102, 198, 137, 0, 2, 148, 198, 2, 115, 226, 4, 183, 152, 209, 92, 81, 43, 173, 48, 167, 108, 227, 228, 161, 149, 88, 23, 188, 38, 167, 66, 42, 43, 69, 142, 243, 32, 115, 33, 153, 84, 64, 213, 121, 2, 179, 108, 241, 177, 187, 143, 88, 60, 133, 255, 234, 52, 126, 240, 141, 214, 75, 61, 206, 55, 191, 124, 206, 247, 249, 102, 102, 174, 105, 124, 135, 226, 119, 215, 212, 248, 237, 163, 53, 118, 40, 99, 251, 75, 106, 4, 105, 220, 96, 173, 137, 18, 153, 153, 0, 63, 254, 190, 105, 72, 2, 133, 20, 196, 243, 88, 197, 191, 168, 215, 10, 111, 130, 112, 113, 2, 162, 149, 140, 150, 157, 31, 245, 237, 72, 180, 104, 128, 125, 37, 235, 96, 141, 223, 144, 245, 139, 189, 198, 89, 237, 195, 228, 62, 151, 170, 52, 27, 120, 155, 253, 0, 110, 69, 22, 233, 223, 154, 85, 39, 140, 221, 119, 251, 248, 71, 181, 211, 189, 52, 186, 235, 10, 136, 21, 207, 184, 254, 90, 38, 208, 20, 86, 183, 162, 219, 161, 49, 224, 135, 142, 198, 79, 208, 56, 106, 222, 163, 194, 125, 84, 26, 155, 162, 170, 5, 39, 66, 131, 165, 84, 244, 209, 32, 186, 154, 98, 164, 50, 37, 107, 90, 144, 166, 69, 55, 47, 140, 2, 241, 69, 182, 174, 198, 45, 133, 163, 150, 142, 249, 23, 245, 168, 249, 203, 252, 59, 234, 79, 208, 51, 7, 39, 71, 62, 129, 57, 154, 198, 140, 134, 139, 239, 74, 97, 80, 5, 65, 52, 173, 12, 214, 213, 107, 234, 193, 195, 131, 127, 89, 24, 206, 100, 56, 177, 66, 60, 220, 72, 113, 211, 176, 205, 205, 214, 235, 99, 65, 188, 212, 233, 183, 181, 234, 82, 55, 189, 98, 189, 205, 232, 140, 155, 98, 103, 226, 61, 194, 114, 54, 239, 86, 60, 39, 42, 179, 223, 44, 22, 118, 70, 79, 162, 131, 158, 44, 206, 216, 27, 118, 38, 222, 35, 172, 115, 38, 120, 118, 208, 147, 209, 230, 100, 109, 102, 82, 76, 243, 224, 121, 251, 161, 162, 244, 200, 255, 160, 19, 157, 116, 0, 236, 122, 191, 61, 9, 246, 62, 2, 118, 82, 208, 125, 4, 38, 240, 174, 91, 51, 54, 200, 98, 190, 162, 76, 83, 209, 55, 252, 167, 8, 55, 14, 250, 182, 62, 174, 20, 238, 135, 127, 88, 105, 62, 104, 124, 163, 74, 209, 96, 75, 143, 42, 45, 6, 101, 137, 134, 103, 161, 201, 70, 185, 238, 143, 65, 23, 151, 198, 185, 249, 213, 217, 75, 144, 123, 129, 250, 159, 160, 244, 15, 80, 75, 3, 4, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 161, 169, 69, 88, 241, 0, 0, 0, 168, 1, 0, 0, 15, 0, 0, 0, 120, 108, 47, 119, 111, 114, 107, 98, 111, 111, 107, 46, 120, 109, 108, 141, 80, 49, 110, 195, 48, 16, 251, 138, 160, 189, 145, 227, 161, 40, 12, 219, 89, 50, 52, 91, 208, 161, 153, 85, 233, 108, 29, 98, 233, 12, 73, 174, 211, 183, 117, 232, 147, 250, 133, 42, 50, 140, 186, 91, 39, 145, 20, 65, 222, 221, 247, 231, 87, 125, 184, 217, 129, 189, 131, 15, 72, 174, 225, 251, 93, 193, 25, 56, 69, 26, 93, 223, 240, 41, 118, 15, 79, 252, 208, 214, 51, 249, 235, 27, 209, 149, 37, 183, 11, 149, 111, 184, 137, 113, 172, 132, 8, 202, 128, 149, 97, 71, 35, 184, 244, 215, 145, 183, 50, 38, 234, 123, 65, 93, 135, 10, 142, 164, 38, 11, 46, 138, 178, 40, 30, 133, 135, 65, 198, 212, 20, 12, 142, 129, 47, 105, 255, 201, 10, 163, 7, 169, 131, 1, 136, 118, 88, 162, 172, 68, 199, 219, 250, 62, 213, 43, 194, 28, 126, 135, 188, 83, 118, 187, 160, 211, 52, 55, 60, 45, 244, 177, 193, 115, 134, 23, 212, 209, 108, 248, 51, 96, 111, 98, 22, 68, 91, 139, 77, 104, 238, 92, 95, 230, 164, 133, 134, 191, 64, 152, 134, 152, 230, 207, 226, 73, 167, 187, 113, 230, 43, 76, 192, 159, 244, 62, 103, 108, 253, 103, 66, 247, 199, 94, 110, 236, 229, 82, 185, 246, 40, 57, 168, 179, 207, 210, 186, 79, 251, 3, 80, 75, 3, 4, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 148, 106, 153, 191, 176, 1, 0, 0, 54, 4, 0, 0, 20, 0, 0, 0, 120, 108, 47, 115, 104, 97, 114, 101, 100, 83, 116, 114, 105, 110, 103, 115, 46, 120, 109, 108, 117, 148, 207, 142, 211, 48, 16, 198, 95, 101, 148, 59, 77, 218, 69, 8, 161, 52, 171, 54, 36, 168, 21, 237, 86, 73, 129, 189, 78, 147, 217, 196, 138, 255, 84, 182, 131, 154, 125, 35, 158, 129, 3, 18, 47, 180, 175, 176, 46, 244, 128, 226, 112, 244, 247, 179, 199, 243, 205, 120, 252, 242, 243, 87, 124, 127, 17, 28, 190, 147, 54, 76, 201, 101, 48, 159, 69, 1, 144, 172, 84, 205, 100, 179, 12, 122, 251, 244, 230, 125, 112, 159, 196, 198, 88, 112, 27, 165, 89, 6, 173, 181, 231, 15, 97, 104, 170, 150, 4, 154, 153, 58, 147, 116, 228, 73, 105, 129, 214, 45, 117, 19, 154, 179, 38, 172, 77, 75, 100, 5, 15, 23, 81, 244, 46, 20, 200, 100, 224, 194, 176, 36, 182, 73, 246, 120, 44, 178, 93, 6, 197, 42, 221, 236, 63, 193, 34, 154, 191, 141, 67, 155, 196, 225, 21, 255, 221, 82, 100, 229, 151, 207, 199, 114, 44, 31, 31, 14, 48, 143, 198, 106, 105, 81, 91, 216, 171, 217, 24, 124, 212, 204, 57, 243, 98, 99, 69, 48, 159, 84, 23, 147, 234, 221, 88, 61, 40, 38, 173, 241, 99, 220, 116, 47, 202, 77, 255, 79, 28, 95, 245, 164, 173, 106, 37, 148, 130, 217, 118, 76, 118, 120, 129, 3, 105, 61, 140, 193, 74, 90, 37, 7, 72, 81, 187, 70, 249, 53, 80, 39, 114, 53, 43, 137, 215, 74, 122, 71, 57, 74, 216, 245, 166, 27, 131, 181, 58, 65, 129, 210, 40, 65, 94, 15, 80, 192, 55, 231, 198, 61, 164, 49, 202, 53, 202, 14, 182, 88, 117, 198, 191, 235, 122, 110, 171, 116, 141, 30, 89, 147, 132, 162, 55, 150, 121, 105, 228, 120, 210, 236, 153, 41, 216, 161, 124, 86, 146, 141, 121, 218, 246, 85, 7, 57, 51, 19, 198, 87, 178, 30, 32, 71, 173, 137, 79, 162, 148, 163, 246, 46, 188, 230, 14, 165, 18, 98, 194, 221, 173, 206, 107, 214, 52, 62, 227, 116, 129, 35, 213, 100, 58, 47, 201, 63, 45, 205, 177, 231, 126, 142, 25, 231, 3, 124, 101, 21, 57, 119, 147, 169, 172, 93, 69, 107, 223, 64, 170, 206, 131, 102, 77, 107, 225, 247, 15, 200, 46, 86, 147, 32, 215, 175, 202, 141, 50, 108, 100, 53, 155, 158, 180, 85, 154, 193, 225, 97, 179, 247, 167, 205, 61, 68, 102, 217, 191, 61, 11, 221, 63, 144, 188, 2, 80, 75, 3, 4, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 237, 24, 18, 227, 104, 9, 0, 0, 123, 58, 0, 0, 24, 0, 0, 0, 120, 108, 47, 119, 111, 114, 107, 115, 104, 101, 101, 116, 115, 47, 115, 104, 101, 101, 116, 49, 46, 120, 109, 108, 165, 91, 219, 114, 227, 54, 18, 253, 21, 173, 106, 42, 101, 87, 52, 18, 1, 82, 188, 120, 109, 165, 50, 34, 169, 75, 44, 142, 107, 38, 179, 217, 87, 197, 162, 44, 85, 108, 201, 69, 209, 227, 228, 219, 246, 97, 63, 105, 127, 97, 193, 139, 40, 160, 209, 2, 129, 200, 85, 158, 177, 208, 232, 67, 92, 78, 55, 193, 62, 226, 255, 254, 243, 223, 219, 159, 254, 124, 121, 238, 124, 79, 179, 195, 118, 191, 187, 235, 146, 190, 213, 237, 164, 187, 199, 253, 106, 187, 123, 186, 235, 190, 229, 235, 143, 126, 247, 167, 209, 237, 251, 62, 251, 227, 176, 73, 211, 188, 195, 186, 239, 14, 55, 217, 93, 119, 147, 231, 175, 55, 131, 193, 225, 113, 147, 190, 44, 15, 253, 253, 107, 186, 99, 182, 245, 62, 123, 89, 230, 236, 99, 246, 52, 216, 175, 215, 219, 199, 52, 220, 63, 190, 189, 164, 187, 124, 64, 45, 203, 29, 100, 233, 243, 50, 103, 151, 58, 108, 182, 175, 135, 110, 133, 166, 131, 117, 120, 205, 210, 229, 170, 28, 194, 203, 115, 5, 245, 178, 220, 238, 186, 163, 219, 178, 237, 33, 27, 221, 190, 46, 159, 210, 175, 105, 254, 237, 245, 33, 235, 172, 183, 249, 175, 251, 7, 214, 192, 166, 212, 237, 12, 70, 183, 131, 166, 91, 249, 199, 191, 182, 233, 251, 129, 251, 187, 147, 47, 127, 255, 154, 62, 167, 143, 121, 186, 42, 93, 14, 155, 253, 251, 36, 219, 174, 238, 183, 187, 148, 13, 144, 173, 74, 177, 4, 191, 239, 247, 127, 20, 221, 103, 171, 178, 169, 193, 229, 225, 226, 114, 212, 108, 12, 171, 116, 189, 124, 123, 206, 191, 236, 223, 167, 233, 246, 105, 147, 51, 220, 97, 183, 243, 248, 118, 200, 247, 47, 77, 75, 9, 242, 184, 127, 62, 148, 255, 118, 94, 182, 187, 178, 241, 101, 249, 103, 249, 255, 251, 118, 149, 111, 238, 186, 118, 159, 56, 71, 215, 223, 170, 166, 198, 179, 242, 161, 181, 15, 109, 124, 136, 213, 119, 108, 181, 147, 93, 59, 217, 39, 39, 191, 239, 17, 181, 147, 83, 59, 57, 141, 83, 208, 234, 51, 172, 125, 134, 39, 31, 181, 131, 91, 59, 184, 220, 69, 218, 150, 192, 171, 125, 188, 198, 167, 154, 204, 102, 187, 90, 165, 213, 178, 170, 220, 253, 218, 221, 255, 123, 238, 65, 237, 30, 252, 61, 119, 98, 29, 55, 221, 2, 0, 74, 175, 134, 42, 60, 87, 104, 203, 226, 146, 35, 89, 200, 137, 45, 94, 187, 215, 145, 45, 196, 136, 46, 228, 200, 23, 226, 112, 19, 107, 99, 38, 57, 50, 134, 156, 40, 227, 156, 27, 226, 160, 138, 159, 50, 250, 194, 101, 190, 28, 221, 102, 251, 247, 78, 86, 154, 139, 32, 27, 146, 126, 128, 68, 30, 187, 92, 209, 233, 83, 17, 237, 101, 95, 214, 122, 96, 173, 223, 71, 214, 237, 224, 123, 1, 203, 126, 25, 82, 3, 71, 43, 56, 202, 86, 88, 1, 71, 75, 56, 202, 193, 145, 6, 174, 236, 49, 110, 122, 12, 234, 150, 80, 106, 137, 164, 150, 88, 106, 153, 72, 45, 83, 169, 101, 38, 181, 204, 165, 150, 123, 121, 196, 84, 28, 241, 66, 242, 73, 248, 22, 97, 145, 236, 106, 145, 176, 84, 119, 92, 33, 187, 244, 181, 185, 235, 217, 96, 133, 170, 30, 14, 215, 195, 17, 123, 132, 50, 198, 80, 236, 17, 201, 61, 92, 177, 71, 44, 247, 240, 196, 30, 19, 185, 135, 47, 246, 152, 202, 61, 2, 177, 199, 76, 238, 65, 44, 177, 203, 28, 233, 2, 56, 115, 143, 116, 129, 155, 212, 186, 104, 137, 242, 58, 194, 46, 58, 237, 187, 232, 148, 96, 67, 148, 225, 149, 205, 229, 47, 4, 182, 56, 20, 220, 225, 222, 9, 70, 176, 41, 177, 96, 4, 251, 49, 57, 25, 215, 163, 251, 207, 159, 127, 249, 246, 112, 21, 58, 189, 135, 253, 118, 151, 31, 254, 241, 225, 211, 7, 231, 134, 253, 67, 237, 166, 101, 92, 180, 140, 89, 203, 245, 237, 96, 141, 76, 101, 138, 0, 70, 70, 128, 96, 179, 103, 8, 96, 124, 9, 224, 156, 3, 44, 215, 123, 179, 204, 210, 85, 183, 147, 165, 235, 194, 120, 51, 167, 197, 182, 111, 139, 3, 203, 232, 235, 183, 197, 213, 196, 185, 153, 57, 215, 157, 31, 59, 227, 207, 223, 146, 95, 103, 113, 213, 208, 235, 254, 240, 148, 255, 211, 234, 94, 15, 136, 197, 108, 87, 212, 250, 248, 201, 41, 62, 88, 199, 117, 97, 217, 23, 112, 82, 193, 128, 69, 101, 243, 42, 6, 228, 217, 113, 112, 203, 44, 91, 254, 85, 143, 141, 245, 25, 205, 146, 48, 250, 247, 85, 49, 197, 98, 134, 189, 175, 139, 159, 239, 239, 175, 216, 152, 230, 172, 101, 206, 90, 238, 18, 167, 247, 229, 243, 111, 205, 231, 235, 143, 197, 167, 228, 131, 115, 253, 35, 185, 238, 29, 103, 192, 62, 247, 18, 231, 250, 186, 217, 67, 72, 124, 97, 205, 127, 254, 50, 137, 26, 192, 18, 253, 136, 106, 55, 8, 254, 176, 239, 12, 45, 238, 199, 198, 227, 100, 216, 30, 39, 195, 242, 218, 62, 150, 87, 199, 149, 45, 224, 227, 4, 132, 66, 200, 187, 195, 32, 138, 4, 35, 76, 111, 130, 17, 192, 78, 78, 198, 83, 156, 12, 77, 88, 8, 134, 50, 69, 0, 35, 35, 64, 24, 39, 8, 96, 108, 4, 8, 40, 57, 231, 0, 249, 56, 169, 66, 163, 184, 143, 177, 132, 217, 183, 189, 64, 248, 1, 148, 87, 108, 230, 162, 178, 21, 231, 55, 5, 231, 135, 58, 156, 31, 234, 113, 254, 134, 117, 76, 134, 28, 237, 1, 3, 146, 51, 51, 46, 71, 146, 12, 111, 18, 82, 103, 6, 70, 86, 173, 168, 240, 108, 22, 21, 252, 234, 56, 120, 84, 184, 237, 81, 225, 114, 185, 3, 222, 253, 93, 249, 238, 1, 238, 1, 33, 239, 14, 239, 149, 17, 111, 4, 247, 135, 88, 112, 4, 105, 98, 226, 34, 55, 15, 215, 132, 114, 32, 202, 166, 8, 96, 100, 4, 8, 143, 10, 51, 4, 49, 54, 66, 4, 172, 157, 187, 248, 221, 131, 143, 10, 226, 245, 29, 143, 79, 134, 0, 227, 94, 177, 153, 11, 87, 227, 70, 224, 234, 4, 133, 171, 27, 20, 110, 47, 113, 185, 160, 0, 12, 72, 20, 19, 38, 245, 132, 93, 210, 119, 8, 207, 243, 33, 206, 115, 175, 157, 231, 30, 151, 48, 0, 221, 198, 158, 156, 253, 65, 4, 135, 222, 249, 124, 19, 241, 54, 16, 2, 177, 226, 178, 19, 15, 73, 253, 158, 17, 133, 32, 205, 17, 196, 200, 8, 209, 134, 52, 71, 16, 99, 35, 68, 184, 237, 115, 175, 61, 251, 43, 210, 91, 197, 115, 197, 170, 46, 60, 157, 236, 239, 233, 16, 221, 211, 37, 186, 215, 75, 60, 142, 232, 224, 94, 149, 40, 102, 124, 36, 250, 144, 221, 240, 40, 63, 99, 31, 39, 186, 223, 78, 116, 159, 203, 1, 128, 31, 99, 95, 78, 232, 240, 121, 142, 119, 135, 249, 156, 183, 129, 32, 136, 21, 126, 19, 31, 73, 231, 254, 37, 180, 156, 34, 136, 145, 17, 34, 12, 157, 25, 130, 24, 95, 52, 198, 185, 223, 158, 208, 21, 167, 219, 138, 232, 71, 140, 230, 121, 127, 225, 107, 164, 113, 95, 135, 221, 190, 46, 187, 253, 94, 226, 159, 216, 77, 193, 52, 19, 197, 52, 27, 118, 91, 125, 59, 224, 167, 121, 230, 97, 55, 104, 103, 119, 192, 69, 62, 200, 209, 227, 64, 74, 227, 20, 48, 49, 228, 221, 65, 152, 70, 188, 13, 62, 234, 242, 54, 248, 164, 27, 32, 105, 60, 48, 97, 14, 44, 101, 32, 128, 145, 17, 32, 172, 72, 204, 16, 196, 216, 12, 17, 146, 59, 104, 207, 226, 182, 213, 119, 28, 124, 215, 43, 114, 43, 246, 114, 17, 232, 100, 241, 64, 135, 231, 129, 46, 207, 131, 94, 18, 112, 60, 7, 107, 152, 40, 102, 124, 228, 185, 195, 178, 184, 112, 223, 10, 112, 158, 23, 211, 106, 35, 122, 209, 167, 73, 168, 128, 142, 227, 218, 200, 39, 114, 10, 235, 58, 2, 0, 60, 207, 68, 162, 21, 36, 195, 88, 233, 59, 225, 172, 39, 198, 19, 235, 130, 103, 204, 41, 6, 25, 153, 65, 2, 118, 205, 48, 200, 248, 162, 81, 206, 121, 200, 179, 103, 244, 62, 220, 137, 123, 213, 86, 46, 106, 163, 58, 161, 179, 78, 26, 76, 103, 147, 211, 164, 58, 235, 201, 126, 57, 178, 131, 197, 75, 84, 51, 37, 237, 241, 45, 178, 157, 104, 176, 157, 156, 79, 176, 227, 218, 40, 156, 207, 125, 200, 118, 30, 0, 86, 103, 4, 163, 196, 117, 222, 72, 33, 213, 9, 146, 220, 9, 49, 58, 105, 72, 92, 71, 48, 35, 51, 76, 24, 146, 51, 12, 51, 54, 28, 231, 16, 178, 157, 180, 231, 120, 197, 3, 90, 205, 125, 197, 198, 46, 106, 99, 75, 150, 103, 189, 116, 200, 79, 180, 201, 79, 24, 249, 9, 71, 126, 88, 164, 84, 77, 156, 35, 191, 77, 207, 240, 157, 106, 240, 157, 114, 41, 33, 128, 124, 167, 114, 118, 135, 213, 72, 1, 0, 86, 101, 34, 209, 234, 64, 198, 11, 86, 137, 242, 20, 203, 238, 244, 162, 236, 142, 64, 70, 102, 144, 240, 68, 131, 65, 198, 102, 144, 14, 228, 59, 109, 207, 238, 110, 223, 38, 124, 202, 179, 36, 190, 43, 54, 118, 81, 27, 91, 114, 61, 213, 162, 59, 213, 166, 59, 101, 116, 167, 28, 221, 97, 113, 82, 53, 239, 35, 221, 169, 3, 38, 126, 142, 251, 26, 170, 35, 177, 249, 122, 137, 5, 201, 111, 203, 167, 120, 88, 116, 84, 34, 68, 162, 213, 134, 228, 23, 172, 240, 73, 149, 179, 114, 228, 183, 77, 104, 229, 66, 242, 35, 144, 145, 25, 164, 13, 201, 143, 64, 198, 102, 144, 82, 178, 183, 219, 147, 61, 113, 250, 176, 16, 163, 220, 137, 69, 109, 109, 203, 239, 182, 22, 225, 109, 109, 194, 219, 140, 240, 54, 71, 120, 88, 120, 84, 205, 245, 72, 120, 226, 179, 163, 188, 206, 225, 70, 67, 160, 37, 130, 62, 7, 37, 90, 34, 107, 180, 240, 200, 16, 10, 8, 80, 163, 21, 140, 80, 123, 18, 140, 54, 100, 59, 38, 210, 18, 51, 149, 86, 162, 59, 166, 211, 26, 98, 58, 144, 239, 152, 84, 107, 134, 9, 151, 116, 78, 206, 168, 181, 60, 225, 117, 235, 22, 68, 67, 125, 36, 130, 10, 8, 245, 71, 34, 11, 144, 80, 229, 13, 69, 4, 88, 189, 16, 172, 112, 182, 177, 232, 11, 191, 93, 65, 48, 17, 146, 92, 34, 26, 78, 49, 200, 232, 34, 200, 25, 6, 25, 95, 4, 57, 39, 26, 82, 164, 213, 183, 124, 75, 252, 57, 119, 243, 211, 144, 219, 136, 160, 123, 65, 193, 141, 200, 138, 27, 44, 43, 134, 68, 165, 156, 69, 68, 37, 200, 197, 202, 171, 79, 8, 38, 187, 145, 75, 68, 173, 41, 6, 25, 153, 65, 194, 66, 45, 6, 25, 155, 65, 218, 144, 6, 58, 218, 27, 203, 5, 158, 78, 46, 208, 208, 162, 136, 160, 24, 65, 53, 138, 200, 114, 20, 44, 70, 133, 2, 130, 84, 219, 81, 200, 35, 177, 96, 148, 18, 1, 38, 73, 17, 51, 189, 199, 129, 20, 192, 68, 41, 67, 76, 31, 114, 0, 147, 165, 12, 49, 161, 254, 74, 52, 132, 41, 237, 2, 159, 134, 78, 67, 4, 197, 4, 42, 53, 68, 150, 106, 224, 57, 38, 20, 17, 160, 42, 41, 88, 3, 200, 2, 193, 213, 130, 52, 192, 4, 27, 98, 164, 134, 72, 44, 192, 20, 27, 51, 72, 137, 4, 152, 100, 99, 6, 233, 66, 14, 104, 104, 54, 218, 39, 67, 13, 53, 131, 240, 37, 112, 120, 148, 26, 19, 89, 208, 176, 161, 160, 33, 34, 248, 144, 3, 130, 85, 34, 1, 111, 133, 71, 134, 9, 193, 116, 13, 98, 164, 26, 72, 135, 2, 76, 217, 184, 8, 114, 134, 65, 198, 23, 65, 206, 137, 134, 182, 193, 14, 5, 142, 120, 38, 56, 71, 3, 170, 81, 235, 167, 66, 185, 29, 22, 251, 169, 92, 236, 135, 91, 25, 10, 8, 240, 76, 32, 24, 225, 243, 176, 96, 132, 95, 78, 163, 88, 165, 159, 154, 149, 229, 161, 186, 133, 97, 70, 102, 152, 144, 171, 51, 12, 51, 54, 28, 39, 204, 5, 84, 163, 216, 175, 43, 219, 83, 141, 18, 56, 37, 138, 72, 30, 83, 185, 6, 14, 235, 150, 161, 128, 0, 75, 130, 34, 60, 84, 239, 5, 43, 212, 123, 40, 86, 4, 167, 102, 5, 107, 120, 48, 196, 48, 35, 51, 76, 248, 148, 136, 65, 198, 134, 195, 132, 53, 65, 170, 81, 3, 87, 148, 130, 169, 70, 41, 152, 10, 213, 88, 88, 11, 166, 72, 45, 24, 126, 55, 73, 64, 128, 183, 0, 17, 30, 62, 23, 82, 69, 185, 114, 66, 177, 74, 48, 53, 170, 177, 194, 11, 78, 49, 204, 200, 12, 19, 106, 31, 24, 100, 108, 6, 9, 191, 163, 68, 53, 74, 193, 186, 37, 81, 170, 81, 18, 165, 124, 25, 13, 102, 183, 49, 149, 75, 162, 54, 124, 32, 80, 34, 68, 130, 21, 230, 150, 88, 180, 74, 44, 192, 74, 162, 212, 168, 216, 40, 145, 0, 43, 137, 94, 4, 57, 195, 32, 227, 139, 32, 231, 84, 163, 36, 122, 238, 5, 37, 69, 85, 176, 112, 60, 118, 211, 168, 27, 209, 250, 219, 204, 252, 107, 81, 54, 252, 18, 252, 128, 123, 229, 170, 126, 251, 242, 237, 181, 179, 207, 182, 233, 46, 47, 223, 242, 188, 235, 190, 238, 179, 60, 91, 110, 243, 234, 69, 161, 230, 53, 210, 209, 255, 1, 80, 75, 3, 4, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 78, 181, 122, 165, 217, 2, 0, 0, 199, 12, 0, 0, 24, 0, 0, 0, 120, 108, 47, 119, 111, 114, 107, 115, 104, 101, 101, 116, 115, 47, 115, 104, 101, 101, 116, 50, 46, 120, 109, 108, 141, 87, 219, 142, 155, 48, 20, 252, 21, 196, 123, 33, 199, 64, 32, 43, 194, 74, 237, 170, 23, 169, 15, 171, 94, 159, 105, 226, 4, 107, 3, 70, 182, 179, 233, 191, 245, 161, 159, 212, 95, 168, 99, 179, 172, 109, 65, 240, 67, 110, 158, 51, 51, 199, 28, 134, 192, 191, 63, 127, 203, 251, 223, 237, 41, 120, 198, 140, 19, 218, 109, 67, 136, 86, 97, 128, 187, 29, 221, 147, 238, 184, 13, 207, 226, 240, 166, 8, 239, 171, 242, 66, 217, 19, 111, 48, 22, 129, 44, 239, 248, 29, 219, 134, 141, 16, 253, 93, 28, 243, 93, 131, 219, 154, 71, 180, 199, 157, 196, 14, 148, 181, 181, 144, 63, 217, 49, 166, 135, 3, 217, 225, 7, 186, 59, 183, 184, 19, 49, 90, 173, 214, 49, 195, 167, 90, 72, 43, 222, 144, 158, 135, 90, 205, 71, 139, 247, 12, 215, 123, 213, 66, 123, 210, 82, 109, 77, 186, 176, 42, 213, 218, 35, 171, 202, 190, 62, 226, 175, 88, 124, 239, 31, 89, 112, 32, 226, 27, 125, 148, 11, 114, 75, 97, 16, 87, 101, 60, 150, 169, 47, 63, 8, 190, 112, 227, 123, 192, 27, 122, 249, 192, 200, 254, 51, 233, 176, 108, 72, 30, 133, 235, 150, 127, 81, 250, 116, 133, 63, 237, 213, 210, 168, 99, 210, 223, 171, 46, 165, 231, 30, 31, 234, 243, 73, 124, 161, 151, 143, 152, 28, 27, 33, 173, 179, 48, 216, 157, 185, 160, 237, 184, 162, 68, 118, 244, 196, 213, 123, 208, 146, 78, 45, 182, 245, 111, 245, 121, 33, 123, 209, 108, 195, 36, 74, 147, 23, 234, 79, 189, 52, 50, 53, 7, 13, 28, 52, 114, 96, 181, 72, 74, 6, 82, 242, 74, 130, 8, 210, 219, 164, 116, 32, 165, 35, 41, 141, 208, 230, 54, 39, 27, 56, 217, 200, 201, 23, 57, 235, 129, 179, 126, 109, 174, 136, 114, 184, 77, 202, 7, 82, 62, 146, 138, 197, 163, 80, 12, 156, 98, 121, 67, 177, 158, 148, 154, 243, 67, 45, 234, 170, 100, 244, 18, 48, 5, 95, 199, 153, 65, 180, 153, 152, 177, 52, 187, 22, 189, 149, 85, 92, 213, 202, 85, 46, 87, 159, 171, 85, 25, 63, 95, 101, 229, 75, 42, 141, 114, 72, 203, 161, 36, 66, 55, 228, 144, 150, 67, 134, 94, 146, 142, 130, 170, 230, 157, 174, 65, 186, 123, 211, 34, 209, 22, 83, 167, 228, 139, 126, 162, 245, 19, 83, 63, 115, 244, 39, 106, 0, 166, 55, 149, 46, 59, 166, 74, 45, 211, 50, 142, 147, 137, 37, 51, 199, 45, 91, 182, 200, 148, 76, 161, 100, 144, 99, 97, 97, 217, 180, 197, 122, 217, 98, 109, 118, 234, 88, 152, 24, 154, 217, 69, 190, 108, 145, 27, 157, 186, 35, 55, 49, 40, 166, 45, 138, 101, 139, 194, 232, 212, 157, 186, 137, 193, 122, 218, 98, 179, 108, 177, 49, 58, 93, 59, 22, 38, 6, 233, 180, 5, 172, 150, 61, 174, 53, 99, 175, 185, 99, 98, 129, 128, 102, 92, 192, 195, 5, 140, 118, 11, 215, 197, 4, 97, 102, 232, 128, 60, 92, 144, 209, 238, 198, 117, 49, 193, 153, 177, 131, 71, 234, 33, 153, 238, 118, 112, 73, 38, 103, 102, 187, 120, 36, 29, 172, 168, 187, 89, 183, 208, 153, 32, 130, 71, 216, 193, 76, 52, 184, 113, 183, 208, 185, 83, 204, 35, 239, 96, 134, 26, 220, 196, 195, 244, 229, 192, 118, 241, 136, 60, 228, 211, 137, 24, 92, 242, 201, 235, 154, 237, 226, 145, 122, 176, 162, 237, 230, 222, 70, 103, 92, 60, 130, 15, 86, 186, 221, 232, 91, 232, 220, 63, 164, 71, 244, 145, 149, 110, 55, 251, 22, 58, 231, 226, 17, 125, 4, 211, 215, 219, 193, 5, 60, 246, 226, 17, 125, 100, 166, 27, 220, 236, 91, 232, 156, 139, 71, 246, 145, 153, 110, 228, 102, 223, 66, 231, 92, 60, 82, 137, 116, 238, 192, 188, 17, 74, 220, 100, 196, 198, 77, 214, 112, 39, 127, 238, 3, 202, 136, 124, 116, 80, 79, 12, 219, 176, 167, 76, 176, 154, 8, 125, 115, 51, 62, 146, 84, 255, 1, 80, 75, 3, 4, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 13, 146, 62, 153, 176, 0, 0, 0, 31, 1, 0, 0, 11, 0, 0, 0, 95, 114, 101, 108, 115, 47, 46, 114, 101, 108, 115, 141, 143, 77, 14, 130, 48, 20, 132, 175, 210, 188, 189, 20, 141, 33, 196, 80, 136, 145, 141, 91, 226, 5, 106, 125, 252, 4, 232, 107, 218, 162, 120, 54, 23, 30, 201, 43, 216, 165, 24, 23, 46, 39, 51, 243, 77, 230, 245, 120, 102, 197, 60, 14, 236, 138, 214, 117, 164, 5, 172, 163, 24, 24, 106, 69, 151, 78, 55, 2, 38, 95, 175, 82, 40, 242, 172, 194, 65, 250, 144, 112, 109, 103, 28, 11, 21, 237, 4, 180, 222, 155, 29, 231, 78, 181, 56, 74, 23, 145, 65, 29, 156, 154, 236, 40, 125, 144, 182, 225, 70, 170, 94, 54, 200, 55, 113, 156, 112, 251, 201, 128, 37, 147, 29, 47, 2, 170, 109, 114, 40, 247, 105, 178, 6, 118, 186, 27, 252, 103, 128, 234, 186, 83, 88, 146, 154, 70, 212, 254, 199, 206, 87, 34, 144, 165, 109, 208, 11, 152, 7, 126, 35, 219, 159, 137, 250, 40, 64, 129, 241, 60, 227, 139, 155, 249, 27, 80, 75, 3, 4, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 193, 134, 21, 18, 40, 1, 0, 0, 34, 4, 0, 0, 19, 0, 0, 0, 91, 67, 111, 110, 116, 101, 110, 116, 95, 84, 121, 112, 101, 115, 93, 46, 120, 109, 108, 181, 83, 77, 78, 3, 33, 20, 190, 10, 97, 219, 20, 218, 46, 140, 49, 157, 118, 161, 110, 213, 68, 47, 128, 204, 155, 14, 41, 127, 225, 189, 214, 246, 108, 46, 60, 146, 87, 144, 161, 106, 212, 212, 78, 76, 235, 6, 2, 239, 251, 227, 1, 175, 207, 47, 211, 249, 198, 89, 182, 134, 132, 38, 248, 138, 143, 197, 136, 51, 240, 58, 212, 198, 47, 42, 190, 162, 102, 120, 206, 231, 179, 233, 195, 54, 2, 178, 12, 245, 88, 241, 150, 40, 94, 72, 137, 186, 5, 167, 80, 132, 8, 62, 87, 154, 144, 156, 162, 188, 76, 11, 25, 149, 94, 170, 5, 200, 201, 104, 116, 38, 117, 240, 4, 158, 134, 212, 105, 240, 217, 244, 10, 26, 181, 178, 196, 174, 55, 121, 123, 103, 155, 192, 34, 103, 151, 59, 96, 231, 85, 113, 21, 163, 53, 90, 81, 174, 203, 181, 175, 127, 184, 12, 223, 29, 68, 102, 22, 12, 182, 38, 226, 32, 3, 56, 147, 123, 45, 74, 233, 87, 135, 15, 226, 109, 238, 68, 50, 53, 176, 59, 149, 232, 70, 185, 12, 147, 27, 43, 159, 66, 90, 62, 134, 176, 20, 135, 85, 246, 228, 12, 77, 99, 52, 212, 65, 175, 92, 166, 8, 140, 9, 84, 141, 45, 0, 57, 43, 202, 44, 156, 50, 126, 208, 19, 128, 114, 171, 97, 55, 142, 143, 14, 81, 100, 250, 28, 145, 182, 22, 240, 212, 7, 46, 162, 189, 214, 173, 74, 80, 223, 83, 202, 111, 240, 228, 9, 190, 106, 247, 5, 233, 174, 189, 16, 81, 150, 233, 248, 214, 127, 15, 243, 169, 255, 215, 32, 147, 127, 15, 34, 203, 143, 159, 189, 1, 80, 75, 3, 4, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 50, 174, 89, 70, 234, 0, 0, 0, 60, 3, 0, 0, 26, 0, 0, 0, 120, 108, 47, 95, 114, 101, 108, 115, 47, 119, 111, 114, 107, 98, 111, 111, 107, 46, 120, 109, 108, 46, 114, 101, 108, 115, 189, 147, 65, 110, 194, 48, 16, 69, 175, 98, 205, 190, 113, 146, 210, 170, 170, 48, 108, 186, 97, 75, 123, 1, 203, 153, 196, 17, 137, 109, 121, 6, 40, 103, 235, 162, 71, 226, 10, 88, 32, 65, 144, 80, 212, 69, 212, 149, 53, 223, 158, 255, 159, 198, 246, 241, 231, 119, 190, 252, 238, 59, 177, 195, 72, 173, 119, 10, 138, 44, 7, 129, 206, 248, 170, 117, 141, 130, 45, 215, 79, 111, 176, 92, 204, 215, 216, 105, 78, 39, 200, 182, 129, 68, 106, 113, 164, 192, 50, 135, 119, 41, 201, 88, 236, 53, 101, 62, 160, 75, 59, 181, 143, 189, 230, 84, 198, 70, 6, 109, 54, 186, 65, 89, 230, 249, 171, 140, 67, 15, 184, 247, 20, 171, 74, 65, 92, 85, 5, 136, 175, 67, 192, 191, 120, 251, 186, 110, 13, 126, 120, 179, 237, 209, 241, 131, 8, 185, 247, 113, 67, 22, 145, 147, 169, 142, 13, 178, 130, 171, 68, 242, 188, 20, 89, 114, 5, 33, 31, 211, 148, 255, 76, 83, 142, 210, 60, 79, 73, 67, 124, 232, 144, 110, 40, 151, 122, 52, 127, 54, 101, 62, 167, 94, 188, 197, 159, 203, 139, 56, 126, 37, 47, 147, 14, 193, 234, 136, 213, 39, 199, 244, 216, 135, 179, 24, 202, 87, 26, 121, 247, 7, 22, 39, 80, 75, 1, 2, 20, 0, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 102, 179, 189, 205, 155, 5, 0, 0, 252, 27, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 108, 47, 116, 104, 101, 109, 101, 47, 116, 104, 101, 109, 101, 49, 46, 120, 109, 108, 80, 75, 1, 2, 20, 0, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 35, 59, 28, 117, 107, 2, 0, 0, 58, 13, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 5, 0, 0, 120, 108, 47, 115, 116, 121, 108, 101, 115, 46, 120, 109, 108, 80, 75, 1, 2, 20, 0, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 161, 169, 69, 88, 241, 0, 0, 0, 168, 1, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 8, 0, 0, 120, 108, 47, 119, 111, 114, 107, 98, 111, 111, 107, 46, 120, 109, 108, 80, 75, 1, 2, 20, 0, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 148, 106, 153, 191, 176, 1, 0, 0, 54, 4, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 9, 0, 0, 120, 108, 47, 115, 104, 97, 114, 101, 100, 83, 116, 114, 105, 110, 103, 115, 46, 120, 109, 108, 80, 75, 1, 2, 20, 0, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 237, 24, 18, 227, 104, 9, 0, 0, 123, 58, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 11, 0, 0, 120, 108, 47, 119, 111, 114, 107, 115, 104, 101, 101, 116, 115, 47, 115, 104, 101, 101, 116, 49, 46, 120, 109, 108, 80, 75, 1, 2, 20, 0, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 78, 181, 122, 165, 217, 2, 0, 0, 199, 12, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 120, 108, 47, 119, 111, 114, 107, 115, 104, 101, 101, 116, 115, 47, 115, 104, 101, 101, 116, 50, 46, 120, 109, 108, 80, 75, 1, 2, 20, 0, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 13, 146, 62, 153, 176, 0, 0, 0, 31, 1, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 24, 0, 0, 95, 114, 101, 108, 115, 47, 46, 114, 101, 108, 115, 80, 75, 1, 2, 20, 0, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 193, 134, 21, 18, 40, 1, 0, 0, 34, 4, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 24, 0, 0, 91, 67, 111, 110, 116, 101, 110, 116, 95, 84, 121, 112, 101, 115, 93, 46, 120, 109, 108, 80, 75, 1, 2, 20, 0, 20, 0, 2, 0, 8, 0, 115, 98, 138, 68, 50, 174, 89, 70, 234, 0, 0, 0, 60, 3, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 26, 0, 0, 120, 108, 47, 95, 114, 101, 108, 115, 47, 119, 111, 114, 107, 98, 111, 111, 107, 46, 120, 109, 108, 46, 114, 101, 108, 115, 80, 75, 5, 6, 0, 0, 0, 0, 9, 0, 9, 0, 73, 2, 0, 0, 99, 27, 0, 0, 0, 0 };
public static readonly byte[] Invoice = new byte[] { 80,75,3,4,20,0,2,0,8,0,194,97,138,68,102,179,189,205,155,5,0,0,252,27,0,0,19,0,0,0,120,108,47,116,104,101,109,101,47,116,104,101,109,101,49,46,120,109,108,237,89,77,111,219,54,24,254,43,132,238,173,44,91,114,157,160,110,17,59,118,187,181,105,131,196,235,208,35,45,211,18,107,74,20,72,58,169,111,67,123,28,48,96,88,55,236,50,96,183,29,134,109,5,90,96,135,117,216,143,201,214,97,235,128,252,133,189,146,101,139,178,169,38,105,179,47,44,57,216,34,245,188,223,31,124,233,28,255,240,211,213,235,15,35,134,14,136,144,148,199,109,203,185,92,179,16,137,125,62,162,113,208,182,166,106,124,169,101,93,191,118,21,111,170,144,68,4,1,56,150,155,184,109,133,74,37,155,182,45,125,216,198,242,50,79,72,12,239,198,92,68,88,193,82,4,246,72,224,67,96,18,49,187,94,171,53,237,8,211,216,66,49,142,72,219,186,59,30,83,159,160,65,202,210,90,50,239,49,248,136,149,76,55,124,38,246,253,76,162,78,145,97,71,19,39,253,146,51,217,101,2,29,96,214,182,64,206,136,31,14,200,67,101,33,251,218,85,123,9,98,170,2,187,192,229,128,209,164,158,225,68,48,92,2,157,190,187,113,101,187,96,88,159,51,92,7,246,122,189,110,207,41,56,102,8,236,251,96,139,179,6,118,251,45,167,179,228,170,161,230,143,235,220,187,53,175,230,174,16,104,18,26,107,4,27,157,78,199,219,40,19,52,10,2,119,141,160,85,107,186,91,245,50,129,91,16,120,235,54,116,182,186,221,102,153,192,43,8,154,107,4,253,43,27,77,119,133,32,67,133,140,198,147,53,120,13,254,250,253,5,124,137,25,115,118,211,136,111,1,190,85,91,224,11,152,173,229,209,156,65,172,170,178,42,194,15,184,232,3,32,139,50,86,52,70,106,150,144,49,246,1,215,197,209,80,80,156,73,192,155,4,107,175,242,61,95,174,239,165,226,144,244,5,77,84,219,122,55,193,144,254,5,230,248,197,55,199,47,158,161,227,23,79,143,30,61,63,122,244,253,209,227,199,71,143,190,51,81,222,196,113,160,83,190,250,234,227,63,190,248,0,253,254,236,203,87,79,62,173,32,144,58,193,47,223,126,248,243,143,159,84,32,149,142,124,249,217,211,95,159,63,125,249,249,71,191,125,253,196,132,223,18,120,168,227,7,52,34,18,221,33,135,104,143,71,169,125,6,17,100,40,206,72,50,8,49,45,145,224,16,160,38,100,79,133,37,228,157,25,102,70,96,135,148,125,120,79,64,23,48,34,111,76,31,148,244,221,15,197,84,81,19,242,86,24,149,144,59,156,179,14,23,102,155,110,101,226,52,155,166,113,80,33,95,76,117,224,30,198,7,70,241,221,149,40,247,166,9,100,54,53,50,237,134,164,164,234,46,131,192,227,128,196,68,161,244,29,159,16,98,162,187,79,105,201,191,59,212,23,92,242,177,66,247,41,234,96,106,118,204,128,14,149,153,234,38,141,32,64,51,163,142,16,245,146,135,118,238,161,14,103,70,1,219,228,160,12,133,10,193,204,200,148,176,146,55,111,224,169,194,145,89,107,28,49,29,122,27,171,208,168,232,254,76,248,37,199,75,5,65,15,8,227,168,55,34,82,26,137,238,138,89,73,229,91,24,90,148,57,3,118,216,44,42,67,133,162,19,35,244,54,230,92,135,110,243,73,55,196,81,98,214,155,198,161,14,126,71,78,32,99,49,218,229,202,172,7,47,215,76,186,134,128,224,184,58,242,247,40,81,103,44,246,247,104,16,154,147,37,125,51,21,198,26,33,188,92,163,51,54,198,36,94,28,0,165,86,30,209,248,117,125,157,81,104,236,23,125,125,165,175,111,193,97,103,172,167,213,110,94,9,252,143,246,240,109,60,141,119,73,90,39,23,45,252,162,133,95,180,240,215,84,248,95,209,184,139,94,109,235,211,122,198,39,170,28,221,199,148,177,125,53,99,228,182,204,186,188,4,19,71,125,216,204,22,25,209,242,170,144,132,240,184,144,87,2,6,2,103,207,72,112,245,62,85,225,126,136,19,144,227,100,34,2,153,243,14,36,74,184,132,43,138,85,201,60,187,207,82,176,58,219,243,210,203,76,238,11,137,213,14,31,205,247,27,181,229,11,91,99,148,173,2,169,139,106,164,44,78,43,174,113,229,109,197,57,115,228,41,229,57,94,133,60,239,245,242,108,205,167,80,70,8,167,191,54,56,205,122,174,166,244,49,35,163,212,251,115,214,138,50,178,71,124,149,243,91,196,234,220,227,38,67,60,34,121,224,28,179,101,78,227,180,158,108,157,236,72,77,222,70,227,109,229,157,38,114,186,64,183,74,160,119,30,161,171,157,20,58,123,189,114,89,92,94,161,67,80,211,171,123,22,242,113,210,182,198,48,191,193,99,148,0,123,153,118,54,204,130,184,109,249,42,183,237,196,186,95,245,64,69,242,58,181,106,15,148,132,36,66,170,109,44,195,57,89,246,106,249,51,80,92,152,80,247,220,148,221,249,216,96,234,93,167,212,163,209,114,254,81,61,236,213,8,147,241,24,50,163,98,167,88,230,239,248,84,17,177,31,142,14,209,144,77,197,30,6,205,221,121,206,141,168,132,211,165,190,88,8,168,94,55,79,199,114,87,200,171,99,245,199,166,188,106,48,75,66,156,247,175,150,158,1,115,124,246,188,84,34,91,105,250,217,21,202,191,161,45,141,115,180,197,251,63,219,146,166,47,76,201,141,81,118,157,131,217,65,96,148,230,105,219,226,66,133,28,250,81,18,82,191,47,96,218,200,132,129,98,8,106,35,107,96,44,253,73,60,85,150,28,44,26,154,189,96,50,111,127,65,168,246,104,128,4,133,30,168,66,65,200,174,202,45,61,129,155,179,232,151,121,121,228,156,242,142,179,84,88,38,243,239,33,57,32,108,144,22,113,51,117,129,133,194,101,91,201,125,145,1,87,3,103,155,106,108,24,244,255,205,19,147,91,53,49,157,48,82,20,162,220,179,76,48,174,126,8,104,103,195,198,219,106,113,198,227,184,94,97,118,221,59,253,113,156,192,133,7,165,31,208,200,169,240,89,49,31,15,120,118,6,23,3,41,164,228,165,86,94,138,203,205,33,104,221,210,237,75,121,253,157,243,87,17,150,86,85,22,156,235,32,171,249,191,81,229,255,19,4,190,185,255,61,131,251,189,51,121,223,94,47,102,91,187,42,101,171,149,127,173,45,118,174,253,9,80,75,3,4,20,0,2,0,8,0,194,97,138,68,247,88,73,110,43,3,0,0,168,17,0,0,13,0,0,0,120,108,47,115,116,121,108,101,115,46,120,109,108,205,88,235,106,219,48,20,126,21,161,110,163,29,109,124,201,165,221,114,107,82,26,40,140,254,88,59,24,140,81,28,91,118,4,178,228,217,114,151,244,213,246,99,143,180,87,152,46,78,108,147,75,147,56,129,218,16,75,199,231,124,231,59,71,210,145,156,127,127,254,118,250,211,144,128,103,20,39,152,209,46,180,106,38,4,136,186,204,195,52,232,194,148,251,23,87,176,223,235,36,124,70,208,195,4,33,14,132,62,77,186,112,194,121,244,217,48,18,119,130,66,39,169,177,8,81,241,198,103,113,232,112,209,141,3,35,137,98,228,120,137,52,10,137,97,155,102,203,8,29,76,97,175,67,211,112,20,242,4,184,44,165,188,11,235,11,17,208,143,59,79,48,105,53,32,208,112,55,204,67,93,24,138,11,120,231,96,38,46,8,140,149,38,205,178,137,89,51,205,247,237,31,95,145,247,243,66,183,219,215,235,76,91,101,211,167,211,119,31,193,201,249,201,137,180,123,58,107,171,254,233,92,144,245,63,252,74,25,111,131,139,172,209,239,43,197,235,167,51,229,196,200,194,236,117,124,70,243,104,45,19,106,137,200,234,11,120,118,136,20,213,154,154,151,19,34,45,122,64,1,67,224,219,157,18,251,78,136,201,76,191,176,53,182,6,40,195,216,151,107,64,192,23,28,76,248,178,225,88,74,176,252,153,67,212,91,74,203,101,132,197,32,14,198,93,56,26,221,154,242,222,196,239,21,80,171,190,20,222,141,67,240,56,198,74,170,166,80,38,15,49,101,241,26,204,165,108,149,88,14,135,195,193,112,176,53,75,188,18,113,235,248,54,132,182,173,165,181,28,67,93,93,213,82,181,196,172,228,193,84,87,149,177,108,236,75,79,61,228,98,192,132,44,22,67,3,106,65,175,19,57,156,163,152,142,68,7,100,237,199,89,36,86,34,101,20,101,56,74,241,21,245,32,118,102,150,221,220,193,34,97,4,123,146,71,112,83,76,213,200,146,183,198,41,216,86,68,189,29,200,123,61,170,122,136,44,141,89,236,137,162,60,207,147,13,231,34,105,169,91,242,201,57,11,129,42,206,34,227,200,195,105,168,161,231,26,89,67,0,186,136,144,7,169,248,221,207,75,145,64,157,250,133,50,104,202,34,72,23,77,65,37,107,106,24,221,233,117,196,144,7,52,68,148,203,141,131,99,87,142,183,43,186,40,27,240,169,47,126,138,14,181,251,130,103,219,220,203,53,152,250,187,112,168,224,0,56,81,68,102,131,185,19,157,171,85,62,57,139,94,119,104,109,235,112,196,180,175,21,238,165,147,117,248,246,1,240,139,225,77,88,140,95,132,170,12,48,206,247,142,77,33,214,15,76,97,199,12,55,142,152,1,130,124,145,128,109,8,101,135,150,29,103,217,125,26,142,81,60,82,167,143,227,81,123,171,196,10,131,216,60,238,28,250,29,59,209,35,154,46,86,211,70,46,173,93,185,84,43,73,151,107,220,89,155,67,31,42,197,138,99,243,22,57,206,57,85,42,238,246,230,129,19,90,213,7,110,103,119,123,36,97,77,173,105,238,193,98,245,146,62,52,183,131,238,181,149,51,114,180,34,183,109,14,118,174,37,135,203,72,43,103,113,149,179,168,239,51,71,74,220,142,56,99,62,29,125,43,47,157,81,23,199,83,117,88,45,157,141,23,82,32,191,119,186,240,94,166,132,20,104,140,83,76,56,166,89,207,77,19,113,28,31,106,217,98,147,201,161,123,29,111,154,31,129,245,87,24,119,198,4,149,61,235,23,70,254,151,75,239,63,80,75,3,4,20,0,2,0,8,0,194,97,138,68,110,166,240,43,228,0,0,0,121,1,0,0,15,0,0,0,120,108,47,119,111,114,107,98,111,111,107,46,120,109,108,141,80,49,114,195,32,16,252,10,115,125,140,156,194,147,209,8,185,73,17,117,169,236,154,192,73,48,22,156,6,176,229,188,45,69,158,148,47,4,163,209,68,101,42,118,247,238,246,246,248,249,250,110,142,119,55,178,27,134,104,201,11,216,239,42,96,232,21,105,235,7,1,215,212,63,189,192,177,109,102,10,151,15,162,11,203,221,62,214,65,128,73,105,170,57,143,202,160,147,113,71,19,250,92,235,41,56,153,50,13,3,167,190,183,10,95,73,93,29,250,196,159,171,234,192,3,142,50,229,77,209,216,41,194,226,246,31,175,56,5,148,58,26,196,228,198,197,202,73,235,161,109,30,169,78,22,231,248,23,242,65,217,253,108,189,166,89,64,62,232,115,131,231,2,207,86,39,179,225,111,104,7,147,138,192,219,134,111,76,203,206,245,101,94,58,20,208,249,27,229,211,128,21,177,211,249,223,128,133,218,102,16,58,189,95,60,214,65,37,71,245,30,138,180,6,108,127,1,80,75,3,4,20,0,2,0,8,0,194,97,138,68,6,8,202,224,52,2,0,0,192,4,0,0,20,0,0,0,120,108,47,115,104,97,114,101,100,83,116,114,105,110,103,115,46,120,109,108,133,84,219,110,26,49,16,253,149,41,125,104,35,109,88,22,218,148,32,32,37,92,10,74,26,90,32,169,242,56,120,7,214,197,107,83,219,187,13,95,83,229,39,250,210,74,125,224,131,250,11,245,138,135,170,235,160,174,100,173,60,231,248,216,103,198,227,223,63,126,181,47,30,82,1,57,105,195,149,236,84,162,106,173,2,36,153,138,185,92,119,42,153,93,157,54,43,23,221,182,49,22,28,81,154,78,37,177,118,219,10,67,195,18,74,209,84,213,150,164,67,86,74,167,104,221,84,175,67,179,213,132,177,73,136,108,42,194,122,173,118,22,166,200,101,197,201,240,110,219,118,239,48,38,13,67,105,73,111,53,55,100,218,161,237,182,195,2,60,16,38,55,119,211,73,127,88,14,15,20,124,77,208,66,154,185,211,44,9,98,37,169,204,137,234,13,24,171,148,224,26,125,112,208,91,12,91,229,96,193,54,57,23,130,2,232,247,2,120,93,124,71,78,4,207,189,229,31,18,119,138,22,188,140,162,232,196,141,83,55,162,0,70,248,240,111,172,94,94,55,154,206,124,45,173,62,19,179,160,52,24,210,57,103,206,35,25,166,249,214,186,234,148,217,151,147,235,107,88,76,61,149,158,96,74,75,120,207,217,134,118,101,240,16,53,240,73,105,17,131,90,193,40,243,132,95,53,206,32,114,41,238,229,84,45,99,125,65,57,9,148,113,0,211,113,0,141,55,245,102,243,88,74,234,181,198,73,253,188,118,218,60,175,121,246,7,199,125,125,92,220,251,137,113,185,240,36,184,97,42,147,214,243,159,62,21,237,39,200,203,177,43,37,151,89,57,56,231,26,102,42,150,180,123,97,96,206,156,21,239,126,190,203,80,163,220,63,186,50,75,187,127,52,150,51,244,56,82,49,150,112,136,57,72,37,37,66,79,60,225,97,182,255,30,195,21,230,28,117,25,154,106,190,230,18,5,140,220,94,155,85,166,93,187,192,90,239,127,74,130,185,218,127,243,180,22,202,162,240,234,141,27,2,20,2,92,187,178,141,129,45,238,112,41,8,172,130,255,183,225,10,118,42,131,4,115,39,33,119,240,37,35,83,20,204,128,203,10,35,45,221,27,1,54,225,6,184,204,149,115,23,20,128,69,119,131,7,168,109,114,216,33,40,247,70,92,96,111,243,2,171,50,149,122,54,198,189,155,43,184,159,222,130,107,145,226,63,131,203,219,249,228,102,56,159,63,251,203,13,221,139,212,253,3,80,75,3,4,20,0,2,0,8,0,194,97,138,68,197,254,146,222,241,3,0,0,1,16,0,0,24,0,0,0,120,108,47,119,111,114,107,115,104,101,101,116,115,47,115,104,101,101,116,49,46,120,109,108,157,87,219,114,155,48,16,253,21,134,167,52,51,1,116,225,230,177,157,105,227,184,237,76,59,125,72,47,211,71,130,133,205,196,128,7,72,220,127,235,67,63,169,191,80,33,129,144,100,20,123,234,135,196,102,207,174,246,236,217,149,196,223,223,127,230,183,191,138,189,245,66,234,38,175,202,133,13,28,207,182,72,153,86,155,188,220,46,236,231,54,187,137,236,219,229,252,88,213,79,205,142,144,214,162,240,178,153,213,11,123,215,182,135,153,235,54,233,142,20,73,227,84,7,82,82,91,86,213,69,210,210,159,245,214,173,178,44,79,201,170,74,159,11,82,182,46,244,188,192,173,201,62,105,233,82,205,46,63,52,54,143,118,73,172,230,80,147,100,195,82,40,246,60,84,145,228,165,189,156,179,103,223,115,114,108,164,239,86,155,60,62,144,61,73,91,178,161,172,108,171,217,85,199,247,117,190,249,148,151,132,46,72,89,118,148,30,171,234,169,131,127,220,176,71,238,114,238,202,225,210,106,207,255,90,69,94,178,48,69,242,139,253,63,230,155,118,183,176,145,19,210,31,233,115,211,86,197,15,254,8,176,48,194,7,246,62,80,248,224,200,241,195,215,157,80,239,132,132,19,128,103,87,194,189,19,30,157,162,179,78,126,239,228,143,78,193,89,167,160,119,10,132,19,4,38,39,151,215,144,85,117,149,180,201,114,94,87,71,171,102,230,93,75,23,134,142,63,56,126,32,249,182,123,6,168,170,105,135,121,215,9,199,106,71,159,54,244,233,203,210,155,187,47,93,212,30,177,230,8,36,33,128,64,184,116,41,177,30,100,64,145,228,154,245,214,144,101,143,65,70,76,151,22,242,204,137,114,79,44,165,1,167,211,192,166,37,134,72,2,32,34,33,149,242,61,71,248,18,2,107,69,225,136,128,218,50,43,77,88,244,175,95,86,111,127,94,189,153,187,25,115,0,33,138,167,19,244,207,37,232,159,36,232,107,9,250,39,9,6,90,130,28,17,114,189,60,111,58,147,224,191,213,8,78,82,12,181,20,131,147,20,35,45,69,142,136,36,132,161,96,161,220,65,145,200,33,98,254,177,220,152,6,158,177,240,81,208,134,62,6,222,56,29,158,140,55,52,28,144,166,73,174,8,64,6,60,28,241,242,224,1,108,192,163,17,175,140,161,111,192,7,92,63,8,94,25,251,94,64,133,159,214,67,119,3,72,33,165,233,188,154,4,105,82,223,79,130,98,125,163,153,0,65,131,162,32,188,128,99,200,227,201,53,134,64,231,216,131,144,46,113,207,78,53,159,240,234,205,152,239,156,14,157,52,229,3,116,138,82,184,108,73,23,191,166,43,92,95,129,27,26,105,216,57,64,140,29,60,29,68,45,65,116,65,9,228,233,130,80,231,206,39,8,248,83,91,220,74,181,6,58,243,222,26,240,131,139,179,147,60,58,118,17,101,23,113,118,209,192,14,154,154,60,190,128,77,60,33,40,210,73,197,138,98,177,206,74,53,123,58,173,120,16,84,162,21,171,162,197,148,86,204,105,197,163,104,134,70,133,222,121,94,80,158,66,168,233,112,215,89,71,29,244,33,93,169,102,236,232,71,197,96,15,134,22,197,177,250,209,90,84,142,71,217,66,239,154,46,193,216,66,111,96,27,0,7,40,49,2,3,121,112,1,121,48,33,170,175,215,0,188,58,165,170,25,233,83,58,152,101,81,101,151,142,38,160,52,1,167,9,196,25,238,155,120,193,11,120,41,132,244,173,21,66,69,84,189,75,85,51,194,78,168,148,91,63,107,7,184,60,140,114,136,142,32,164,4,33,39,8,133,142,186,144,134,19,11,162,11,248,162,9,29,245,29,103,0,161,169,11,193,74,181,130,147,78,70,234,102,11,207,108,182,114,184,174,2,136,86,0,241,10,160,161,2,198,206,197,23,48,86,46,163,161,78,21,203,18,158,116,172,98,5,250,5,116,48,43,130,98,85,80,76,233,96,78,7,139,221,213,68,39,176,69,232,254,148,13,229,228,245,171,217,0,138,216,90,15,223,62,95,209,163,107,182,30,23,2,161,23,41,77,25,26,22,30,175,107,80,57,139,12,87,61,56,94,213,160,124,87,67,134,237,21,141,119,41,212,55,188,226,102,56,59,145,114,165,68,145,244,98,202,95,161,10,82,111,201,29,217,239,27,43,173,158,203,94,119,241,212,170,73,198,82,156,173,81,255,86,59,122,208,31,226,101,126,249,15,80,75,3,4,20,0,2,0,8,0,194,97,138,68,115,21,162,8,176,0,0,0,31,1,0,0,11,0,0,0,95,114,101,108,115,47,46,114,101,108,115,141,143,77,14,130,48,20,132,175,210,188,189,20,149,16,99,40,44,100,227,150,120,129,90,31,63,1,250,154,182,40,158,205,133,71,242,10,118,41,198,133,203,201,204,124,147,121,61,158,89,49,143,3,187,162,117,29,105,1,235,40,6,134,90,209,165,211,141,128,201,215,171,29,20,121,86,225,32,125,72,184,182,51,142,133,138,118,2,90,239,205,158,115,167,90,28,165,139,200,160,14,78,77,118,148,62,72,219,112,35,85,47,27,228,155,56,78,185,253,100,192,146,201,142,23,1,85,26,111,15,73,185,78,128,157,238,6,255,25,160,186,238,20,150,164,166,17,181,255,177,243,149,8,100,105,27,244,2,230,129,223,200,246,103,162,62,10,80,96,60,207,248,226,102,254,6,80,75,3,4,20,0,2,0,8,0,194,97,138,68,172,254,173,129,35,1,0,0,153,3,0,0,19,0,0,0,91,67,111,110,116,101,110,116,95,84,121,112,101,115,93,46,120,109,108,173,83,77,78,3,33,20,190,10,97,219,20,166,46,140,49,157,118,161,110,213,68,47,128,204,155,14,41,127,225,189,169,237,217,92,120,36,175,32,165,218,168,169,157,69,187,129,192,251,254,120,192,199,219,251,116,190,118,150,173,32,161,9,190,230,19,81,113,6,94,135,198,248,69,205,123,106,199,87,124,62,155,62,111,34,32,203,80,143,53,239,136,226,181,148,168,59,112,10,69,136,224,115,165,13,201,41,202,203,180,144,81,233,165,90,128,188,168,170,75,169,131,39,240,52,166,173,6,159,77,111,161,85,189,37,118,183,206,219,59,219,4,22,57,187,217,1,183,94,53,87,49,90,163,21,229,186,92,249,230,143,203,248,203,65,100,102,193,96,103,34,142,50,128,51,121,208,162,148,254,117,248,38,62,228,78,36,211,0,123,84,137,238,149,203,48,185,182,242,53,164,229,75,8,75,113,92,229,64,206,208,182,70,67,19,116,239,50,69,96,76,160,26,236,0,200,89,81,102,225,148,241,163,129,0,148,91,13,187,113,114,114,136,34,51,228,136,180,177,128,231,62,112,17,29,180,238,84,130,230,137,82,126,131,103,79,240,83,123,40,200,246,218,11,17,101,153,78,111,253,239,48,123,253,125,16,89,62,218,236,19,80,75,3,4,20,0,2,0,8,0,194,97,138,68,92,197,77,165,225,0,0,0,174,2,0,0,26,0,0,0,120,108,47,95,114,101,108,115,47,119,111,114,107,98,111,111,107,46,120,109,108,46,114,101,108,115,173,82,65,110,194,48,16,252,138,181,247,102,19,90,85,85,133,225,210,11,215,150,15,88,206,38,142,72,108,203,187,180,229,109,28,120,18,95,168,5,18,4,9,161,30,114,178,102,214,59,51,26,237,113,127,152,47,127,135,94,125,83,226,46,120,13,85,81,130,34,111,67,221,249,86,195,86,154,167,55,88,46,230,159,212,27,201,63,216,117,145,85,94,241,172,193,137,196,119,68,182,142,6,195,69,136,228,243,164,9,105,48,146,97,106,49,26,187,49,45,225,172,44,95,49,141,53,224,86,83,173,106,13,105,85,87,160,214,187,72,255,209,14,77,211,89,250,8,118,59,144,151,59,22,248,19,210,134,29,145,100,81,147,90,18,13,23,138,241,244,84,69,86,5,133,247,211,204,166,76,195,178,235,137,175,81,206,248,161,255,243,148,254,146,119,233,106,127,130,103,242,113,9,47,147,150,224,76,162,250,75,82,62,175,113,23,99,250,146,6,111,174,110,241,7,80,75,1,2,20,0,20,0,2,0,8,0,194,97,138,68,102,179,189,205,155,5,0,0,252,27,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,108,47,116,104,101,109,101,47,116,104,101,109,101,49,46,120,109,108,80,75,1,2,20,0,20,0,2,0,8,0,194,97,138,68,247,88,73,110,43,3,0,0,168,17,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,204,5,0,0,120,108,47,115,116,121,108,101,115,46,120,109,108,80,75,1,2,20,0,20,0,2,0,8,0,194,97,138,68,110,166,240,43,228,0,0,0,121,1,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,34,9,0,0,120,108,47,119,111,114,107,98,111,111,107,46,120,109,108,80,75,1,2,20,0,20,0,2,0,8,0,194,97,138,68,6,8,202,224,52,2,0,0,192,4,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,51,10,0,0,120,108,47,115,104,97,114,101,100,83,116,114,105,110,103,115,46,120,109,108,80,75,1,2,20,0,20,0,2,0,8,0,194,97,138,68,197,254,146,222,241,3,0,0,1,16,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,153,12,0,0,120,108,47,119,111,114,107,115,104,101,101,116,115,47,115,104,101,101,116,49,46,120,109,108,80,75,1,2,20,0,20,0,2,0,8,0,194,97,138,68,115,21,162,8,176,0,0,0,31,1,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,192,16,0,0,95,114,101,108,115,47,46,114,101,108,115,80,75,1,2,20,0,20,0,2,0,8,0,194,97,138,68,172,254,173,129,35,1,0,0,153,3,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,153,17,0,0,91,67,111,110,116,101,110,116,95,84,121,112,101,115,93,46,120,109,108,80,75,1,2,20,0,20,0,2,0,8,0,194,97,138,68,92,197,77,165,225,0,0,0,174,2,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,237,18,0,0,120,108,47,95,114,101,108,115,47,119,111,114,107,98,111,111,107,46,120,109,108,46,114,101,108,115,80,75,5,6,0,0,0,0,8,0,8,0,3,2,0,0,6,20,0,0,0,0 };
}
}
using DevExpress.Spreadsheet;
using System;
using System.IO;
public class SpreadsheetDocumentContentFromStream {
public string DocumentId { get; set; }
public Func<Stream> ContentAccessorByStream { get; set; }
public DocumentFormat DocumentFormat { get; set; }
public SpreadsheetDocumentContentFromStream(string documentId, Func<Stream> contentAccessorByStream) {
DocumentId = documentId;
ContentAccessorByStream = contentAccessorByStream;
}
public SpreadsheetDocumentContentFromStream(string documentId, DocumentFormat documentFormat, Func<Stream> contentAccessorByStream) : this(documentId, contentAccessorByStream) {
DocumentFormat = documentFormat;
}
}