diff --git a/Editor/Editor.cpp b/Editor/Editor.cpp index b6bfad545..480510871 100644 --- a/Editor/Editor.cpp +++ b/Editor/Editor.cpp @@ -6,6 +6,13 @@ #include "Translator.h" #include "DummyVisualizer.h" +// some application parameters can be overwritten in the executable by finding the 256 byte long pattern in the first member: +extern ApplicationExeCustomization exe_customization = { + "Wicked Editor ", + wi::Color(130, 210, 220, 255), + wi::Color::Black() +}; + using namespace wi::graphics; using namespace wi::primitive; using namespace wi::scene; @@ -310,6 +317,12 @@ void Editor::Initialize() filetypes[x] = FileType::IMAGE; } + wi::backlog::setFontColor(exe_customization.backlog_color); + XMFLOAT4 clearcol = exe_customization.background_color; + swapChain.desc.clear_color[0] = clearcol.x; + swapChain.desc.clear_color[1] = clearcol.y; + swapChain.desc.clear_color[2] = clearcol.z; + Application::Initialize(); infoDisplay.active = true; @@ -322,21 +335,22 @@ void Editor::Initialize() //infoDisplay.heap_allocation_counter = true; //infoDisplay.vram_usage = true; - wi::backlog::setFontColor(wi::Color(130, 210, 220, 255)); - wi::renderer::SetOcclusionCullingEnabled(true); - renderComponent.main = this; - uint32_t msaa = 4; - if (config.Has("gui_antialiasing")) + if (!IsScriptReplacement()) // we only activate editor functionality if this exe does not have a script replacement { - msaa = std::max(1u, (uint32_t)config.GetInt("gui_antialiasing")); - } - renderComponent.setMSAASampleCount(msaa); - renderComponent.Load(); - ActivatePath(&renderComponent, 0.5f, wi::Color::Black(), wi::FadeManager::FadeType::CrossFade); + renderComponent.main = this; + uint32_t msaa = 4; + if (config.Has("gui_antialiasing")) + { + msaa = std::max(1u, (uint32_t)config.GetInt("gui_antialiasing")); + } + renderComponent.setMSAASampleCount(msaa); + renderComponent.Load(); + ActivatePath(&renderComponent, 0.5f, wi::Color::Black(), wi::FadeManager::FadeType::CrossFade); - wi::lua::EnableEditorFunctionality(this, &renderComponent); + wi::lua::EnableEditorFunctionality(this, &renderComponent); + } } void Editor::HotReload() { @@ -415,6 +429,9 @@ void EditorComponent::ResizeLayout() contentBrowserWnd.SetSize(XMFLOAT2(screenW / 1.6f, screenH / 1.2f)); contentBrowserWnd.SetPos(XMFLOAT2(screenW / 2.0f - contentBrowserWnd.scale.x / 2.0f, screenH / 2.0f - contentBrowserWnd.scale.y / 2.0f)); + projectCreatorWnd.SetSize(XMFLOAT2(projectCreatorWnd.backgroundColorPicker.GetSize().x * 2 + 4 * 3, 780)); + projectCreatorWnd.SetPos(XMFLOAT2(screenW / 2.0f - projectCreatorWnd.scale.x / 2.0f, screenH / 2.0f - projectCreatorWnd.scale.y / 2.0f)); + } void EditorComponent::Load() { @@ -960,6 +977,17 @@ void EditorComponent::Load() topmenuWnd.AddWidget(&stopButton); + projectCreatorButton.Create(ICON_PROJECT_CREATE); + projectCreatorButton.SetLocalizationEnabled(wi::gui::LocalizationEnabled::Tooltip); + projectCreatorButton.font.params.shadowColor = wi::Color::Transparent(); + projectCreatorButton.SetShadowRadius(2); + projectCreatorButton.SetTooltip("Create a new project."); + projectCreatorButton.OnClick([&](wi::gui::EventArgs args) { + projectCreatorWnd.SetVisible(!projectCreatorWnd.IsVisible()); + }); + topmenuWnd.AddWidget(&projectCreatorButton); + + saveButton.Create("Save"); saveButton.SetLocalizationEnabled(wi::gui::LocalizationEnabled::Tooltip); @@ -1274,6 +1302,9 @@ void EditorComponent::Load() contentBrowserWnd.Create(this); GetGUI().AddWidget(&contentBrowserWnd); + projectCreatorWnd.Create(this); + GetGUI().AddWidget(&projectCreatorWnd); + std::string theme = main->config.GetSection("options").GetText("theme"); if(theme.empty()) { @@ -5195,14 +5226,11 @@ void EditorComponent::SaveAs() }); } -Texture EditorComponent::CreateThumbnailScreenshot() const +Texture EditorComponent::CreateThumbnail(Texture texture, uint32_t target_width, uint32_t target_height, bool mipmaps) const { GraphicsDevice* device = GetDevice(); CommandList cmd = device->BeginCommandList(); - static const uint32_t target_width = 256; - static const uint32_t target_height = 128; - - Texture thumbnail = *renderPath->GetLastPostprocessRT(); + Texture thumbnail = texture; // Overestimate actual size with aspect (note that downscale factor will be 4x later): uint32_t current_width = target_width; @@ -5218,6 +5246,7 @@ Texture EditorComponent::CreateThumbnailScreenshot() const TextureDesc desc = thumbnail.desc; desc.width = current_width; desc.height = current_height; + desc.mip_levels = mipmaps? 0 : 1; desc.bind_flags = BindFlag::SHADER_RESOURCE | BindFlag::RENDER_TARGET | BindFlag::UNORDERED_ACCESS; Texture upsized; device->CreateTexture(&desc, nullptr, &upsized); @@ -5272,6 +5301,7 @@ Texture EditorComponent::CreateThumbnailScreenshot() const TextureDesc desc = thumbnail.desc; desc.width = std::max(target_width, desc.width / 4u); desc.height = std::max(target_height, desc.height / 4u); + desc.mip_levels = mipmaps ? 0 : 1; desc.bind_flags = BindFlag::SHADER_RESOURCE | BindFlag::RENDER_TARGET | BindFlag::UNORDERED_ACCESS; Texture downsized; device->CreateTexture(&desc, nullptr, &downsized); @@ -5279,8 +5309,18 @@ Texture EditorComponent::CreateThumbnailScreenshot() const thumbnail = downsized; } + if (mipmaps) + { + device->CreateMipgenSubresources(thumbnail); + wi::renderer::GenerateMipChain(thumbnail, wi::renderer::MIPGENFILTER_LINEAR, cmd); + } + return thumbnail; } +Texture EditorComponent::CreateThumbnailScreenshot() const +{ + return CreateThumbnail(*renderPath->GetLastPostprocessRT(), 256, 128); +} void EditorComponent::PostSaveText(const std::string& message, const std::string& filename, float time_seconds) { @@ -5608,8 +5648,10 @@ void EditorComponent::UpdateDynamicWidgets() float static_pos = screenW - wid_idle * 12; + projectCreatorButton.SetSize(XMFLOAT2(wid_idle * 0.75f, hei)); + projectCreatorButton.SetPos(XMFLOAT2(static_pos - stopButton.GetSize().x - 20, y)); stopButton.SetSize(XMFLOAT2(wid_idle * 0.75f, hei)); - stopButton.SetPos(XMFLOAT2(static_pos - stopButton.GetSize().x - 20, y)); + stopButton.SetPos(XMFLOAT2(projectCreatorButton.GetPos().x - playButton.GetSize().x - padding, y)); playButton.SetSize(XMFLOAT2(wid_idle * 0.75f, hei)); playButton.SetPos(XMFLOAT2(stopButton.GetPos().x - playButton.GetSize().x - padding, y)); diff --git a/Editor/Editor.h b/Editor/Editor.h index 3e1e11503..8467f46e3 100644 --- a/Editor/Editor.h +++ b/Editor/Editor.h @@ -4,6 +4,7 @@ #include "ComponentsWindow.h" #include "ProfilerWindow.h" #include "ContentBrowserWindow.h" +#include "ProjectCreatorWindow.h" #include "GraphicsWindow.h" #include "CameraWindow.h" #include "MaterialPickerWindow.h" @@ -46,6 +47,7 @@ public: wi::gui::Button playButton; wi::gui::Button stopButton; + wi::gui::Button projectCreatorButton; wi::gui::Button saveButton; wi::gui::Button openButton; @@ -63,6 +65,7 @@ public: ComponentsWindow componentsWnd; ProfilerWindow profilerWnd; ContentBrowserWindow contentBrowserWnd; + ProjectCreatorWindow projectCreatorWnd; wi::gui::Window topmenuWnd; wi::gui::Button generalButton; @@ -182,6 +185,7 @@ public: void SaveAs(); bool deleting = false; + wi::graphics::Texture CreateThumbnail(wi::graphics::Texture texture, uint32_t target_width, uint32_t target_height, bool mipmaps = false) const; wi::graphics::Texture CreateThumbnailScreenshot() const; std::string save_text_message = ""; @@ -287,3 +291,11 @@ static const char* EditorLocalizationStrings[] = { "Content", }; static_assert(arraysize(EditorLocalizationStrings) == size_t(EditorLocalization::Count)); + +struct ApplicationExeCustomization +{ + char name_256padded[256] = {}; + wi::Color backlog_color = wi::Color(130, 210, 220, 255); // color of backlog font (startup text) + wi::Color background_color = wi::Color(114, 170, 229); // color of startup background behind startup text +}; +extern ApplicationExeCustomization exe_customization; diff --git a/Editor/Editor_SOURCE.vcxitems b/Editor/Editor_SOURCE.vcxitems index b9008f547..f71bf27a5 100644 --- a/Editor/Editor_SOURCE.vcxitems +++ b/Editor/Editor_SOURCE.vcxitems @@ -49,6 +49,7 @@ + @@ -122,6 +123,7 @@ + diff --git a/Editor/Editor_SOURCE.vcxitems.filters b/Editor/Editor_SOURCE.vcxitems.filters index 590b733c1..2298f9961 100644 --- a/Editor/Editor_SOURCE.vcxitems.filters +++ b/Editor/Editor_SOURCE.vcxitems.filters @@ -53,6 +53,7 @@ + @@ -111,6 +112,7 @@ + diff --git a/Editor/GeneralWindow.cpp b/Editor/GeneralWindow.cpp index 135fb24c2..6082c0fa4 100644 --- a/Editor/GeneralWindow.cpp +++ b/Editor/GeneralWindow.cpp @@ -507,6 +507,7 @@ void GeneralWindow::Create(EditorComponent* _editor) highlight.z *= 2; editor->newEntityCombo.SetAngularHighlightColor(highlight); editor->componentsWnd.newComponentCombo.SetAngularHighlightColor(highlight); + editor->projectCreatorWnd.createButton.SetAngularHighlightColor(highlight); editor->componentsWnd.materialWnd.textureSlotButton.SetColor(wi::Color::White(), wi::gui::IDLE); editor->componentsWnd.objectWnd.lightmapPreviewButton.SetColor(wi::Color::White()); for (auto& x : editor->componentsWnd.objectWnd.lightmapPreviewButton.sprites) @@ -516,6 +517,8 @@ void GeneralWindow::Create(EditorComponent* _editor) editor->componentsWnd.spriteWnd.textureButton.SetColor(wi::Color::White(), wi::gui::IDLE); editor->paintToolWnd.brushTextureButton.SetColor(wi::Color::White(), wi::gui::IDLE); editor->paintToolWnd.revealTextureButton.SetColor(wi::Color::White(), wi::gui::IDLE); + editor->projectCreatorWnd.iconButton.SetColor(wi::Color::White(), wi::gui::IDLE); + editor->projectCreatorWnd.thumbnailButton.SetColor(wi::Color::White(), wi::gui::IDLE); editor->aboutLabel.sprites[wi::gui::FOCUS] = editor->aboutLabel.sprites[wi::gui::IDLE]; int scene_id = 0; for (auto& editorscene : editor->scenes) @@ -683,8 +686,8 @@ void GeneralWindow::Create(EditorComponent* _editor) editor->playButton.sprites[i].params.enableCornerRounding(); editor->playButton.sprites[i].params.corners_rounding[0].radius = 10; - editor->stopButton.sprites[i].params.enableCornerRounding(); - editor->stopButton.sprites[i].params.corners_rounding[1].radius = 10; + editor->projectCreatorButton.sprites[i].params.enableCornerRounding(); + editor->projectCreatorButton.sprites[i].params.corners_rounding[1].radius = 10; editor->translateButton.sprites[i].params.enableCornerRounding(); editor->translateButton.sprites[i].params.corners_rounding[0].radius = 10; diff --git a/Editor/IconDefinitions.h b/Editor/IconDefinitions.h index c23b76cd2..85df2f020 100644 --- a/Editor/IconDefinitions.h +++ b/Editor/IconDefinitions.h @@ -104,4 +104,5 @@ #define ICON_PAINTTOOL ICON_FA_PAINTBRUSH #define ICON_EYE ICON_FA_EYE +#define ICON_PROJECT_CREATE ICON_FA_FILE_EXPORT diff --git a/Editor/ProjectCreatorWindow.cpp b/Editor/ProjectCreatorWindow.cpp new file mode 100644 index 000000000..e6be81bb7 --- /dev/null +++ b/Editor/ProjectCreatorWindow.cpp @@ -0,0 +1,381 @@ +#include "stdafx.h" +#include "ProjectCreatorWindow.h" + +using namespace wi::ecs; +using namespace wi::scene; + +void ProjectCreatorWindow::Create(EditorComponent* _editor) +{ + editor = _editor; + control_size = 30; + + wi::gui::Window::Create("Project Creator"); + + infoLabel.Create("projectCreatorInfo"); + infoLabel.SetFitTextEnabled(true); + infoLabel.SetText("Here you can create a new Wicked Engine application project. It will create a new folder with the project name, and set up an executable, lua script startup, custom icon, thumbnail and base colors."); + AddWidget(&infoLabel); + + projectNameInput.Create("projectName"); + projectNameInput.SetText(""); + projectNameInput.SetDescription("Name: "); + projectNameInput.SetCancelInputEnabled(false); + AddWidget(&projectNameInput); + + iconButton.Create("projectIcon"); + iconButton.SetText(""); + iconButton.SetDescription("Icon: "); + iconButton.SetSize(XMFLOAT2(128 * 0.5f, 128 * 0.5f)); + iconButton.SetTooltip("The icon will be used for the executable icon."); + iconButton.OnClick([this](wi::gui::EventArgs args) { + if (iconResource.IsValid()) + { + iconResource = {}; + iconName = {}; + iconButton.SetImage(iconResource); + } + else + { + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::OPEN; + params.description = "Texture"; + params.extensions = wi::resourcemanager::GetSupportedImageExtensions(); + wi::helper::FileDialog(params, [this](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + wi::Resource res = wi::resourcemanager::Load(fileName); + if (!res.IsValid()) + return; + iconResource.SetTexture(editor->CreateThumbnail(res.GetTexture(), 128, 128, true)); + iconName = fileName; + iconButton.SetImage(iconResource); + }); + }); + } + }); + AddWidget(&iconButton); + + thumbnailButton.Create("projectThumbnail"); + thumbnailButton.SetText(""); + thumbnailButton.SetDescription("Thumbnail: "); + thumbnailButton.SetSize(XMFLOAT2(480 * 0.5f, 270 * 0.5f)); + thumbnailButton.SetTooltip("The thumbnail will be used for displaying the project in the editor."); + thumbnailButton.OnClick([this](wi::gui::EventArgs args) { + if (thumbnailResource.IsValid()) + { + thumbnailResource = {}; + thumbnailName = {}; + thumbnailButton.SetImage(thumbnailResource); + } + else + { + wi::helper::FileDialogParams params; + params.type = wi::helper::FileDialogParams::OPEN; + params.description = "Texture"; + params.extensions = wi::resourcemanager::GetSupportedImageExtensions(); + wi::helper::FileDialog(params, [this](std::string fileName) { + wi::eventhandler::Subscribe_Once(wi::eventhandler::EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) { + wi::Resource res = wi::resourcemanager::Load(fileName); + if (!res.IsValid()) + return; + thumbnailResource.SetTexture(editor->CreateThumbnail(res.GetTexture(), 480, 270)); + thumbnailName = fileName; + thumbnailButton.SetImage(thumbnailResource); + }); + }); + } + }); + AddWidget(&thumbnailButton); + + backlogColorPicker.Create("backlog color", wi::gui::Window::WindowControls::NONE); + backlogColorPicker.SetSize(XMFLOAT2(256, 256)); + backlogColorPicker.SetPickColor(exe_customization.backlog_color); + AddWidget(&backlogColorPicker); + + backgroundColorPicker.Create("background color", wi::gui::Window::WindowControls::NONE); + backgroundColorPicker.SetSize(XMFLOAT2(256, 256)); + backgroundColorPicker.SetPickColor(exe_customization.background_color); + AddWidget(&backgroundColorPicker); + + colorPreviewButton.Create("colorPreviewButton"); + colorPreviewButton.SetText("Preview:\nThese colors will be used by the application when showing the initialization screen. The text color will be also used for the backlog.\n\n[Click on this preview to reset colors]"); + colorPreviewButton.SetSize(XMFLOAT2(256, 128)); + colorPreviewButton.OnClick([this](wi::gui::EventArgs args) { + backlogColorPicker.SetPickColor(exe_customization.backlog_color); + backgroundColorPicker.SetPickColor(exe_customization.background_color); + }); + AddWidget(&colorPreviewButton); + + createButton.Create("projectCreate"); + createButton.SetText(ICON_PROJECT_CREATE " Select folder and create project"); + createButton.SetAngularHighlightWidth(6); + createButton.SetSize(XMFLOAT2(64, 64)); + createButton.font.params.scaling = 1.5f; + createButton.OnClick([this](wi::gui::EventArgs args) { + if (projectNameInput.GetText().empty()) + { + wi::helper::messageBox("Application name must be provided first!"); + return; + } + std::string folder = wi::helper::FolderDialog("Select location where project folder will be created."); + if (folder.empty()) + return; + std::string name = projectNameInput.GetText(); + while (name.length() > 250) + { + // The name cannot be longer than 256 - ".lua", so cut from the end of it + // It is specifically because I will later overwrite a reserved 256-long string inside the executable + name.pop_back(); + } + std::string directory = folder + "/" + name + "/"; + wi::helper::DirectoryCreate(directory); + wilog("Project creator: created directory %s", directory.c_str()); + + static const std::string script = R"( +-- This script was generated by Wicked Editor Project Creator. +-- Read the scripting API documentation here: https://github.com/turanszkij/WickedEngine/blob/master/Content/Documentation/ScriptingAPI-Documentation.md + +runProcess(function() + + -- set up a 3D render path, so if you load a model it will be displayed + local renderpath = RenderPath3D() + application.SetActivePath(renderpath) + + -- set up a simple text that will dynamically change every frame + local counter = 0 + local font = SpriteFont() + renderpath.AddFont(font) + + -- run an endless update loop, it will run until killProcesses() is called or the application exits + while true do + update() + + -- every frame the text is positioned to the center of the screen and display the value of the frame counter + font.SetText("Hello World! Current frame counter = " .. counter) + font.SetSize(12) + font.SetScale(3) + font.SetPos(Vector(GetScreenWidth() * 0.5, GetScreenHeight() * 0.5)) + font.SetAlign(WIFALIGN_CENTER, WIFALIGN_CENTER) + + counter = counter + 1 + + end + +end) +)"; + + std::string scriptfilename = name + ".lua"; + wi::helper::FileWrite(directory + scriptfilename, (const uint8_t*)script.data(), script.size()); + if (iconResource.IsValid()) + { + wi::helper::saveTextureToFile(iconResource.GetTexture(), directory + "icon.png"); + wi::helper::saveTextureToFile(iconResource.GetTexture(), directory + "icon.ico"); + } + if (thumbnailResource.IsValid()) + { + wi::helper::saveTextureToFile(thumbnailResource.GetTexture(), directory + "thumbnail.png"); + } + + wi::unordered_set exes; + exes.insert(wi::helper::BackslashToForwardSlash(wi::helper::GetExecutablePath())); + exes.insert(wi::helper::BackslashToForwardSlash(wi::helper::GetCurrentPath() + "/Editor_Windows.exe")); + exes.insert(wi::helper::BackslashToForwardSlash(wi::helper::GetCurrentPath() + "/Editor_Linux")); + + for (auto& exepath_src : exes) + { + if (!wi::helper::FileExists(exepath_src)) + continue; + std::string exepath_dst = directory + name; + std::string extension = wi::helper::toUpper(wi::helper::GetExtensionFromFileName(exepath_src)); + if (extension.find("EXE") != std::string::npos) + { + exepath_dst += "_Windows.exe"; + } + else + { + exepath_dst += "_Linux"; + } + if (wi::helper::FileCopy(exepath_src, exepath_dst)) + { + wilog("Project creator: preparing executable %s -> %s", exepath_src.c_str(), exepath_dst.c_str()); + wi::vector exedata; + if (wi::helper::FileRead(exepath_dst, exedata)) + { + // ApplicationExeCustomization replacement in the executable: + { + wi::vector match_padded256(256); + std::memcpy(match_padded256.data(), exe_customization.name_256padded, sizeof(exe_customization.name_256padded)); + + auto it = std::search(exedata.begin(), exedata.end(), match_padded256.begin(), match_padded256.end()); + if (it != exedata.end()) + { + wi::vector replacement(sizeof(ApplicationExeCustomization)); + ApplicationExeCustomization& customization = *(ApplicationExeCustomization*)replacement.data(); + std::memcpy(customization.name_256padded, name.c_str(), name.length()); + customization.backlog_color = backlogColorPicker.GetPickColor(); + customization.background_color = backgroundColorPicker.GetPickColor(); + std::copy(replacement.begin(), replacement.end(), it); + wilog("\tOverwritten ApplicationExeCustomization structure"); + } + } + + // startup script string replacement in the executable: + { + auto it = std::search(exedata.begin(), exedata.end(), editor->main->rewriteable_startup_script_text.begin(), editor->main->rewriteable_startup_script_text.end()); + if (it != exedata.end()) + { + wi::vector replacement(scriptfilename.length() + 1); + std::copy(scriptfilename.begin(), scriptfilename.end(), replacement.begin()); + std::copy(replacement.begin(), replacement.end(), it); + wilog("\tOverwritten startup script name: %s", scriptfilename.c_str()); + } + } + + // Win32 icon replacement: + if (iconResource.IsValid()) + { + wi::graphics::Texture tex = iconResource.GetTexture(); + + struct ICONDIR + { + uint16_t idReserved; // Reserved (must be 0) + uint16_t idType; // Resource Type (1 for icon) + uint16_t idCount; // Number of images + }; + struct ICONDIRENTRY + { + uint8_t bWidth; // Width, in pixels + uint8_t bHeight; // Height, in pixels + uint8_t bColorCount; // Number of colors (0 if >= 8bpp) + uint8_t bReserved; // Reserved (must be 0) + uint16_t wPlanes; // Color Planes + uint16_t wBitCount; // Bits per pixel + uint32_t dwBytesInRes; // Size of image data + uint32_t dwImageOffset;// Offset to image data + }; + struct BITMAPINFOHEADER + { + uint32_t biSize; // Size of this header + int32_t biWidth; // Width in pixels + int32_t biHeight; // Height in pixels (doubled for icon) + uint16_t biPlanes; // Number of color planes + uint16_t biBitCount; // Bits per pixel + uint32_t biCompression;// Compression method + uint32_t biSizeImage; // Size of image data + int32_t biXPelsPerMeter; // Horizontal resolution + int32_t biYPelsPerMeter; // Vertical resolution + uint32_t biClrUsed; // Colors used + uint32_t biClrImportant; // Important colors + }; + + const int resolutions[] = {128,64,32}; + + for (int res : resolutions) + { + const uint32_t pixelCount = res * res; + const uint32_t rgbDataSize = pixelCount * 4; // 32-bit RGBA + const uint32_t maskSize = ((res + 7) / 8) * res; // 1-bit mask, padded to byte + const uint32_t bmpInfoHeaderSize = sizeof(BITMAPINFOHEADER); + + BITMAPINFOHEADER bmpHeader = { + bmpInfoHeaderSize, // Size of header + int32_t(res), // Width + int32_t(res * 2), // Height (doubled for XOR + AND mask) + 1, // Planes + 32, // Bits per pixel + 0, // No compression + rgbDataSize + maskSize, // Image size + 0, // X pixels per meter + 0, // Y pixels per meter + 0, // Colors used + 0 // Important colors + }; + + wi::vector bmpvec(sizeof(bmpHeader)); + std::memcpy(bmpvec.data(), &bmpHeader, sizeof(bmpHeader)); + + // searches for exact BMP header match: + // TODO: add some validation here because this method is quite stupid, just checking header bit pattern is not foolproof + auto it = std::search(exedata.begin(), exedata.end(), bmpvec.begin(), bmpvec.end()); + if (it != exedata.end()) + { + wi::vector iconfiledata; + if (wi::helper::saveTextureToMemoryFile(editor->CreateThumbnail(tex, res, res, false), "ico", iconfiledata)) // note: individual mip thumbnails at this point! + { + // replace the BMP header and data part: + std::copy(iconfiledata.begin() + sizeof(ICONDIR) + sizeof(ICONDIRENTRY), iconfiledata.end(), it); + wilog("\tOverwritten Win32 icon at %d * %d resolution", res, res); + } + } + } + } + + // SDL icon replacement: + if (iconResource.IsValid()) + { + wi::graphics::Texture tex = iconResource.GetTexture(); + + std::string match = "Wicked Editor Embedded Icon Data SDL"; + wi::vector match_padded256(256); + std::memcpy(match_padded256.data(), match.c_str(), match.length()); + + // searches for match string: + auto it = std::search(exedata.begin(), exedata.end(), match_padded256.begin(), match_padded256.end()); + if (it != exedata.end()) + { + wi::vector iconfiledata; + if (wi::helper::saveTextureToMemoryFile(tex, "raw", iconfiledata)) + { + // replace the pixel data part: + std::copy(iconfiledata.begin(), iconfiledata.end(), it + 256); + wilog("\tOverwritten SDL icon"); + } + } + } + + if (wi::helper::FileWrite(exepath_dst, exedata.data(), exedata.size())) + { + wilog("\tSuccessfully prepared executable %s", exepath_dst.c_str()); + } + else + { + wilog_error("\nWriting executable %s failed!", exepath_dst.c_str()); + } + } + } + } + editor->RegisterRecentlyUsed(directory + scriptfilename); + wi::helper::OpenUrl(directory); + }); + AddWidget(&createButton); + + SetVisible(false); +} + +void ProjectCreatorWindow::ResizeLayout() +{ + wi::gui::Window::ResizeLayout(); + + layout.margin_left = 60; + + layout.add_fullwidth(infoLabel); + layout.add(projectNameInput); + + layout.jump(); + + layout.add_right(iconButton, thumbnailButton); + + layout.jump(); + + layout.add_fullwidth(colorPreviewButton); + layout.add_right(backlogColorPicker, backgroundColorPicker); + + layout.jump(); + + layout.add_fullwidth(createButton); + + colorPreviewButton.SetColor(backgroundColorPicker.GetPickColor()); + colorPreviewButton.font.params.color = backlogColorPicker.GetPickColor(); + colorPreviewButton.font.params.v_align = wi::font::WIFALIGN_TOP; + colorPreviewButton.font.params.h_align = wi::font::WIFALIGN_LEFT; + colorPreviewButton.font.params.h_wrap = colorPreviewButton.GetSize().x; +} diff --git a/Editor/ProjectCreatorWindow.h b/Editor/ProjectCreatorWindow.h new file mode 100644 index 000000000..9fcd4fd12 --- /dev/null +++ b/Editor/ProjectCreatorWindow.h @@ -0,0 +1,29 @@ +#pragma once +class EditorComponent; + +class ProjectCreatorWindow : public wi::gui::Window +{ +public: + void Create(EditorComponent* editor); + + EditorComponent* editor = nullptr; + + wi::gui::Label infoLabel; + wi::gui::TextInputField projectNameInput; + wi::gui::Button iconButton; + wi::gui::Button thumbnailButton; + wi::gui::Button createButton; + + wi::Resource iconResource; + std::string iconName; + + wi::gui::ColorPicker backlogColorPicker; + wi::gui::ColorPicker backgroundColorPicker; + wi::gui::Button colorPreviewButton; + + wi::Resource thumbnailResource; + std::string thumbnailName; + + void ResizeLayout() override; +}; + diff --git a/Editor/icon.c b/Editor/icon.c deleted file mode 100644 index 51e21f081..000000000 --- a/Editor/icon.c +++ /dev/null @@ -1,651 +0,0 @@ -/* GIMP RGBA C-Source image dump (Icon.c) */ - -static const struct { - uint width; - uint height; - uint bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ - const char *comment; - unsigned char pixel_data[64 * 64 * 4 + 1]; -} gimp_image = { - 64, 64, 4, - "Wicked Engine logo for Icon in SDL_Window", - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377" - "\377\377\000\377\377\377\000\377\377\377\000\377\377\377\000\377\377\377\000\377\377" - "\377\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\000\377\377\377\000\377\377\377\001\377\377\377\001\377" - "\377\377\001\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377\002\377\377" - "\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\000\377\377\377" - "\000\015\015\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\377\377\377\001\377\377\377" - "\002\377\377\377\002\377\377\377\003\377\377\377\004\377\377\377\004\377\377\377\005" - "\377\377\377\005\377\377\377\004\377\377\377\004\377\377\377\003\377\377\377\003\377" - "\377\377\002\377\377\377\002\377\377\377\001\377\377\377\001\377\377\377\000,,,\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377" - "\377\377\001\377\377\377\002\377\377\377\003\377\377\377\004\377\377\377\005\377\377" - "\377\007\377\377\377\010\377\377\377\011\377\377\377\012\377\377\377\012\377\377" - "\377\011\377\377\377\010\377\377\377\007\377\377\377\006\377\377\377\005\377\377" - "\377\004\377\377\377\003\377\377\377\002\377\377\377\001\377\377\377\000\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377" - "\001\377\377\377\002\377\377\377\004\377\377\377\006\377\377\377\010\377\377\377\012" - "\377\377\377\015\377\377\377\017\377\377\377\021\377\377\377\022\377\377\377" - "\022\377\377\377\022\377\377\377\020\377\377\377\016\377\377\377\014\377\377\377" - "\012\377\377\377\010\377\377\377\006\377\377\377\004\377\377\377\003\377\377\377" - "\002\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377" - "\001\377\377\377\002\377\377\377\003\377\377\377\005\377\377\377\007\377\377\377\012" - "\377\377\377\016\377\377\377\022\377\377\377\026\377\377\377\032\377\377\377" - "\035\377\377\377\037\377\377\377\037\377\377\377\036\377\377\377\034\377\377\377" - "\031\377\377\377\025\377\377\377\022\377\377\377\017\377\377\377\013\377\377\377" - "\010\377\377\377\005\377\377\377\003\377\377\377\002\377\377\377\001\377\377\377\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\377\377\377\000\377\377\377\001\377\377\377\002\377\377\377\004\377\377\377\006\377" - "\377\377\011\377\377\377\015\377\377\377\022\377\377\377\027\377\377\377\036\377" - "\377\377$\377\377\377)\377\377\377.\377\377\377\061\377\377\377\061\377\377" - "\377/\377\377\377,\377\377\377(\377\377\377#\377\377\377\036\377\377\377\030" - "\377\377\377\023\377\377\377\016\377\377\377\012\377\377\377\006\377\377\377\004" - "\377\377\377\002\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\002\377" - "\377\377\004\377\377\377\006\377\377\377\012\377\377\377\017\377\377\377\025\377" - "\377\377\034\377\377\377$\377\377\377-\377\377\377\066\377\377\377D\377\377" - "\377S\376\376\376]\371\371\371`\376\376\376O\377\377\377B\377\377\377<\377" - "\377\377\065\377\377\377.\377\377\377&\377\377\377\036\377\377\377\026\377\377" - "\377\020\377\377\377\012\377\377\377\006\377\377\377\003\377\377\377\002\377\377" - "\377\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\033\033\033\000\377\377" - "\377\000\377\377\377\001\377\377\377\003\377\377\377\006\377\377\377\012\377\377\377" - "\020\377\377\377\027\377\377\377\040\377\377\377*\377\377\377\065\377\377\377" - "@\377\377\377R\255\255\255\244www\331\\\\\\\350\062\062\062\363\315\315\315" - "\230\377\377\377^\377\377\377U\377\377\377S\377\377\377L\377\377\377:\377" - "\377\377,\377\377\377!\377\377\377\030\377\377\377\020\377\377\377\012\377\377" - "\377\006\377\377\377\003\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\003\377\377\377\005" - "\377\377\377\011\377\377\377\017\377\377\377\027\377\377\377\"\377\377\377." - "\377\377\377<\377\377\377J\377\377\377W\377\377\377p~~~\335\000\000\000\377\000\000" - "\000\377\000\000\000\377\241\241\241\324\377\377\377\210\377\377\377\177\274\274" - "\274\256~~~\312\362\362\362o\377\377\377B\377\377\377/\377\377\377\"\377" - "\377\377\027\377\377\377\017\377\377\377\011\377\377\377\004\377\377\377\002\377" - "\377\377\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\010\010\000\377\377\377\000\377\377" - "\377\002\377\377\377\004\377\377\377\007\377\377\377\015\377\377\377\026\377\377" - "\377!\377\377\377.\377\377\377E\327\327\327z\357\357\357\200\377\377\377" - "{\372\372\372\232mmm\356\000\000\000\377\000\000\000\377\000\000\000\377\063\063\063\374\201\201" - "\201\347\235\235\235\335\026\026\026\375\000\000\000\377ZZZ\350\335\335\335\204\377" - "\377\377D\377\377\377-\377\377\377\037\377\377\377\024\377\377\377\014\377\377" - "\377\007\377\377\377\003\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\001\377\377\377\002\377\377\377\005\377\377\377\012\377\377" - "\377\022\377\377\377\034\377\377\377+\377\377\377@\345\345\345~AAA\362;;;\367" - "\245\245\245\331^^^\362\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377" - "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377AAA\356\371\371\371a\377" - "\377\377:\377\377\377(\377\377\377\033\377\377\377\021\377\377\377\011\377\377" - "\377\005\377\377\377\002\377\377\377\001bbb\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377" - "\377\377\001\377\377\377\003\377\377\377\007\377\377\377\015\377\377\377\026\377" - "\377\377$\377\377\377\066\367\367\367fggg\341\000\000\000\377\000\000\000\377\000\000\000\377" - "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000" - "\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\235\235\235\316\377\377\377h\377\377" - "\377F\377\377\377\063\377\377\377\"\377\377\377\026\377\377\377\015\377\377" - "\377\007\377\377\377\003\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\000\377\377\377\002\377\377\377\004\377\377\377\011\377\377\377\020\377\377" - "\377\033\377\377\377*\377\377\377B\246\246\246\246\000\000\000\377\000\000\000\377\000\000" - "\000\377\000\000\000\377\000\000\000\377\001\001\001\377\002\002\002\377\004\004\004\377\005\005\005\377\004\004\004" - "\377\002\002\002\377\000\000\000\377\000\000\000\377\000\000\000\377\011\011\011\377\333\333\333\270" - "\377\377\377q\377\377\377T\377\377\377=\377\377\377*\377\377\377\033\377\377" - "\377\020\377\377\377\011\377\377\377\004\377\377\377\002\377\377\377\000\031\031\031" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377\001\377\377\377\002\377\377\377\005\377\377\377\013\377\377" - "\377\023\377\377\377\040\377\377\377\061\377\377\377H\370\370\370z}}}\343\000" - "\000\000\377\000\000\000\377\000\000\000\377\001\001\001\377\005\005\005\377\013\013\013\377\021\021\021\377" - "\023\023\023\377\020\020\020\377\013\013\013\377\004\004\004\377\001\001\001\377\000\000\000\377\000\000" - "\000\377\203\203\203\347\367\367\367\236\374\374\374z\376\376\376P\377\377" - "\377\062\377\377\377!\377\377\377\024\377\377\377\013\377\377\377\006\377\377" - "\377\003\377\377\377\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000ddd\000\377\377\377\001\377\377\377\003\377\377\377" - "\006\377\377\377\014\377\377\377\026\377\377\377$\377\377\377\067\377\377\377" - "N\377\377\377n\335\335\335\266\002\002\002\377\000\000\000\377\000\000\000\377\004\004\004\377\015" - "\015\015\377\030\030\030\377\"\"\"\377'''\377\"\"\"\377\027\027\027\377\014\014\014" - "\377\004\004\004\377\000\000\000\377\000\000\000\377\003\003\003\377\026\026\026\375###\367\301\301" - "\301\216\377\377\377;\377\377\377%\377\377\377\027\377\377\377\015\377\377" - "\377\007\377\377\377\003\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\001\377" - "\377\377\003\377\377\377\007\377\377\377\016\377\377\377\030\377\377\377(\377\377" - "\377<\377\377\377Z\377\377\377\203\262\262\262\322\000\000\000\377\000\000\000\377\002" - "\002\002\377\011\011\011\377\026\026\026\377'''\377\071\071\071\377AAA\377\067\067\067\377" - "%%%\377\024\024\024\377\010\010\010\377\001\001\001\377\000\000\000\377\000\000\000\377\000\000\000\377" - "\000\000\000\377\255\255\255\256\377\377\377C\377\377\377)\377\377\377\031\377\377" - "\377\017\377\377\377\007\377\377\377\004\377\377\377\001\377\377\377\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377" - "\000\377\377\377\001\377\377\377\004\377\377\377\010\377\377\377\017\377\377\377" - "\032\377\377\377*\377\377\377F\264\264\264\242qqq\345***\374\000\000\000\377\000\000" - "\000\377\003\003\003\377\015\015\015\377\035\035\035\377\064\064\064\377NNN\377___\377LLL" - "\377\060\060\060\377\032\032\032\377\013\013\013\377\003\003\003\377\000\000\000\377\000\000\000\377" - "\000\000\000\377\000\000\000\377\226\226\226\301\377\377\377I\377\377\377*\377\377\377" - "\032\377\377\377\017\377\377\377\010\377\377\377\004\377\377\377\001\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\377\377\377\000\377\377\377\001\377\377\377\004\377\377\377\010\377\377\377\020" - "\377\377\377\033\377\377\377+\377\377\377K\204\204\204\315\000\000\000\377\000\000\000" - "\377\000\000\000\377\000\000\000\377\003\003\003\377\016\016\016\377\037\037\037\377\065\065\065\377" - "PPP\377bbb\377OOO\377\062\062\062\377\033\033\033\377\014\014\014\377\003\003\003\377\000" - "\000\000\377\000\000\000\377\000\000\000\377\007\007\007\375\212\212\212\300\377\377\377H\377\377" - "\377*\377\377\377\032\377\377\377\017\377\377\377\010\377\377\377\004\377\377" - "\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\004\377\377\377" - "\010\377\377\377\017\377\377\377\032\377\377\377*\377\377\377G\237\237\237\274" - "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\002\002\002\377\013\013\013\377\031\031\031" - "\377+++\377===\377EEE\377;;;\377(((\377\027\027\027\377\011\011\011\377\002\002\002\377" - "\000\000\000\377\000\000\000\377\215\215\215\345\346\346\346\235\375\375\375f\377\377" - "\377?\377\377\377(\377\377\377\031\377\377\377\016\377\377\377\007\377\377\377" - "\003\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\003" - "\377\377\377\007\377\377\377\016\377\377\377\030\377\377\377'\377\377\377@\262" - "\262\262\244\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\001\001\001\377\007\007\007\377" - "\021\021\021\377\035\035\035\377(((\377,,,\377&&&\377\033\033\033\377\017\017\017\377" - "\006\006\006\377\001\001\001\377\000\000\000\377\001\001\001\377\316\316\316\274\377\377\377q\377" - "\377\377Q\377\377\377\071\377\377\377%\377\377\377\027\377\377\377\015\377\377" - "\377\006\377\377\377\003\377\377\377\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\001\377\377" - "\377\003\377\377\377\006\377\377\377\014\377\377\377\026\377\377\377#\377\377\377" - "\066\346\346\346i\270\270\270\256\273\273\273\313LLL\367\000\000\000\377\000\000\000\377" - "\002\002\002\377\010\010\010\377\020\020\020\377\026\026\026\377\030\030\030\377\025\025\025\377" - "\016\016\016\377\007\007\007\377\002\002\002\377\000\000\000\377\000\000\000\377\002\002\002\377\266\266\266" - "\312\377\377\377q\377\377\377J\377\377\377\063\377\377\377!\377\377\377\024" - "\377\377\377\013\377\377\377\006\377\377\377\002\377\377\377\001\060\060\060\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000MMM\000" - "\377\377\377\001\377\377\377\002\377\377\377\005\377\377\377\012\377\377\377\022" - "\377\377\377\036\377\377\377.\377\377\377C\377\377\377^\377\377\377\177\276" - "\276\276\313\000\000\000\377\000\000\000\377\000\000\000\377\002\002\002\377\005\005\005\377\011\011\011\377" - "\012\012\012\377\010\010\010\377\005\005\005\377\002\002\002\377\000\000\000\377\000\000\000\377\000\000\000" - "\377\000\000\000\377\023\023\023\375\273\273\273\237\377\377\377E\377\377\377-\377" - "\377\377\035\377\377\377\021\377\377\377\011\377\377\377\005\377\377\377\002\377" - "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\002\377\377\377\004\377" - "\377\377\010\377\377\377\017\377\377\377\030\377\377\377&\377\377\377\070\377" - "\377\377M\377\377\377m\301\301\301\302\000\000\000\377\000\000\000\377\000\000\000\377\000\000" - "\000\377\000\000\000\377\001\001\001\377\002\002\002\377\001\001\001\377\001\001\001\377\000\000\000\377\000\000\000" - "\377\000\000\000\377\000\000\000\377\000\000\000\377\062\062\062\367\330\330\330\202\377\377\377" - ";\377\377\377&\377\377\377\030\377\377\377\016\377\377\377\010\377\377\377\004" - "\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\001" - "\377\377\377\003\377\377\377\006\377\377\377\013\377\377\377\023\377\377\377\037" - "\377\377\377.\377\377\377A\370\370\370kQQQ\355\000\000\000\377\000\000\000\377\000\000\000" - "\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377" - "\025\025\025\376^^^\364\001\001\001\377\012\012\012\376\272\272\272\247\377\377\377L" - "\377\377\377/\377\377\377\037\377\377\377\024\377\377\377\013\377\377\377\006" - "\377\377\377\003\377\377\377\001\311\311\311\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000HHH\000\377\377\377" - "\001\377\377\377\002\377\377\377\004\377\377\377\010\377\377\377\017\377\377\377" - "\030\377\377\377%\377\377\377\065\373\373\373W\230\230\230\300\023\023\023\375" - "\000\000\000\377\000\000\000\377WWW\371\015\015\015\377\000\000\000\377\000\000\000\377\000\000\000\377\000" - "\000\000\377WWW\367\333\333\333\271\375\375\375\224\275\275\275\260\233\233\233" - "\263\377\377\377W\377\377\377\065\377\377\377%\377\377\377\031\377\377\377" - "\017\377\377\377\011\377\377\377\005\377\377\377\002\377\377\377\001===\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\002\377\377\377\003\377\377" - "\377\006\377\377\377\013\377\377\377\023\377\377\377\035\377\377\377*\377\377" - "\377<\377\377\377]\302\302\302\250\071\071\071\366\214\214\214\335\353\353\353" - "\301\"\"\"\375\210\210\210\363\000\000\000\377\000\000\000\377\000\000\000\377~~~\343\377\377" - "\377\200\377\377\377d\377\377\377Y\377\377\377L\377\377\377\067\377\377\377" - "(\377\377\377\034\377\377\377\023\377\377\377\014\377\377\377\006\377\377\377" - "\003\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\257\257\257\000\377\377\377\000\377\377\377\000\377\377\377\001\377" - "\377\377\001\377\377\377\001\377\377\377\001\377\377\377\002\377\377\377\003\377\377" - "\377\005\377\377\377\011\377\377\377\017\377\377\377\027\377\377\377\"\377\377" - "\377/\377\377\377?\377\377\377W\346\346\346~\374\374\374\200\310\310\310" - "\265NNN\366\306\306\306\316\000\000\000\377\006\006\006\376!!!\371\206\206\206\312\377" - "\377\377d\377\377\377N\377\377\377A\377\377\377\065\377\377\377)\377\377\377" - "\037\377\377\377\026\377\377\377\016\377\377\377\011\377\377\377\005\377\377\377" - "\002\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\377\377\377\000\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377" - "\002\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377\003\377\377\377\004" - "\377\377\377\005\377\377\377\010\377\377\377\015\377\377\377\023\377\377\377\034" - "\377\377\377&\377\377\377\063\377\377\377@\377\377\377N\377\377\377b\237\237" - "\237\304ggg\350\366\366\366\215\313\313\313\237\342\342\342\217\371\371\371" - "z\375\375\375a\377\377\377J\377\377\377=\377\377\377\063\377\377\377)\377" - "\377\377\040\377\377\377\030\377\377\377\021\377\377\377\013\377\377\377\007\377" - "\377\377\004\377\377\377\002\377\377\377\001)))\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\001\377\377\377\002\377\377" - "\377\003\377\377\377\003\377\377\377\004\377\377\377\004\377\377\377\004\377\377\377" - "\005\377\377\377\005\377\377\377\007\377\377\377\011\377\377\377\015\377\377\377" - "\022\377\377\377\031\377\377\377!\377\377\377+\377\377\377\066\377\377\377A" - "\377\377\377Zwww\330~~~\330\377\377\377f\377\377\377W\377\377\377Q\377\377" - "\377I\377\377\377A\377\377\377\071\377\377\377\061\377\377\377*\377\377\377" - "\"\377\377\377\033\377\377\377\024\377\377\377\016\377\377\377\011\377\377\377" - "\005\377\377\377\003\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\002\377\377\377\002\377" - "\377\377\004\377\377\377\005\377\377\377\006\377\377\377\007\377\377\377\007\377\377" - "\377\007\377\377\377\010\377\377\377\011\377\377\377\012\377\377\377\014\377\377" - "\377\021\353\353\353\032\377\377\377\031\377\377\377\037\377\377\377'\377\377" - "\377\060\377\377\377\071\376\376\376ZNNN\353\214\214\214\306\377\377\377S\377" - "\377\377E\377\377\377@\377\377\377;\377\377\377\066\377\377\377\060\377\377" - "\377+\377\377\377%\377\377\377\040\377\377\377\033\377\377\377\024\377\377\377" - "\015\377\377\377\010\377\377\377\005\377\377\377\003\377\377\377\001\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000###\000\377\377\377\000\377\377\377\001\377\377" - "\377\002\377\377\377\004\377\377\377\005\377\377\377\007\377\377\377\011\377\377\377" - "\012\377\377\377\013\377\377\377\014\377\377\377\014\377\377\377\015\377\377\377" - "\016\377\377\377\020\377\377\377\033\215\215\215[\377\377\377#\354\354\354(" - "\377\377\377(\377\377\377.\377\377\377\066\364\364\364`...\366\232\232\232" - "\264\377\377\377G\377\377\377;\377\377\377\070\377\377\377\064\377\377\377" - "\060\377\377\377-\377\377\377*\377\377\377/\365\365\365A\255\255\255a\254" - "\254\254\071\377\377\377\017\377\377\377\011\377\377\377\005\377\377\377\003\377" - "\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377" - "\377\001\377\377\377\002\377\377\377\003\377\377\377\005\351\351\351\013\375\375\375" - "\021\377\377\377\021\377\377\377\017\377\377\377\020\377\377\377\022\377\377\377" - "\022\377\377\377\023\377\377\377\024\377\377\377\026\377\377\377%}}}\225\376" - "\376\376\071\244\244\244Y\374\374\374\065\377\377\377\060\377\377\377\066\354" - "\354\354i\005\005\005\373\252\252\252\245\377\377\377@\377\377\377\067\377\377\377" - "\064\377\377\377\061\377\377\377/\377\377\377\061\374\374\374F\245\245\245\230" - "???\350\213\213\213\227\372\372\372#\377\377\377\020\377\377\377\012\377\377" - "\377\006\377\377\377\003\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\002\377\377\377\004\377\377" - "\377\006\323\323\323\025~~~b\256\256\256]\375\375\375+\377\377\377\033\377\377" - "\377\030\377\377\377\031\377\377\377\032\377\377\377\034\377\377\377\036\377\377" - "\377+}}}\253\320\320\320i\300\300\300f\275\275\275k\377\377\377\070\377\377" - "\377:\327\327\327x\000\000\000\377\265\265\265\226\377\377\377>\377\377\377\067" - "\377\377\377\065\377\377\377\063\377\377\377\066\363\363\363Wrrr\312\022\022\022" - "\375zzz\302\376\376\376\071\377\377\377\030\377\377\377\020\377\377\377\012\377" - "\377\377\006\377\377\377\003\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\002\377\377\377\004\377" - "\377\377\007\377\377\377\014\371\371\371$\177\177\177\232bbb\305\314\314\314" - "f\377\377\377\060\377\377\377#\377\377\377#\377\377\377$\377\377\377&\377" - "\377\377\060\236\236\236\232\224\224\224\255\371\371\371X\202\202\202\257" - "\377\377\377H\377\377\377A\315\315\315\205\000\000\000\377\302\302\302\215\377" - "\377\377@\377\377\377;\377\377\377\071\377\377\377:\367\367\367Xlll\322rr" - "r\347]]]\352\340\340\340b\377\377\377$\377\377\377\030\377\377\377\021\377" - "\377\377\013\377\377\377\006\377\377\377\003\377\377\377\001\377\377\377\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\002\377" - "\377\377\004\377\377\377\007\377\377\377\013\377\377\377\022\377\377\377+\236\236" - "\236\222'''\364\214\214\214\257\363\363\363O\377\377\377\061\377\377\377." - "\377\377\377\060\377\377\377\066\306\306\306\201NNN\346\375\375\375gzzz\301" - "\360\360\360d\377\377\377J\303\303\303\227\001\001\001\377\324\324\324\206\377" - "\377\377E\377\377\377A\377\377\377@\376\376\376U\205\205\205\304]]]\351\267" - "\267\267\274xxx\304\377\377\377<\377\377\377\"\377\377\377\031\377\377\377" - "\021\377\377\377\013\377\377\377\006\377\377\377\003\377\377\377\001\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\001\377\377\377\002\377" - "\377\377\004\377\377\377\007\377\377\377\013\377\377\377\021\377\377\377\030\377" - "\377\377/\261\261\261\213\036\036\036\371[[[\336\335\335\335n\377\377\377?\377" - "\377\377:\377\377\377>\361\361\361i%%%\367\327\327\327\214\242\242\242\257" - "\273\273\273\230\377\377\377W\275\275\275\242\004\004\004\376\331\331\331\205\377" - "\377\377L\377\377\377I\377\377\377U\247\247\247\255\071\071\071\364\342\342" - "\342\226___\343\305\305\305\202\377\377\377\062\377\377\377#\377\377\377\032" - "\377\377\377\022\377\377\377\013\377\377\377\006\377\377\377\003\377\377\377\001" - "\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\001\377" - "\377\377\002\377\377\377\004\377\377\377\007\377\377\377\013\377\377\377\020\377" - "\377\377\027\377\377\377\037\377\377\377\066\260\260\260\226\016\016\016\375DD" - "D\355\333\333\333|\377\377\377K\377\377\377H\377\377\377^kkk\336\237\237" - "\237\300\322\322\322\231\207\207\207\312\377\377\377i\256\256\256\261\017" - "\017\017\376\347\347\347\201\377\377\377V\345\345\345e\312\312\312\230&&&\370" - "\301\301\301\250\272\272\272\244KKK\351\372\372\372W\372\372\372\064\355\355" - "\355,\377\377\377\033\377\377\377\022\377\377\377\013\377\377\377\006\377\377" - "\377\003\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001" - "\000\377\377\377\000\377\377\377\001\377\377\377\003\377\377\377\006\377\377\377\012" - "\377\377\377\017\377\377\377\027\377\377\377\037\377\377\377)\377\377\377D\236" - "\236\236\261\002\002\002\377FFF\357\336\336\336\205\377\377\377Y\377\377\377^\244" - "\244\244\273```\351\365\365\365\224RRR\351\375\375\375\200\254\254\254\273" - "\024\024\024\375\360\360\360\205\377\377\377g\274\274\274\241RRR\356\230\230" - "\230\311\317\317\317\226}}}\330\222\222\222\274\377\377\377I\333\333\333" - "L\272\272\272S\377\377\377\035\377\377\377\022\377\377\377\013\377\377\377\006" - "\377\377\377\003\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\003\377\377\377\005\377\377" - "\377\011\377\377\377\017\377\377\377\026\377\377\377\037\377\377\377)\377\377" - "\377\066\374\374\374Zttt\326\012\012\012\377JJJ\357\341\341\341\216\377\377\377" - "i\335\335\335\227\023\023\023\374\344\344\344\252iii\350\331\331\331\245\254" - "\254\254\303\031\031\031\375\365\365\365\217\340\340\340\222ddd\347ggg\347\363" - "\363\363\216\261\261\261\267\062\062\062\367\332\332\332\206\377\377\377F\276" - "\276\276u\260\260\260p\377\377\377\040\377\377\377\023\377\377\377\014\377\377" - "\377\007\377\377\377\004\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\003\377\377\377\005" - "\377\377\377\011\377\377\377\017\377\377\377\026\377\377\377\037\377\377\377" - ",\361\361\361?\377\377\377I\346\346\346\200:::\365eee\366OOO\357\352\352" - "\352\224\376\376\376\207___\354\252\252\252\321\244\244\244\324\260\260\260" - "\313\256\256\256\320$$$\372\373\373\373\235\222\222\222\324$$$\373\335\335" - "\335\250\260\260\260\263\252\252\252\313jjj\344\324\324\324z\377\377\377" - "N\227\227\227\250\300\300\300m\377\377\377!\377\377\377\024\377\377\377\015" - "\377\377\377\007\377\377\377\004\377\377\377\002\377\377\377\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\017\017\017\000\377\377\377\000\377\377\377\001\377\377\377\003\377" - "\377\377\005\377\377\377\011\377\377\377\017\377\377\377\027\377\377\377!\377" - "\377\377\061\244\244\244y\366\366\366\\\335\335\335u\261\261\261\272NNN\371" - "\220\220\220\353fff\352\366\366\366\234\256\256\256\315YYY\363\323\323\323" - "\306\202\202\202\350\256\256\256\335...\371\363\363\363\264///\372\232\232" - "\232\330\352\352\352\242\253\253\253\314ddd\356\230\230\230\321\325\325\325" - "|\370\370\370iPPP\341\351\351\351W\377\377\377!\377\377\377\026\377\377\377" - "\016\377\377\377\010\377\377\377\004\377\377\377\002\377\377\377\001\377\377\377" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\"\"\"\000\377\377\377\000\377\377\377\001\377\377\377\002\377" - "\377\377\004\377\377\377\007\377\377\377\013\377\377\377\022\367\367\367\040\377" - "\377\377)\377\377\377\064\324\324\324j\235\235\235\257\273\273\273\235\361" - "\361\361\223jjj\352\222\222\222\352\204\204\204\355\205\205\205\342\355\355" - "\355\272)))\374\322\322\322\321TTT\365\252\252\252\350\061\061\061\372\304\304" - "\304\331...\373\355\355\355\263\224\224\224\326\275\275\275\321TTT\366\234" - "\234\234\316\375\375\375w\237\237\237\272ppp\321\377\377\377C\377\377\377" - "\"\377\377\377\027\377\377\377\017\377\377\377\011\377\377\377\005\377\377\377" - "\003\377\377\377\001\377\377\377\000FFF\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\030\030\030\000\377\377\377\000\377\377\377\000\377\377" - "\377\001\377\377\377\002\377\377\377\003\377\377\377\005\377\377\377\011\377\377\377" - "\015\377\377\377\025\263\263\263H\236\236\236|\375\375\375L\377\377\377T\235" - "\235\235\262\253\253\253\304\237\237\237\312\334\334\334\273###\374\313\313" - "\313\326ddd\364\254\254\254\340\217\217\217\355\225\225\225\354\212\212\212" - "\356\213\213\213\364\063\063\063\374\214\214\214\363\226\226\226\344\330\330" - "\330\303\241\241\241\342bbb\364\217\217\217\350\260\260\260\275\327\327\327" - "\244\"\"\"\372\305\305\305\215\377\377\377\070\377\377\377%\377\377\377\032" - "\377\377\377\021\377\377\377\013\377\377\377\007\377\377\377\004\377\377\377\002" - "\377\377\377\001\377\377\377\001\377\377\377\000\202\202\202\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\001\377\377" - "\377\001\377\377\377\002\377\377\377\003\377\377\377\005\377\377\377\010\377\377\377" - "\013\377\377\377\021\377\377\377\031\377\377\377+\251\251\251\203mmm\314\322" - "\322\322\213\374\374\374\177|||\334\205\205\205\350\243\243\243\335\242\242" - "\242\346___\365\340\340\340\321DDD\372\244\244\244\357---\375\261\261\261" - "\352CCC\374\035\035\035\376\061\061\061\376\333\333\333\321vvv\355\254\254\254" - "\345bbb\370qqq\360\350\350\350\261RRR\361~~~\323\377\377\377Z\377\377\377" - "\067\377\377\377(\377\377\377\035\377\377\377\023\377\377\377\015\377\377\377" - "\010\377\377\377\005\377\377\377\004\377\377\377\002\377\377\377\002\377\377\377\001" - "\377\377\377\001\377\377\377\000\255\255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\032\032\032\000\377\377\377\000\377\377\377\000" - "\377\377\377\001\377\377\377\001\377\377\377\002\377\377\377\002\377\377\377\003\377" - "\377\377\004\377\377\377\005\377\377\377\010\377\377\377\013\377\377\377\017\377" - "\377\377\025\377\377\377\035\377\377\377)\377\377\377@\315\315\315\205OOO\352" - "\212\212\212\324\343\343\343\263lll\357BBB\372\221\221\221\360___\372\222" - "\222\222\354\322\322\322\333BBB\375\061\061\061\376\240\240\240\362\023\023\023" - "\377\000\000\000\377ddd\367\310\310\310\336\230\230\230\357OOO\372nnn\370\253\253" - "\253\342kkk\360aaa\353\361\361\361\205\377\377\377Z\376\376\376J\374\374" - "\374\070\377\377\377$\377\377\377\027\377\377\377\020\377\377\377\013\377\377" - "\377\010\377\377\377\006\377\377\377\004\377\377\377\003\377\377\377\002\377\377\377" - "\002\377\377\377\001\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\377\377\377\001\377\377\377" - "\001\377\377\377\002\377\377\377\003\377\377\377\003\377\377\377\004\377\377\377\005" - "\377\377\377\007\377\377\377\011\377\377\377\014\377\377\377\020\377\377\377\025" - "\377\377\377\036\374\374\374-\373\373\373=\373\373\373M\374\374\374e\361\361" - "\361\217\234\234\234\331EEE\367\250\250\250\344ppp\370\014\014\014\377YYY\374" - "\022\022\022\377\257\257\257\350\262\262\262\351\000\000\000\377jjj\373\\\\\\\374" - "\000\000\000\377\260\260\260\353ppp\365\217\217\217\363QQQ\374KKK\374ddd\370ee" - "e\366\311\311\311\305\233\233\233\303{{{\305\227\227\227\242\253\253\253" - "u\307\307\307@\377\377\377\034\377\377\377\024\377\377\377\017\377\377\377\013" - "\377\377\377\011\377\377\377\007\377\377\377\005\377\377\377\004\377\377\377\003\377" - "\377\377\002\377\377\377\002\377\377\377\001\377\377\377\000mmm\000\000\000\000\000\000\000\000\000" - ")))\000\377\377\377\000\377\377\377\001\377\377\377\001\377\377\377\002\377\377\377" - "\003\377\377\377\004\377\377\377\005\377\377\377\006\377\377\377\007\377\377\377\011" - "\377\377\377\013\377\377\377\015\377\377\377\021\377\377\377\025\344\344\344" - "!\264\264\264=\254\254\254^\244\244\244{\233\233\233\225\214\214\214\262" - "uuu\321vvv\347vvv\362\030\030\030\376AAA\375\031\031\031\377\003\003\003\377\001\001\001\377" - "\004\004\004\377\260\260\260\354\206\206\206\365\000\000\000\377uuu\372\003\003\003\377\245" - "\245\245\361www\370+++\376%%%\376\015\015\015\377\005\005\005\377WWW\367\205\205\205" - "\343\310\310\310\264\333\333\333\225\261\261\261\227\240\240\240\201\260" - "\260\260U\340\340\340&\377\377\377\030\377\377\377\023\377\377\377\017\377\377" - "\377\014\377\377\377\012\377\377\377\010\377\377\377\007\377\377\377\005\377\377" - "\377\004\377\377\377\003\377\377\377\002\377\377\377\001\377\377\377\000\000\000\000\000\000" - "\000\000\000\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\002\377\377\377" - "\003\377\377\377\005\377\377\377\006\377\377\377\010\377\377\377\011\377\377\377" - "\013\377\377\377\015\377\377\377\020\377\377\377\023\377\377\377\027\377\377\377" - "\033\377\377\377\"\377\377\377+\377\377\377\066\377\377\377C\377\377\377R\377" - "\377\377c\377\377\377x\357\357\357\225\305\305\305\276\225\225\225\340QQ" - "Q\367\007\007\007\377\000\000\000\377\000\000\000\377\000\000\000\377\003\003\003\377|||\371)))\376KKK" - "\375\000\000\000\377@@@\375\071\071\071\375\022\022\022\377\004\004\004\377NNN\374\207\207" - "\207\361\234\234\234\344\203\203\203\340}}}\317\245\245\245\245\331\331\331" - "k\373\373\373D\377\377\377\060\377\377\377#\377\377\377\034\377\377\377\027" - "\377\377\377\023\377\377\377\020\377\377\377\016\377\377\377\014\377\377\377" - "\012\377\377\377\010\377\377\377\006\377\377\377\004\377\377\377\003\377\377\377" - "\002\377\377\377\001\377\377\377\000\000\000\000\000\377\377\377\001\377\377\377\001\377\377" - "\377\002\377\377\377\003\377\377\377\005\377\377\377\007\377\377\377\011\377\377\377" - "\013\377\377\377\015\377\377\377\017\377\377\377\022\377\377\377\025\377\377\377" - "\030\377\377\377\034\377\377\377\"\375\375\375/\354\354\354G\304\304\304p\254" - "\254\254\223\243\243\243\254\226\226\226\276\224\224\224\310\227\227\227" - "\317\235\235\235\324\255\255\255\326\271\271\271\335\236\236\236\354nnn\371" - "\037\037\037\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377" - "\023\023\023\377\000\000\000\377\000\000\000\377\031\031\031\377III\373\213\213\213\353\277" - "\277\277\314\354\354\354\244\375\375\375\202\375\375\375j\377\377\377V\377" - "\377\377F\377\377\377\071\377\377\377/\377\377\377&\377\377\377\040\377\377" - "\377\032\377\377\377\026\377\377\377\022\377\377\377\017\377\377\377\015\377\377" - "\377\012\377\377\377\010\377\377\377\006\377\377\377\004\377\377\377\003\377\377" - "\377\002\377\377\377\001\377\377\377\001\377\377\377\002\377\377\377\002\377\377\377" - "\003\377\377\377\005\377\377\377\007\377\377\377\011\377\377\377\013\377\377\377" - "\016\377\377\377\021\377\377\377\024\377\377\377\030\377\377\377\035\377\377\377" - "$\377\377\377.\363\363\363?\314\314\314n\262\262\262\233\256\256\256\271" - "\232\232\232\320\212\212\212\343ooo\360\060\060\060\373\005\005\005\377\000\000\000\377" - "\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000" - "\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000\000\377\000\000" - "\000\377\002\002\002\377\010\010\010\377\015\015\015\376\021\021\021\374...\365JJJ\354aaa" - "\340nnn\320\201\201\201\276\216\216\216\252\241\241\241\224\257\257\257|" - "\316\316\316`\355\355\355B\377\377\377.\377\377\377\037\377\377\377\024\377" - "\377\377\016\377\377\377\012\377\377\377\007\377\377\377\005\377\377\377\003\377" - "\377\377\002\377\377\377\001\377\377\377\001\377\377\377\002\377\377\377\003\377\377" - "\377\004\377\377\377\006\377\377\377\010\377\377\377\013\377\377\377\020\377\377" - "\377\030\377\377\377$\376\376\376\063\346\346\346L\277\277\277n\236\236\236" - "\223\204\204\204\265fff\324???\355\036\036\036\372\000\000\000\376\007\007\007\374###\370" - "===\363LLL\353[[[\345uuu\334\177\177\177\330\211\211\211\321\224\224\224" - "\314\233\233\233\312\246\246\246\303\254\254\254\276\255\255\255\275\260" - "\260\260\273\273\273\273\263\301\301\301\257\305\305\305\255\307\307\307" - "\254\311\311\311\252\311\311\311\251\310\310\310\247\306\306\306\244\301" - "\301\301\242\270\270\270\241\252\252\252\250\243\243\243\251\240\240\240" - "\247\234\234\234\246\225\225\225\254\207\207\207\265}}}\271ppp\305ggg\316" - "JJJ\334>>>\345OOO\324xxx\252\246\246\246m\346\346\346\065\377\377\377\032\377" - "\377\377\015\377\377\377\006\377\377\377\004\377\377\377\002\377\377\377\001\377\377" - "\377\001\377\377\377\003\377\377\377\003\377\377\377\005\377\377\377\011\377\377\377" - "\023\372\372\372$\314\314\314H\222\222\222\207mmm\272GGG\335\063\063\063\346" - "TTT\335hhh\312\201\201\201\272\220\220\220\252\240\240\240\233\265\265\265" - "\212\313\313\313y\342\342\342k\356\356\356b\375\375\375\\\377\377\377Y\377" - "\377\377Y\377\377\377Y\377\377\377Z\377\377\377Z\377\377\377Z\377\377\377" - "[\377\377\377[\377\377\377Z\377\377\377Z\377\377\377Z\377\377\377Y\377\377" - "\377W\377\377\377W\377\377\377U\377\377\377T\377\377\377R\377\377\377O\377" - "\377\377K\377\377\377G\377\377\377B\377\377\377?\377\377\377:\377\377\377" - "\065\377\377\377\061\377\377\377/\377\377\377.\377\377\377,\377\377\377.\377" - "\377\377/\377\377\377\063\372\372\372;\336\336\336J\267\267\267c\220\220\220" - "\203uuu\231uuu\207\205\205\205Y\326\326\326\025\377\377\377\005\377\377\377" - "\002\377\377\377\002\377\377\377\001\377\377\377\003\377\377\377\003\377\377\377\005" - "\256\256\256&wwwuqqq\222zzz\225\233\233\233z\301\301\301_\344\344\344G\376" - "\376\376;\377\377\377\064\377\377\377/\377\377\377-\377\377\377+\377\377\377" - "*\377\377\377*\377\377\377+\377\377\377,\377\377\377.\377\377\377\060\377" - "\377\377\062\377\377\377\064\377\377\377\066\377\377\377\070\377\377\377\071\377" - "\377\377;\377\377\377<\377\377\377<\377\377\377<\377\377\377<\377\377\377" - "<\377\377\377<\377\377\377;\377\377\377;\377\377\377:\377\377\377\071\377" - "\377\377\067\377\377\377\065\377\377\377\063\377\377\377\060\377\377\377-\377" - "\377\377)\377\377\377&\377\377\377\"\377\377\377\037\377\377\377\035\377\377" - "\377\033\377\377\377\031\377\377\377\027\377\377\377\026\377\377\377\025\377\377" - "\377\024\377\377\377\024\377\377\377\024\377\377\377\025\377\377\377\031\377\377" - "\377\033\322\322\322\"\237\237\237\037\377\377\377\004\377\377\377\002\377\377" - "\377\001\377\377\377\001\377\377\377\003\377\377\377\003\377\377\377\005\361\361\361" - "\017\367\367\367\032\377\377\377\031\377\377\377\027\377\377\377\025\377\377\377" - "\024\377\377\377\025\377\377\377\025\377\377\377\026\377\377\377\027\377\377\377" - "\031\377\377\377\032\377\377\377\033\377\377\377\035\377\377\377\036\377\377\377" - "\040\377\377\377!\377\377\377\"\377\377\377$\377\377\377%\377\377\377&\377" - "\377\377&\377\377\377'\377\377\377(\377\377\377(\377\377\377(\377\377\377" - "(\377\377\377(\377\377\377(\377\377\377'\377\377\377'\377\377\377'\377\377" - "\377&\377\377\377%\377\377\377$\377\377\377#\377\377\377\"\377\377\377\040" - "\377\377\377\036\377\377\377\034\377\377\377\032\377\377\377\030\377\377\377" - "\026\377\377\377\025\377\377\377\023\377\377\377\022\377\377\377\021\377\377\377" - "\021\377\377\377\020\377\377\377\017\377\377\377\016\377\377\377\015\377\377\377" - "\013\377\377\377\012\377\377\377\010\377\377\377\007\377\377\377\005\377\377\377" - "\003\377\377\377\002\377\377\377\001\377\377\377\001\377\377\377\002\377\377\377\003" - "\377\377\377\004\377\377\377\005\377\377\377\007\377\377\377\011\377\377\377\012" - "\377\377\377\014\377\377\377\016\377\377\377\017\377\377\377\020\377\377\377" - "\021\377\377\377\022\377\377\377\022\377\377\377\023\377\377\377\024\377\377\377" - "\025\377\377\377\025\377\377\377\026\377\377\377\026\377\377\377\027\377\377\377" - "\027\377\377\377\030\377\377\377\030\377\377\377\030\377\377\377\031\377\377\377" - "\031\377\377\377\031\377\377\377\031\377\377\377\031\377\377\377\031\377\377\377" - "\030\377\377\377\030\377\377\377\030\377\377\377\027\377\377\377\027\377\377\377" - "\027\377\377\377\026\377\377\377\025\377\377\377\025\377\377\377\024\377\377\377" - "\022\377\377\377\021\377\377\377\020\377\377\377\017\377\377\377\016\377\377\377" - "\016\377\377\377\015\377\377\377\014\377\377\377\014\377\377\377\014\377\377\377" - "\013\377\377\377\013\377\377\377\012\377\377\377\011\377\377\377\010\377\377\377" - "\007\377\377\377\006\377\377\377\005\377\377\377\003\377\377\377\002\377\377\377\001" - "\377\377\377\001\377\377\377\001\377\377\377\002\377\377\377\002\377\377\377\003\377" - "\377\377\004\377\377\377\005\377\377\377\006\377\377\377\010\377\377\377\011\377" - "\377\377\012\377\377\377\013\377\377\377\013\377\377\377\014\377\377\377\014\377" - "\377\377\014\377\377\377\015\377\377\377\015\377\377\377\015\377\377\377\016\377" - "\377\377\016\377\377\377\016\377\377\377\016\377\377\377\016\377\377\377\016\377" - "\377\377\016\377\377\377\016\377\377\377\016\377\377\377\016\377\377\377\016\377" - "\377\377\016\377\377\377\016\377\377\377\016\377\377\377\016\377\377\377\016\377" - "\377\377\015\377\377\377\015\377\377\377\015\377\377\377\015\377\377\377\014\377" - "\377\377\014\377\377\377\014\377\377\377\013\377\377\377\012\377\377\377\012\377" - "\377\377\011\377\377\377\011\377\377\377\010\377\377\377\010\377\377\377\010\377" - "\377\377\010\377\377\377\010\377\377\377\007\377\377\377\007\377\377\377\007\377" - "\377\377\006\377\377\377\006\377\377\377\006\377\377\377\005\377\377\377\004\377\377" - "\377\003\377\377\377\002\377\377\377\002\377\377\377\001\377\377\377\000\000\000\000\000\377" - "\377\377\001\377\377\377\001\377\377\377\002\377\377\377\003\377\377\377\003\377\377" - "\377\004\377\377\377\005\377\377\377\006\377\377\377\006\377\377\377\007\377\377\377" - "\007\377\377\377\007\377\377\377\007\377\377\377\007\377\377\377\007\377\377\377\010" - "\377\377\377\010\377\377\377\010\377\377\377\010\377\377\377\010\377\377\377" - "\010\377\377\377\010\377\377\377\007\377\377\377\007\377\377\377\007\377\377\377" - "\007\377\377\377\007\377\377\377\007\377\377\377\007\377\377\377\007\377\377\377\007" - "\377\377\377\007\377\377\377\007\377\377\377\006\377\377\377\006\377\377\377\006\377" - "\377\377\006\377\377\377\006\377\377\377\006\377\377\377\005\377\377\377\005\377\377" - "\377\005\377\377\377\005\377\377\377\005\377\377\377\004\377\377\377\004\377\377\377" - "\004\377\377\377\004\377\377\377\004\377\377\377\004\377\377\377\004\377\377\377\004" - "\377\377\377\004\377\377\377\004\377\377\377\004\377\377\377\003\377\377\377\003\377" - "\377\377\002\377\377\377\002\377\377\377\001\377\377\377\001\377\377\377\000\"\"\"" - "\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\001\377\377\377\001\377\377" - "\377\002\377\377\377\002\377\377\377\003\377\377\377\003\377\377\377\004\377\377\377" - "\004\377\377\377\004\377\377\377\004\377\377\377\004\377\377\377\004\377\377\377\004" - "\377\377\377\004\377\377\377\004\377\377\377\004\377\377\377\004\377\377\377\004\377" - "\377\377\004\377\377\377\004\377\377\377\004\377\377\377\004\377\377\377\003\377\377" - "\377\003\377\377\377\003\377\377\377\003\377\377\377\003\377\377\377\003\377\377\377" - "\003\377\377\377\003\377\377\377\003\377\377\377\003\377\377\377\003\377\377\377\003" - "\377\377\377\003\377\377\377\003\377\377\377\002\377\377\377\002\377\377\377\002\377" - "\377\377\002\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377\002\377\377" - "\377\002\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377" - "\002\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377\001" - "\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\001\377\377\377\001\377\377" - "\377\001\377\377\377\001\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377" - "\002\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377\002" - "\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377\002\377\377\377\002\377" - "\377\377\002\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377" - "\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377" - "\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001" - "\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377" - "\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377" - "\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377" - "\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\000" - "\377\377\377\000\"\"\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\060\060\060\000\377\377\377\000\377\377\377\000\377\377\377\000\377\377\377\001" - "\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377\377\377\001\377" - "\377\377\001\377\377\377\001\377\377\377\000\377\377\377\000\377\377\377\000\377\377" - "\377\000\377\377\377\000\377\377\377\000\377\377\377\000\377\377\377\000\377\377\377" - "\000\377\377\377\000\377\377\377\000JJJ\000$$$\000\040\040\040\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", -}; - diff --git a/Editor/icon.h b/Editor/icon.h new file mode 100644 index 000000000..1502923bf --- /dev/null +++ b/Editor/icon.h @@ -0,0 +1,2056 @@ +struct EmbeddedImage { +const unsigned int width = 128; +const unsigned int height = 128; +const unsigned int bytes_per_pixel = 4; +const char comment[256] = "Wicked Editor Embedded Icon Data SDL"; +const unsigned char pixel_data[128 * 128 * 4] = { +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,14,14,14,0,15,15,15,0,15,15,15,0,15,15,15,0, +15,15,15,0,15,15,15,0,15,15,15,0,15,15,15,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,1,1,0,19,19,19,0,92,92,92,1,159,159,159,1,229,229,229,1,233,233,233,1,236,236,236,1,238,238,238,1, +238,238,238,1,238,238,238,1,238,238,238,1,238,238,238,1,167,167,167,1,104,104,104,1,99,99,99,1,21,21,21,0, +14,14,14,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0, +61,61,61,0,218,218,218,1,243,243,243,1,248,248,248,1,251,251,251,2,253,253,253,2,254,254,254,2,255,255,255,2, +255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,1,254,254,254,1,240,240,240,1, +231,231,231,1,113,113,113,1,57,57,57,0,14,14,14,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,54,54,54,0,161,161,161,1, +238,238,238,1,249,249,249,1,251,251,251,2,253,253,253,2,254,254,254,3,255,255,255,3,255,255,255,3,255,255,255,3, +255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,2, +255,255,255,2,255,255,255,1,247,247,247,1,231,231,231,1,113,113,113,1,57,57,57,0,8,8,8,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,1,1,0,14,14,14,0,56,56,56,0,112,112,112,1,235,235,235,1,251,251,251,1, +253,253,253,2,253,253,253,2,254,254,254,3,255,255,255,4,255,255,255,4,255,255,255,5,255,255,255,5,255,255,255,5, +255,255,255,5,255,255,255,5,255,255,255,5,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,3,255,255,255,3, +255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,1,247,247,247,1,167,167,167,1,57,57,57,0, +8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,15,15,15,0, +57,57,57,0,104,104,104,1,113,113,113,1,230,230,230,1,245,245,245,1,254,254,254,1,254,254,254,2,254,254,254,3, +255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,6,255,255,255,6,255,255,255,7,255,255,255,7,255,255,255,7, +255,255,255,7,255,255,255,7,255,255,255,7,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,5,255,255,255,5, +255,255,255,4,255,255,255,4,255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,1,247,247,247,1, +167,167,167,1,57,57,57,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,57,57,57,0,167,167,167,1,238,238,238,1, +247,247,247,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,4, +255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,8,255,255,255,9,255,255,255,9,255,255,255,10,255,255,255,10, +255,255,255,10,255,255,255,9,255,255,255,9,255,255,255,9,255,255,255,8,255,255,255,8,255,255,255,7,255,255,255,7, +255,255,255,6,255,255,255,6,255,255,255,5,255,255,255,4,255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,2, +255,255,255,1,247,247,247,1,161,161,161,1,20,20,20,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,1,1,0,56,56,56,0,167,167,167,1,247,247,247,1,255,255,255,1,255,255,255,2, +255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,5,255,255,255,6, +255,255,255,7,255,255,255,9,255,255,255,10,255,255,255,11,255,255,255,12,255,255,255,13,255,255,255,13,255,255,255,13, +255,255,255,13,255,255,255,13,255,255,255,13,255,255,255,12,255,255,255,12,255,255,255,11,255,255,255,10,255,255,255,9, +255,255,255,8,255,255,255,8,255,255,255,7,255,255,255,6,255,255,255,5,255,255,255,4,255,255,255,4,255,255,255,3, +255,255,255,2,255,255,255,2,254,254,254,1,232,232,232,1,63,63,63,0,1,1,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,13,13,13,0,108,108,108,1,239,239,239,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,3, +255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,8,255,255,255,10, +255,255,255,11,255,255,255,12,255,255,255,14,255,255,255,15,255,255,255,16,255,255,255,17,255,255,255,18,255,255,255,18, +255,255,255,18,255,255,255,17,255,255,255,17,255,255,255,16,255,255,255,16,255,255,255,15,255,255,255,14,255,255,255,13, +255,255,255,12,255,255,255,10,255,255,255,9,255,255,255,8,255,255,255,7,255,255,255,6,255,255,255,5,255,255,255,4, +255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,1,239,239,239,1,65,65,65,0,8,8,8,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +13,13,13,0,162,162,162,1,254,254,254,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,4, +255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,8,255,255,255,9,255,255,255,11,255,255,255,12,255,255,255,14, +255,255,255,15,255,255,255,17,255,255,255,18,255,255,255,20,255,255,255,21,255,255,255,22,255,255,255,23,255,255,255,23, +255,255,255,23,255,255,255,23,255,255,255,22,255,255,255,21,255,255,255,20,255,255,255,19,255,255,255,18,255,255,255,17, +255,255,255,15,255,255,255,14,255,255,255,12,255,255,255,11,255,255,255,10,255,255,255,8,255,255,255,7,255,255,255,6, +255,255,255,5,255,255,255,4,255,255,255,3,255,255,255,2,255,255,255,1,247,247,247,1,161,161,161,1,13,13,13,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,56,56,56,0, +168,168,168,1,254,254,254,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,6, +255,255,255,7,255,255,255,9,255,255,255,10,255,255,255,12,255,255,255,13,255,255,255,15,255,255,255,17,255,255,255,18, +255,255,255,20,255,255,255,22,255,255,255,24,255,255,255,26,255,255,255,27,255,255,255,28,255,255,255,29,255,255,255,29, +255,255,255,29,255,255,255,29,255,255,255,28,255,255,255,27,255,255,255,26,255,255,255,24,255,255,255,23,255,255,255,21, +255,255,255,20,255,255,255,18,255,255,255,17,255,255,255,15,255,255,255,13,255,255,255,11,255,255,255,9,255,255,255,8, +255,255,255,7,255,255,255,5,255,255,255,4,255,255,255,3,255,255,255,2,255,255,255,2,254,254,254,1,162,162,162,1, +13,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,63,63,63,0,239,239,239,1, +255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,9, +255,255,255,10,255,255,255,12,255,255,255,14,255,255,255,16,255,255,255,18,255,255,255,20,255,255,255,22,255,255,255,24, +255,255,255,27,255,255,255,29,255,255,255,32,255,255,255,34,255,255,255,35,255,255,255,36,255,255,255,37,255,255,255,37, +255,255,255,37,255,255,255,36,255,255,255,35,255,255,255,34,255,255,255,33,255,255,255,31,255,255,255,29,255,255,255,27, +255,255,255,25,255,255,255,23,255,255,255,21,255,255,255,19,255,255,255,17,255,255,255,15,255,255,255,13,255,255,255,11, +255,255,255,9,255,255,255,7,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,255,255,255,2,254,254,254,1, +161,161,161,1,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,20,0,232,232,232,1,255,255,255,1, +255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,6,255,255,255,8,255,255,255,10,255,255,255,12, +255,255,255,14,255,255,255,16,255,255,255,18,255,255,255,21,255,255,255,23,255,255,255,26,255,255,255,29,255,255,255,32, +255,255,255,34,255,255,255,37,255,255,255,40,255,255,255,42,255,255,255,43,255,255,255,44,255,255,255,45,255,255,255,45, +255,255,255,45,255,255,255,44,255,255,255,44,255,255,255,42,255,255,255,41,255,255,255,39,255,255,255,37,255,255,255,34, +255,255,255,32,255,255,255,29,255,255,255,26,255,255,255,23,255,255,255,21,255,255,255,19,255,255,255,16,255,255,255,14, +255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,255,255,255,2, +247,247,247,1,65,65,65,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,0,162,162,162,1,254,254,254,1,255,255,255,2, +255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,7,255,255,255,8,255,255,255,10,255,255,255,13,255,255,255,15, +255,255,255,18,255,255,255,20,255,255,255,23,255,255,255,26,255,255,255,30,255,255,255,33,255,255,255,36,255,255,255,40, +255,255,255,42,255,255,255,45,255,255,255,48,255,255,255,50,255,255,255,52,255,255,255,54,255,255,255,54,255,255,255,55, +255,255,255,55,255,255,255,54,255,255,255,53,255,255,255,51,255,255,255,49,255,255,255,47,255,255,255,45,255,255,255,42, +255,255,255,39,255,255,255,36,255,255,255,33,255,255,255,29,255,255,255,26,255,255,255,23,255,255,255,20,255,255,255,17, +255,255,255,14,255,255,255,12,255,255,255,10,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2, +255,255,255,1,239,239,239,1,63,63,63,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,0,162,162,162,1,254,254,254,1,255,255,255,2,255,255,255,3, +255,255,255,4,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,11,255,255,255,13,255,255,255,16,255,255,255,19, +255,255,255,22,255,255,255,26,255,255,255,29,255,255,255,33,255,255,255,37,255,255,255,41,255,255,255,44,255,255,255,48, +255,255,255,52,255,255,255,55,255,255,255,58,255,255,255,61,255,255,255,64,255,255,255,66,255,255,255,68,255,255,255,69, +255,255,255,68,255,255,255,65,255,255,255,63,255,255,255,61,255,255,255,59,255,255,255,57,255,255,255,54,255,255,255,51, +255,255,255,47,255,255,255,44,255,255,255,40,255,255,255,36,255,255,255,32,255,255,255,29,255,255,255,25,255,255,255,21, +255,255,255,18,255,255,255,15,255,255,255,12,255,255,255,10,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3, +255,255,255,2,255,255,255,1,232,232,232,1,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,1,1,0,108,108,108,1,254,254,254,1,255,255,255,2,255,255,255,3,255,255,255,4, +255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,11,255,255,255,13,255,255,255,16,255,255,255,20,255,255,255,23, +255,255,255,27,255,255,255,32,255,255,255,36,255,255,255,40,255,255,255,45,255,255,255,49,255,255,255,53,255,255,255,57, +255,255,255,62,255,255,255,68,255,255,255,77,255,255,255,84,255,255,255,91,255,255,255,97,252,252,252,104,247,247,247,109, +245,245,245,104,254,254,254,86,255,255,255,76,255,255,255,72,255,255,255,70,255,255,255,67,255,255,255,64,255,255,255,60, +255,255,255,56,255,255,255,52,255,255,255,48,255,255,255,43,255,255,255,39,255,255,255,35,255,255,255,30,255,255,255,26, +255,255,255,22,255,255,255,18,255,255,255,15,255,255,255,12,255,255,255,10,255,255,255,8,255,255,255,6,255,255,255,4, +255,255,255,3,255,255,255,2,254,254,254,1,161,161,161,1,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,56,56,56,0,239,239,239,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,5, +255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,13,255,255,255,17,255,255,255,20,255,255,255,24,255,255,255,28, +255,255,255,33,255,255,255,38,255,255,255,42,255,255,255,47,255,255,255,53,255,255,255,58,255,255,255,63,255,255,255,67, +255,255,255,75,251,251,251,95,221,221,221,131,183,183,183,157,150,150,150,176,120,120,120,192,92,92,92,206,64,64,64,218, +67,67,67,211,240,240,240,124,255,255,255,92,255,255,255,84,255,255,255,81,255,255,255,78,255,255,255,74,255,255,255,70, +255,255,255,67,255,255,255,62,255,255,255,56,255,255,255,51,255,255,255,46,255,255,255,41,255,255,255,36,255,255,255,31, +255,255,255,27,255,255,255,22,255,255,255,18,255,255,255,15,255,255,255,12,255,255,255,9,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,3,255,255,255,2,247,247,247,1,65,65,65,0,1,1,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,8,8,8,0,167,167,167,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6, +255,255,255,8,255,255,255,11,255,255,255,13,255,255,255,17,255,255,255,20,255,255,255,24,255,255,255,29,255,255,255,34, +255,255,255,39,255,255,255,44,255,255,255,50,255,255,255,56,255,255,255,61,255,255,255,67,255,255,255,73,255,255,255,79, +255,255,255,91,201,201,201,142,23,23,23,242,9,9,9,251,5,5,5,253,2,2,2,254,0,0,0,255,0,0,0,255, +9,9,9,251,183,183,183,169,255,255,255,112,255,255,255,98,255,255,255,93,255,255,255,90,255,255,255,88,255,255,255,90, +251,251,251,92,255,255,255,82,255,255,255,69,255,255,255,60,255,255,255,54,255,255,255,48,255,255,255,42,255,255,255,37, +255,255,255,31,255,255,255,27,255,255,255,22,255,255,255,18,255,255,255,15,255,255,255,12,255,255,255,9,255,255,255,7, +255,255,255,5,255,255,255,3,255,255,255,2,255,255,255,1,232,232,232,1,20,20,20,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,57,57,57,0,247,247,247,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8, +255,255,255,10,255,255,255,13,255,255,255,16,255,255,255,20,255,255,255,24,255,255,255,29,255,255,255,34,255,255,255,39, +255,255,255,45,255,255,255,52,255,255,255,58,255,255,255,65,255,255,255,71,255,255,255,77,255,255,255,83,255,255,255,90, +255,255,255,106,189,189,189,165,9,9,9,251,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +1,1,1,254,108,108,108,208,253,253,253,135,255,255,255,114,255,255,255,108,255,255,255,105,255,255,255,112,226,226,226,139, +104,104,104,189,199,199,199,144,254,254,254,99,255,255,255,76,255,255,255,63,255,255,255,56,255,255,255,49,255,255,255,43, +255,255,255,37,255,255,255,31,255,255,255,26,255,255,255,22,255,255,255,18,255,255,255,14,255,255,255,11,255,255,255,8, +255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,254,254,254,1,108,108,108,1,1,1,1,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +8,8,8,0,167,167,167,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,5,255,255,255,7,255,255,255,9, +255,255,255,12,255,255,255,15,255,255,255,19,255,255,255,23,255,255,255,28,255,255,255,34,255,255,255,39,255,255,255,46, +255,255,255,52,255,255,255,60,255,255,255,69,255,255,255,76,255,255,255,82,255,255,255,88,255,255,255,95,255,255,255,102, +255,255,255,119,180,180,180,178,8,8,8,252,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,50,50,50,237,238,238,238,171,254,254,254,143,255,255,255,132,255,255,255,134,214,214,214,163,56,56,56,228, +2,2,2,254,28,28,28,240,162,162,162,172,250,250,250,111,255,255,255,81,255,255,255,65,255,255,255,56,255,255,255,49, +255,255,255,43,255,255,255,36,255,255,255,31,255,255,255,26,255,255,255,21,255,255,255,17,255,255,255,13,255,255,255,10, +255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,239,239,239,1,56,56,56,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +57,57,57,0,247,247,247,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11, +255,255,255,14,255,255,255,18,255,255,255,22,255,255,255,27,255,255,255,33,255,255,255,39,255,255,255,45,255,255,255,52, +255,255,255,60,255,255,255,74,251,251,251,94,249,249,249,106,255,255,255,104,255,255,255,104,255,255,255,108,255,255,255,117, +255,255,255,138,172,172,172,194,7,7,7,253,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,6,6,6,253,62,62,62,235,109,109,109,214,183,183,183,191,196,196,196,191,44,44,44,238,1,1,1,255, +0,0,0,255,0,0,0,255,13,13,13,249,115,115,115,194,242,242,242,123,255,255,255,86,255,255,255,66,255,255,255,56, +255,255,255,49,255,255,255,42,255,255,255,36,255,255,255,30,255,255,255,24,255,255,255,20,255,255,255,16,255,255,255,12, +255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,3,255,255,255,2,255,255,255,1,167,167,167,1,8,8,8,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0, +167,167,167,1,255,255,255,1,255,255,255,2,255,255,255,4,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,13, +255,255,255,17,255,255,255,21,255,255,255,26,255,255,255,31,255,255,255,37,255,255,255,44,255,255,255,52,255,255,255,59, +255,255,255,73,252,252,252,103,137,137,137,173,79,79,79,208,195,195,195,165,250,250,250,138,255,255,255,134,252,252,252,148, +205,205,205,182,78,78,78,231,3,3,3,254,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,9,9,9,252,15,15,15,251,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,5,5,5,253,75,75,75,215,221,221,221,134,254,254,254,85,255,255,255,65, +255,255,255,55,255,255,255,48,255,255,255,40,255,255,255,34,255,255,255,28,255,255,255,22,255,255,255,18,255,255,255,14, +255,255,255,11,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,240,240,240,1,21,21,21,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0, +240,240,240,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,15, +255,255,255,19,255,255,255,23,255,255,255,29,255,255,255,36,255,255,255,42,255,255,255,50,255,255,255,58,255,255,255,70, +254,254,254,97,180,180,180,162,19,19,19,245,1,1,1,255,16,16,16,248,90,90,90,218,200,200,200,191,115,115,115,215, +21,21,21,248,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,2,2,2,254,58,58,58,218,244,244,244,108,255,255,255,74, +255,255,255,62,255,255,255,54,255,255,255,45,255,255,255,38,255,255,255,32,255,255,255,26,255,255,255,21,255,255,255,16, +255,255,255,13,255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,3,255,255,255,2,254,254,254,1,108,108,108,1, +1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,99,99,1, +254,254,254,1,255,255,255,2,255,255,255,3,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,13,255,255,255,17, +255,255,255,21,255,255,255,26,255,255,255,33,255,255,255,39,255,255,255,47,255,255,255,55,255,255,255,66,255,255,255,89, +216,216,216,143,38,38,38,235,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,12,12,12,252,3,3,3,254, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,1,1,1,255,1,1,1,255,1,1,1,255, +1,1,1,255,1,1,1,255,1,1,1,255,1,1,1,255,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,2,2,2,254,102,102,102,201,251,251,251,110,255,255,255,80, +255,255,255,68,255,255,255,59,255,255,255,51,255,255,255,43,255,255,255,36,255,255,255,29,255,255,255,23,255,255,255,19, +255,255,255,15,255,255,255,11,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,232,232,232,1, +20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,167,167,167,1, +255,255,255,1,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,15,255,255,255,19, +255,255,255,23,255,255,255,29,255,255,255,36,255,255,255,44,255,255,255,52,255,255,255,62,255,255,255,81,240,240,240,126, +67,67,67,219,1,1,1,254,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,1,1,1,255,1,1,1,255,2,2,2,255,3,3,3,255,4,4,4,255,5,5,5,255,5,5,5,255, +5,5,5,255,5,5,5,255,4,4,4,255,2,2,2,255,1,1,1,255,1,1,1,255,1,1,1,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,30,30,30,242,221,221,221,156,255,255,255,106,255,255,255,85, +255,255,255,74,255,255,255,64,255,255,255,56,255,255,255,47,255,255,255,39,255,255,255,32,255,255,255,26,255,255,255,21, +255,255,255,17,255,255,255,13,255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,3,255,255,255,2,254,254,254,1, +99,99,99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,240,240,240,1, +255,255,255,2,255,255,255,3,255,255,255,5,255,255,255,6,255,255,255,9,255,255,255,12,255,255,255,16,255,255,255,21, +255,255,255,26,255,255,255,32,255,255,255,40,255,255,255,48,255,255,255,57,255,255,255,70,248,248,248,105,105,105,105,197, +4,4,4,253,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255, +1,1,1,255,2,2,2,255,4,4,4,255,7,7,7,255,10,10,10,255,14,14,14,255,16,16,16,255,17,17,17,255, +17,17,17,255,15,15,15,255,12,12,12,255,9,9,9,255,6,6,6,255,3,3,3,255,1,1,1,255,1,1,1,255, +0,0,0,255,0,0,0,255,0,0,0,255,4,4,4,254,127,127,127,209,253,253,253,137,255,255,255,106,255,255,255,92, +255,255,255,80,255,255,255,70,255,255,255,61,255,255,255,52,255,255,255,43,255,255,255,36,255,255,255,29,255,255,255,23, +255,255,255,18,255,255,255,14,255,255,255,10,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,2,255,255,255,1, +167,167,167,1,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,99,99,1,254,254,254,1, +255,255,255,2,255,255,255,3,255,255,255,5,255,255,255,7,255,255,255,10,255,255,255,13,255,255,255,18,255,255,255,22, +255,255,255,28,255,255,255,35,255,255,255,43,255,255,255,52,255,255,255,61,255,255,255,77,200,200,200,133,19,19,19,244, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,1,1,1,255, +2,2,2,255,6,6,6,255,12,12,12,255,18,18,18,255,24,24,24,255,29,29,29,255,32,32,32,255,33,33,33,255, +33,33,33,255,31,31,31,255,26,26,26,255,21,21,21,255,15,15,15,255,9,9,9,255,4,4,4,255,1,1,1,255, +1,1,1,255,0,0,0,255,0,0,0,255,9,9,9,253,179,179,179,200,255,255,255,140,255,255,255,112,255,255,255,98, +255,255,255,87,255,255,255,76,255,255,255,65,255,255,255,56,255,255,255,47,255,255,255,39,255,255,255,32,255,255,255,25, +255,255,255,20,255,255,255,16,255,255,255,12,255,255,255,9,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2, +240,240,240,1,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,113,113,113,1,255,255,255,1, +255,255,255,2,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,15,255,255,255,19,255,255,255,24, +255,255,255,31,255,255,255,38,255,255,255,46,255,255,255,55,255,255,255,65,255,255,255,80,248,248,248,114,117,117,117,196, +8,8,8,252,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,1,1,1,255,2,2,2,255, +8,8,8,255,16,16,16,255,25,25,25,255,34,34,34,255,41,41,41,255,47,47,47,255,50,50,50,255,52,52,52,255, +51,51,51,255,48,48,48,255,44,44,44,255,37,37,37,255,29,29,29,255,20,20,20,255,11,11,11,255,4,4,4,255, +1,1,1,255,1,1,1,255,0,0,0,255,0,0,0,255,54,54,54,236,240,240,240,162,255,255,255,125,255,255,255,108, +255,255,255,96,255,255,255,83,255,255,255,71,255,255,255,60,255,255,255,51,255,255,255,42,255,255,255,34,255,255,255,27, +255,255,255,22,255,255,255,17,255,255,255,13,255,255,255,10,255,255,255,7,255,255,255,5,255,255,255,3,255,255,255,2, +254,254,254,1,99,99,99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,231,231,231,1,255,255,255,2, +255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,9,255,255,255,12,255,255,255,16,255,255,255,20,255,255,255,26, +255,255,255,33,255,255,255,41,255,255,255,49,255,255,255,59,255,255,255,69,255,255,255,81,255,255,255,100,246,246,246,137, +108,108,108,210,6,6,6,253,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,2,2,2,255,8,8,8,255, +17,17,17,255,28,28,28,255,39,39,39,255,49,49,49,255,57,57,57,255,63,63,63,255,68,68,68,255,70,70,70,255, +69,69,69,255,66,66,66,255,61,61,61,255,52,52,52,255,43,43,43,255,33,33,33,255,22,22,22,255,12,12,12,255, +4,4,4,255,1,1,1,255,1,1,1,255,0,0,0,255,6,6,6,253,145,145,145,206,249,249,249,156,250,250,250,136, +252,252,252,122,253,253,253,105,255,255,255,83,255,255,255,65,255,255,255,54,255,255,255,45,255,255,255,37,255,255,255,30, +255,255,255,23,255,255,255,19,255,255,255,14,255,255,255,11,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,2, +255,255,255,1,113,113,113,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,238,238,238,1,255,255,255,2, +255,255,255,3,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,13,255,255,255,17,255,255,255,22,255,255,255,28, +255,255,255,35,255,255,255,43,255,255,255,52,255,255,255,62,255,255,255,72,255,255,255,84,255,255,255,97,255,255,255,118, +245,245,245,160,78,78,78,231,1,1,1,255,0,0,0,255,1,1,1,255,2,2,2,255,7,7,7,255,16,16,16,255, +28,28,28,255,40,40,40,255,52,52,52,255,63,63,63,255,72,72,72,255,78,78,78,255,83,83,83,255,85,85,85,255, +85,85,85,255,81,81,81,255,75,75,75,255,66,66,66,255,56,56,56,255,45,45,45,255,33,33,33,255,21,21,21,255, +10,10,10,255,3,3,3,255,1,1,1,255,1,1,1,255,0,0,0,255,29,29,29,247,73,73,73,229,80,80,80,220, +86,86,86,212,103,103,103,194,235,235,235,114,255,255,255,73,255,255,255,57,255,255,255,48,255,255,255,40,255,255,255,32, +255,255,255,25,255,255,255,20,255,255,255,15,255,255,255,11,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3, +255,255,255,2,231,231,231,1,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,57,0,247,247,247,1,255,255,255,2, +255,255,255,3,255,255,255,5,255,255,255,7,255,255,255,10,255,255,255,14,255,255,255,18,255,255,255,23,255,255,255,30, +255,255,255,37,255,255,255,45,255,255,255,54,255,255,255,64,255,255,255,76,255,255,255,87,255,255,255,100,255,255,255,118, +248,248,248,155,70,70,70,231,0,0,0,255,0,0,0,255,1,1,1,255,4,4,4,255,12,12,12,255,25,25,25,255, +38,38,38,255,51,51,51,255,63,63,63,255,74,74,74,255,84,84,84,255,93,93,93,255,99,99,99,255,102,102,102,255, +101,101,101,255,96,96,96,255,88,88,88,255,78,78,78,255,68,68,68,255,55,55,55,255,43,43,43,255,30,30,30,255, +17,17,17,255,7,7,7,255,2,2,2,255,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,10,10,10,250,192,192,192,149,255,255,255,82,255,255,255,60,255,255,255,50,255,255,255,42,255,255,255,34, +255,255,255,27,255,255,255,21,255,255,255,16,255,255,255,12,255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,3, +255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1,255,255,255,1,255,255,255,2, +255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,14,255,255,255,19,255,255,255,24,255,255,255,31, +255,255,255,38,255,255,255,47,255,255,255,56,255,255,255,67,255,255,255,79,255,255,255,91,255,255,255,105,255,255,255,125, +232,232,232,169,24,24,24,247,0,0,0,255,1,1,1,255,2,2,2,255,7,7,7,255,17,17,17,255,32,32,32,255, +46,46,46,255,61,61,61,255,73,73,73,255,85,85,85,255,97,97,97,255,107,107,107,255,114,114,114,255,117,117,117,255, +116,116,116,255,110,110,110,255,101,101,101,255,89,89,89,255,77,77,77,255,65,65,65,255,51,51,51,255,38,38,38,255, +24,24,24,255,12,12,12,255,4,4,4,255,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,6,6,6,252,158,158,158,171,255,255,255,89,255,255,255,63,255,255,255,52,255,255,255,43,255,255,255,35, +255,255,255,28,255,255,255,22,255,255,255,17,255,255,255,13,255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,3, +255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1,255,255,255,1,255,255,255,2, +255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,15,255,255,255,19,255,255,255,25,255,255,255,32, +255,255,255,40,255,255,255,48,255,255,255,58,255,255,255,69,255,255,255,84,255,255,255,101,255,255,255,121,252,252,252,147, +179,179,179,198,9,9,9,253,0,0,0,255,1,1,1,255,3,3,3,255,10,10,10,255,23,23,23,255,38,38,38,255, +53,53,53,255,68,68,68,255,82,82,82,255,96,96,96,255,108,108,108,255,120,120,120,255,129,129,129,255,133,133,133,255, +131,131,131,255,124,124,124,255,112,112,112,255,99,99,99,255,86,86,86,255,72,72,72,255,58,58,58,255,43,43,43,255, +29,29,29,255,15,15,15,255,6,6,6,255,2,2,2,255,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,3,3,3,254,128,128,128,187,255,255,255,95,255,255,255,66,255,255,255,53,255,255,255,44,255,255,255,36, +255,255,255,29,255,255,255,23,255,255,255,17,255,255,255,13,255,255,255,10,255,255,255,7,255,255,255,5,255,255,255,3, +255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1,255,255,255,2,255,255,255,3, +255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,15,255,255,255,20,255,255,255,26,255,255,255,33, +255,255,255,40,255,255,255,49,255,255,255,60,255,255,255,75,250,250,250,104,227,227,227,144,160,160,160,184,94,94,94,217, +37,37,37,244,1,1,1,255,0,0,0,255,1,1,1,255,4,4,4,255,12,12,12,255,27,27,27,255,43,43,43,255, +58,58,58,255,73,73,73,255,89,89,89,255,103,103,103,255,117,117,117,255,131,131,131,255,142,142,142,255,148,148,148,255, +146,146,146,255,135,135,135,255,122,122,122,255,107,107,107,255,92,92,92,255,77,77,77,255,62,62,62,255,47,47,47,255, +33,33,33,255,18,18,18,255,8,8,8,255,2,2,2,255,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,99,99,99,202,253,253,253,102,255,255,255,68,255,255,255,55,255,255,255,45,255,255,255,37, +255,255,255,30,255,255,255,23,255,255,255,18,255,255,255,14,255,255,255,10,255,255,255,7,255,255,255,5,255,255,255,3, +255,255,255,2,240,240,240,1,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1,255,255,255,2,255,255,255,3, +255,255,255,4,255,255,255,6,255,255,255,9,255,255,255,12,255,255,255,16,255,255,255,21,255,255,255,27,255,255,255,33, +255,255,255,41,255,255,255,50,255,255,255,61,255,255,255,83,154,154,154,159,22,22,22,243,6,6,6,253,1,1,1,255, +0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,4,4,4,255,14,14,14,255,29,29,29,255,45,45,45,255, +61,61,61,255,76,76,76,255,92,92,92,255,108,108,108,255,123,123,123,255,137,137,137,255,152,152,152,255,160,160,160,255, +157,157,157,255,144,144,144,255,128,128,128,255,112,112,112,255,95,95,95,255,80,80,80,255,65,65,65,255,49,49,49,255, +35,35,35,255,20,20,20,255,9,9,9,255,2,2,2,255,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,71,71,71,216,249,249,249,110,255,255,255,69,255,255,255,55,255,255,255,46,255,255,255,37, +255,255,255,30,255,255,255,24,255,255,255,18,255,255,255,14,255,255,255,10,255,255,255,7,255,255,255,5,255,255,255,3, +255,255,255,2,254,254,254,1,99,99,99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,167,167,167,1,255,255,255,2,255,255,255,3, +255,255,255,4,255,255,255,6,255,255,255,9,255,255,255,12,255,255,255,16,255,255,255,21,255,255,255,27,255,255,255,34, +255,255,255,41,255,255,255,51,255,255,255,62,255,255,255,87,156,156,156,167,6,6,6,252,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,4,4,4,255,14,14,14,255,29,29,29,255,46,46,46,255, +61,61,61,255,77,77,77,255,93,93,93,255,108,108,108,255,124,124,124,255,139,139,139,255,153,153,153,255,161,161,161,255, +158,158,158,255,144,144,144,255,128,128,128,255,113,113,113,255,97,97,97,255,81,81,81,255,66,66,66,255,50,50,50,255, +35,35,35,255,21,21,21,255,9,9,9,255,3,3,3,255,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,47,47,47,226,244,244,244,112,255,255,255,70,255,255,255,56,255,255,255,46,255,255,255,37, +255,255,255,30,255,255,255,24,255,255,255,18,255,255,255,14,255,255,255,10,255,255,255,7,255,255,255,5,255,255,255,3, +255,255,255,2,247,247,247,1,57,57,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,167,167,167,1,255,255,255,2,255,255,255,3, +255,255,255,4,255,255,255,6,255,255,255,9,255,255,255,12,255,255,255,16,255,255,255,21,255,255,255,27,255,255,255,33, +255,255,255,41,255,255,255,50,255,255,255,61,255,255,255,84,193,193,193,154,10,10,10,250,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,4,4,4,255,13,13,13,255,28,28,28,255,45,45,45,255, +60,60,60,255,76,76,76,255,90,90,90,255,105,105,105,255,120,120,120,255,132,132,132,255,144,144,144,255,151,151,151,255, +148,148,148,255,137,137,137,255,124,124,124,255,109,109,109,255,94,94,94,255,79,79,79,255,64,64,64,255,49,49,49,255, +34,34,34,255,20,20,20,255,8,8,8,255,2,2,2,255,1,1,1,255,0,0,0,255,0,0,0,255,5,5,5,253, +18,18,18,248,55,55,55,227,126,126,126,180,249,249,249,98,255,255,255,68,255,255,255,55,255,255,255,45,255,255,255,37, +255,255,255,30,255,255,255,23,255,255,255,18,255,255,255,14,255,255,255,10,255,255,255,7,255,255,255,5,255,255,255,3, +255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1,255,255,255,2,255,255,255,3, +255,255,255,4,255,255,255,6,255,255,255,9,255,255,255,12,255,255,255,16,255,255,255,21,255,255,255,26,255,255,255,33, +255,255,255,41,255,255,255,50,255,255,255,60,255,255,255,80,230,230,230,138,17,17,17,247,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,3,3,3,255,11,11,11,255,25,25,25,255,42,42,42,255, +57,57,57,255,72,72,72,255,86,86,86,255,100,100,100,255,112,112,112,255,123,123,123,255,131,131,131,255,135,135,135,255, +134,134,134,255,126,126,126,255,115,115,115,255,102,102,102,255,89,89,89,255,75,75,75,255,60,60,60,255,46,46,46,255, +31,31,31,255,17,17,17,255,7,7,7,255,2,2,2,255,1,1,1,255,0,0,0,255,28,28,28,247,148,148,148,205, +221,221,221,165,246,246,246,134,254,254,254,106,255,255,255,81,255,255,255,65,255,255,255,54,255,255,255,44,255,255,255,36, +255,255,255,29,255,255,255,23,255,255,255,17,255,255,255,13,255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,3, +255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1,255,255,255,1,255,255,255,3, +255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,15,255,255,255,20,255,255,255,25,255,255,255,32, +255,255,255,40,255,255,255,48,255,255,255,58,255,255,255,76,241,241,241,127,32,32,32,238,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,2,2,2,255,8,8,8,255,21,21,21,255,37,37,37,255, +52,52,52,255,66,66,66,255,79,79,79,255,91,91,91,255,102,102,102,255,111,111,111,255,118,118,118,255,121,121,121,255, +119,119,119,255,114,114,114,255,104,104,104,255,93,93,93,255,81,81,81,255,68,68,68,255,55,55,55,255,41,41,41,255, +27,27,27,255,14,14,14,255,5,5,5,255,1,1,1,255,1,1,1,255,0,0,0,255,75,75,75,228,249,249,249,156, +255,255,255,122,255,255,255,103,255,255,255,88,255,255,255,75,255,255,255,63,255,255,255,52,255,255,255,43,255,255,255,35, +255,255,255,28,255,255,255,22,255,255,255,17,255,255,255,13,255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,3, +255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1,255,255,255,1,255,255,255,2, +255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,15,255,255,255,19,255,255,255,25,255,255,255,31, +255,255,255,39,255,255,255,47,255,255,255,56,255,255,255,72,245,245,245,116,52,52,52,226,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,5,5,5,255,15,15,15,255,30,30,30,255, +45,45,45,255,58,58,58,255,70,70,70,255,81,81,81,255,91,91,91,255,99,99,99,255,104,104,104,255,107,107,107,255, +105,105,105,255,100,100,100,255,92,92,92,255,83,83,83,255,72,72,72,255,61,61,61,255,48,48,48,255,35,35,35,255, +22,22,22,255,11,11,11,255,3,3,3,255,1,1,1,255,0,0,0,255,3,3,3,254,133,133,133,206,255,255,255,138, +255,255,255,111,255,255,255,96,255,255,255,83,255,255,255,72,255,255,255,61,255,255,255,51,255,255,255,42,255,255,255,34, +255,255,255,27,255,255,255,21,255,255,255,16,255,255,255,12,255,255,255,9,255,255,255,6,255,255,255,4,255,255,255,3, +255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1,255,255,255,1,255,255,255,2, +255,255,255,4,255,255,255,5,255,255,255,7,255,255,255,10,255,255,255,14,255,255,255,18,255,255,255,23,255,255,255,30, +255,255,255,37,255,255,255,45,255,255,255,54,255,255,255,68,249,249,249,102,80,80,80,205,8,8,8,251,7,7,7,252, +6,6,6,253,4,4,4,254,0,0,0,255,0,0,0,255,1,1,1,255,2,2,2,255,9,9,9,255,21,21,21,255, +36,36,36,255,49,49,49,255,60,60,60,255,70,70,70,255,79,79,79,255,86,86,86,255,90,90,90,255,92,92,92,255, +90,90,90,255,87,87,87,255,80,80,80,255,72,72,72,255,62,62,62,255,51,51,51,255,40,40,40,255,28,28,28,255, +16,16,16,255,6,6,6,255,2,2,2,255,1,1,1,255,0,0,0,255,14,14,14,252,209,209,209,188,255,255,255,133, +255,255,255,107,255,255,255,92,255,255,255,80,255,255,255,69,255,255,255,58,255,255,255,49,255,255,255,41,255,255,255,33, +255,255,255,26,255,255,255,20,255,255,255,15,255,255,255,11,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3, +255,255,255,2,167,167,167,1,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,57,0,247,247,247,1,255,255,255,2, +255,255,255,3,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,13,255,255,255,17,255,255,255,22,255,255,255,28, +255,255,255,35,255,255,255,43,255,255,255,52,255,255,255,62,254,254,254,83,214,214,214,127,181,181,181,163,173,173,173,178, +164,164,164,191,134,134,134,215,11,11,11,252,0,0,0,255,0,0,0,255,1,1,1,255,4,4,4,255,12,12,12,255, +24,24,24,255,38,38,38,255,49,49,49,255,58,58,58,255,66,66,66,255,72,72,72,255,75,75,75,255,76,76,76,255, +76,76,76,255,72,72,72,255,67,67,67,255,60,60,60,255,51,51,51,255,42,42,42,255,30,30,30,255,19,19,19,255, +9,9,9,255,3,3,3,255,1,1,1,255,0,0,0,255,0,0,0,255,4,4,4,254,106,106,106,217,247,247,247,146, +255,255,255,109,255,255,255,90,255,255,255,77,255,255,255,66,255,255,255,56,255,255,255,47,255,255,255,39,255,255,255,31, +255,255,255,24,255,255,255,19,255,255,255,15,255,255,255,11,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,2, +255,255,255,1,104,104,104,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,238,238,238,1,255,255,255,2, +255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,9,255,255,255,12,255,255,255,16,255,255,255,21,255,255,255,26, +255,255,255,33,255,255,255,40,255,255,255,49,255,255,255,58,255,255,255,70,255,255,255,86,255,255,255,102,255,255,255,116, +255,255,255,131,247,247,247,161,74,74,74,229,1,1,1,255,0,0,0,255,1,1,1,255,1,1,1,255,5,5,5,255, +13,13,13,255,24,24,24,255,36,36,36,255,45,45,45,255,53,53,53,255,58,58,58,255,61,61,61,255,63,63,63,255, +61,61,61,255,59,59,59,255,54,54,54,255,48,48,48,255,40,40,40,255,30,30,30,255,20,20,20,255,10,10,10,255, +4,4,4,255,1,1,1,255,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255,8,8,8,252,120,120,120,201, +248,248,248,127,255,255,255,91,255,255,255,73,255,255,255,63,255,255,255,53,255,255,255,44,255,255,255,36,255,255,255,29, +255,255,255,23,255,255,255,18,255,255,255,13,255,255,255,10,255,255,255,7,255,255,255,5,255,255,255,3,255,255,255,2, +254,254,254,1,99,99,99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,167,167,167,1,255,255,255,2, +255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,15,255,255,255,19,255,255,255,24, +255,255,255,30,255,255,255,38,255,255,255,46,255,255,255,55,255,255,255,65,255,255,255,75,255,255,255,87,255,255,255,99, +255,255,255,112,255,255,255,134,200,200,200,185,22,22,22,249,0,0,0,255,0,0,0,255,1,1,1,255,1,1,1,255, +5,5,5,255,12,12,12,255,21,21,21,255,30,30,30,255,38,38,38,255,43,43,43,255,46,46,46,255,47,47,47,255, +47,47,47,255,44,44,44,255,40,40,40,255,35,35,35,255,27,27,27,255,19,19,19,255,10,10,10,255,4,4,4,255, +1,1,1,255,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,10,10,10,251, +135,135,135,179,252,252,252,96,255,255,255,70,255,255,255,59,255,255,255,50,255,255,255,41,255,255,255,34,255,255,255,27, +255,255,255,21,255,255,255,16,255,255,255,12,255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,3,255,255,255,2, +240,240,240,1,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1,255,255,255,1, +255,255,255,2,255,255,255,3,255,255,255,5,255,255,255,7,255,255,255,10,255,255,255,13,255,255,255,17,255,255,255,22, +255,255,255,28,255,255,255,35,255,255,255,43,255,255,255,51,255,255,255,60,255,255,255,70,255,255,255,81,255,255,255,92, +255,255,255,104,255,255,255,123,247,247,247,164,67,67,67,236,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255, +1,1,1,255,4,4,4,255,9,9,9,255,15,15,15,255,21,21,21,255,26,26,26,255,29,29,29,255,31,31,31,255, +30,30,30,255,29,29,29,255,25,25,25,255,20,20,20,255,14,14,14,255,8,8,8,255,3,3,3,255,1,1,1,255, +1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,4,4,4,253, +103,103,103,190,251,251,251,94,255,255,255,66,255,255,255,55,255,255,255,46,255,255,255,38,255,255,255,31,255,255,255,25, +255,255,255,19,255,255,255,15,255,255,255,11,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2, +231,231,231,1,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,57,0,247,247,247,1, +255,255,255,2,255,255,255,3,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,12,255,255,255,16,255,255,255,20, +255,255,255,25,255,255,255,32,255,255,255,39,255,255,255,47,255,255,255,56,255,255,255,65,255,255,255,75,255,255,255,86, +255,255,255,99,255,255,255,123,190,190,190,181,15,15,15,250,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +1,1,1,255,1,1,1,255,2,2,2,255,5,5,5,255,8,8,8,255,11,11,11,255,14,14,14,255,15,15,15,255, +15,15,15,255,14,14,14,255,11,11,11,255,8,8,8,255,5,5,5,255,2,2,2,255,1,1,1,255,1,1,1,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,61,61,61,222, +237,237,237,126,255,255,255,79,255,255,255,61,255,255,255,51,255,255,255,43,255,255,255,35,255,255,255,28,255,255,255,22, +255,255,255,18,255,255,255,14,255,255,255,10,255,255,255,7,255,255,255,5,255,255,255,4,255,255,255,2,255,255,255,1, +113,113,113,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,231,231,231,1, +255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,14,255,255,255,18, +255,255,255,23,255,255,255,29,255,255,255,36,255,255,255,43,255,255,255,51,255,255,255,60,255,255,255,70,255,255,255,80, +255,255,255,96,246,246,246,134,71,71,71,223,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,1,1,1,255,1,1,1,255,2,2,2,255,3,3,3,255,4,4,4,255,4,4,4,255, +4,4,4,255,4,4,4,255,3,3,3,255,2,2,2,255,1,1,1,255,1,1,1,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,32,32,32,238,208,208,208,148, +255,255,255,90,255,255,255,66,255,255,255,55,255,255,255,47,255,255,255,39,255,255,255,32,255,255,255,26,255,255,255,21, +255,255,255,16,255,255,255,12,255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,3,255,255,255,2,247,247,247,1, +57,57,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,113,113,113,1, +255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,13,255,255,255,17, +255,255,255,21,255,255,255,26,255,255,255,32,255,255,255,39,255,255,255,47,255,255,255,55,255,255,255,64,255,255,255,75, +255,255,255,94,174,174,174,162,10,10,10,250,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,1,1,1,255,1,1,1,255,1,1,1,255, +1,1,1,255,1,1,1,255,1,1,1,255,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255,7,7,7,253, +63,63,63,237,45,45,45,241,5,5,5,253,0,0,0,255,0,0,0,255,15,15,15,248,168,168,168,169,254,254,254,100, +255,255,255,71,255,255,255,59,255,255,255,50,255,255,255,43,255,255,255,36,255,255,255,29,255,255,255,23,255,255,255,19, +255,255,255,15,255,255,255,11,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,231,231,231,1, +14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1, +255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11,255,255,255,15, +255,255,255,19,255,255,255,23,255,255,255,29,255,255,255,36,255,255,255,43,255,255,255,50,255,255,255,59,255,255,255,68, +255,255,255,87,181,181,181,150,32,32,32,237,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,3,3,3,254,41,41,41,242,149,149,149,204, +244,244,244,168,237,237,237,165,136,136,136,198,36,36,36,238,8,8,8,250,119,119,119,191,251,251,251,110,255,255,255,76, +255,255,255,62,255,255,255,53,255,255,255,45,255,255,255,38,255,255,255,32,255,255,255,26,255,255,255,21,255,255,255,17, +255,255,255,13,255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,3,255,255,255,2,255,255,255,1,113,113,113,1, +1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1, +255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,7,255,255,255,10,255,255,255,13, +255,255,255,17,255,255,255,21,255,255,255,26,255,255,255,32,255,255,255,39,255,255,255,46,255,255,255,54,255,255,255,62, +255,255,255,74,254,254,254,100,208,208,208,151,61,61,61,224,4,4,4,253,0,0,0,255,0,0,0,255,0,0,0,255, +1,1,1,255,35,35,35,246,84,84,84,237,15,15,15,252,1,1,1,255,3,3,3,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,45,45,45,242,230,230,230,182,254,254,254,146, +255,255,255,128,255,255,255,122,254,254,254,125,228,228,228,142,154,154,154,163,243,243,243,113,255,255,255,80,255,255,255,64, +255,255,255,55,255,255,255,48,255,255,255,41,255,255,255,34,255,255,255,28,255,255,255,23,255,255,255,19,255,255,255,15, +255,255,255,11,255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,247,247,247,1,57,57,57,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,104,104,1, +255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,4,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,11, +255,255,255,15,255,255,255,19,255,255,255,23,255,255,255,29,255,255,255,35,255,255,255,41,255,255,255,49,255,255,255,56, +255,255,255,65,255,255,255,77,255,255,255,98,237,237,237,136,101,101,101,206,10,10,10,251,0,0,0,255,1,1,1,255, +46,46,46,238,205,205,205,192,238,238,238,194,34,34,34,247,19,19,19,252,88,88,88,243,3,3,3,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,57,57,57,234,246,246,246,155,255,255,255,123, +255,255,255,111,255,255,255,103,255,255,255,98,255,255,255,95,255,255,255,89,255,255,255,77,255,255,255,65,255,255,255,56, +255,255,255,49,255,255,255,42,255,255,255,36,255,255,255,31,255,255,255,25,255,255,255,20,255,255,255,16,255,255,255,13, +255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,4,255,255,255,2,255,255,255,1,167,167,167,1,8,8,8,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,0,168,168,168,1, +255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,5,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,13,255,255,255,17,255,255,255,21,255,255,255,26,255,255,255,31,255,255,255,37,255,255,255,44,255,255,255,51, +255,255,255,59,255,255,255,67,255,255,255,77,255,255,255,94,248,248,248,125,149,149,149,184,25,25,25,242,54,54,54,230, +214,214,214,170,255,255,255,150,207,207,207,184,12,12,12,251,46,46,46,244,195,195,195,215,13,13,13,252,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,63,63,63,228,247,247,247,142,255,255,255,110, +255,255,255,100,255,255,255,93,255,255,255,86,255,255,255,79,255,255,255,72,255,255,255,64,255,255,255,57,255,255,255,50, +255,255,255,44,255,255,255,38,255,255,255,32,255,255,255,27,255,255,255,22,255,255,255,18,255,255,255,14,255,255,255,11, +255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,254,254,254,1,99,99,99,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,14,14,14,0,57,57,57,0,168,168,168,1,254,254,254,1, +255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,5,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,12,255,255,255,15,255,255,255,19,255,255,255,23,255,255,255,28,255,255,255,34,255,255,255,40,255,255,255,46, +255,255,255,53,255,255,255,61,255,255,255,68,255,255,255,77,255,255,255,91,253,253,253,113,203,203,203,147,226,226,226,142, +255,255,255,125,255,255,255,133,149,149,149,195,5,5,5,253,68,68,68,232,237,237,237,185,47,47,47,239,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,68,68,68,219,248,248,248,128,255,255,255,99, +255,255,255,90,255,255,255,84,255,255,255,77,255,255,255,71,255,255,255,64,255,255,255,57,255,255,255,51,255,255,255,45, +255,255,255,39,255,255,255,33,255,255,255,28,255,255,255,24,255,255,255,20,255,255,255,16,255,255,255,12,255,255,255,9, +255,255,255,7,255,255,255,5,255,255,255,4,255,255,255,2,255,255,255,2,232,232,232,1,20,20,20,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,8,8,8,0,57,57,57,0,113,113,113,1,231,231,231,1,247,247,247,1,255,255,255,1,255,255,255,1, +255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,9, +255,255,255,12,255,255,255,14,255,255,255,18,255,255,255,22,255,255,255,26,255,255,255,30,255,255,255,36,255,255,255,42, +255,255,255,49,255,255,255,55,255,255,255,62,255,255,255,69,255,255,255,77,255,255,255,86,255,255,255,96,255,255,255,101, +255,255,255,106,253,253,253,129,99,99,99,210,1,1,1,255,91,91,91,217,250,250,250,158,105,105,105,209,8,8,8,251, +11,11,11,250,21,21,21,247,39,39,39,237,60,60,60,226,84,84,84,211,154,154,154,169,252,252,252,107,255,255,255,88, +255,255,255,81,255,255,255,76,255,255,255,69,255,255,255,63,255,255,255,57,255,255,255,51,255,255,255,45,255,255,255,40, +255,255,255,35,255,255,255,30,255,255,255,25,255,255,255,21,255,255,255,17,255,255,255,14,255,255,255,11,255,255,255,8, +255,255,255,6,255,255,255,5,255,255,255,3,255,255,255,2,254,254,254,1,108,108,108,1,1,1,1,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0, +57,57,57,0,167,167,167,1,247,247,247,1,255,255,255,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,2, +255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,9, +255,255,255,11,255,255,255,14,255,255,255,16,255,255,255,20,255,255,255,24,255,255,255,28,255,255,255,33,255,255,255,39, +255,255,255,45,255,255,255,51,255,255,255,57,255,255,255,63,255,255,255,70,255,255,255,76,255,255,255,83,255,255,255,89, +255,255,255,98,246,246,246,132,58,58,58,227,2,2,2,254,118,118,118,202,255,255,255,134,214,214,214,146,170,170,170,171, +206,206,206,163,236,236,236,150,243,243,243,139,246,246,246,129,251,251,251,118,254,254,254,102,255,255,255,87,255,255,255,79, +255,255,255,73,255,255,255,68,255,255,255,62,255,255,255,56,255,255,255,51,255,255,255,46,255,255,255,40,255,255,255,36, +255,255,255,31,255,255,255,26,255,255,255,22,255,255,255,19,255,255,255,15,255,255,255,12,255,255,255,9,255,255,255,7, +255,255,255,5,255,255,255,4,255,255,255,3,255,255,255,2,240,240,240,1,21,21,21,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,20,20,20,0,161,161,161,1, +247,247,247,1,255,255,255,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,3, +255,255,255,3,255,255,255,4,255,255,255,4,255,255,255,5,255,255,255,5,255,255,255,6,255,255,255,8,255,255,255,9, +255,255,255,11,255,255,255,13,255,255,255,16,255,255,255,19,255,255,255,23,255,255,255,26,255,255,255,31,255,255,255,36, +255,255,255,41,255,255,255,47,255,255,255,53,255,255,255,58,255,255,255,64,255,255,255,70,255,255,255,75,255,255,255,81, +255,255,255,93,238,238,238,138,27,27,27,242,4,4,4,253,146,146,146,185,255,255,255,116,255,255,255,105,255,255,255,107, +255,255,255,105,255,255,255,101,255,255,255,96,255,255,255,91,255,255,255,86,255,255,255,81,255,255,255,76,255,255,255,71, +255,255,255,66,255,255,255,61,255,255,255,56,255,255,255,51,255,255,255,46,255,255,255,41,255,255,255,36,255,255,255,32, +255,255,255,28,255,255,255,24,255,255,255,20,255,255,255,17,255,255,255,13,255,255,255,11,255,255,255,8,255,255,255,6, +255,255,255,5,255,255,255,3,255,255,255,2,255,255,255,1,167,167,167,1,8,8,8,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,63,63,63,0,232,232,232,1,254,254,254,1, +255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,4,255,255,255,4, +255,255,255,4,255,255,255,5,255,255,255,5,255,255,255,6,255,255,255,6,255,255,255,7,255,255,255,8,255,255,255,10, +255,255,255,12,255,255,255,14,255,255,255,16,255,255,255,19,255,255,255,22,255,255,255,25,255,255,255,29,255,255,255,34, +255,255,255,38,255,255,255,43,255,255,255,49,255,255,255,54,255,255,255,59,255,255,255,64,255,255,255,69,255,255,255,75, +255,255,255,91,200,200,200,152,11,11,11,250,7,7,7,252,172,172,172,168,255,255,255,103,255,255,255,91,255,255,255,89, +255,255,255,87,255,255,255,85,255,255,255,82,255,255,255,79,255,255,255,76,255,255,255,72,255,255,255,68,255,255,255,64, +255,255,255,60,255,255,255,55,255,255,255,50,255,255,255,46,255,255,255,42,255,255,255,37,255,255,255,33,255,255,255,29, +255,255,255,26,255,255,255,22,255,255,255,18,255,255,255,15,255,255,255,12,255,255,255,10,255,255,255,8,255,255,255,6, +255,255,255,4,255,255,255,3,255,255,255,2,255,255,255,1,104,104,104,1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,63,63,63,0,239,239,239,1,255,255,255,1,255,255,255,2, +255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,4,255,255,255,4,255,255,255,5,255,255,255,5, +255,255,255,6,255,255,255,6,255,255,255,7,255,255,255,7,255,255,255,8,255,255,255,8,255,255,255,9,255,255,255,10, +255,255,255,12,255,255,255,14,255,255,255,16,255,255,255,19,255,255,255,22,255,255,255,25,255,255,255,29,255,255,255,32, +255,255,255,37,255,255,255,41,255,255,255,46,255,255,255,50,255,255,255,55,255,255,255,60,255,255,255,64,255,255,255,70, +255,255,255,90,150,150,150,171,5,5,5,252,10,10,10,250,200,200,200,151,255,255,255,93,255,255,255,82,255,255,255,80, +255,255,255,79,255,255,255,77,255,255,255,75,255,255,255,72,255,255,255,69,255,255,255,65,255,255,255,62,255,255,255,58, +255,255,255,54,255,255,255,50,255,255,255,46,255,255,255,43,255,255,255,39,255,255,255,35,255,255,255,31,255,255,255,27, +255,255,255,24,255,255,255,20,255,255,255,17,255,255,255,14,255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,3,255,255,255,2,247,247,247,1,57,57,57,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,56,56,56,0,239,239,239,1,255,255,255,1,255,255,255,2,255,255,255,2, +255,255,255,3,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,5,255,255,255,6,255,255,255,6,255,255,255,7, +255,255,255,7,255,255,255,8,255,255,255,8,255,255,255,9,255,255,255,10,255,255,255,10,255,255,255,11,255,255,255,12, +255,255,255,13,255,255,255,15,255,255,255,17,255,255,255,20,252,252,252,25,255,255,255,26,255,255,255,28,255,255,255,32, +255,255,255,36,255,255,255,40,255,255,255,44,255,255,255,48,255,255,255,53,255,255,255,57,255,255,255,60,255,255,255,66, +255,255,255,91,114,114,114,189,1,1,1,254,15,15,15,248,227,227,227,136,255,255,255,85,255,255,255,75,255,255,255,74, +255,255,255,72,255,255,255,70,255,255,255,68,255,255,255,66,255,255,255,63,255,255,255,60,255,255,255,57,255,255,255,54, +255,255,255,50,255,255,255,47,255,255,255,43,255,255,255,40,255,255,255,37,255,255,255,33,255,255,255,29,255,255,255,26, +255,255,255,23,255,255,255,19,255,255,255,16,255,255,255,13,255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,3,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,13,13,13,0,168,168,168,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,3, +255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,7,255,255,255,8,255,255,255,8, +255,255,255,9,255,255,255,10,255,255,255,10,255,255,255,11,255,255,255,11,255,255,255,12,255,255,255,13,255,255,255,14, +255,255,255,15,255,255,255,17,255,255,255,19,247,247,247,28,173,173,173,53,251,251,251,34,255,255,255,30,255,255,255,32, +255,255,255,36,255,255,255,39,255,255,255,43,255,255,255,47,255,255,255,51,255,255,255,54,255,255,255,58,255,255,255,64, +251,251,251,95,85,85,85,203,0,0,0,255,25,25,25,241,240,240,240,123,255,255,255,78,255,255,255,69,255,255,255,68, +255,255,255,67,255,255,255,65,255,255,255,64,255,255,255,61,255,255,255,59,255,255,255,56,255,255,255,53,255,255,255,50, +255,255,255,47,255,255,255,45,255,255,255,41,255,255,255,38,255,255,255,36,255,255,255,35,255,255,255,35,255,255,255,33, +255,255,255,27,255,255,255,20,255,255,255,16,255,255,255,13,255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,2,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,1,1,0,108,108,108,1,254,254,254,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,3, +255,255,255,4,255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,8,255,255,255,9,255,255,255,10,255,255,255,10, +255,255,255,11,255,255,255,12,255,255,255,13,255,255,255,13,255,255,255,14,255,255,255,15,255,255,255,16,255,255,255,16, +255,255,255,17,255,255,255,19,255,255,255,22,252,252,252,35,134,134,134,102,240,240,240,54,255,255,255,35,255,255,255,34, +250,250,250,39,255,255,255,41,255,255,255,43,255,255,255,47,255,255,255,49,255,255,255,53,255,255,255,56,255,255,255,63, +247,247,247,99,64,64,64,214,0,0,0,255,39,39,39,231,243,243,243,113,255,255,255,72,255,255,255,65,255,255,255,64, +255,255,255,63,255,255,255,62,255,255,255,60,255,255,255,58,255,255,255,55,255,255,255,53,255,255,255,51,255,255,255,48, +255,255,255,46,255,255,255,43,255,255,255,42,255,255,255,43,255,255,255,50,252,252,252,63,240,240,240,75,181,181,181,87, +174,174,174,67,251,251,251,24,255,255,255,16,255,255,255,13,255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,2,255,255,255,1,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,20,20,20,0,232,232,232,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,4, +255,255,255,5,255,255,255,7,255,255,255,8,255,255,255,8,255,255,255,10,255,255,255,11,255,255,255,12,255,255,255,13, +255,255,255,13,255,255,255,14,255,255,255,15,255,255,255,16,255,255,255,17,255,255,255,17,255,255,255,18,255,255,255,19, +255,255,255,20,255,255,255,22,255,255,255,25,255,255,255,40,129,129,129,132,186,186,186,93,255,255,255,44,253,253,253,39, +192,192,192,61,247,247,247,50,255,255,255,45,255,255,255,47,255,255,255,49,255,255,255,52,255,255,255,55,255,255,255,63, +244,244,244,104,47,47,47,224,0,0,0,255,54,54,54,221,245,245,245,105,255,255,255,68,255,255,255,62,255,255,255,61, +255,255,255,60,255,255,255,58,255,255,255,57,255,255,255,55,255,255,255,53,255,255,255,51,255,255,255,49,255,255,255,47, +255,255,255,45,255,255,255,46,255,255,255,55,249,249,249,78,194,194,194,122,95,95,95,180,43,43,43,214,101,101,101,155, +223,223,223,54,254,254,254,23,255,255,255,16,255,255,255,13,255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,2,255,255,255,1,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,1,1,0,108,108,108,1,254,254,254,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5, +251,251,251,9,254,254,254,12,255,255,255,14,255,255,255,13,255,255,255,12,255,255,255,12,255,255,255,14,255,255,255,15, +255,255,255,16,255,255,255,17,255,255,255,18,255,255,255,19,255,255,255,20,255,255,255,20,255,255,255,21,255,255,255,22, +255,255,255,24,255,255,255,25,255,255,255,28,255,255,255,44,138,138,138,130,117,117,117,152,254,254,254,58,255,255,255,44, +183,183,183,78,190,190,190,84,255,255,255,52,255,255,255,48,255,255,255,50,255,255,255,52,255,255,255,55,255,255,255,64, +242,242,242,110,34,34,34,233,0,0,0,255,69,69,69,211,248,248,248,98,255,255,255,65,255,255,255,60,255,255,255,59, +255,255,255,58,255,255,255,57,255,255,255,55,255,255,255,54,255,255,255,53,255,255,255,51,255,255,255,49,255,255,255,48, +255,255,255,52,254,254,254,69,217,217,217,113,86,86,86,193,15,15,15,244,7,7,7,250,110,110,110,168,246,246,246,66, +255,255,255,32,255,255,255,20,255,255,255,16,255,255,255,13,255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,2,255,255,255,1,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +14,14,14,0,231,231,231,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,7, +204,204,204,20,163,163,163,50,237,237,237,42,254,254,254,32,255,255,255,23,255,255,255,18,255,255,255,16,255,255,255,17, +255,255,255,18,255,255,255,20,255,255,255,21,255,255,255,22,255,255,255,23,255,255,255,24,255,255,255,25,255,255,255,26, +255,255,255,27,255,255,255,28,255,255,255,31,255,255,255,46,168,168,168,120,57,57,57,203,244,244,244,80,255,255,255,51, +238,238,238,71,118,118,118,139,249,249,249,68,255,255,255,53,255,255,255,51,255,255,255,53,255,255,255,56,255,255,255,66, +239,239,239,116,23,23,23,242,0,0,0,255,85,85,85,202,251,251,251,92,255,255,255,64,255,255,255,59,255,255,255,59, +255,255,255,58,255,255,255,57,255,255,255,55,255,255,255,54,255,255,255,53,255,255,255,51,255,255,255,50,255,255,255,57, +250,250,250,83,161,161,161,149,33,33,33,231,2,2,2,254,2,2,2,254,85,85,85,193,245,245,245,80,255,255,255,38, +255,255,255,24,255,255,255,19,255,255,255,16,255,255,255,13,255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,2,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +21,21,21,0,240,240,240,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,8, +252,252,252,15,190,190,190,54,87,87,87,143,135,135,135,125,235,235,235,70,254,254,254,43,255,255,255,29,255,255,255,23, +255,255,255,22,255,255,255,22,255,255,255,24,255,255,255,25,255,255,255,26,255,255,255,27,255,255,255,28,255,255,255,30, +255,255,255,31,255,255,255,32,255,255,255,34,255,255,255,47,213,213,213,106,27,27,27,236,202,202,202,117,255,255,255,60, +250,250,250,68,104,104,104,162,209,209,209,102,255,255,255,62,255,255,255,54,255,255,255,55,255,255,255,57,255,255,255,69, +228,228,228,125,15,15,15,247,0,0,0,255,103,103,103,193,254,254,254,88,255,255,255,63,255,255,255,59,255,255,255,59, +255,255,255,58,255,255,255,57,255,255,255,55,255,255,255,54,255,255,255,53,255,255,255,53,255,255,255,60,247,247,247,91, +121,121,121,173,13,13,13,246,9,9,9,253,18,18,18,252,37,37,37,228,223,223,223,106,255,255,255,46,255,255,255,28, +255,255,255,23,255,255,255,20,255,255,255,16,255,255,255,14,255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,3,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +99,99,99,1,254,254,254,1,255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,5,255,255,255,6,255,255,255,8, +255,255,255,11,254,254,254,24,221,221,221,65,78,78,78,177,44,44,44,212,140,140,140,143,240,240,240,78,255,255,255,46, +255,255,255,32,255,255,255,27,255,255,255,27,255,255,255,28,255,255,255,30,255,255,255,31,255,255,255,32,255,255,255,34, +255,255,255,35,255,255,255,36,255,255,255,38,255,255,255,48,239,239,239,97,29,29,29,234,119,119,119,171,254,254,254,75, +255,255,255,68,143,143,143,143,115,115,115,164,253,253,253,77,255,255,255,59,255,255,255,58,255,255,255,60,255,255,255,73, +205,205,205,136,11,11,11,249,1,1,1,254,118,118,118,185,255,255,255,86,255,255,255,64,255,255,255,61,255,255,255,60, +255,255,255,59,255,255,255,58,255,255,255,56,255,255,255,56,255,255,255,55,255,255,255,62,248,248,248,91,118,118,118,177, +8,8,8,249,19,19,19,248,114,114,114,223,25,25,25,246,145,145,145,156,254,254,254,63,255,255,255,34,255,255,255,27, +255,255,255,24,255,255,255,20,255,255,255,17,255,255,255,14,255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,3,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +104,104,104,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,6,255,255,255,8, +255,255,255,10,255,255,255,14,255,255,255,28,241,241,241,67,100,100,100,169,14,14,14,243,52,52,52,212,172,172,172,131, +248,248,248,72,255,255,255,45,255,255,255,35,255,255,255,32,255,255,255,33,255,255,255,35,255,255,255,36,255,255,255,38, +255,255,255,39,255,255,255,41,255,255,255,42,255,255,255,50,244,244,244,90,49,49,49,218,49,49,49,220,243,243,243,100, +255,255,255,71,213,213,213,114,53,53,53,214,238,238,238,102,255,255,255,67,255,255,255,62,255,255,255,63,255,255,255,77, +184,184,184,147,9,9,9,250,3,3,3,253,131,131,131,177,255,255,255,85,255,255,255,65,255,255,255,63,255,255,255,62, +255,255,255,61,255,255,255,60,255,255,255,59,255,255,255,58,255,255,255,64,251,251,251,90,135,135,135,170,10,10,10,249, +17,17,17,246,158,158,158,191,84,84,84,220,41,41,41,225,238,238,238,96,255,255,255,46,255,255,255,32,255,255,255,28, +255,255,255,24,255,255,255,21,255,255,255,17,255,255,255,14,255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,3,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +104,104,104,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,7,255,255,255,9, +255,255,255,10,255,255,255,13,255,255,255,17,255,255,255,30,247,247,247,66,127,127,127,157,14,14,14,245,12,12,12,246, +85,85,85,191,214,214,214,109,254,254,254,63,255,255,255,44,255,255,255,39,255,255,255,39,255,255,255,41,255,255,255,42, +255,255,255,43,255,255,255,45,255,255,255,47,255,255,255,52,251,251,251,83,84,84,84,198,11,11,11,248,189,189,189,140, +255,255,255,79,243,243,243,100,53,53,53,215,169,169,169,144,255,255,255,78,255,255,255,66,255,255,255,66,255,255,255,82, +167,167,167,158,7,7,7,251,4,4,4,253,145,145,145,171,255,255,255,85,255,255,255,67,255,255,255,65,255,255,255,64, +255,255,255,63,255,255,255,62,255,255,255,62,255,255,255,65,254,254,254,87,162,162,162,158,15,15,15,245,10,10,10,249, +142,142,142,184,191,191,191,168,18,18,18,245,117,117,117,173,253,253,253,69,255,255,255,40,255,255,255,33,255,255,255,29, +255,255,255,25,255,255,255,21,255,255,255,18,255,255,255,15,255,255,255,12,255,255,255,9,255,255,255,7,255,255,255,6, +255,255,255,4,255,255,255,3,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +104,104,104,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,7,255,255,255,9, +255,255,255,11,255,255,255,13,255,255,255,16,255,255,255,20,255,255,255,31,250,250,250,64,150,150,150,148,18,18,18,241, +2,2,2,254,30,30,30,232,150,150,150,153,247,247,247,84,255,255,255,55,255,255,255,45,255,255,255,45,255,255,255,46, +255,255,255,48,255,255,255,50,255,255,255,51,255,255,255,55,255,255,255,78,126,126,126,175,4,4,4,253,102,102,102,190, +253,253,253,94,252,252,252,94,94,94,94,191,95,95,95,191,252,252,252,94,255,255,255,72,255,255,255,70,255,255,255,87, +152,152,152,168,5,5,5,252,6,6,6,252,158,158,158,164,255,255,255,86,255,255,255,70,255,255,255,68,255,255,255,67, +255,255,255,66,255,255,255,66,255,255,255,67,255,255,255,84,192,192,192,143,26,26,26,239,5,5,5,252,109,109,109,193, +242,242,242,134,79,79,79,208,20,20,20,241,212,212,212,118,255,255,255,55,255,255,255,38,255,255,255,33,255,255,255,30, +255,255,255,26,255,255,255,22,255,255,255,18,255,255,255,15,255,255,255,12,255,255,255,10,255,255,255,8,255,255,255,6, +255,255,255,4,255,255,255,3,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +104,104,104,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,9, +255,255,255,11,255,255,255,14,255,255,255,16,255,255,255,19,255,255,255,23,255,255,255,34,252,252,252,64,164,164,164,143, +21,21,21,240,0,0,0,255,9,9,9,249,90,90,90,192,231,231,231,105,255,255,255,65,255,255,255,52,255,255,255,51, +255,255,255,52,255,255,255,54,255,255,255,56,255,255,255,59,255,255,255,74,181,181,181,147,9,9,9,250,43,43,43,228, +242,242,242,116,255,255,255,93,145,145,145,165,43,43,43,226,241,241,241,115,255,255,255,80,255,255,255,75,255,255,255,93, +139,139,139,177,4,4,4,253,7,7,7,251,172,172,172,159,255,255,255,88,255,255,255,74,255,255,255,72,255,255,255,71, +255,255,255,70,255,255,255,71,255,255,255,83,221,221,221,129,44,44,44,228,2,2,2,254,75,75,75,210,242,242,242,124, +201,201,201,146,16,16,16,245,77,77,77,202,249,249,249,86,255,255,255,48,255,255,255,39,255,255,255,34,255,255,255,30, +255,255,255,26,255,255,255,22,255,255,255,19,255,255,255,15,255,255,255,12,255,255,255,10,255,255,255,8,255,255,255,6, +255,255,255,4,255,255,255,3,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +104,104,104,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,12,255,255,255,14,255,255,255,17,255,255,255,20,255,255,255,23,255,255,255,27,255,255,255,37,253,253,253,66, +168,168,168,144,21,21,21,240,0,0,0,255,3,3,3,253,58,58,58,216,214,214,214,122,255,255,255,74,255,255,255,59, +255,255,255,57,255,255,255,59,255,255,255,61,255,255,255,63,255,255,255,73,237,237,237,121,28,28,28,239,12,12,12,249, +197,197,197,148,255,255,255,98,206,206,206,140,24,24,24,242,191,191,191,148,255,255,255,91,255,255,255,81,255,255,255,99, +128,128,128,185,3,3,3,254,9,9,9,251,186,186,186,155,255,255,255,90,255,255,255,77,255,255,255,76,255,255,255,75, +255,255,255,75,255,255,255,82,243,243,243,117,74,74,74,211,2,2,2,254,43,43,43,229,222,222,222,133,251,251,251,110, +100,100,100,194,8,8,8,250,164,164,164,151,255,255,255,68,255,255,255,46,255,255,255,40,255,255,255,35,255,255,255,31, +255,255,255,27,255,255,255,23,255,255,255,19,255,255,255,16,255,255,255,13,255,255,255,10,255,255,255,8,255,255,255,6, +255,255,255,4,255,255,255,3,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +104,104,104,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,12,255,255,255,14,255,255,255,17,255,255,255,20,255,255,255,24,255,255,255,27,255,255,255,31,255,255,255,41, +253,253,253,71,162,162,162,151,16,16,16,244,0,0,0,255,1,1,1,254,45,45,45,225,205,205,205,132,254,254,254,81, +255,255,255,66,255,255,255,64,255,255,255,66,255,255,255,68,255,255,255,74,248,248,248,107,70,70,70,213,2,2,2,254, +117,117,117,190,254,254,254,110,241,241,241,126,37,37,37,233,118,118,118,188,254,254,254,104,255,255,255,87,255,255,255,105, +117,117,117,193,1,1,1,254,10,10,10,250,200,200,200,152,255,255,255,93,255,255,255,82,255,255,255,80,255,255,255,81, +239,239,239,91,249,249,249,110,120,120,120,188,5,5,5,252,20,20,20,244,186,186,186,155,247,247,247,104,217,217,217,133, +30,30,30,237,33,33,33,233,237,237,237,110,255,255,255,59,255,255,255,46,255,255,255,42,254,254,254,38,255,255,255,32, +255,255,255,28,255,255,255,23,255,255,255,19,255,255,255,16,255,255,255,13,255,255,255,10,255,255,255,8,255,255,255,6, +255,255,255,4,255,255,255,3,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +104,104,104,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,12,255,255,255,15,255,255,255,18,255,255,255,21,255,255,255,24,255,255,255,28,255,255,255,32,255,255,255,36, +255,255,255,47,251,251,251,79,139,139,139,166,10,10,10,249,0,0,0,255,1,1,1,255,42,42,42,229,205,205,205,137, +255,255,255,87,255,255,255,73,255,255,255,71,255,255,255,73,255,255,255,77,255,255,255,98,130,130,130,184,3,3,3,253, +51,51,51,227,244,244,244,129,248,248,248,122,71,71,71,214,58,58,58,222,246,246,246,123,255,255,255,96,255,255,255,111, +108,108,108,200,0,0,0,255,12,12,12,250,214,214,214,150,255,255,255,97,255,255,255,86,255,255,255,87,247,247,247,95, +215,215,215,121,175,175,175,167,16,16,16,246,7,7,7,251,134,134,134,183,250,250,250,111,206,206,206,121,139,139,139,178, +6,6,6,252,93,93,93,196,252,252,252,88,255,255,255,55,255,255,255,49,247,247,247,50,215,215,215,54,255,255,255,35, +255,255,255,28,255,255,255,24,255,255,255,20,255,255,255,16,255,255,255,13,255,255,255,10,255,255,255,8,255,255,255,6, +255,255,255,4,255,255,255,3,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +104,104,104,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,12,255,255,255,15,255,255,255,18,255,255,255,21,255,255,255,25,255,255,255,29,255,255,255,33,255,255,255,37, +255,255,255,42,255,255,255,55,248,248,248,92,108,108,108,186,5,5,5,252,0,0,0,255,1,1,1,255,44,44,44,229, +209,209,209,140,255,255,255,93,255,255,255,80,255,255,255,78,255,255,255,81,255,255,255,94,205,205,205,151,13,13,13,249, +14,14,14,248,206,206,206,156,254,254,254,123,118,118,118,194,20,20,20,245,220,220,220,148,255,255,255,106,254,254,254,118, +98,98,98,206,0,0,0,255,14,14,14,249,228,228,228,148,255,255,255,100,255,255,255,92,255,255,255,97,197,197,197,131, +204,204,204,157,39,39,39,235,2,2,2,254,84,84,84,210,245,245,245,125,221,221,221,116,188,188,188,148,56,56,56,224, +9,9,9,250,175,175,175,151,255,255,255,75,255,255,255,55,255,255,255,53,204,204,204,75,165,165,165,87,255,255,255,40, +255,255,255,29,255,255,255,24,255,255,255,20,255,255,255,17,255,255,255,13,255,255,255,10,255,255,255,8,255,255,255,6, +255,255,255,4,255,255,255,3,255,255,255,2,247,247,247,1,57,57,57,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +57,57,57,0,247,247,247,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,12,255,255,255,15,255,255,255,18,255,255,255,21,255,255,255,25,255,255,255,29,255,255,255,34,255,255,255,38, +255,255,255,43,255,255,255,48,255,255,255,64,241,241,241,108,70,70,70,212,1,1,1,254,0,0,0,255,1,1,1,255, +45,45,45,229,210,210,210,144,255,255,255,100,255,255,255,87,255,255,255,86,255,255,255,94,244,244,244,130,49,49,49,230, +3,3,3,254,125,125,125,195,254,254,254,131,171,171,171,174,12,12,12,249,146,146,146,184,255,255,255,118,252,252,252,125, +90,90,90,211,0,0,0,255,17,17,17,248,237,237,237,148,255,255,255,105,255,255,255,100,242,242,242,118,163,163,163,173, +83,83,83,218,2,2,2,254,44,44,44,232,226,226,226,143,249,249,249,113,155,155,155,154,181,181,181,170,12,12,12,250, +41,41,41,230,240,240,240,114,255,255,255,68,255,255,255,56,255,255,255,61,159,159,159,112,149,149,149,113,255,255,255,45, +255,255,255,30,255,255,255,25,255,255,255,21,255,255,255,17,255,255,255,13,255,255,255,11,255,255,255,8,255,255,255,6, +255,255,255,5,255,255,255,3,255,255,255,2,255,255,255,1,104,104,104,1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +15,15,15,0,238,238,238,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,12,255,255,255,15,255,255,255,18,255,255,255,22,255,255,255,26,255,255,255,30,255,255,255,34,255,255,255,39, +255,255,255,44,255,255,255,49,255,255,255,56,255,255,255,76,213,213,213,133,33,33,33,236,1,1,1,255,14,14,14,254, +3,3,3,254,47,47,47,229,212,212,212,148,255,255,255,106,255,255,255,94,255,255,255,96,253,253,253,119,110,110,110,201, +2,2,2,254,57,57,57,228,246,246,246,145,227,227,227,157,20,20,20,246,80,80,80,216,250,250,250,134,251,251,251,134, +83,83,83,216,0,0,0,255,21,21,21,246,239,239,239,149,255,255,255,111,255,255,255,114,172,172,172,164,121,121,121,211, +9,9,9,252,17,17,17,247,183,183,183,169,254,254,254,119,187,187,187,141,166,166,166,167,98,98,98,208,3,3,3,253, +114,114,114,189,253,253,253,94,255,255,255,65,255,255,255,58,255,255,255,69,129,129,129,149,143,143,143,130,255,255,255,49, +255,255,255,31,255,255,255,25,255,255,255,21,255,255,255,17,255,255,255,14,255,255,255,11,255,255,255,8,255,255,255,6, +255,255,255,5,255,255,255,3,255,255,255,2,255,255,255,1,104,104,104,1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +15,15,15,0,238,238,238,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,12,255,255,255,15,255,255,255,19,255,255,255,22,255,255,255,26,255,255,255,31,255,255,255,35,255,255,255,41, +255,255,255,46,255,255,255,51,255,255,255,56,255,255,255,65,254,254,254,91,156,156,156,169,10,10,10,250,19,19,19,253, +51,51,51,249,4,4,4,254,49,49,49,229,217,217,217,150,255,255,255,111,255,255,255,102,255,255,255,113,191,191,191,169, +11,11,11,251,15,15,15,249,207,207,207,171,246,246,246,152,56,56,56,230,35,35,35,239,240,240,240,152,250,250,250,143, +78,78,78,220,0,0,0,255,26,26,26,244,240,240,240,151,255,255,255,120,243,243,243,137,109,109,109,212,33,33,33,245, +4,4,4,253,114,114,114,202,251,251,251,131,242,242,242,125,114,114,114,186,220,220,220,163,32,32,32,240,16,16,16,247, +206,206,206,146,249,249,249,86,255,255,255,65,255,255,255,63,251,251,251,83,88,88,88,186,145,145,145,138,255,255,255,52, +255,255,255,32,255,255,255,26,255,255,255,22,255,255,255,18,255,255,255,15,255,255,255,11,255,255,255,9,255,255,255,7, +255,255,255,5,255,255,255,3,255,255,255,2,255,255,255,1,104,104,104,1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +57,57,57,0,247,247,247,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,12,255,255,255,15,255,255,255,19,255,255,255,23,255,255,255,27,255,255,255,32,255,255,255,36,255,255,255,42, +254,254,254,49,251,251,251,57,255,255,255,60,255,255,255,65,255,255,255,77,247,247,247,114,83,83,83,209,2,2,2,254, +62,62,62,245,67,67,67,242,4,4,4,254,57,57,57,227,226,226,226,150,255,255,255,117,255,255,255,114,243,243,243,146, +45,45,45,235,2,2,2,254,119,119,119,206,252,252,252,154,111,111,111,209,13,13,13,250,197,197,197,176,249,249,249,152, +74,74,74,223,0,0,0,255,29,29,29,243,241,241,241,156,255,255,255,133,173,173,173,179,42,42,42,244,3,3,3,254, +47,47,47,233,235,235,235,151,254,254,254,126,149,149,149,170,152,152,152,181,152,152,152,192,6,6,6,253,66,66,66,220, +213,213,213,134,238,238,238,88,255,255,255,68,255,255,255,69,239,239,239,105,43,43,43,222,161,161,161,133,255,255,255,52, +255,255,255,33,255,255,255,27,255,255,255,23,255,255,255,19,255,255,255,15,255,255,255,12,255,255,255,9,255,255,255,7, +255,255,255,5,255,255,255,4,255,255,255,2,255,255,255,1,167,167,167,1,8,8,8,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +104,104,104,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,13,255,255,255,16,255,255,255,19,255,255,255,23,255,255,255,28,255,255,255,32,255,255,255,38,255,255,255,44, +247,247,247,57,185,185,185,89,253,253,253,71,255,255,255,70,252,252,252,77,255,255,255,94,214,214,214,146,29,29,29,240, +7,7,7,254,128,128,128,228,61,61,61,239,3,3,3,254,71,71,71,222,238,238,238,149,255,255,255,124,253,253,253,136, +113,113,113,207,2,2,2,254,47,47,47,236,242,242,242,167,180,180,180,189,12,12,12,251,131,131,131,204,248,248,248,164, +72,72,72,227,0,0,0,255,32,32,32,243,242,242,242,161,249,249,249,151,75,75,75,223,5,5,5,254,9,9,9,251, +167,167,167,186,255,255,255,134,225,225,225,145,84,84,84,211,229,229,229,166,63,63,63,228,6,6,6,252,151,151,151,187, +164,164,164,148,247,247,247,89,255,255,255,72,255,255,255,82,168,168,168,151,21,21,21,242,205,205,205,116,255,255,255,50, +255,255,255,34,255,255,255,28,255,255,255,23,255,255,255,19,255,255,255,15,255,255,255,12,255,255,255,9,255,255,255,7, +255,255,255,5,255,255,255,4,255,255,255,2,255,255,255,2,238,238,238,1,15,15,15,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +104,104,104,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10, +255,255,255,13,255,255,255,16,255,255,255,20,255,255,255,24,255,255,255,29,255,255,255,34,255,255,255,39,255,255,255,45, +253,253,253,60,150,150,150,124,201,201,201,109,254,254,254,83,213,213,213,96,243,243,243,96,253,253,253,115,133,133,133,189, +5,5,5,253,30,30,30,247,184,184,184,211,47,47,47,241,4,4,4,253,95,95,95,214,246,246,246,150,255,255,255,137, +205,205,205,176,16,16,16,249,10,10,10,252,182,182,182,192,237,237,237,176,30,30,30,244,76,76,76,227,243,243,243,177, +70,70,70,230,0,0,0,255,34,34,34,243,242,242,242,169,216,216,216,177,19,19,19,248,0,0,0,255,69,69,69,227, +246,246,246,152,251,251,251,140,112,112,112,198,141,141,141,194,187,187,187,186,12,12,12,250,38,38,38,240,196,196,196,173, +149,149,149,157,254,254,254,89,255,255,255,80,245,245,245,109,64,64,64,213,38,38,38,227,242,242,242,95,255,255,255,47, +255,255,255,34,255,255,255,29,255,255,255,24,255,255,255,20,255,255,255,16,255,255,255,13,255,255,255,10,255,255,255,8, +255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,240,240,240,1,21,21,21,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0, +167,167,167,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,5,255,255,255,6,255,255,255,8,255,255,255,11, +255,255,255,13,255,255,255,17,255,255,255,21,255,255,255,25,255,255,255,30,255,255,255,35,255,255,255,40,255,255,255,47, +255,255,255,60,219,219,219,100,91,91,91,184,237,237,237,112,237,237,237,104,165,165,165,135,251,251,251,112,240,240,240,141, +55,55,55,229,2,2,2,255,80,80,80,232,194,194,194,203,32,32,32,245,8,8,8,252,126,126,126,205,250,250,250,154, +247,247,247,160,67,67,67,230,1,1,1,255,90,90,90,224,245,245,245,178,76,76,76,228,33,33,33,245,233,233,233,191, +70,70,70,233,0,0,0,255,36,36,36,243,242,242,242,181,129,129,129,211,3,3,3,254,12,12,12,251,186,186,186,186, +255,255,255,145,198,198,198,169,62,62,62,228,228,228,228,175,79,79,79,224,4,4,4,254,123,123,123,211,116,116,116,201, +203,203,203,133,255,255,255,91,254,254,254,98,155,155,155,167,9,9,9,249,99,99,99,188,252,252,252,78,255,255,255,45, +255,255,255,35,255,255,255,30,255,255,255,25,255,255,255,21,255,255,255,17,255,255,255,13,255,255,255,10,255,255,255,8, +255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,254,254,254,1,99,99,99,1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,57,0, +247,247,247,1,255,255,255,2,255,255,255,2,255,255,255,4,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,11, +255,255,255,14,255,255,255,18,255,255,255,22,252,252,252,30,251,251,251,38,255,255,255,41,255,255,255,43,255,255,255,48, +255,255,255,58,252,252,252,83,114,114,114,173,100,100,100,190,245,245,245,125,161,161,161,155,184,184,184,147,254,254,254,128, +181,181,181,177,14,14,14,249,8,8,8,253,149,149,149,212,175,175,175,204,19,19,19,249,14,14,14,250,162,162,162,197, +253,253,253,165,156,156,156,203,6,6,6,253,27,27,27,247,227,227,227,191,137,137,137,213,14,14,14,251,189,189,189,210, +71,71,71,237,0,0,0,255,37,37,37,245,234,234,234,195,59,59,59,237,0,0,0,255,71,71,71,229,247,247,247,162, +246,246,246,157,79,79,79,220,133,133,133,206,189,189,189,194,14,14,14,250,33,33,33,245,181,181,181,198,83,83,83,209, +245,245,245,118,255,255,255,101,218,218,218,139,35,35,35,234,13,13,13,247,193,193,193,136,255,255,255,64,255,255,255,44, +255,255,255,37,255,255,255,31,255,255,255,26,255,255,255,22,255,255,255,18,255,255,255,14,255,255,255,11,255,255,255,8, +255,255,255,7,255,255,255,5,255,255,255,3,255,255,255,2,255,255,255,1,167,167,167,1,8,8,8,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,113,113,113,1, +255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10,255,255,255,12, +255,255,255,15,255,255,255,19,255,255,255,24,231,231,231,42,148,148,148,91,240,240,240,69,255,255,255,58,255,255,255,55, +255,255,255,59,255,255,255,73,231,231,231,115,56,56,56,218,119,119,119,191,233,233,233,149,101,101,101,199,221,221,221,147, +250,250,250,147,101,101,101,213,3,3,3,254,33,33,33,244,219,219,219,193,143,143,143,211,10,10,10,252,27,27,27,246, +195,195,195,194,236,236,236,188,36,36,36,244,4,4,4,254,140,140,140,216,209,209,209,201,17,17,17,251,125,125,125,229, +73,73,73,240,0,0,0,255,37,37,37,247,203,203,203,214,16,16,16,251,9,9,9,252,173,173,173,197,254,254,254,160, +164,164,164,192,47,47,47,239,223,223,223,189,71,71,71,231,5,5,5,254,125,125,125,221,84,84,84,226,147,147,147,176, +255,255,255,115,245,245,245,127,76,76,76,213,2,2,2,254,70,70,70,211,247,247,247,98,255,255,255,57,255,255,255,44, +255,255,255,38,255,255,255,32,255,255,255,27,255,255,255,23,255,255,255,19,255,255,255,15,255,255,255,12,255,255,255,9, +255,255,255,7,255,255,255,5,255,255,255,4,255,255,255,3,255,255,255,2,247,247,247,1,57,57,57,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,20,0,232,232,232,1, +255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,5,255,255,255,6,255,255,255,8,255,255,255,10,255,255,255,13, +255,255,255,16,255,255,255,20,255,255,255,25,254,254,254,38,180,180,180,96,85,85,85,175,195,195,195,116,252,252,252,82, +255,255,255,70,255,255,255,72,255,255,255,91,187,187,187,149,32,32,32,238,126,126,126,201,168,168,168,190,89,89,89,212, +239,239,239,156,228,228,228,172,39,39,39,240,2,2,2,254,97,97,97,224,243,243,243,185,107,107,107,222,5,5,5,254, +46,46,46,241,222,222,222,199,111,111,111,227,2,2,2,255,58,58,58,240,234,234,234,201,46,46,46,243,71,71,71,243, +72,72,72,244,0,0,0,255,36,36,36,250,127,127,127,235,4,4,4,254,49,49,49,239,242,242,242,178,236,236,236,175, +51,51,51,236,125,125,125,217,168,168,168,207,10,10,10,252,44,44,44,244,146,146,146,219,50,50,50,232,235,235,235,144, +253,253,253,128,139,139,139,187,7,7,7,252,12,12,12,248,180,180,180,151,255,255,255,77,255,255,255,54,255,255,255,45, +255,255,255,39,255,255,255,33,255,255,255,28,255,255,255,24,255,255,255,19,255,255,255,16,255,255,255,12,255,255,255,10, +255,255,255,8,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,2,255,255,255,1,168,168,168,1,13,13,13,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,161,161,161,1,254,254,254,1, +255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,11,255,255,255,14, +255,255,255,18,255,255,255,22,255,255,255,26,255,255,255,34,253,253,253,57,157,157,157,133,41,41,41,222,115,115,115,175, +232,232,232,116,254,254,254,92,255,255,255,90,252,252,252,110,140,140,140,181,19,19,19,247,123,123,123,215,98,98,98,225, +93,93,93,215,241,241,241,172,154,154,154,205,8,8,8,253,14,14,14,251,181,181,181,202,240,240,240,187,73,73,73,233, +3,3,3,254,76,76,76,237,198,198,198,218,17,17,17,252,12,12,12,252,192,192,192,214,97,97,97,232,29,29,29,251, +70,70,70,248,0,0,0,255,29,29,29,252,63,63,63,249,3,3,3,254,129,129,129,216,252,252,252,177,126,126,126,212, +37,37,37,245,215,215,215,203,54,54,54,239,8,8,8,254,136,136,136,228,43,43,43,243,129,129,129,197,253,253,253,142, +185,185,185,172,22,22,22,244,2,2,2,254,83,83,83,206,248,248,248,105,255,255,255,67,255,255,255,54,255,255,255,47, +255,255,255,40,255,255,255,34,255,255,255,29,255,255,255,24,255,255,255,20,255,255,255,16,255,255,255,13,255,255,255,10, +255,255,255,8,255,255,255,6,255,255,255,5,255,255,255,3,255,255,255,2,255,255,255,2,254,254,254,1,108,108,108,1, +1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,57,0,247,247,247,1,255,255,255,1, +255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,10,255,255,255,12,255,255,255,16, +255,255,255,19,255,255,255,23,255,255,255,27,255,255,255,32,255,255,255,44,252,252,252,71,172,172,172,139,35,35,35,229, +40,40,40,228,145,145,145,171,240,240,240,125,255,255,255,112,247,247,247,132,98,98,98,207,13,13,13,251,108,108,108,230, +56,56,56,243,89,89,89,223,229,229,229,193,73,73,73,235,1,1,1,255,46,46,46,241,227,227,227,192,223,223,223,194, +45,45,45,242,6,6,6,254,114,114,114,236,71,71,71,245,1,1,1,255,97,97,97,234,163,163,163,224,14,14,14,253, +45,45,45,252,0,0,0,255,16,16,16,255,14,14,14,254,20,20,20,250,219,219,219,197,216,216,216,193,31,31,31,245, +117,117,117,226,143,143,143,221,7,7,7,253,63,63,63,244,90,90,90,238,38,38,38,240,230,230,230,169,208,208,208,173, +36,36,36,238,1,1,1,255,39,39,39,233,219,219,219,136,255,255,255,83,255,255,255,63,255,255,255,55,255,255,255,48, +255,255,255,42,255,255,255,36,255,255,255,30,255,255,255,26,255,255,255,21,255,255,255,17,255,255,255,14,255,255,255,11, +255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,4,255,255,255,3,255,255,255,2,255,255,255,1,239,239,239,1, +63,63,63,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,0,168,168,168,1,255,255,255,1,255,255,255,2, +255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,11,255,255,255,14,255,255,255,17, +255,255,255,20,255,255,255,25,255,255,255,29,255,255,255,34,255,255,255,40,255,255,255,52,254,254,254,76,204,204,204,130, +57,57,57,218,9,9,9,250,51,51,51,226,174,174,174,169,248,248,248,138,238,238,238,155,73,73,73,224,12,12,12,252, +85,85,85,242,31,31,31,250,79,79,79,233,193,193,193,216,30,30,30,249,2,2,2,254,82,82,82,231,244,244,244,190, +193,193,193,205,25,25,25,249,14,14,14,253,100,100,100,246,7,7,7,255,30,30,30,249,206,206,206,222,23,23,23,251, +10,10,10,255,0,0,0,255,1,1,1,255,0,0,0,255,74,74,74,235,245,245,245,192,101,101,101,225,32,32,32,248, +200,200,200,215,37,37,37,246,17,17,17,253,121,121,121,238,16,16,16,252,128,128,128,214,217,217,217,184,50,50,50,235, +1,1,1,255,23,23,23,243,185,185,185,162,254,254,254,100,255,255,255,77,255,255,255,67,255,255,255,61,255,255,255,54, +255,255,255,47,255,255,255,39,255,255,255,32,255,255,255,27,255,255,255,22,255,255,255,19,255,255,255,15,255,255,255,12, +255,255,255,10,255,255,255,8,255,255,255,6,255,255,255,5,255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,1, +239,239,239,1,56,56,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,108,108,108,1,254,254,254,1,255,255,255,2,255,255,255,2, +255,255,255,3,255,255,255,5,255,255,255,6,255,255,255,8,255,255,255,10,255,255,255,12,255,255,255,15,255,255,255,18, +255,255,255,22,255,255,255,26,255,255,255,31,255,255,255,36,255,255,255,42,255,255,255,49,255,255,255,59,255,255,255,79, +235,235,235,120,100,100,100,197,13,13,13,248,13,13,13,249,87,87,87,214,213,213,213,172,230,230,230,176,72,72,72,230, +10,10,10,253,50,50,50,250,17,17,17,253,72,72,72,241,140,140,140,234,13,13,13,253,6,6,6,254,119,119,119,223, +248,248,248,192,153,153,153,216,11,11,11,252,24,24,24,254,16,16,16,254,5,5,5,254,139,139,139,234,63,63,63,245, +0,0,0,255,0,0,0,255,0,0,0,255,6,6,6,254,155,155,155,218,211,211,211,204,26,26,26,249,118,118,118,231, +110,110,110,233,5,5,5,254,86,86,86,244,41,41,41,249,39,39,39,246,199,199,199,208,55,55,55,237,1,1,1,255, +17,17,17,248,162,162,162,181,253,253,253,121,255,255,255,100,254,254,254,94,248,248,248,93,243,243,243,90,242,242,242,82, +241,241,241,69,243,243,243,54,248,248,248,39,254,254,254,29,255,255,255,24,255,255,255,20,255,255,255,16,255,255,255,13, +255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,5,255,255,255,4,255,255,255,3,255,255,255,2,255,255,255,2, +255,255,255,1,168,168,168,1,13,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,56,56,56,0,239,239,239,1,255,255,255,1,255,255,255,2,255,255,255,3, +255,255,255,4,255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,11,255,255,255,13,255,255,255,16,255,255,255,20, +255,255,255,24,255,255,255,30,255,255,255,37,255,255,255,44,255,255,255,52,255,255,255,59,255,255,255,68,255,255,255,77, +255,255,255,93,249,249,249,120,177,177,177,171,51,51,51,231,6,6,6,253,26,26,26,244,122,122,122,213,214,214,214,200, +81,81,81,235,9,9,9,254,28,28,28,253,15,15,15,254,47,47,47,249,84,84,84,248,6,6,6,255,12,12,12,252, +149,149,149,218,246,246,246,197,108,108,108,229,4,4,4,254,1,1,1,255,0,0,0,255,59,59,59,247,113,113,113,240, +2,2,2,255,0,0,0,255,0,0,0,255,30,30,30,249,229,229,229,206,98,98,98,230,36,36,36,248,178,178,178,225, +21,21,21,251,32,32,32,252,80,80,80,246,13,13,13,254,126,126,126,235,50,50,50,244,1,1,1,255,17,17,17,250, +153,153,153,201,244,244,244,153,225,225,225,146,156,156,156,165,104,104,104,187,74,74,74,199,72,72,72,194,95,95,95,164, +137,137,137,126,168,168,168,89,197,197,197,55,249,249,249,32,255,255,255,25,255,255,255,21,255,255,255,17,255,255,255,14, +255,255,255,12,255,255,255,10,255,255,255,8,255,255,255,6,255,255,255,5,255,255,255,4,255,255,255,3,255,255,255,2, +255,255,255,1,254,254,254,1,162,162,162,1,13,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,13,13,13,0,168,168,168,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,3, +255,255,255,5,255,255,255,6,255,255,255,8,255,255,255,10,255,255,255,12,255,255,255,14,255,255,255,18,254,254,254,24, +246,246,246,33,243,243,243,44,239,239,239,57,205,205,205,79,185,185,185,99,178,178,178,115,177,177,177,126,181,181,181,133, +191,191,191,138,215,215,215,141,239,239,239,149,229,229,229,171,128,128,128,214,29,29,29,248,6,6,6,254,39,39,39,245, +130,130,130,230,89,89,89,243,9,9,9,254,20,20,20,254,17,17,17,255,23,23,23,254,26,26,26,254,1,1,1,255, +18,18,18,251,163,163,163,217,237,237,237,203,67,67,67,240,1,1,1,255,0,0,0,255,12,12,12,254,145,145,145,239, +12,12,12,254,0,0,0,255,1,1,1,255,88,88,88,236,207,207,207,213,26,26,26,250,120,120,120,236,68,68,68,243, +8,8,8,255,78,78,78,249,13,13,13,254,58,58,58,250,35,35,35,251,1,1,1,255,19,19,19,252,142,142,142,224, +146,146,146,208,66,66,66,224,26,26,26,242,35,35,35,235,89,89,89,200,159,159,159,155,231,231,231,112,245,245,245,88, +252,252,252,70,255,255,255,57,254,254,254,45,255,255,255,35,255,255,255,27,255,255,255,22,255,255,255,18,255,255,255,15, +255,255,255,13,255,255,255,10,255,255,255,9,255,255,255,7,255,255,255,6,255,255,255,4,255,255,255,3,255,255,255,3, +255,255,255,2,255,255,255,1,254,254,254,1,108,108,108,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,1,1,0,108,108,108,1,254,254,254,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,4, +255,255,255,5,255,255,255,7,255,255,255,9,255,255,255,11,255,255,255,13,255,255,255,16,228,228,228,24,191,191,191,38, +170,170,170,55,167,167,167,73,158,158,158,94,147,147,147,115,137,137,137,135,125,125,125,156,105,105,105,177,78,78,78,197, +56,56,56,217,34,34,34,236,32,32,32,239,55,55,55,231,90,90,90,226,113,113,113,233,59,59,59,248,7,7,7,255, +5,5,5,254,38,38,38,251,50,50,50,252,6,6,6,255,11,11,11,255,14,14,14,255,3,3,3,255,0,0,0,255, +0,0,0,255,20,20,20,251,159,159,159,220,210,210,210,214,35,35,35,248,0,0,0,255,1,1,1,255,86,86,86,246, +49,49,49,250,0,0,0,255,6,6,6,254,156,156,156,228,97,97,97,235,38,38,38,250,122,122,122,238,8,8,8,254, +48,48,48,252,23,23,23,253,4,4,4,255,12,12,12,254,0,0,0,255,4,4,4,255,50,50,50,249,32,32,32,249, +17,17,17,249,55,55,55,229,139,139,139,189,230,230,230,145,250,250,250,123,246,246,246,112,240,240,240,107,215,215,215,106, +169,169,169,109,153,153,153,108,166,166,166,84,186,186,186,56,216,216,216,36,253,253,253,23,255,255,255,19,255,255,255,16, +255,255,255,14,255,255,255,11,255,255,255,9,255,255,255,8,255,255,255,6,255,255,255,5,255,255,255,4,255,255,255,3, +255,255,255,2,255,255,255,2,255,255,255,1,239,239,239,1,63,63,63,0,1,1,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,20,20,20,0,232,232,232,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5, +255,255,255,6,255,255,255,8,255,255,255,9,255,255,255,11,255,255,255,14,255,255,255,17,251,251,251,22,247,247,247,28, +252,252,252,32,255,255,255,37,255,255,255,44,255,255,255,52,255,255,255,60,255,255,255,70,253,253,253,81,248,248,248,95, +243,243,243,110,226,226,226,132,152,152,152,172,81,81,81,211,35,35,35,237,14,14,14,250,9,9,9,253,1,1,1,255, +0,0,0,255,0,0,0,255,3,3,3,255,1,1,1,255,0,0,0,255,3,3,3,255,4,4,4,255,0,0,0,255, +0,0,0,255,0,0,0,255,15,15,15,252,132,132,132,230,164,164,164,229,15,15,15,253,0,0,0,255,25,25,25,253, +98,98,98,246,2,2,2,255,9,9,9,254,144,144,144,236,26,26,26,251,97,97,97,244,24,24,24,252,24,24,24,254, +35,35,35,253,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255,5,5,5,254,32,32,32,246,98,98,98,221, +189,189,189,189,233,233,233,166,220,220,220,159,158,158,158,170,110,110,110,186,74,74,74,201,71,71,71,197,105,105,105,169, +146,146,146,126,206,206,206,79,243,243,243,54,246,246,246,40,250,250,250,30,255,255,255,24,255,255,255,20,255,255,255,17, +255,255,255,14,255,255,255,12,255,255,255,10,255,255,255,8,255,255,255,7,255,255,255,6,255,255,255,5,255,255,255,4, +255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,1,232,232,232,1,20,20,20,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,1,1,0,108,108,108,1,254,254,254,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5, +255,255,255,7,255,255,255,8,255,255,255,10,255,255,255,12,255,255,255,15,255,255,255,18,255,255,255,21,255,255,255,25, +255,255,255,28,255,255,255,33,255,255,255,38,255,255,255,44,255,255,255,50,255,255,255,57,255,255,255,64,255,255,255,72, +255,255,255,80,255,255,255,91,255,255,255,105,250,250,250,122,240,240,240,142,194,194,194,170,123,123,123,202,62,62,62,229, +22,22,22,248,6,6,6,253,1,1,1,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,7,7,7,254,78,78,78,244,93,93,93,246,4,4,4,255,3,3,3,255, +79,79,79,250,8,8,8,255,4,4,4,255,40,40,40,251,39,39,39,252,47,47,47,251,7,7,7,255,32,32,32,254, +2,2,2,255,0,0,0,255,2,2,2,255,14,14,14,253,60,60,60,243,139,139,139,224,179,179,179,210,132,132,132,212, +85,85,85,220,49,49,49,231,36,36,36,236,65,65,65,212,122,122,122,174,195,195,195,128,241,241,241,96,251,251,251,74, +255,255,255,59,255,255,255,48,255,255,255,39,255,255,255,33,255,255,255,28,255,255,255,24,255,255,255,21,255,255,255,18, +255,255,255,15,255,255,255,13,255,255,255,11,255,255,255,9,255,255,255,8,255,255,255,7,255,255,255,5,255,255,255,4, +255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,1,254,254,254,1,108,108,108,1,1,1,1,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +20,20,20,0,232,232,232,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,6, +255,255,255,7,255,255,255,9,255,255,255,11,255,255,255,13,255,255,255,16,255,255,255,18,255,255,255,22,255,255,255,26, +255,255,255,32,255,255,255,38,255,255,255,46,255,255,255,54,255,255,255,63,255,255,255,72,255,255,255,81,255,255,255,89, +254,254,254,96,254,254,254,103,253,253,253,111,253,253,253,118,253,253,253,127,254,254,254,136,254,254,254,147,247,247,247,161, +228,228,228,179,162,162,162,205,93,93,93,228,41,41,41,245,12,12,12,253,3,3,3,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1,255,21,21,21,254,8,8,8,255,0,0,0,255, +19,19,19,254,4,4,4,255,0,0,0,255,14,14,14,255,52,52,52,252,3,3,3,255,2,2,2,255,2,2,2,255, +1,1,1,255,21,21,21,254,63,63,63,249,92,92,92,243,71,71,71,241,37,37,37,246,22,22,22,248,34,34,34,239, +77,77,77,214,142,142,142,177,219,219,219,137,246,246,246,110,254,254,254,89,255,255,255,75,255,255,255,63,255,255,255,54, +255,255,255,46,255,255,255,41,255,255,255,36,255,255,255,32,255,255,255,28,255,255,255,24,255,255,255,21,255,255,255,18, +255,255,255,16,255,255,255,14,255,255,255,12,255,255,255,10,255,255,255,9,255,255,255,7,255,255,255,6,255,255,255,5, +255,255,255,4,255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,1,231,231,231,1,14,14,14,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +99,99,99,1,254,254,254,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,6, +255,255,255,8,255,255,255,10,255,255,255,11,255,255,255,14,255,255,255,16,255,255,255,20,255,255,255,27,254,254,254,37, +246,246,246,52,242,242,242,69,234,234,234,87,194,194,194,113,159,159,159,138,137,137,137,159,122,122,122,174,111,111,111,185, +104,104,104,193,98,98,98,198,95,95,95,203,91,91,91,206,94,94,94,207,103,103,103,206,112,112,112,205,121,121,121,205, +132,132,132,206,144,144,144,209,155,155,155,213,161,161,161,221,140,140,140,234,86,86,86,246,41,41,41,253,6,6,6,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,14,14,14,255,4,4,4,255,0,0,0,255,0,0,0,255,0,0,0,255, +2,2,2,255,13,13,13,255,12,12,12,254,32,32,32,250,72,72,72,238,124,124,124,217,188,188,188,189,237,237,237,162, +249,249,249,140,255,255,255,121,255,255,255,105,255,255,255,92,255,255,255,81,255,255,255,72,255,255,255,64,255,255,255,57, +255,255,255,50,255,255,255,44,255,255,255,38,255,255,255,34,255,255,255,30,255,255,255,26,255,255,255,22,255,255,255,19, +255,255,255,17,255,255,255,15,255,255,255,13,255,255,255,11,255,255,255,9,255,255,255,8,255,255,255,7,255,255,255,5, +255,255,255,4,255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,1,247,247,247,1,57,57,57,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0, +113,113,113,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,7, +255,255,255,8,255,255,255,10,255,255,255,12,255,255,255,14,254,254,254,18,230,230,230,30,167,167,167,64,145,145,145,99, +103,103,103,132,83,83,83,162,72,72,72,188,64,64,64,202,57,57,57,211,51,51,51,221,45,45,45,229,38,38,38,237, +28,28,28,244,18,18,18,250,12,12,12,253,8,8,8,254,4,4,4,255,1,1,1,255,1,1,1,255,2,2,2,254, +3,3,3,254,4,4,4,254,6,6,6,253,7,7,7,253,9,9,9,254,10,10,10,254,6,6,6,255,1,1,1,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,1,1,1,255,22,22,22,253,54,54,54,248,65,65,65,240,76,76,76,231,85,85,85,222,96,96,96,212, +110,110,110,201,125,125,125,189,143,143,143,175,163,163,163,160,187,187,187,144,216,216,216,128,238,238,238,113,241,241,241,101, +244,244,244,90,247,247,247,79,251,251,251,69,255,255,255,59,255,255,255,51,255,255,255,43,255,255,255,36,255,255,255,30, +255,255,255,25,255,255,255,20,255,255,255,16,255,255,255,13,255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,6, +255,255,255,5,255,255,255,4,255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,1,104,104,104,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0, +231,231,231,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,6,255,255,255,7, +255,255,255,9,255,255,255,10,255,255,255,13,255,255,255,16,248,248,248,22,197,197,197,39,228,228,228,48,241,241,241,61, +242,242,242,73,243,243,243,84,244,244,244,97,241,241,241,111,236,236,236,128,232,232,232,143,224,224,224,160,195,195,195,181, +162,162,162,202,131,131,131,220,92,92,92,237,55,55,55,248,27,27,27,253,4,4,4,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, +1,1,1,255,2,2,2,254,4,4,4,253,6,6,6,251,9,9,9,250,13,13,13,248,20,20,20,242,32,32,32,232, +46,46,46,220,63,63,63,206,86,86,86,190,111,111,111,173,132,132,132,154,157,157,157,133,192,192,192,110,231,231,231,87, +241,241,241,72,245,245,245,58,252,252,252,44,255,255,255,34,255,255,255,26,255,255,255,19,255,255,255,14,255,255,255,10, +255,255,255,7,255,255,255,5,255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,1,167,167,167,1,8,8,8,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0, +238,238,238,1,255,255,255,1,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,6,255,255,255,8,255,255,255,11, +255,255,255,15,255,255,255,20,255,255,255,26,255,255,255,35,253,253,253,45,246,246,246,59,242,242,242,75,232,232,232,93, +184,184,184,120,144,144,144,149,115,115,115,175,83,83,83,197,56,56,56,217,36,36,36,233,19,19,19,245,11,11,11,250, +8,8,8,252,6,6,6,253,4,4,4,253,4,4,4,253,5,5,5,252,6,6,6,252,7,7,7,251,9,9,9,251, +10,10,10,251,10,10,10,250,11,11,11,250,12,12,12,250,13,13,13,250,14,14,14,249,14,14,14,249,15,15,15,249, +18,18,18,248,23,23,23,245,28,28,28,243,32,32,32,241,36,36,36,239,41,41,41,237,45,45,45,235,49,49,49,233, +52,52,52,231,56,56,56,229,59,59,59,227,62,62,62,226,64,64,64,224,66,66,66,223,67,67,67,222,68,68,68,221, +71,71,71,219,73,73,73,217,75,75,75,216,76,76,76,214,76,76,76,214,73,73,73,214,70,70,70,215,66,66,66,216, +61,61,61,218,57,57,57,219,54,54,54,220,50,50,50,221,46,46,46,223,42,42,42,225,38,38,38,227,34,34,34,230, +29,29,29,233,25,25,25,237,21,21,21,241,17,17,17,244,16,16,16,244,16,16,16,242,18,18,18,241,24,24,24,235, +37,37,37,219,57,57,57,196,93,93,93,169,124,124,124,138,159,159,159,104,221,221,221,68,241,241,241,49,246,246,246,34, +254,254,254,22,255,255,255,14,255,255,255,8,255,255,255,4,255,255,255,2,255,255,255,1,238,238,238,1,15,15,15,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0, +238,238,238,1,255,255,255,1,255,255,255,3,255,255,255,5,255,255,255,9,255,255,255,15,254,254,254,22,246,246,246,33, +241,241,241,47,226,226,226,64,166,166,166,96,130,130,130,130,102,102,102,161,65,65,65,188,44,44,44,212,32,32,32,231, +28,28,28,234,32,32,32,228,38,38,38,222,48,48,48,215,59,59,59,208,72,72,72,201,86,86,86,195,99,99,99,190, +110,110,110,185,119,119,119,181,129,129,129,176,140,140,140,172,152,152,152,167,163,163,163,164,174,174,174,160,184,184,184,158, +193,193,193,156,201,201,201,154,207,207,207,153,214,214,214,152,219,219,219,151,225,225,225,151,229,229,229,150,234,234,234,149, +239,239,239,148,240,240,240,146,241,241,241,144,241,241,241,143,242,242,242,142,243,243,243,140,244,244,244,138,244,244,244,137, +245,245,245,135,246,246,246,134,246,246,246,132,247,247,247,130,247,247,247,129,248,248,248,127,248,248,248,125,248,248,248,123, +248,248,248,120,249,249,249,118,249,249,249,115,249,249,249,113,249,249,249,110,249,249,249,108,248,248,248,106,248,248,248,104, +247,247,247,103,246,246,246,101,245,245,245,99,245,245,245,97,244,244,244,96,243,243,243,94,243,243,243,94,242,242,242,94, +241,241,241,93,240,240,240,94,239,239,239,95,237,237,237,96,221,221,221,100,200,200,200,107,180,180,180,114,161,161,161,122, +145,145,145,131,131,131,131,139,119,119,119,149,108,108,108,156,89,89,89,164,74,74,74,167,72,72,72,152,88,88,88,130, +132,132,132,106,141,141,141,74,180,180,180,33,246,246,246,10,255,255,255,3,255,255,255,1,238,238,238,1,15,15,15,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0, +238,238,238,1,248,248,248,3,242,242,242,9,240,240,240,17,185,185,185,37,140,140,140,76,132,132,132,105,92,92,92,126, +75,75,75,144,83,83,83,157,104,104,104,153,119,119,119,143,131,131,131,132,151,151,151,120,177,177,177,108,211,211,211,96, +235,235,235,88,240,240,240,85,242,242,242,82,244,244,244,80,246,246,246,79,249,249,249,77,251,251,251,76,254,254,254,76, +255,255,255,77,255,255,255,78,255,255,255,79,255,255,255,80,255,255,255,81,255,255,255,83,255,255,255,84,255,255,255,86, +255,255,255,88,255,255,255,90,255,255,255,91,255,255,255,92,255,255,255,94,255,255,255,95,255,255,255,96,255,255,255,97, +255,255,255,97,255,255,255,98,255,255,255,97,255,255,255,97,255,255,255,97,255,255,255,96,255,255,255,96,255,255,255,95, +255,255,255,94,255,255,255,93,255,255,255,92,255,255,255,91,255,255,255,90,255,255,255,89,255,255,255,87,255,255,255,85, +255,255,255,83,255,255,255,81,255,255,255,79,255,255,255,76,255,255,255,74,255,255,255,71,255,255,255,68,255,255,255,65, +255,255,255,62,255,255,255,59,255,255,255,56,255,255,255,53,255,255,255,50,255,255,255,47,255,255,255,45,255,255,255,42, +255,255,255,40,255,255,255,38,255,255,255,37,255,255,255,36,255,255,255,35,255,255,255,34,255,255,255,34,255,255,255,34, +255,255,255,35,255,255,255,36,255,255,255,37,254,254,254,37,250,250,250,39,245,245,245,41,242,242,242,43,240,240,240,43, +238,238,238,41,201,201,201,37,151,151,151,40,201,201,201,18,255,255,255,3,255,255,255,1,167,167,167,1,8,8,8,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0, +235,235,235,2,159,159,159,9,154,154,154,23,151,151,151,40,147,147,147,51,190,190,190,43,238,238,238,41,240,240,240,43, +243,243,243,41,247,247,247,39,253,253,253,36,255,255,255,35,255,255,255,34,255,255,255,34,255,255,255,33,255,255,255,33, +255,255,255,33,255,255,255,34,255,255,255,35,255,255,255,37,255,255,255,38,255,255,255,40,255,255,255,42,255,255,255,45, +255,255,255,47,255,255,255,50,255,255,255,52,255,255,255,55,255,255,255,58,255,255,255,60,255,255,255,63,255,255,255,65, +255,255,255,67,255,255,255,69,255,255,255,71,255,255,255,73,255,255,255,74,255,255,255,76,255,255,255,77,255,255,255,78, +255,255,255,79,255,255,255,79,255,255,255,80,255,255,255,80,255,255,255,80,255,255,255,80,255,255,255,80,255,255,255,79, +255,255,255,79,255,255,255,78,255,255,255,78,255,255,255,77,255,255,255,76,255,255,255,75,255,255,255,73,255,255,255,72, +255,255,255,70,255,255,255,68,255,255,255,66,255,255,255,64,255,255,255,62,255,255,255,59,255,255,255,56,255,255,255,54, +255,255,255,51,255,255,255,48,255,255,255,45,255,255,255,42,255,255,255,39,255,255,255,36,255,255,255,34,255,255,255,31, +255,255,255,29,255,255,255,26,255,255,255,24,255,255,255,22,255,255,255,20,255,255,255,19,255,255,255,17,255,255,255,16, +255,255,255,15,255,255,255,14,255,255,255,13,255,255,255,13,255,255,255,12,255,255,255,12,255,255,255,12,255,255,255,11, +255,255,255,11,255,255,255,9,255,255,255,7,255,255,255,4,255,255,255,2,255,255,255,1,104,104,104,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0, +167,167,167,1,248,248,248,2,254,254,254,5,255,255,255,7,255,255,255,9,255,255,255,11,255,255,255,11,255,255,255,12, +255,255,255,12,255,255,255,12,255,255,255,13,255,255,255,14,255,255,255,14,255,255,255,16,255,255,255,17,255,255,255,19, +255,255,255,20,255,255,255,23,255,255,255,25,255,255,255,27,255,255,255,30,255,255,255,32,255,255,255,35,255,255,255,37, +255,255,255,39,255,255,255,42,255,255,255,45,255,255,255,47,255,255,255,50,255,255,255,52,255,255,255,54,255,255,255,57, +255,255,255,58,255,255,255,60,255,255,255,61,255,255,255,63,255,255,255,64,255,255,255,65,255,255,255,66,255,255,255,67, +255,255,255,68,255,255,255,68,255,255,255,69,255,255,255,69,255,255,255,69,255,255,255,69,255,255,255,69,255,255,255,68, +255,255,255,68,255,255,255,68,255,255,255,67,255,255,255,66,255,255,255,65,255,255,255,64,255,255,255,63,255,255,255,62, +255,255,255,60,255,255,255,59,255,255,255,57,255,255,255,55,255,255,255,54,255,255,255,51,255,255,255,49,255,255,255,46, +255,255,255,44,255,255,255,41,255,255,255,39,255,255,255,36,255,255,255,34,255,255,255,32,255,255,255,30,255,255,255,27, +255,255,255,25,255,255,255,23,255,255,255,21,255,255,255,19,255,255,255,18,255,255,255,16,255,255,255,15,255,255,255,13, +255,255,255,12,255,255,255,11,255,255,255,10,255,255,255,9,255,255,255,8,255,255,255,7,255,255,255,6,255,255,255,5, +255,255,255,5,255,255,255,4,255,255,255,3,255,255,255,2,255,255,255,1,247,247,247,1,57,57,57,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +99,99,99,1,254,254,254,1,255,255,255,1,255,255,255,3,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,5, +255,255,255,6,255,255,255,7,255,255,255,9,255,255,255,10,255,255,255,11,255,255,255,13,255,255,255,14,255,255,255,16, +255,255,255,18,255,255,255,20,255,255,255,22,255,255,255,24,255,255,255,26,255,255,255,28,255,255,255,30,255,255,255,32, +255,255,255,34,255,255,255,37,255,255,255,39,255,255,255,41,255,255,255,43,255,255,255,45,255,255,255,47,255,255,255,49, +255,255,255,50,255,255,255,51,255,255,255,52,255,255,255,53,255,255,255,55,255,255,255,55,255,255,255,56,255,255,255,57, +255,255,255,57,255,255,255,58,255,255,255,58,255,255,255,59,255,255,255,59,255,255,255,59,255,255,255,58,255,255,255,58, +255,255,255,58,255,255,255,57,255,255,255,56,255,255,255,56,255,255,255,55,255,255,255,54,255,255,255,53,255,255,255,52, +255,255,255,51,255,255,255,50,255,255,255,48,255,255,255,47,255,255,255,45,255,255,255,44,255,255,255,41,255,255,255,39, +255,255,255,37,255,255,255,35,255,255,255,33,255,255,255,31,255,255,255,29,255,255,255,27,255,255,255,26,255,255,255,24, +255,255,255,22,255,255,255,20,255,255,255,18,255,255,255,17,255,255,255,16,255,255,255,14,255,255,255,13,255,255,255,12, +255,255,255,11,255,255,255,10,255,255,255,9,255,255,255,8,255,255,255,7,255,255,255,6,255,255,255,5,255,255,255,4, +255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,1,231,231,231,1,14,14,14,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +20,20,20,0,232,232,232,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,4,255,255,255,4, +255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,9,255,255,255,10,255,255,255,11,255,255,255,13,255,255,255,14, +255,255,255,16,255,255,255,17,255,255,255,19,255,255,255,21,255,255,255,22,255,255,255,24,255,255,255,26,255,255,255,28, +255,255,255,30,255,255,255,31,255,255,255,33,255,255,255,34,255,255,255,36,255,255,255,38,255,255,255,39,255,255,255,41, +255,255,255,42,255,255,255,43,255,255,255,44,255,255,255,45,255,255,255,46,255,255,255,47,255,255,255,47,255,255,255,48, +255,255,255,48,255,255,255,48,255,255,255,48,255,255,255,49,255,255,255,49,255,255,255,49,255,255,255,48,255,255,255,48, +255,255,255,48,255,255,255,47,255,255,255,47,255,255,255,47,255,255,255,46,255,255,255,45,255,255,255,45,255,255,255,44, +255,255,255,43,255,255,255,42,255,255,255,40,255,255,255,39,255,255,255,38,255,255,255,36,255,255,255,34,255,255,255,33, +255,255,255,31,255,255,255,29,255,255,255,28,255,255,255,26,255,255,255,25,255,255,255,23,255,255,255,22,255,255,255,20, +255,255,255,19,255,255,255,17,255,255,255,16,255,255,255,15,255,255,255,14,255,255,255,13,255,255,255,11,255,255,255,10, +255,255,255,9,255,255,255,8,255,255,255,7,255,255,255,7,255,255,255,6,255,255,255,5,255,255,255,4,255,255,255,4, +255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,1,254,254,254,1,108,108,108,1,1,1,1,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,1,1,0,108,108,108,1,254,254,254,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,4, +255,255,255,5,255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,8,255,255,255,10,255,255,255,11,255,255,255,12, +255,255,255,13,255,255,255,15,255,255,255,16,255,255,255,18,255,255,255,19,255,255,255,21,255,255,255,22,255,255,255,23, +255,255,255,25,255,255,255,26,255,255,255,27,255,255,255,29,255,255,255,30,255,255,255,31,255,255,255,32,255,255,255,34, +255,255,255,35,255,255,255,36,255,255,255,36,255,255,255,37,255,255,255,38,255,255,255,38,255,255,255,39,255,255,255,39, +255,255,255,39,255,255,255,40,255,255,255,40,255,255,255,40,255,255,255,40,255,255,255,40,255,255,255,40,255,255,255,39, +255,255,255,39,255,255,255,39,255,255,255,39,255,255,255,38,255,255,255,38,255,255,255,37,255,255,255,37,255,255,255,36, +255,255,255,35,255,255,255,34,255,255,255,33,255,255,255,32,255,255,255,31,255,255,255,30,255,255,255,28,255,255,255,27, +255,255,255,26,255,255,255,24,255,255,255,23,255,255,255,22,255,255,255,20,255,255,255,19,255,255,255,18,255,255,255,17, +255,255,255,15,255,255,255,14,255,255,255,13,255,255,255,12,255,255,255,11,255,255,255,11,255,255,255,10,255,255,255,9, +255,255,255,8,255,255,255,7,255,255,255,6,255,255,255,6,255,255,255,5,255,255,255,4,255,255,255,4,255,255,255,3, +255,255,255,2,255,255,255,2,255,255,255,1,254,254,254,1,162,162,162,1,13,13,13,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,13,13,13,0,168,168,168,1,255,255,255,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,3, +255,255,255,4,255,255,255,5,255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,8,255,255,255,9,255,255,255,10, +255,255,255,11,255,255,255,12,255,255,255,13,255,255,255,14,255,255,255,16,255,255,255,17,255,255,255,18,255,255,255,19, +255,255,255,21,255,255,255,22,255,255,255,23,255,255,255,24,255,255,255,25,255,255,255,26,255,255,255,27,255,255,255,27, +255,255,255,28,255,255,255,29,255,255,255,29,255,255,255,30,255,255,255,31,255,255,255,31,255,255,255,31,255,255,255,32, +255,255,255,32,255,255,255,32,255,255,255,32,255,255,255,32,255,255,255,32,255,255,255,32,255,255,255,32,255,255,255,32, +255,255,255,31,255,255,255,31,255,255,255,31,255,255,255,31,255,255,255,30,255,255,255,30,255,255,255,29,255,255,255,29, +255,255,255,28,255,255,255,27,255,255,255,26,255,255,255,26,255,255,255,25,255,255,255,24,255,255,255,23,255,255,255,22, +255,255,255,21,255,255,255,20,255,255,255,19,255,255,255,18,255,255,255,17,255,255,255,15,255,255,255,14,255,255,255,14, +255,255,255,13,255,255,255,12,255,255,255,11,255,255,255,10,255,255,255,9,255,255,255,9,255,255,255,8,255,255,255,7, +255,255,255,7,255,255,255,6,255,255,255,5,255,255,255,5,255,255,255,4,255,255,255,3,255,255,255,3,255,255,255,2, +255,255,255,2,255,255,255,1,255,255,255,1,232,232,232,1,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,56,56,56,0,239,239,239,1,255,255,255,1,255,255,255,1,255,255,255,2,255,255,255,2, +255,255,255,3,255,255,255,4,255,255,255,4,255,255,255,5,255,255,255,6,255,255,255,7,255,255,255,7,255,255,255,8, +255,255,255,9,255,255,255,10,255,255,255,11,255,255,255,12,255,255,255,13,255,255,255,14,255,255,255,15,255,255,255,16, +255,255,255,17,255,255,255,18,255,255,255,18,255,255,255,19,255,255,255,20,255,255,255,21,255,255,255,21,255,255,255,22, +255,255,255,23,255,255,255,23,255,255,255,24,255,255,255,24,255,255,255,25,255,255,255,25,255,255,255,25,255,255,255,26, +255,255,255,26,255,255,255,26,255,255,255,26,255,255,255,26,255,255,255,26,255,255,255,26,255,255,255,26,255,255,255,26, +255,255,255,25,255,255,255,25,255,255,255,25,255,255,255,25,255,255,255,24,255,255,255,24,255,255,255,23,255,255,255,23, +255,255,255,22,255,255,255,22,255,255,255,21,255,255,255,20,255,255,255,20,255,255,255,19,255,255,255,18,255,255,255,17, +255,255,255,16,255,255,255,15,255,255,255,15,255,255,255,14,255,255,255,13,255,255,255,12,255,255,255,12,255,255,255,11, +255,255,255,10,255,255,255,9,255,255,255,9,255,255,255,8,255,255,255,8,255,255,255,7,255,255,255,7,255,255,255,6, +255,255,255,5,255,255,255,5,255,255,255,4,255,255,255,4,255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,2, +255,255,255,1,255,255,255,1,239,239,239,1,63,63,63,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,1,1,0,63,63,63,0,239,239,239,1,255,255,255,1,255,255,255,1,255,255,255,2, +255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,4,255,255,255,5,255,255,255,5,255,255,255,6,255,255,255,7, +255,255,255,7,255,255,255,8,255,255,255,9,255,255,255,9,255,255,255,10,255,255,255,11,255,255,255,12,255,255,255,12, +255,255,255,13,255,255,255,14,255,255,255,15,255,255,255,15,255,255,255,16,255,255,255,16,255,255,255,17,255,255,255,17, +255,255,255,18,255,255,255,18,255,255,255,18,255,255,255,19,255,255,255,19,255,255,255,19,255,255,255,19,255,255,255,20, +255,255,255,20,255,255,255,20,255,255,255,20,255,255,255,20,255,255,255,20,255,255,255,20,255,255,255,20,255,255,255,20, +255,255,255,19,255,255,255,19,255,255,255,19,255,255,255,19,255,255,255,18,255,255,255,18,255,255,255,18,255,255,255,17, +255,255,255,17,255,255,255,17,255,255,255,16,255,255,255,16,255,255,255,15,255,255,255,15,255,255,255,14,255,255,255,13, +255,255,255,13,255,255,255,12,255,255,255,11,255,255,255,11,255,255,255,10,255,255,255,10,255,255,255,9,255,255,255,8, +255,255,255,8,255,255,255,8,255,255,255,7,255,255,255,7,255,255,255,6,255,255,255,6,255,255,255,5,255,255,255,5, +255,255,255,4,255,255,255,4,255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,1, +254,254,254,1,168,168,168,1,56,56,56,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,63,63,63,0,232,232,232,1,254,254,254,1,255,255,255,1, +255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,4,255,255,255,4,255,255,255,5,255,255,255,5, +255,255,255,6,255,255,255,6,255,255,255,7,255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,9,255,255,255,9, +255,255,255,10,255,255,255,11,255,255,255,11,255,255,255,11,255,255,255,12,255,255,255,13,255,255,255,13,255,255,255,13, +255,255,255,13,255,255,255,14,255,255,255,14,255,255,255,14,255,255,255,14,255,255,255,15,255,255,255,15,255,255,255,15, +255,255,255,15,255,255,255,15,255,255,255,15,255,255,255,15,255,255,255,15,255,255,255,15,255,255,255,15,255,255,255,15, +255,255,255,15,255,255,255,14,255,255,255,14,255,255,255,14,255,255,255,14,255,255,255,14,255,255,255,13,255,255,255,13, +255,255,255,13,255,255,255,13,255,255,255,12,255,255,255,12,255,255,255,11,255,255,255,11,255,255,255,10,255,255,255,10, +255,255,255,10,255,255,255,9,255,255,255,9,255,255,255,8,255,255,255,8,255,255,255,7,255,255,255,7,255,255,255,7, +255,255,255,6,255,255,255,6,255,255,255,5,255,255,255,5,255,255,255,5,255,255,255,4,255,255,255,4,255,255,255,3, +255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,1,255,255,255,1,247,247,247,1, +161,161,161,1,13,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,20,20,20,0,161,161,161,1,247,247,247,1, +255,255,255,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,4, +255,255,255,4,255,255,255,5,255,255,255,5,255,255,255,6,255,255,255,6,255,255,255,7,255,255,255,7,255,255,255,7, +255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,9,255,255,255,9,255,255,255,9,255,255,255,9,255,255,255,10, +255,255,255,10,255,255,255,10,255,255,255,11,255,255,255,11,255,255,255,11,255,255,255,11,255,255,255,11,255,255,255,11, +255,255,255,11,255,255,255,11,255,255,255,11,255,255,255,11,255,255,255,11,255,255,255,11,255,255,255,11,255,255,255,11, +255,255,255,11,255,255,255,11,255,255,255,11,255,255,255,11,255,255,255,10,255,255,255,10,255,255,255,10,255,255,255,10, +255,255,255,9,255,255,255,9,255,255,255,9,255,255,255,9,255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,7, +255,255,255,7,255,255,255,7,255,255,255,7,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,5,255,255,255,5, +255,255,255,5,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,2, +255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,1,255,255,255,1,247,247,247,1,167,167,167,1,57,57,57,0, +8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,57,57,57,0, +167,167,167,1,247,247,247,1,255,255,255,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,3, +255,255,255,3,255,255,255,3,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,5,255,255,255,5,255,255,255,5, +255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,7,255,255,255,7,255,255,255,7,255,255,255,7, +255,255,255,7,255,255,255,7,255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,8, +255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,8, +255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,8,255,255,255,7,255,255,255,7,255,255,255,7,255,255,255,7, +255,255,255,7,255,255,255,7,255,255,255,7,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,5, +255,255,255,5,255,255,255,5,255,255,255,5,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,3, +255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2, +255,255,255,1,255,255,255,1,254,254,254,1,240,240,240,1,167,167,167,1,57,57,57,0,8,8,8,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +8,8,8,0,57,57,57,0,167,167,167,1,247,247,247,1,255,255,255,1,255,255,255,1,255,255,255,2,255,255,255,2, +255,255,255,2,255,255,255,2,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,4, +255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,5,255,255,255,5,255,255,255,5,255,255,255,5,255,255,255,5, +255,255,255,5,255,255,255,5,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,6, +255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,6,255,255,255,6, +255,255,255,6,255,255,255,6,255,255,255,5,255,255,255,5,255,255,255,5,255,255,255,5,255,255,255,5,255,255,255,5, +255,255,255,5,255,255,255,5,255,255,255,5,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4, +255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,2, +255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,1,255,255,255,1,255,255,255,1,247,247,247,1, +238,238,238,1,167,167,167,1,99,99,99,1,21,21,21,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,8,8,8,0,57,57,57,0,113,113,113,1,231,231,231,1,240,240,240,1,254,254,254,1, +255,255,255,1,255,255,255,1,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2, +255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3, +255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4, +255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4, +255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,4,255,255,255,3,255,255,255,3,255,255,255,3, +255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,3,255,255,255,2,255,255,255,2, +255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,1,255,255,255,1, +255,255,255,1,254,254,254,1,240,240,240,1,238,238,238,1,231,231,231,1,113,113,113,1,104,104,104,1,57,57,57,0, +15,15,15,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,14,14,14,0,21,21,21,0,99,99,99,1, +104,104,104,1,167,167,167,1,238,238,238,1,240,240,240,1,254,254,254,1,255,255,255,1,255,255,255,1,255,255,255,1, +255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2, +255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2, +255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2, +255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2, +255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,2,255,255,255,1,255,255,255,1,255,255,255,1, +255,255,255,1,254,254,254,1,240,240,240,1,238,238,238,1,238,238,238,1,231,231,231,1,113,113,113,1,104,104,104,1, +104,104,104,1,99,99,99,1,21,21,21,0,15,15,15,0,14,14,14,0,1,1,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,8,8,8,0,15,15,15,0,21,21,21,0,99,99,99,1,104,104,104,1,104,104,104,1,113,113,113,1, +231,231,231,1,238,238,238,1,238,238,238,1,238,238,238,1,238,238,238,1,240,240,240,1,254,254,254,1,255,255,255,1, +255,255,255,1,255,255,255,1,255,255,255,1,255,255,255,1,255,255,255,1,255,255,255,1,255,255,255,1,255,255,255,1, +255,255,255,1,255,255,255,1,255,255,255,1,255,255,255,1,255,255,255,1,255,255,255,1,255,255,255,1,255,255,255,1, +255,255,255,1,255,255,255,1,255,255,255,1,254,254,254,1,240,240,240,1,238,238,238,1,238,238,238,1,238,238,238,1, +238,238,238,1,238,238,238,1,238,238,238,1,238,238,238,1,231,231,231,1,113,113,113,1,104,104,104,1,104,104,104,1, +104,104,104,1,99,99,99,1,21,21,21,0,15,15,15,0,15,15,15,0,14,14,14,0,1,1,1,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0, +14,14,14,0,15,15,15,0,15,15,15,0,15,15,15,0,15,15,15,0,21,21,21,0,99,99,99,1,104,104,104,1, +104,104,104,1,104,104,104,1,104,104,104,1,104,104,104,1,104,104,104,1,104,104,104,1,104,104,104,1,104,104,104,1, +104,104,104,1,104,104,104,1,104,104,104,1,104,104,104,1,104,104,104,1,104,104,104,1,104,104,104,1,104,104,104,1, +104,104,104,1,104,104,104,1,104,104,104,1,99,99,99,1,21,21,21,0,15,15,15,0,15,15,15,0,15,15,15,0, +15,15,15,0,15,15,15,0,15,15,15,0,15,15,15,0,14,14,14,0,1,1,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; +} embedded_image; diff --git a/Editor/main_SDL2.cpp b/Editor/main_SDL2.cpp index 6cc2ba8f6..6bd2afc5a 100644 --- a/Editor/main_SDL2.cpp +++ b/Editor/main_SDL2.cpp @@ -4,7 +4,7 @@ #include "sdl2.h" #include -#include "icon.c" +#include "icon.h" #ifdef __linux__ # include @@ -95,7 +95,7 @@ void set_window_icon(SDL_Window *window) { // to assume the data it gets is byte-wise RGB(A) data Uint32 rmask, gmask, bmask, amask; #if SDL_BYTEORDER == SDL_BIG_ENDIAN - int shift = (gimp_image.bytes_per_pixel == 3) ? 8 : 0; + int shift = (embedded_image.bytes_per_pixel == 3) ? 8 : 0; rmask = 0xff000000 >> shift; gmask = 0x00ff0000 >> shift; bmask = 0x0000ff00 >> shift; @@ -104,10 +104,10 @@ void set_window_icon(SDL_Window *window) { rmask = 0x000000ff; gmask = 0x0000ff00; bmask = 0x00ff0000; - amask = (gimp_image.bytes_per_pixel == 3) ? 0 : 0xff000000; + amask = (embedded_image.bytes_per_pixel == 3) ? 0 : 0xff000000; #endif - SDL_Surface* icon = SDL_CreateRGBSurfaceFrom((void*)gimp_image.pixel_data, gimp_image.width, - gimp_image.height, gimp_image.bytes_per_pixel*8, gimp_image.bytes_per_pixel*gimp_image.width, + SDL_Surface* icon = SDL_CreateRGBSurfaceFrom((void*)embedded_image.pixel_data, embedded_image.width, + embedded_image.height, embedded_image.bytes_per_pixel*8, embedded_image.bytes_per_pixel* embedded_image.width, rmask, gmask, bmask, amask); SDL_SetWindowIcon(window, icon); @@ -196,7 +196,7 @@ int main(int argc, char *argv[]) } #endif - wi::arguments::Parse(argc, argv); + wi::arguments::Parse(argc, argv); sdl2::sdlsystem_ptr_t system = sdl2::make_sdlsystem(SDL_INIT_EVERYTHING | SDL_INIT_EVENTS); if (*system) { @@ -208,7 +208,7 @@ int main(int argc, char *argv[]) bool fullscreen = false; wi::Timer timer; - if (editor.config.Open("config.ini")) + if (wi::helper::FileExists("config.ini") && editor.config.Open("config.ini")) { if (editor.config.Has("width")) { @@ -225,7 +225,7 @@ int main(int argc, char *argv[]) height = std::max(100, height); sdl2::window_ptr_t window = sdl2::make_window( - "Wicked Editor", + exe_customization.name_256padded, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_SHOWN | SDL_WINDOW_VULKAN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI); diff --git a/Editor/main_Windows.cpp b/Editor/main_Windows.cpp index 2d857f736..5fae53fa4 100644 --- a/Editor/main_Windows.cpp +++ b/Editor/main_Windows.cpp @@ -12,6 +12,8 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { + wi::arguments::Parse(lpCmdLine); + SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2); static auto WndProc = [](HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) -> LRESULT { @@ -117,11 +119,13 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance, wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(1001)); // 1001 = icon from Resource.rc file - wcex.hIconSm = wcex.hIcon; + wcex.hIconSm = NULL; wcex.hCursor = LoadCursor(hInstance, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wcex.lpszMenuName = NULL; - wcex.lpszClassName = L"Wicked Editor"; + wchar_t wname[256] = {}; + wi::helper::StringConvert(exe_customization.name_256padded, wname, arraysize(wname)); + wcex.lpszClassName = wname; RegisterClassExW(&wcex); @@ -132,7 +136,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance, bool borderless = false; wi::Timer timer; - if (editor.config.Open("config.ini")) + if (wi::helper::FileExists("config.ini") && editor.config.Open("config.ini")) { if (editor.config.Has("width")) { @@ -197,9 +201,6 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance, UpdateWindow(hWnd); DragAcceptFiles(hWnd, TRUE); - - wi::arguments::Parse(lpCmdLine); - editor.SetWindow(hWnd); MSG msg = { 0 }; diff --git a/Editor/wicked.ico b/Editor/wicked.ico index f7f3f5bac..49e9bd2c1 100644 Binary files a/Editor/wicked.ico and b/Editor/wicked.ico differ diff --git a/Samples/Example_ImGui/wicked.ico b/Samples/Example_ImGui/wicked.ico index f7f3f5bac..49e9bd2c1 100644 Binary files a/Samples/Example_ImGui/wicked.ico and b/Samples/Example_ImGui/wicked.ico differ diff --git a/Samples/Example_ImGui_Docking/wicked.ico b/Samples/Example_ImGui_Docking/wicked.ico index f7f3f5bac..49e9bd2c1 100644 Binary files a/Samples/Example_ImGui_Docking/wicked.ico and b/Samples/Example_ImGui_Docking/wicked.ico differ diff --git a/Samples/Tests/wicked.ico b/Samples/Tests/wicked.ico index f7f3f5bac..49e9bd2c1 100644 Binary files a/Samples/Tests/wicked.ico and b/Samples/Tests/wicked.ico differ diff --git a/WickedEngine/shaders/fontPS.hlsl b/WickedEngine/shaders/fontPS.hlsl index c52d6e20e..ef463b99f 100644 --- a/WickedEngine/shaders/fontPS.hlsl +++ b/WickedEngine/shaders/fontPS.hlsl @@ -36,6 +36,8 @@ float4 main(VertextoPixel input) : SV_TARGET color.a *= value; } + color.rgb *= color.a; // NOTE: premultiplied blending! This is important for blending in HDR linear space + [branch] if (flags & FONT_FLAG_OUTPUT_COLOR_SPACE_LINEAR) { diff --git a/WickedEngine/wiApplication.cpp b/WickedEngine/wiApplication.cpp index b889bb86e..fbfd4dfea 100644 --- a/WickedEngine/wiApplication.cpp +++ b/WickedEngine/wiApplication.cpp @@ -114,6 +114,11 @@ namespace wi desc.height = swapChain.desc.height; desc.format = Format::R11G11B10_FLOAT; desc.bind_flags = BindFlag::RENDER_TARGET | BindFlag::SHADER_RESOURCE; + // try to set background color for swapchain color as if it's using hdr scaling: + desc.clear.color[0] = swapChain.desc.clear_color[0] * 9; + desc.clear.color[1] = swapChain.desc.clear_color[1] * 9; + desc.clear.color[2] = swapChain.desc.clear_color[2] * 9; + desc.clear.color[3] = swapChain.desc.clear_color[3]; bool success = graphicsDevice->CreateTexture(&desc, nullptr, &rendertargetPreHDR10); assert(success); graphicsDevice->SetName(&rendertargetPreHDR10, "Application::rendertargetPreHDR10"); @@ -169,20 +174,30 @@ namespace wi if (!startup_script) { startup_script = true; - std::string startup_lua_filename = wi::helper::GetCurrentPath() + "/startup.lua"; - if (wi::helper::FileExists(startup_lua_filename)) + if (wi::helper::FileExists(rewriteable_startup_script_text)) { - if (wi::lua::RunFile(startup_lua_filename)) + if (wi::lua::RunFile(rewriteable_startup_script_text)) { - wi::backlog::post("Executed startup file: " + startup_lua_filename); + wi::backlog::post("Executed startup file: " + rewriteable_startup_script_text); } } - std::string startup_luab_filename = wi::helper::GetCurrentPath() + "/startup.luab"; - if (wi::helper::FileExists(startup_luab_filename)) + else { - if (wi::lua::RunBinaryFile(startup_luab_filename)) + std::string startup_lua_filename = wi::helper::GetCurrentPath() + "/startup.lua"; + if (wi::helper::FileExists(startup_lua_filename)) { - wi::backlog::post("Executed startup file: " + startup_luab_filename); + if (wi::lua::RunFile(startup_lua_filename)) + { + wi::backlog::post("Executed startup file: " + startup_lua_filename); + } + } + std::string startup_luab_filename = wi::helper::GetCurrentPath() + "/startup.luab"; + if (wi::helper::FileExists(startup_luab_filename)) + { + if (wi::lua::RunBinaryFile(startup_luab_filename)) + { + wi::backlog::post("Executed startup file: " + startup_luab_filename); + } } } } @@ -725,13 +740,8 @@ namespace wi canvas.init(window); - SwapChainDesc desc; - if (swapChain.IsValid()) - { - // it will only resize, but keep format and other settings - desc = swapChain.desc; - } - else + SwapChainDesc desc = swapChain.desc; + if (!swapChain.IsValid()) { // initialize for the first time desc.buffer_count = 3; @@ -802,6 +812,11 @@ namespace wi #endif // PLATFORM_WINDOWS_DESKTOP } + bool Application::IsScriptReplacement() const + { + return wi::helper::FileExists(rewriteable_startup_script_text); + } + } diff --git a/WickedEngine/wiApplication.h b/WickedEngine/wiApplication.h index b4edb8c49..13b76033c 100644 --- a/WickedEngine/wiApplication.h +++ b/WickedEngine/wiApplication.h @@ -134,6 +134,8 @@ namespace wi } bool IsFaded() const { return fadeManager.IsFaded(); } + const std::string rewriteable_startup_script_text = "wicked_engine_rewriteable_startup_script_path_paddedlength_256_uniquestring "; + bool IsScriptReplacement() const; }; } diff --git a/WickedEngine/wiFont.cpp b/WickedEngine/wiFont.cpp index e635afff8..c7f19b283 100644 --- a/WickedEngine/wiFont.cpp +++ b/WickedEngine/wiFont.cpp @@ -319,7 +319,7 @@ namespace wi::font BlendState bd; bd.render_target[0].blend_enable = true; - bd.render_target[0].src_blend = Blend::SRC_ALPHA; + bd.render_target[0].src_blend = Blend::ONE; // premultiplied blending bd.render_target[0].dest_blend = Blend::INV_SRC_ALPHA; bd.render_target[0].blend_op = BlendOp::ADD; bd.render_target[0].src_blend_alpha = Blend::ONE; diff --git a/WickedEngine/wiHelper.cpp b/WickedEngine/wiHelper.cpp index 822ede32e..052713501 100644 --- a/WickedEngine/wiHelper.cpp +++ b/WickedEngine/wiHelper.cpp @@ -3,11 +3,14 @@ #include "wiBacklog.h" #include "wiEventHandler.h" #include "wiMath.h" +#include "wiImage.h" +#include "wiRenderer.h" #include "Utility/lodepng.h" #include "Utility/dds.h" #include "Utility/stb_image_write.h" #include "Utility/zstd/zstd.h" +#include "Utility/portable-file-dialogs.h" #include #include @@ -30,7 +33,6 @@ #ifdef PLATFORM_LINUX #include -#include "Utility/portable-file-dialogs.h" #endif // PLATFORM_LINUX #ifdef PLATFORM_WINDOWS_DESKTOP @@ -673,6 +675,181 @@ namespace wi::helper assert(desc.format == Format::R8G8B8A8_UNORM || desc.format == Format::R8G8B8A8_UNORM_SRGB); // If you need to save other texture format, implement data conversion for it } + if (!extension.compare("ICO")) + { + struct ICONDIR + { + uint16_t idReserved; // Reserved (must be 0) + uint16_t idType; // Resource Type (1 for icon) + uint16_t idCount; // Number of images + }; + struct ICONDIRENTRY + { + uint8_t bWidth; // Width, in pixels + uint8_t bHeight; // Height, in pixels + uint8_t bColorCount; // Number of colors (0 if >= 8bpp) + uint8_t bReserved; // Reserved (must be 0) + uint16_t wPlanes; // Color Planes + uint16_t wBitCount; // Bits per pixel + uint32_t dwBytesInRes; // Size of image data + uint32_t dwImageOffset;// Offset to image data + }; + struct BITMAPINFOHEADER + { + uint32_t biSize; // Size of this header + int32_t biWidth; // Width in pixels + int32_t biHeight; // Height in pixels (doubled for icon) + uint16_t biPlanes; // Number of color planes + uint16_t biBitCount; // Bits per pixel + uint32_t biCompression;// Compression method + uint32_t biSizeImage; // Size of image data + int32_t biXPelsPerMeter; // Horizontal resolution + int32_t biYPelsPerMeter; // Vertical resolution + uint32_t biClrUsed; // Colors used + uint32_t biClrImportant; // Important colors + }; + + const uint32_t minsize = 32; + + size_t filesize = sizeof(ICONDIR); + + ICONDIR icondir = { 0,1,0 }; + + for (auto& mip : mips) + { + if (mip.width > 256 || mip.height > 256) + continue; + if (mip.width < minsize || mip.height < minsize) + break; + icondir.idCount++; + filesize += sizeof(ICONDIRENTRY); + } + + if (icondir.idCount < 1) + { + wilog_assert(0, "No valid images were found that can be added to ICO file format!"); + return false; + } + + uint32_t imageDataOffset = (uint32_t)filesize; + + for (auto& mip : mips) + { + if (mip.width > 256 || mip.height > 256) + continue; + if (mip.width < minsize || mip.height < minsize) + break; + const uint32_t pixelCount = mip.width * mip.height; + const uint32_t rgbDataSize = pixelCount * 4; // 32-bit RGBA + const uint32_t maskSize = ((mip.width + 7) / 8) * mip.height; // 1-bit mask, padded to byte + const uint32_t imageDataSize = sizeof(BITMAPINFOHEADER) + rgbDataSize + maskSize; + filesize += imageDataSize; + } + + filedata.resize(filesize); + uint8_t* ptr = filedata.data(); + + std::memcpy(ptr, &icondir, sizeof(ICONDIR)); + ptr += sizeof(ICONDIR); + + for (auto& mip : mips) + { + if (mip.width > 256 || mip.height > 256) + continue; + if (mip.width < minsize || mip.height < minsize) + break; + + const uint32_t pixelCount = mip.width * mip.height; + const uint32_t rgbDataSize = pixelCount * 4; // 32-bit RGBA + const uint32_t maskSize = ((mip.width + 7) / 8) * mip.height; // 1-bit mask, padded to byte + const uint32_t imageDataSize = sizeof(BITMAPINFOHEADER) + rgbDataSize + maskSize; + + ICONDIRENTRY iconEntry = { + static_cast(mip.width > 255 ? 0 : mip.width), // Width (0 for 256+) + static_cast(mip.height > 255 ? 0 : mip.height), // Height (0 for 256+) + 0, // Color count (0 for 32-bit) + 0, // Reserved + 1, // Color planes + 32, // Bits per pixel + imageDataSize, // Size of image data + imageDataOffset // Offset to image data + }; + std::memcpy(ptr, &iconEntry, sizeof(ICONDIRENTRY)); + ptr += sizeof(ICONDIRENTRY); + imageDataOffset += imageDataSize; + } + + for (auto& mip : mips) + { + if (mip.width > 256 || mip.height > 256) + continue; + if (mip.width < minsize || mip.height < minsize) + break; + + const uint32_t pixelCount = mip.width * mip.height; + const uint32_t rgbDataSize = pixelCount * 4; // 32-bit RGBA + const uint32_t maskSize = ((mip.width + 7) / 8) * mip.height; // 1-bit mask, padded to byte + + BITMAPINFOHEADER bmpHeader = { + sizeof(BITMAPINFOHEADER), // Size of header + int32_t(mip.width), // Width + int32_t(mip.height * 2), // Height (doubled for XOR + AND mask) + 1, // Planes + 32, // Bits per pixel + 0, // No compression + rgbDataSize + maskSize, // Image size + 0, // X pixels per meter + 0, // Y pixels per meter + 0, // Colors used + 0 // Important colors + }; + std::memcpy(ptr, &bmpHeader, sizeof(BITMAPINFOHEADER)); + ptr += sizeof(BITMAPINFOHEADER); + + // Convert RGBA to BGRA and write XOR mask (flipped vertically) + for (uint32_t y = mip.height; y > 0; --y) + { + const uint8_t* src = mip.address + (y - 1) * mip.width * 4; + for (uint32_t x = 0; x < mip.width; ++x) + { + // Convert RGBA to BGRA + ptr[0] = src[2]; // B + ptr[1] = src[1]; // G + ptr[2] = src[0]; // R + ptr[3] = src[3]; // A + ptr += 4; + src += 4; + } + } + + // Write AND mask (1-bit transparency mask) + for (uint32_t y = mip.height; y > 0; --y) + { + const uint8_t* src = mip.address + (y - 1) * mip.width * 4; + for (uint32_t x = 0; x < mip.width; x += 8) + { + uint8_t maskByte = 0; + for (uint32_t bit = 0; bit < 8 && (x + bit) < mip.width; ++bit) + { + // Set bit to 0 if pixel is opaque (alpha > 0), 1 if transparent + if (src[(x + bit) * 4 + 3] == 0) + { + maskByte |= (1 << (7 - bit)); + } + } + *ptr++ = maskByte; + } + // Pad to 32-bit boundary + while ((ptr - filedata.data() - sizeof(ICONDIR) - sizeof(ICONDIRENTRY) - sizeof(BITMAPINFOHEADER) - rgbDataSize) % 4 != 0) + { + *ptr++ = 0; + } + } + } + + return true; + } + int write_result = 0; filedata.clear(); @@ -703,6 +880,35 @@ namespace wi::helper { write_result = stbi_write_bmp_to_func(func, &filedata, (int)mip.width, (int)mip.height, dst_channel_count, mip.address); } + else if (!extension.compare("H")) + { + const size_t datasize = mip.width * mip.height * sizeof(wi::Color); + std::string ss; + ss += "struct EmbeddedImage {\n"; + ss += "const unsigned int width = " + std::to_string(mip.width) + ";\n"; + ss += "const unsigned int height = " + std::to_string(mip.height) + ";\n"; + ss += "const unsigned int bytes_per_pixel = 4;\n"; + ss += "const char comment[256] = \"RGBA Image Header Generated By Wicked Engine\";\n"; + ss += "const unsigned char pixel_data[" + std::to_string(mip.width) + " * " + std::to_string(mip.height) + " * 4] = {"; + for (size_t i = 0; i < datasize; ++i) + { + if (i % 32 == 0) + { + ss += "\n"; + } + ss += std::to_string((uint32_t)mip.address[i]) + ","; + } + ss += "\n};\n};\n"; + filedata.resize(ss.size()); + std::memcpy(filedata.data(), ss.c_str(), ss.length()); + return true; + } + else if (!extension.compare("RAW")) + { + filedata.resize(mip.width* mip.height * sizeof(wi::Color)); + std::memcpy(filedata.data(), mip.address, filedata.size()); + return true; + } else { assert(0 && "Unsupported extension"); @@ -923,6 +1129,13 @@ namespace wi::helper } } + std::string BackslashToForwardSlash(const std::string& str) + { + std::string ret = str; + std::replace(ret.begin(), ret.end(), '\\', '/'); + return ret; + } + void DirectoryCreate(const std::string& path) { std::filesystem::create_directories(ToNativeString(path)); @@ -1021,6 +1234,11 @@ namespace wi::helper return std::chrono::duration_cast>(tim.time_since_epoch()).count(); } + bool FileCopy(const std::string& filename_src, const std::string& filename_dst) + { + return std::filesystem::copy_file(ToNativeString(filename_src), ToNativeString(filename_dst), std::filesystem::copy_options::overwrite_existing); + } + std::string GetTempDirectoryPath() { #if defined(PLATFORM_XBOX) || defined(PLATFORM_PS5) @@ -1061,6 +1279,19 @@ namespace wi::helper #endif // PLATFORM_PS5 } + std::string GetExecutablePath() + { +#ifdef _WIN32 + wchar_t wstr[1024] = {}; + GetModuleFileName(NULL, wstr, arraysize(wstr)); + char str[1024] = {}; + StringConvert(wstr, str, arraysize(str)); + return str; +#else + return std::filesystem::canonical("/proc/self/exe").string(); +#endif // _WIN32 + } + void FileDialog(const FileDialogParams& params, std::function onSuccess) { #ifdef PLATFORM_WINDOWS_DESKTOP @@ -1191,6 +1422,16 @@ namespace wi::helper #endif // PLATFORM_LINUX } + std::string FolderDialog(const std::string& description) + { + if (!pfd::settings::available()) + { + messageBox("No dialog backend available!", "Error!"); + return ""; + } + return pfd::select_folder(description).result(); + } + void GetFileNamesInDirectory(const std::string& directory, std::function onSuccess, const std::string& filter_extension) { std::filesystem::path directory_path = ToNativeString(directory); diff --git a/WickedEngine/wiHelper.h b/WickedEngine/wiHelper.h index 7dc0ca47d..cecbaa217 100644 --- a/WickedEngine/wiHelper.h +++ b/WickedEngine/wiHelper.h @@ -51,16 +51,16 @@ namespace wi::helper // Save raw pixel data from the texture to memory bool saveTextureToMemory(const wi::graphics::Texture& texture, wi::vector& texturedata); - // Save texture to memory as a file format + // Save texture to memory as a file format (file format is determined by extension, supported extensions: .png, .jpg, .jpeg, .tga, .bmp, .dds, .ico, .h, .raw) bool saveTextureToMemoryFile(const wi::graphics::Texture& texture, const std::string& fileExtension, wi::vector& filedata); - // Save raw texture data to memory as file format + // Save raw texture data to memory as file format (file format is determined by extension, supported extensions: .png, .jpg, .jpeg, .tga, .bmp, .dds, .ico, .h, .raw) bool saveTextureToMemoryFile(const wi::vector& textureData, const wi::graphics::TextureDesc& desc, const std::string& fileExtension, wi::vector& filedata); - // Save texture to file format + // Save texture to file format (file format is determined by extension, supported extensions: .png, .jpg, .jpeg, .tga, .bmp, .dds, .ico, .h, .raw) bool saveTextureToFile(const wi::graphics::Texture& texture, const std::string& fileName); - // Save raw texture data to file format + // Save raw texture data to file format (file format is determined by extension, supported extensions: .png, .jpg, .jpeg, .tga, .bmp, .dds, .ico, .h, .raw) bool saveTextureToFile(const wi::vector& texturedata, const wi::graphics::TextureDesc& desc, const std::string& fileName); // Download buffer from GPU into CPU memory @@ -89,6 +89,8 @@ namespace wi::helper void MakePathAbsolute(std::string& path); + std::string BackslashToForwardSlash(const std::string& str); + void DirectoryCreate(const std::string& path); // Returns the file size if the file exists, otherwise 0 @@ -109,9 +111,12 @@ namespace wi::helper uint64_t FileTimestamp(const std::string& fileName); + bool FileCopy(const std::string& filename_src, const std::string& filename_dst); + std::string GetTempDirectoryPath(); std::string GetCacheDirectoryPath(); std::string GetCurrentPath(); + std::string GetExecutablePath(); struct FileDialogParams { @@ -125,6 +130,8 @@ namespace wi::helper }; void FileDialog(const FileDialogParams& params, std::function onSuccess); + std::string FolderDialog(const std::string& description = "Select folder"); + void GetFileNamesInDirectory(const std::string& directory, std::function onSuccess, const std::string& filter_extension = ""); void GetFolderNamesInDirectory(const std::string& directory, std::function onSuccess); diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index f883fc43d..83302e827 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wi::version // minor features, major updates, breaking compatibility changes const int minor = 71; // minor bug fixes, alterations, refactors, updates - const int revision = 787; + const int revision = 788; const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);